Linux shell中2>&1的含義

獵手家園發表於2021-06-10

1、關於2>&1的含義

(1)含義:將標準錯誤輸出重定向到標準輸出。
(2)符號>&是一個整體,不可分開,分開後就不是上述含義了。
  比如有些人可能會這麼想:2是標準錯誤輸入,1是標準輸出,>是重定向符號,那麼"將標準錯誤輸出重定向到標準輸出"是不是就應該寫成"2>1"就行了?是這樣嗎?
  如果是嘗試過,你就知道2>1的寫法其實是將標準錯誤輸出重定向到名為"1"的檔案裡去了。
(3)寫成2&>1也是不可以的。

 

2、為什麼2>&1要放在後面

nohup java -jar app.jar >log 2>&1 &

(最後一個&表示把條命令放到後臺執行。)

 

為什麼2>&1一定要寫到>log後面,才表示標準錯誤輸出和標準輸出都定向到log中?

我們不妨把1和2都理解是一個指標,然後來看上面的語句就是這樣的:

(1)本來1----->螢幕 (1指向螢幕)
(2)執行>log後, 1----->log (1指向log)
(3)執行2>&1後, 2----->1 (2指向1,而1指向log,因此2也指向了log)

 

相關文章