刚刚开始学习 UNIX,所以这个问题可能看起来很新手,但很高兴得到答案,因为我已经在谷歌的帮助下尝试自己解决这个问题一个小时了,但没有成功。
cat /etc/shadow 2>&1 | wc -l
这个命令会产生什么效果呢?我的猜测是:
- 该命令打印行数/etc/shadow 中,如果有标准错误,会被重定向到标准输出,并统计错误行数。
- 该命令打印文件/etc/shadow 中,如果有标准错误,会被重定向到标准输出,并统计错误的行数。
答案1
X>&Y
是为了文件描述符重定向:这意味着所有到 fd 的输出X
都是实际上进入Y
。
2>&1
将 STDERR 的输出放入 STDOUT。
wc -l
将输入行数写入 STDOUT。
一起,该命令cat /etc/shadow 2>&1 | wc -l
返回 中的行数/etc/shadow
,也错误行数。
如果你不想要计算那些错误行,只需使用cat /etc/shadow | wc -l
.
答案2
这不是一个直接的答案。
是什么阻止你做一些实验?
如果您做过实验,那么您可能已经回答了自己的问题。
运行命令的各种组合。
cat /etc/shadow
cat /etc/shadows
cat /etc/shadow 2>&1
cat /etc/shadows 2>&1
然后将每个都通过管道传输到wc
cat /etc/shadow | wc
等等等等