一、管理系統中的輸入輸出
1.什么是重定向?
將原本要輸出到屏幕上的內容,重新輸入到其他設備中或文件中
重定向類型包括
- 輸入重定向
- 輸出重定向
2.輸入重定向
指定設備(通常是文件或命令的執行結果)來代替鍵盤作為新的輸入設備
單行輸入重定向 | tr 'a-z' 'A-Z' < file | 把file文件中的內容定向到tr程序中 | ![]() |
多行錄入 | tr 'a-z' 'A-Z' <<man? ##(此字符任意) aaa bbb ccc ddd man? ? ? (當首字母再次出現表示錄入結束) | ![]() |
3.輸出重定向
將原本要輸出在屏幕上的結果放到指定的設備(通常是文件)
重定向作用
1.當屏幕輸出的信息很重要,而且希望保存重要的信息備份
2.不干擾屏幕的使用,例如ping baidu
3.儲存錯誤/報錯日志
4.定時任務的運行結果
5.執行一個命令,把報錯信息丟棄到/dev/null
6.執行一個命令,可能報錯和正確的輸出并存,類似錯誤日志與標準正確日志需要分別輸出至不同的文件。
- 輸出重定向類型
> | 重定向正確輸出 | |
2> | 重定向錯誤輸出 | ![]() |
&> | 重定向所有輸出 | ![]() |
👾注意:輸出重定向會覆蓋源文件內容
- 追加定向類型
>> | 追加正確輸出到文件 | ![]() |
2>> | 追加錯誤輸出到文件 | ![]() |
&>> | 追加所有輸出到文件 | ![]() |
👺注意:追加定向不會覆蓋原文件內容,而是添加內容
4.管道
管道在Linux中是一種特殊的文件類型,它在內存中創建一個緩沖區,用于存儲一個命令的輸出和另一個 命令的輸入。當使用管道連接命令時,前一個命令的標準輸出(stdout)會被重定向到管道的寫端,而 后一個命令的標準輸入(stdin)會被連接到管道的讀端
ls /bin/ | wc -l | 統計/bin/ 目錄中有多少文件 | |
- 2>&1
當使用管道時,只有正確輸出會被管道處理,錯誤輸出是無法通過管道的,如果想讓管道處理錯誤輸出,需要把錯誤輸出放到正確輸出的設備中,2>&1就是用來完成此操作的
find /etc/ -name passwd 2>&1 | wc -l | 統計find命令輸出結果的行數 | ![]() |
- tee
當輸出通管道后,內容就被管道處理了,如果要看到輸出內容需要對輸出內容進行復制然后再通過管道處理
find /etc -name passwd 2>&1 | tee pd.all | wc -l | |