![2>&1 的流水線究竟是如何運作的?](https://rvso.com/image/168803/2%3E%261%20%E7%9A%84%E6%B5%81%E6%B0%B4%E7%B7%9A%E7%A9%B6%E7%AB%9F%E6%98%AF%E5%A6%82%E4%BD%95%E9%81%8B%E4%BD%9C%E7%9A%84%EF%BC%9F.png)
剛開始學習 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
等等等等