2018-05-02 2>&1

weixin_33935777發表於2018-05-02

2>&1

Linux裡的2>&1究竟是什麼

2>&1
幾個基本符號及其含義
/dev/null 表示空裝置檔案
0 表示stdin標準輸入
1 表示stdout標準輸出
2 表示stderr標準錯誤

command>a 2>a 與 command>a 2>&1的區別

通過上面的分析,對於command>a 2>&1這條命令,等價於command 1>a 2>&1可以理解為執行command產生的標準輸入重定向到檔案a中,標準錯誤也重定向到檔案a中。

那麼是否就說command 1>a 2>&1等價於command 1>a 2>a呢。
其實不是,command 1>a 2>&1與command 1>a 2>a還是有區別的,區別就在於前者只開啟一次檔案a,後者會開啟檔案兩次,並導致stdout被stderr覆蓋。&1的含義就可以理解為用標準輸出的引用,引用的就是重定向標準輸出產生開啟的a。從IO效率上來講,command 1>a 2>&1比command 1>a 2>a的效率更高。

相關文章