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)