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

等等等等

相關內容