2 1 的用法說明。

2021-06-22 07:12:10 字數 1351 閱讀 2234

經常關注linux指令碼的人,一定看到過 2>&1 這樣的用法,最初一定不明白其中的含義以及為什麼是這樣的一種組合。昨天偶然間再次看到了這個 2>&1 的寫法,遂下決心搞明白其中的含義。

其實要弄清楚 2>&1 的含義,首先應當知道linux中有三種標準輸入輸出,分別是stdin,stdout,stderr,對應的數字是0,1,2。stdin就是標準輸入,預設從鍵盤讀取資訊;stdout是標準輸出,預設將輸出結果輸出至終端,也就是顯示器之類的東西;stderr是標準的錯誤資訊,預設也會顯示在終端上。由於stdout與stderr都會預設顯示在終端上,為了區分二者的資訊,就有了編號的0,1,2的定義,用1表示stdout,2表示stderr。

下面舉個例子:以rhce中的例子為例。

1、在系統中建立乙個普通使用者test;

2、以普通使用者登入,或者以root登入 su -test 切換至普通使用者test;

3、執行 find /etc -name passwd 命令,缺省會將命令的執行結果(stdout)與錯誤資訊(stderr)都輸出至終端顯示器。

4、體驗一下編號1,2的作用,find /etc -name passwd >find.out 2>find.err,這裡會將stdout與stderr分別存放至find.out和find.err中,該命令也可以寫成下面三種形式,大家可以體會一下編號的意義。

find /etc -name passwd 1>find.out 2>find.err

find /etc -name passwd 2>find.err >find.out

find /etc -name passwd 2>find.err 1>find.out

我個人理解就是find /etc -name passwd的命令的執行結果輸出正確的輸出(stdout)被1接收,錯誤的資訊(stderr)被2接收。

5、若要將所有的輸出及錯誤資訊都顯示出來,可以用&表示全部1和2的資訊,例如:

find /etc -name passwd &>find.all

6、有時候希望將錯誤的資訊重新定向到輸出,就是將2的結果重定向至1中就有了"2>1"這樣的思路,如果按照上面的寫法,系統會預設將錯誤的資訊(stderr)2重定向到乙個名字為1的檔案中,而非所想的(stdout)中。因此需要加&進行區分。就有了 2>&1 這樣的用法,舉例:

find /etc -name passwd 2>&1 |less

7、有時候還能看到這樣的用法:

find /etc -name passwd &2>&1 |less

這裡可以分解成

find /etc -name passwd &    表示前面的命令放到後台執行。

2>&1 |less    表示將錯誤資訊重定向至標準輸出,並用less進行分頁顯示。

Linux 2 1 的用法說明

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

C new 用法說明

int a newint 這句相當於 int a 0 a 是空 int a new int 20 這句的本質是指標指向乙個 int20 的空間 在堆裡 這個與class 類似的。1 new運算子 用於建立物件和呼叫建構函式。這種大家都比較熟悉,沒什麼好說的了。2 new修飾符 在用作修飾符時,new...

SQLSERVER DBCC 用法說明

一 dbcc 幫助類命令 dbcc help 查詢所有的dbcc命令 dbcc help 命令 查詢指定的dbcc命令的語法說明 dbcc useroptions 返回當前連線的活動 設定 的set選項 二 dbcc 檢查驗證類命令 dbcc checkalloc 資料庫名稱 檢查指定資料庫的磁碟空...