目錄
-
- 輸入輸出的定義
- 一種輸入方式
- 兩種輸出方式
- 管道
輸入輸出的定義
1.Stdin[标準輸入流]
輸入是指系統外接向系統中傳遞的資訊
2.stdout[标準正确輸出]
在指令順利執行完成後産生的字元串 ,stdout在Linux中的輸出編号為1
3.stderr[标準錯誤輸出]
在指令失敗執行完成後産生的字元串 , stderr在Linux中的輸出編号為2
一種輸入方式
輸入重定向是指用符号從檔案中擷取輸入
1.單行輸入
首先,編輯file檔案(字母大小寫均有)
![](https://img.laitimes.com/img/_0nNw4CM6IyYiwiM6ICdiwiIwczX0xiRGZkRGZ0Xy9GbvNGL2EzXlpXazxSP9E0TwUFRPd3YU1EM4wmYwhGWhxGZzwEMW1mY1RzRapnTtxkb5ckYplTeMZTTINGMShUYfRHelRHLwEzX39GZhh2css2RkBnVHFmb1clWvB3MaVnRtp1XlBXe0xyayFWbyVGdhd3LcV2Zh1Wa9M3clN2byBXLzN3btg3Pn5GcuAzMwAzNxYTM4ATMwAjMwIzLc52YucWbp5GZzNmLn9Gbi1yZtl2Lc9CX6MHc0RHaiojIsJye.png)
根據文章下方介紹的管道知識,可以将file檔案中的大寫字母轉為小寫
還可以使用本小節介紹的輸入重定向的方法進行轉換
2.多行輸入(EOF表示開始結束位置)
編輯westos.sh 完成後,使用 bash westos.sh 運作即可
兩種輸出方式
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的作用是既可将資訊在螢幕上輸出,又可以儲存到檔案中
接下來思考這一個問題:為什麼要使用管道呢?
給出執行個體:
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
可以看到,使用管道之後速度快了一倍