1. 程式人生 > >數據流重定向

數據流重定向

怎麽 我們 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的意思是:標準錯誤輸出等效於標準輸出。 寫到這裏,小白文,希望能幫到一些人。。。

數據流重定向