我无法弄清楚这个命令的作用。它在我的终端中生成 3 个数字,但没有解释这些数字是什么。我了解ls -l
以日志列表格式列出所有文件,并且wc
是字数统计,但这些数字似乎与任何内容都不匹配。
有什么帮助吗?
答案1
每当您不理解某个命令时,请阅读其手册。在这种情况下,man wc
将向您展示:
DESCRIPTION
Print newline, word, and byte counts for each FILE, and a total line if
more than one FILE is specified. [...] A word is a non-zero-length
sequence of characters delimited by white space.
所以,这三个数字是 i) 行数; ii) 字数; iii) 字节数。因此,如果我在此目录中运行它:
$ ls -l
total 0
-rw-r--r-- 1 terdon terdon 0 Oct 19 14:29 file1
-rw-r--r-- 1 terdon terdon 0 Oct 19 14:29 file2
-rw-r--r-- 1 terdon terdon 0 Oct 19 14:29 file3
它将返回:
$ ls -l | wc
4 29 152
这是因为,正如您在上面看到的,有4输出行,其中包含29“单词”(单词由空格定义)和总共152\n
字节(请注意,这包括每行末尾的换行符 ( ) 字符)。
对于一个更简单的示例,请尝试:
$ echo "foo" | wc
1 1 4
该命令echo "foo"
实际上打印foo\n
(\n
是换行符),所以这是一行、一个字和 4 个字节。
请注意,第三个字段是字节数,而不是字符数。这在字符可以由多个字节组成的语言环境中尤其重要,例如使用 UTF-8(现在往往是标准)。
$ echo fée | wc
1 1 5
在 UTF-8 中,é 字符由两个字节组成。您可以使用该-m
选项来获取字符数(m
用于多字节字符)。
$ echo fée | wc -m
4