1. 程式人生 > >linux隨筆(一) | 標準輸入、輸出、錯誤流

linux隨筆(一) | 標準輸入、輸出、錯誤流

在工作開始初期,我曾經為了“ >/dev/null  2>&1 ”這一種糾結。今日又看到這種命令字尾,感觸良多。如果你也有這種困惑,不妨來看看這篇小文章。

在lunix中,有三種標準流:標準輸入流、標準輸出流、標準錯誤流。為了區分這三種流,linux分別為他們編號0,  1,2 進行區分。也就是說標準輸入流的編號為0、標準輸出流 為1 、標準錯誤流編號為2。在預設的情況下,linux的標準輸入來自於鍵盤;輸出流,錯誤流 是輸出到螢幕上的。

上面的是基礎理論。知道這些,就可以說正題啦。

重定向格式 :流 > 檔案   意思是把 某流的內容重定向到某檔案。引申:為什麼此處說“檔案”二字,因為linux系統內 萬物皆檔案。在linux看來,everything is file,裝置是檔案,鍵盤,螢幕等都是檔案。

>/dev/null  :   這是一種簡寫,完整的寫法是 1 >/dev/null  。 在linux中,預設的重定方向就是保證輸出流,也就是1 。咱們熟悉如下命令:cat xx.txt  > other.txt  其實這也是簡寫啦,把1省略了,完整寫法cat xx.txt   1> other.txt。 那麼這句就是把標準輸出流重定向到空裝置,也就是說不再輸出標準輸出流的內容了。那麼2>&1 又是什麼意思呢?  也很簡單,這也是重定向的結構。2表示標準錯誤流。& 表示等同的意思,也就是說跟1的情況一樣,跟1採取相同方式,即標準錯誤流跟標準輸出流採取同樣會的處理方式,也就是重定向到空裝置。這個字尾經常使用在linux命令中,表示不輸出任何內容。