Linux shell編程---- 管道+I/O重定向
1 管道簡介
1 管道技術是Linux的一種基本的進程間通信技術,它利用先進先出排隊模型來指揮進程間的通信。對於管道,我們可以形象的理解為連接兩個實體的一個單向連接器
2 Shell編程中管道符號是"|",命令直接利用管道進行通信的一般格式
command1 | command2 | command3 | ... | commandn
command1~commandn是n個命令,如果沒有管道那麼結果將會直接顯示在Shell中,當Shell遇到管道的時候,就將輸出發送下一個命令
2 cat和more命令
1 cat和more命令都是用來顯示文件的內容,它們的基本格式特比較類似
cat 選項 文件
more 選項 文件
2 cat命令的選項名稱及其意義
選項 意義
-a 顯示文件的所有內容
-b 由1開始對所有輸出的行數編號,但對空行不編號
-E 每一行末尾顯示"$"
-n 由1開始對所有的輸出行進行編號
-s 當遇到連續的兩行以上的空行時就替換為一行空白行
-v 不可顯示的字符以可見的形式顯示
3 more命令的選項名稱及其意義
選項 意義
-num 一次顯示的行數
-f 計算行數時,以實際的行數,而非自動換行過後的行數
-s 當遇到連續的兩行以上的空行時就替換為一行空白行
+num 從第num行開始顯示
4 cat和more命令的最大區別在於,cat命令是不提供分頁功能的,但是more命令是顯示超過一頁的文件時提供了分頁功能
3 I/O重定向
1 I/O重定向是一個過程,這個過程捕捉一個文件,命令,程序或腳本,甚至代碼塊的輸出,然後把捕捉到的輸出作為輸入發送給另外一個文件,命令,程序
2 文件標識符是從0開始到9結束的整數,指明了與進程相關的特定數據流的源。當Linux系統啟動一個進程時,將自動為該進程打開三個文件,標准輸入,標准輸出,標准錯誤輸出,分別由文件標識符0,1,2標識,該進程如果要打開其它的文件,則從整數3開始表識
3 基本I/O重定向符號及其意義
符號 意義
cmd1 | cmd2 管道符,將cmd的標准輸出作為cmd2的標准輸入
> filename 將標准輸出寫道文件filename之中
< filename 將文件filename的內容作為標准輸入
>> filename 將標准輸出追加到filename,如果不存在則先創建一個