命令是什么:
ls | wc -l
Run Code Online (Sandbox Code Playgroud)
做?我知道
wc <filename>
Run Code Online (Sandbox Code Playgroud)
给出行、词和字符,以及
wc -l <filename>
Run Code Online (Sandbox Code Playgroud)
打印行数。但是它如何与 ls` 一起使用尚不清楚。它有什么作用?
乍一看,它计算目录ls中的文件wc -l数(列出文件,计算它们)。
但是等等。尝试这个:
> mkdir test
> touch test/magic$'\n'newlines
> ls test | wc -l
2
Run Code Online (Sandbox Code Playgroud)
原来POSIX 标准允许在文件名中使用换行符。由于这种情况和其他边缘情况,计算目录中文件数量的一般方法要复杂得多。
曾经有人谈论添加一个--zero标志来ls允许这种怪物被拆分(空字符在 POSIX 文件名中是非法的),但由于coreutils开发人员的抵制,它从未实现。
这样做ls | wc -l对于临时检查来说可能是安全的,但是当您需要符合标准的代码时不要依赖它。