簡單一句話概括:"使用輸入重定向能把文件導入到命令中,而輸出重定向則是能夠把原本要輸出到屏幕的數據信息寫入到指定文件中" 重定向 詳解 :<https://www.cnblogs.com/chengmo/archive/2010/10/20/1855805.html> Linux啟動後,會預設打開3 ...
簡單一句話概括:"使用輸入重定向能把文件導入到命令中,而輸出重定向則是能夠把原本要輸出到屏幕的數據信息寫入到指定文件中"
重定向 詳解 :<https://www.cnblogs.com/chengmo/archive/2010/10/20/1855805.html>
Linux啟動後,會預設打開3個文件描述符(通過分配的一個數字,實現對文件的讀寫操作),分別是:標準輸入standard input 0,正確輸出standard output 1,錯誤輸出:error output 2
Linux命令執行過程的數據傳輸情況:
standard intput:預設從鍵盤輸入,為0時表示從其他文件或命令的輸入
standard output:預設輸出到屏幕,為1時表示輸出到文件
standard error output:預設輸出到屏幕,為2時表示輸出到文件
標準輸入(stdin):代碼為0,使用<或<< |
標準輸出(stdout):代碼為1,使用>或>> |
標準錯誤輸出(stderr):代碼為2,使用2>或2>> |
系統預設存在/etc/crontab文件,卻無/etc/crontab/vbird這個文件,執行"cat /etc/crontab /etc/crontab/vbird"這個命令,cart會進行:
①標準輸出:讀取/etc/crontab後,將該文件內容顯示到屏幕上
②標準錯誤輸出:因為無法找到/etc/crontab/vbird,因此在屏幕上顯示錯誤信息
通過數據流重定向分別將
標準輸出("正確"的輸出數據)輸出/存放到ist1_right文件中(通過>),
標準錯誤輸出("錯誤的"輸出信息)輸出/存放到list2_error文件中(通過2>)
對於輸出重定向符有這些情況:
符號 |
作用 |
命令 > 文件 |
將標準輸出重定向到一個文件中(清空原有文件的數據) |
命令 2> 文件 |
將錯誤輸出重定向到一個文件中(清空原有文件的數據) |
命令 >> 文件 |
將標準輸出重定向到一個文件中(追加到原有內容的後面) |
命令 2>> 文件 |
將錯誤輸出重定向到一個文件中(追加到原有內容的後面) |
命令 >> 文件 2>&1 或命令 &>> 文件 |
將標準輸出與錯誤輸出共同寫入到文件中(追加到原有內容的後面) |
2>&1的含義:
<http://blog.csdn.net/ggxiaobai/article/details/53507530>
<https://www.cnblogs.com/zhenghongxin/p/7029173.html>
錯誤輸出重定向:命令 2> 文件(若該文件不存在,系統會自動創建)
標準輸出重定向:命令 > 文件
linuxprobe這個文件是真實存在的,即使用標準輸出即可將數據寫入到文件中,而錯誤輸出的重定向則不行,依然會把信息輸出到了屏幕上
將標準輸出與錯誤輸出共同寫入到文件中(原文件信息保留,追加到後面)
(&>可實現清空後再寫入)
將錯誤信息直接忽略(不顯示、不存儲):黑洞設備/dev/null可以"吃掉"任何導向這個設備的信息
追加寫入:命令 >> 文件
對於輸入重定向有這些情況:
符號 |
作用 |
命令 < 文件 |
將文件作為命令的標準輸入 |
命令 << 分界符 |
從標準輸入中讀入,直到遇見"分界符"才停止(內聯輸入重定向) |
命令 < 文件1 > 文件2 |
將文件1作為命令的標準輸入並將標準輸出到文件2 |
|
|
命令 < 文件:將/etc/passwd文件作為wc命令的標準輸入,相當於命令"cat /etc/passwd | wc -l"統計行數(統計用戶個數)
用stdin替代鍵盤的輸入以創建新文件(將.bashrc文件作為cat命令的標準輸入並輸出到創建的catfile文件中(類似cp命令複製的一般)):命令 < 文件1 > 文件2
命令 << 分界符:用cat命令直接將輸入的信息輸出到catfile中,且當由鍵盤輸入"eof"分界符(ctrl+d)時輸入才停止
雙向重定向:tee(T,T型水管介面)命令
tee會同時將數據流送往文件與屏幕。
而輸出到屏幕的,是stdout,且可以讓下個命令繼續處理
選項:
-a:以累加(append)的方式,將數據加入文件中(tee命令預設清空覆蓋)
參考資料:
一個優秀的linux博客: <http://www.cnblogs.com/chengmo/>