为什么 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 只删除一个。这看起来像一些真正的不一致或有潜在的含义吗?
引用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字节。