Linux中 2 1 的用法

2021-09-05 11:24:58 字數 688 閱讀 3154

在linux中,0表示標準輸入,即stdin;1表示標準輸出,即stdout;2表示標準錯誤,即stderr。

>表示重定向,&表示取位址,那麼&1就是取到了標準輸出的位址,也就是 2>&1表示的是將標準錯誤重定向到了標準輸出,也就是將執行指令碼中出錯的資訊重定向到了標準輸出。

舉例:ls 2>1測試一下,由於ls命令會列出當前目錄的檔案列表,不會產生錯誤資訊,於是會產生乙個空的檔案1。

ls *** 2>1測試,ls ***會列出***的檔案列表,如果沒有***檔案,會產生錯誤資訊,於是會產生乙個有錯誤資訊的檔案1。

ls *** 2>&1測試,如果沒有***檔案,會產生錯誤資訊在螢幕上,即標準輸出。

ls *** >out.txt 2>&1, 實際上就是ls *** 1>out.txt 2>&1。如果沒有***檔案,會產生乙個標準錯誤重定向到了標準輸出,而標準輸出又重定向到了out.txt,於是結果會產生乙個有錯誤資訊的檔案out.txt。如果有***檔案,那麼結果會將輸出存入檔案out.txt。總的說來,就是將輸出和錯誤都存入了檔案out.txt。

那麼sh run_pascal.sh 2>&1 | tee train.log 也就好理解了,就是將sh run_pascal.sh的執行結果(輸出和錯誤)都重定向到標準輸出,同時,利用tee命令將資訊存入train.log檔案。

posted on 2018-10-04 11:15收藏

Linux 2 1 的用法說明

經常關注linux指令碼的人,一定看到過 2 1 這樣的用法,最初一定不明白其中的含義以及為什麼是這樣的一種組合。昨天偶然間再次看到了這個 2 1 的寫法,遂下決心搞明白其中的含義。其實要弄清楚 2 1 的含義,首先應當知道linux中有三種標準輸入輸出,分別是stdin,stdout,stderr...

Linux中 2 1 的含義

平時寫shell指令碼時經常見到命令或者定時任務的後面跟著2 1的寫法,舉個例子大概如下面這樣 定時任務中 0 1 root bin sh opt log clear.sh dev null 2 1 普通shell指令碼中 yuminstall y mariadb galera server mar...

java中String的21種用法

建構函式必須 new出來 public string char vaue 將乙個字元陣列變成字串 建構函式 public string char vaue,int offset,int count 將制定範圍內的字元陣列變為字串 建構函式 public string byte,bytes 將乙個by...