當初在shell中, 看到">&1"和">&2"始終不明白什么意思.經過在網上的搜索得以解惑.其實這是兩種輸出.
在 shell 程式中,最常使用的 FD (file descriptor) 大概有三個, 分別是:
0 是一個文件描述符,表示標准輸入(stdin)
1 是一個文件描述符,表示標准輸出(stdout)
2 是一個文件描述符,表示標准錯誤(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