數據流重定向
阿新 • • 發佈:2018-07-04
怎麽 我們 cat 信息 direct 希望 什麽 在屏幕上 由於
今天我們來說說數據流重定向吧,我也是剛看完這段,想來總結下:
1. 標準輸入 (stdin) :代碼為 0 ,使用 < 或 <<
2. 標準輸出 (stdout)\(standard output):代碼為 1 ,使用 > 或 >>
3. 標準錯誤輸出(stderr)\(standard error output):代碼為 2 ,使用 2> 或 2>>
1> :以覆蓋的方法將“正確的數據”輸出到指定的文件或設備上;
1>>:以累加的方法將“正確的數據”輸出到指定的文件或設備上;
2> :以覆蓋的方法將“錯誤的數據”輸出到指定的文件或設備上;
2>>:以累加的方法將“錯誤的數據”輸出到指定的文件或設備上;
當我們在linux的shell裏面執行一些指令的時候,指令執行完成後會有一些正確的或者錯誤的結果顯示在屏幕上,以便我們去發現問題出在哪裏?
比如:
[root@localhost ~ 07:52 #45]$cat /etc/crontab /etc/test
由於後面那個文件是不存在的,執行完成後屏幕上會有 cat: /etc/vbirdsay: No such file or directory的提示。那麽我們應該要怎麽處理這種情況,讓shell裏只出現正確的執行結果呢?
[root@localhost ~ 07:53 #45]$cat /etc/crontab /etc/test 2> /dev/null
這麽操作的話在我們的屏幕上就只顯示正確的執行結果了。
這裏涉及到/dev/null,黑洞,為什麽叫黑洞呢?顧名思義就是吞噬,你有啥不要的玩意都可以往這裏頭扔。是不是很強大呢。
想象一下,如果我知道錯誤訊息會發生,所以要將錯誤訊息忽略掉而不顯示或儲存呢? 這個時候黑洞設備 /dev/null 就很重要了!這個 /dev/null 可以吃掉任何導向這個設備的信息
這裏有一種特殊的寫法:2>&1 和 &> !
2>&1 : 2為錯誤輸出 &1 - 等效於標準輸出
如:還是以上面的命令為例。
[root@localhost ~ 07:57 #46]$cat /etc/crontab /etc/test >/dev/null 2>&1
這條命令執行完成後,是沒有任何輸出的。標準輸出1是可以省略的,這裏可以看出,2>&1的意思是:標準錯誤輸出等效於標準輸出。
寫到這裏,小白文,希望能幫到一些人。。。
數據流重定向