當初在shell中, 看到">&1"和">&2"始終不明白什麼意思.通過在網上的搜索得以解惑.其實這是兩種輸出.html
在 shell 程式中,最常使用的 FD (file descriptor) 大概有三個, 分別是:前端
0 是一個文件描述符,表示標準輸入(stdin)
1 是一個文件描述符,表示標準輸出(stdout)shell
2 是一個文件描述符,表示標準錯誤(stderr)bash
在標準狀況下, 這些FD分別跟以下設備關聯:
stdin(0): keyboard 鍵盤輸入,並返回在前端
stdout(1): monitor 正確返回值 輸出到前端
stderr(2): monitor 錯誤返回值 輸出到前端htm
>是重定向符,就是把前面輸出的內容重定向到後面指定的位置,好比(例1):blog
& 是一個描述符,若是1或2前不加&,會被當成一個普通文件。ip
1>&2 意思是把標準輸出重定向到標準錯誤.it
2>&1 意思是把標準錯誤輸出重定向到標準輸出。class
&>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