shell的輸出可以分為標準輸出和錯誤輸出,2>&1中,2代表錯誤輸出,1代表標準輸出,&符號代表後面跟的是代號而不是檔案。
test.sh
echo '我是標準輸出
'ls /tmp/b.py
假設不存在/tmp/b.py這個檔案
這裡會輸出:
我是標準輸出ls: cannot access /tmp/b.py: no such file or directory
第一行是標準輸出,第二行是錯誤輸出
1.
sh test.sh >1
錯誤輸出會出現在終端,也就是螢幕上,標準輸出會在1這個檔案裡面
2.
sh test.sh 2>1
這樣就會反過來,錯誤輸出在1檔案,標準輸出在螢幕
3.
sh test.sh >12>&1
這樣錯誤輸出和標準輸出都會輸出到1檔案,2>&1表示先把錯誤輸出輸出到標準輸出,>1 代表標準輸出輸出到1檔案
參考:
shell 2 1問題(重定向)
經常可以在一些指令碼,尤其是在crontab呼叫時發現如下形式的命令呼叫 tmp test.sh tmp test.log 2 1 前半部分 tmp test.sh tmp test.log很容易理解,那麼後面的2 1是怎麼回事呢?要解釋這個問題,還是得提到檔案重定向。我們知道 和 是檔案重定向符。...
Shell中的重定向
幾乎所有的linux命令都是以鍵盤作為輸入,以顯示屏作為輸出。但在linux中,通過重定向你也可以以檔案作為輸入輸出。有三個重定向符號 作用 將命令執行結果輸出到檔案,如果檔案不存在則新建乙個,如果檔案存在則重寫檔案。舉例 cal mycal cat mycal 作用 將命令執行結果輸出到檔案,如果...
shell中輸入重定向,輸出重定向,管道
什麼是檔案描述符 1 程序中開啟乙個檔案就會有乙個檔案描述符 2 檔案描述符是乙個非負整數 3 系統為每乙個程序維護乙個檔案描述符表 程序級檔案描述符 4 同乙個程序裡面不同檔案描述符可以對應同乙個檔案 乙個檔案被開啟多次 5 不同程序的檔案描述符可以相同 不影響 可以指向同乙個檔案,也可以指向不同...