linux系統中的輸入輸出管理
1.理解系統的輸入輸出
系統的輸入:通過我們的鍵盤、滑鼠和其他硬體在系統中錄入字元;
系統的輸出:在接受我們輸入後經過cpu處理後的反饋給我們的字元;
輸出有兩種,編號為1的正確輸出和編號為2的錯誤輸出,這兩種輸出都會被系統預設定向到字元裝置中。
2.管理輸入輸出符號
1)輸出重定向
> ##重定向正確輸出
2> ##重定向錯誤輸出
&> ##重定向所有輸出
注意:重定向會覆蓋原來的內容
e.g.以student身份查詢/etc/下的名字為passwd的檔案
a.切換使用者
b.查詢/etc/下檔名為passwd的檔案
find /etc/ -name passwd ##查詢/etc/下檔名為passwd的檔案
結果:
c.重定向正確輸出到file
find /etc/ -name passwd > file ##重定向正確輸出到file
結果:
檔案內容:
d.重定向錯誤輸出到file.err
find /etc/ -name passwd 2> file.err ##重定向錯誤輸出到file.err
結果:
檔案內容:
e.重定向所有輸出到file.all
find /etc/ -name passwd &> file.all ##重定向所有輸出到file.all
結果:
檔案內容:
f.重定向正確的輸出到file.err,觀察是否覆蓋原來的內容
find /etc/ -name passwd > file.err ##重定向正確的輸出到file.err
結果file.err中的內容被覆蓋:
2)輸出追加
>> ##追加正確輸出到檔案最後
2>> ##追加錯誤輸出到檔案最後
&>> ##追加所有輸出到檔案最後
注意:追加不會覆蓋原檔案的內容
e.g.
a.追加上面查詢的錯誤結果到file的最後
原檔案內容:
輸出結果:
追加後文件內容:
b.追加上面查詢的正確結果到file.err的最後
原檔案內容:
輸出結果:
追加後文件內容:
c.追加 “hello 123”到file.all的最後
原檔案內容:
輸出結果:
追加後文件內容:
3)輸入重定向
是指不使用系統提供的標準輸入埠,而進行重新的指定。換言之,輸入重定向就是不使用標準輸入埠輸入檔案,而是使用指定的檔案作為標準輸入裝置。
<< 從標準輸入中讀入內容,直到遇到“識別符號”分解符為止
e.g.
a.新建一個檔名為readme.txt,並且給它可執行許可權
b.編輯readme.txt,內容如圖所示:
c.執行上面的檔案:
3.管道符
| ##管道符,把管道符的前的命令輸出變為後面命令的輸入
注意:1)管道只允許正確輸出通過
2)如果需要將前面的命令輸出到檔案並且再進入下一條命令作為輸入可以用tee
e.g.
在/mnt目錄下新建子目錄test,在子目錄下新建5個新檔案,把檔名輸出到/mnt下的檔案filename中,並統計檔案的個數
a.新建目錄和檔案
b.通過管道符和tee指令將test下的檔名儲存到檔案filename中,並統計檔案個數
為了讓錯誤資訊也能夠通過管道符,我們可以把編號為2的錯誤資訊轉換為編號為1的資訊,然後通過管道符
e.g.
a.find /etc/ -name passwd | wc -l ##統計etc下passwd檔案的個數
個數為2說明只通過了正確資訊,錯誤資訊顯示在了字元裝置中
b.find /etc/ -name passwd 2>&1| wc -l ##統計etc下passwd檔案的個數
將錯誤資訊的編號由2變為1後,全部通過管道符。