2>&1 的流水线究竟是如何工作的?

2>&1 的流水线究竟是如何工作的?

刚刚开始学习 UNIX,所以这个问题可能看起来很新手,但很高兴得到答案,因为我已经在谷歌的帮助下尝试自己解决这个问题一个小时了,但没有成功。

cat /etc/shadow 2>&1 | wc -l

这个命令会产生什么效果呢?我的猜测是:

  1. 该命令打印行数/etc/shadow 中,如果有标准错误,会被重定向到标准输出,并统计错误行数。
  2. 该命令打印文件/etc/shadow 中,如果有标准错误,会被重定向到标准输出,并统计错误的行数。

答案1

X>&Y是为了文件描述符重定向:这意味着所有到 fd 的输出X都是实际上进入Y2>&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

等等等等

相关内容