Linux 管道命令 高效處理數據流
管道命令操作符是:|,它僅能處理經由前面一個指令傳出的正確輸出信息,也就是 standard output 的信息,對於 stdandard error 信息沒有直接處理能力。然後,傳遞給下一個命令,作為標準的輸入 standard input
TIP
- 管道命令只處理前一個命令正確輸出,不處理錯誤輸出
- 管道命令右邊命令,必須能夠接收標準輸入流命令才行。
讀出test.sh文件內容,通過管道轉發給grep 作為輸入內容
sh
cat test.sh | grep -n 'echo'
5: echo "very good!";
7: echo "good!";
9: echo "pass!";
11: echo "no pass!";cat test1.sh不存在,錯誤輸出打印到屏幕,正確輸出通過管道發送給grep
sh
cat test.sh test1.sh | grep -n 'echo'
cat: test1.sh: 沒有那個文件或目錄
5: echo "very good!";
7: echo "good!";
9: echo "pass!";
11: echo "no pass!";將test1.sh 沒有找到錯誤輸出重定向輸出給/dev/null 文件,正確輸出通過管道發送給grep
sh
cat test.sh test1.sh 2>/dev/null | grep -n 'echo'
5: echo "very good!";
7: echo "good!";
9: echo "pass!";
11: echo "no pass!";讀取test.sh內容,通過管道發送給ls命令,由於ls 不支持標準輸入,因此數據被丟棄
sh
cat test.sh | ls
catfile httprequest.txt secure test testfdread.sh testpipe.sh testsh.sh testwhile2.sh
envcron.txt python sh testcase.sh testfor2.sh testselect.sh test.txt text.txt
env.txt release sms testcronenv.sh testfor.sh test.sh testwhile1.sh