shell腳本中:1>&2 2>&1 &>filename重定向的含義和區別


當初在shell中, 看到">&1"和">&2"始終不明白什么意思.經過在網上的搜索得以解惑.其實這是兩種輸出.

在 shell 程式中,最常使用的 FD (file descriptor) 大概有三個, 分別是:

0 是一個文件描述符,表示標准輸入(stdin)
是一個文件描述符,表示標准輸出(stdout)

是一個文件描述符,表示標准錯誤(stderr)

在標准情況下, 這些FD分別跟如下設備關聯: 
stdin(0):     keyboard 鍵盤輸入,並返回在前端 
stdout(1):   monitor 正確返回值 輸出到前端 
stderr(2):    monitor 錯誤返回值 輸出到前端

 >是重定向符,就是把前面輸出的內容重定向到后面指定的位置,比如(例1):

 

& 是一個描述符,如果1或2前不加&,會被當成一個普通文件。

1>&2 意思是把標准輸出重定向到標准錯誤.

2>&1 意思是把標准錯誤輸出重定向到標准輸出。

&>filename 意思是把標准輸出和標准錯誤輸出都重定向到文件filename

 

下面是來自百度知道的內容,大家可以參考下:

問:Linux重定向中 >&2 怎么理解?
問題補充:echo "aaaaaaaaaaaaaaaa" >&2 怎么理解?

答:

>&2 即 1>&2 也就是把結果輸出到和標准錯誤一樣;之前如果有定義標准錯誤重定向到某log文件,那么標准輸出也重定向到這個log文件
如:ls 2>a1 >&2 (等同 ls >a1 2>&1)
把標准輸出和標准錯誤都重定向到a1,終端上看不到任何信息。

參考:https://www.cnblogs.com/liuchaogege/p/6124669.html


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM