头尾的区别

fan*_*gio 4 command-line tail

为什么 NUM inhead -c和的含义有区别tail -c

我将用以下命令阐明我的意思:

$ echo "words" | tail -c +1
words
$ echo "words" | tail -c +2
ords
$ echo "words" | head -c -1
words$ echo "words" | head -c -2
word$
Run Code Online (Sandbox Code Playgroud)

第一个命令什么都不做。
第二个命令删除第一个字母。
第三个命令删除换行符。
last 命令删除包括换行符在内的最后 2 个字符。

那么为什么 head 在使用时会删除 2 个字节-c而 tail 只删除一个。这看起来像一些真正的不一致或有潜在的含义吗?

des*_*ert 6

引用man tail

使用 -c +NUM 从每个文件的字节 NUM 开始输出

引用man head

-c (...) [-]NUM
以'-'开头,打印每个文件的最后 NUM 字节以外的所有字节(...)

逻辑与

tail -c +1
Run Code Online (Sandbox Code Playgroud)

是打印所有字节号1,即第一个字节,而

head -c -1
Run Code Online (Sandbox Code Playgroud)

它的打印所有,但最后一个1字节。