Linux中Shell重定向
【linux常用命令速查手冊】關注【入門小站】,后臺回復 「1001」 自取。

在shell腳本中,默認情況下,總是有三個文件處于打開狀態,標準輸入(鍵盤輸入)、標準輸出(輸出到屏幕)、標準錯誤(也是輸出到屏幕),它們分別對應的文件描述符是 0,1,2 。
& 是一個描述符,如果1或2前不加&,會被當成一個普通文件。
> 默認為標準輸出重定向,與 1> 相同
1>&2 意思是把標準輸出重定向到標準錯誤.
2>&1 意思是把標準錯誤輸出重定向到標準輸出。
&>filename 意思是把標準輸出和標準錯誤輸出都重定向到文件filename中.
>&2即1>&2也就是把結果輸出到和標準錯誤一樣
/dev/null是一個文件,這個文件比較特殊,所有傳給它的東西它都丟棄掉
標準輸出和錯誤輸出
> ls rumenz.txt > ls rumenz.txt 1.txt ls: 1.txt: No such file or directory rumenz.txt
由于1.txt不存在,所以ls: 1.txt: No such file or directory就是錯誤輸出就是2。
rumenz.txt文件是存在的,所以rumenz.txt就是標準輸出。就是1。
把上述的標準輸出和錯誤輸出重定向到文件
> ls rumenz.txt 1.txt 1>out.log 2>err.log > cat out.log rumenz.txt > rumenz cat err.log ls: 1.txt: No such file or directory
out.log存的是標準輸出
err.log存的是錯誤輸出
案例分析
> ls rumenz.txt 1.txt > out.txt ls: 1.txt: No such file or directory > cat out.txt rumenz.txt
由于只重定向了標準輸出,所以out.txt文件只有標準輸出
> ls rumenz.txt 1.txt > out.log 1>&2 ls: cannot access 1.txt: No such file or directory rumenz.txt > cat out.log
> out.log將標準輸出重定向到文件,但是1>&2將標準輸出重定向到了錯誤輸出,所以out.log里面什么也沒有.
> ls rumenz.txt 1.txt > out.txt 2>&1 > cat out.txt ls: cannot access 1.txt: No such file or directory rumenz.txt
> out.log將標準輸出重定向到文件,但是2>&1將錯誤輸出重定向到標準輸出,所以out.log里面既有正常的輸出也有錯誤的輸出.
/dev/null
/dev/null:表示 的是一個黑洞,通常用于丟棄不需要的數據輸出, 或者用于輸入流的空文件
> rm -f $(find / -name rumenz) &> /dev/null
【linux常用命令速查手冊】關注【入門小站】,后臺回復 「1001」 自取。
Linux shell
版權聲明:本文內容由網絡用戶投稿,版權歸原作者所有,本站不擁有其著作權,亦不承擔相應法律責任。如果您發現本站中有涉嫌抄襲或描述失實的內容,請聯系我們jiasou666@gmail.com 處理,核實后本網站將在24小時內刪除侵權內容。
版權聲明:本文內容由網絡用戶投稿,版權歸原作者所有,本站不擁有其著作權,亦不承擔相應法律責任。如果您發現本站中有涉嫌抄襲或描述失實的內容,請聯系我們jiasou666@gmail.com 處理,核實后本網站將在24小時內刪除侵權內容。