天天看點

linux 輸入輸出管理

目錄

    • 輸入輸出的定義
    • 一種輸入方式
    • 兩種輸出方式
    • 管道

輸入輸出的定義

1.Stdin[标準輸入流]

輸入是指系統外接向系統中傳遞的資訊

2.stdout[标準正确輸出]

在指令順利執行完成後産生的字元串 ,stdout在Linux中的輸出編号為1

3.stderr[标準錯誤輸出]

在指令失敗執行完成後産生的字元串 , stderr在Linux中的輸出編号為2

一種輸入方式

輸入重定向是指用符号從檔案中擷取輸入

1.單行輸入

首先,編輯file檔案(字母大小寫均有)

linux 輸入輸出管理

根據文章下方介紹的管道知識,可以将file檔案中的大寫字母轉為小寫

linux 輸入輸出管理

還可以使用本小節介紹的輸入重定向的方法進行轉換

linux 輸入輸出管理

2.多行輸入(EOF表示開始結束位置)

linux 輸入輸出管理

編輯westos.sh 完成後,使用 bash westos.sh 運作即可

linux 輸入輸出管理

兩種輸出方式

1.重定向輸出

重定向是指将原本要輸出到螢幕的資料資訊,重新定向到指定的檔案中。

而什麼時候會用到重定向呢?

比如我們将正确資訊和錯誤資訊單獨分開,實作将正确資訊儲存,錯誤資訊進行丢棄,在日志記錄方面很有用。同時在儲存資訊的過程中對螢幕的正常輸出不進行幹擾。

1.find /etc -name passwd > file.out         #輸出正确
2.find /etc -name passwd 2> file.err        #輸出錯誤
3.find /etc -name passed &> file.all        #輸出全部
           

注意:重定向會覆寫源檔案

/proc/id/fd/0 存放輸入資料

/proc/id/fd/1 存放正确輸出資料

/proc/id/fd/2 存放錯誤輸出資料

2.追加輸出

1.find /etc -name passwd >> file.out         #輸出正确
2.find /etc -name passwd 2>> file.err        #輸出錯誤
3.find /etc -name passed &>> file.all        #輸出全部
           

注意:追加不會覆寫源檔案,将内容追加到檔案尾部

管道

管道可以将兩個或多個指令連接配接到一起,把輸出變成後一條指令的輸入。

1.ls /bin | wc -l						#不顯示直接統計								
2.find /etc -name passwd 2>&1 | wc -l   #不顯示錯誤輸出并統計正确輸出
3.find /etc -name passwd 2>&1 | tee file |wc -l #在2的基礎上将資訊儲存到檔案中
           

注意:tee的作用是既可将資訊在螢幕上輸出,又可以儲存到檔案中

linux 輸入輸出管理

接下來思考這一個問題:為什麼要使用管道呢?

給出執行個體:

1.time ls /bin > file
real    0m0.0006s
user	0m0.0003s
sys		0m0.0002s
2.time wc -l file
real    0m0.0002s
user	0m0.0001s
sys		0m0.0000s
           

使用管道之後

time ls /bin | wc -l 
real    0m0.0004s
user	0m0.0003s
sys		0m0.0002s
           

可以看到,使用管道之後速度快了一倍

繼續閱讀