什么是 “|”?
|其實是linux shell 中的一個命令:管道命令(pipe)
管道命令操作符是:”|”,它僅能處理經由前面一個指令傳出的正確輸出信息,也就是 standard output 的信息,將其遞給下一個命令,作為標准的輸入 standard input。但是對於 stdandard error 信息沒有直接處理能力。
-
相關補充:
- linux文件描述符:可以理解為linux跟蹤打開文件,而分配的一個數字,這個數字有點類似c語言操作文件時候的句柄,通過句柄就可以實現文件的讀寫操作。 用戶可以自定義文件描述符范圍是:3-num,這個最大數字,跟用戶的:ulimit –n 定義數字有關系,不能超過最大值。
- linux啟動后,會默認打開3個文件描述符,分別是:標准輸入standard input 0,正確輸出standard output 1,錯誤輸出:error output 2。以后打開文件,新增文件綁定描述符,並可以依次增加。一條shell命令執行,都會繼承父進程的文件描述符。因此,所有運行的shell命令,都會有默認3個文件描述符。
-
如何查看命令參數
file我們通過file命令可以查看這是個什么東西(文件類型)!$代表了上一條命信令的參數。file !$綜合使用可以查看上一條命令參數

對於任何一條linux 命令執行,它會是這樣一個過程:
-
先有一個輸入:輸入可以從鍵盤,也可以從文件得到standard input
-
命令執行完成:成功了,會把成功結果輸出到屏幕:standard output默認是屏幕
-
命令執行有錯誤:會把錯誤也輸出到屏幕上面:standard error默認也是指的屏幕

如何使用?

command1正確輸出,作為command2的輸入 然后comand2的輸出作為,comand3的輸入 ,comand3輸出就會直接顯示在屏幕上面了。
相當於一個為三個command建立一個通道,將其輸入和輸出連接了起來。
實例分析:
- 實例一:查看文本文件內容有關
echo的句子
我們使用cat test.sh | grep -n 'echo'試試:

bingo! 將cat命令查找到的信息(輸出)作為grep的查找范圍(輸入)。 - 實例二:實現一個小程序
testwc
我們使用cat test.txt | testwc試試:

利用cat命令查看文件內容並作為testwc(這個是之前實現的簡單wc功能的小程序)的輸入。
