tail + number 做什么?head 做什么?

tail + number 做什么?head 做什么?

我刚刚调用了这个命令ls -l | tail +3。首先,ls -s 生成 3 行,在第一行添加管道条,然后在单独的行上打印每个文件名。它是如何做到的?这没有意义。

另外,我认为 tail filename 会显示最后 10 行。+ (和减号) 在该等式中起什么作用?

头部也是一样吗?它是如何工作的?

答案1

来自tail 手册页

尾巴实用程序显示的内容文件或者,默认情况下,将其标准输入到标准输出。

显示从输入中的字节、行或 512 字节块位置开始。带有前导加号 (“+”) 的数字相对于输入的开头,例如,“-c +2”从输入的第二个字节开始显示。带有前导减号 (“-”) 或没有明确符号的数字相对于输入的结尾,例如,“-n 2”显示输入的最后两行。默认起始位置为“-n 10”,即输入的最后 10 行。

因此,对于您来说,tail +3-n隐含的)表示从输入的第 3 行开始(ls -l)并打印其余部分。例如:

ls -l输出:

total 0
-rw-r--r--  1 carl  staff  0 Oct 28 13:18 file1
-rw-r--r--  1 carl  staff  0 Oct 28 13:18 file2
-rw-r--r--  1 carl  staff  0 Oct 28 13:18 file3
-rw-r--r--  1 carl  staff  0 Oct 28 13:18 file4
-rw-r--r--  1 carl  staff  0 Oct 28 13:18 file5
-rw-r--r--  1 carl  staff  0 Oct 28 13:18 file6

ls -l | tail +3输出:

-rw-r--r--  1 carl  staff  0 Oct 28 13:18 file2
-rw-r--r--  1 carl  staff  0 Oct 28 13:18 file3
-rw-r--r--  1 carl  staff  0 Oct 28 13:18 file4
-rw-r--r--  1 carl  staff  0 Oct 28 13:18 file5
-rw-r--r--  1 carl  staff  0 Oct 28 13:18 file6

输出相同,只是去掉了前几行。

答案2

来自手册页:

如果 N(字节数或行数)的第一个字符是“+”,则从每个文件开头的第 N 项开始打印,否则,打印文件中的最后 N 项。N 可能有一个乘数后缀:b 512、k 1024、m 1024*1024。

答案3

回答:

首先,ls -s 生成 3 行,在第一行添加管道线,然后在单独的行上打印每个文件名。它是如何做到的?这毫无意义。

答案是,该ls命令查看其标准输出并检查它是否连接到 tty。如果是,则它会格式化以进行显示。如果不是(例如,输出是文件或管道),则它会每行打印一个条目。

  • 选项“ -C”强制多列输出(就像进入终端一样)。
  • 选项“ -1”强制单列输出(就像进入管道一样)。

相关内容