linux隨筆(一) | 標準輸入、輸出、錯誤流
阿新 • • 發佈:2018-12-21
在工作開始初期,我曾經為了“ >/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命令中,表示不輸出任何內容。