關於2>1&的含義:
含義:將標準錯誤輸出重定向到標準輸出符號》&是乙個整體,不可分開,分開後就不是上述含義了。
比如有些人可能會這麼想:2是標準錯誤輸入,1是標準輸出,>是重定向符號,那麼"將標準錯誤輸出重定向到標準輸出"是不是就應該寫成"2>1"就行了?是這樣嗎?
如果是嘗試過,你就知道2>1的寫法其實是將標準錯誤輸出重定向到名為"1"的檔案裡去了寫成2&>1也是不可以的
為什麼2>&1要放在後面
考慮如下一條shell命令
(最後乙個&表示把條命令放到後台執行,不是本文重點,不懂的可以自行google)
為什麼2>&1一定要寫到》log後面,才表示標準錯誤輸出和標準輸出都定向到log中?
我們不妨把1和2都理解是乙個指標,然後來看上面的語句就是這樣的:
本來1----->螢幕 (1指向螢幕)
執行》log後, 1----->log (1指向log)
執行2>&1後, 2----->1 (2指向1,而1指向log,因此2也指向了log)
再來分析下
本來1----->螢幕 (1指向螢幕)
執行2>&1後, 2----->1 (2指向1,而1指向螢幕,因此2也指向了螢幕)
執行》log後, 1----->log (1指向log,2還是指向螢幕)
所以這就不是我們想要的結果。
Linux shell 關於 2 1 的含義
0 表示標準輸入 1 表示標準輸出,即stdout 2 表示標準錯誤輸出,即stderr 預設為標準輸出重定向,與 1 相同 2 1 意思是把標準錯誤輸出重定向到標準輸出.file 意思是把標準輸出和標準錯誤輸出 都重定向到檔案file中 dev null 可以看作黑洞,它等價於乙個只寫檔案,所有寫...
Linux Shell例項精解,筆記
chsh命令 l,list shells 列印 etc shells中僉shell的清單並退出 s,shell 指定登陸shell u,help 列印使用方法資訊並退出 v,version 列印版本資訊並退出 內建set命令選項表 allexport a 開啟此開關,即自動標記新的或修改要傳出的變數...
Linux shell 的測試命令
shell編寫時經常使用到的測試命令 檔案狀態測試 d 目錄 s 檔案長度大於0 非空 f 正規檔案 w 可寫 l 符號連線 u 檔案有s u i d位設定 r 可讀 x 可執行 測試時使用邏輯操作符 a 邏輯與,操作符兩邊均為真,結果為真,否則為假。o 邏輯或,操作符兩邊一邊為真,結果為真,否則為...