linux中有三種標準輸入輸出,分別是STDIN,STDOUT,STDERR,對應的數(shù)字是0,1,2。
STDIN是標準輸入,默認從鍵盤讀取信息;STDOUT是標準輸出,默認將輸出結果輸出至終端;STDERR是標準錯誤,默認將輸出結果輸出至終端。
由于STDOUT與STDERR都會默認顯示在終端上,為了區(qū)分二者的信息,就有了編號的0,1,2的定義,用1表示STDOUT,2表示STDERR。
2>&1,指將標準輸出、標準錯誤指定為同一輸出路徑
eg1:cat >>filetest 2>&1 <<END -------建立filetest文件,當輸入遇到END時,退出
eg2:
1、以普通用戶執(zhí)行 find /etc -name passwd 命令,默認會將命令的執(zhí)行結果(STDOUT)與錯誤信息(STDERR)都輸出至終端顯示器。
2、執(zhí)行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
3、若要將所有標準輸出及標準錯誤都輸出至文件,可用&表示全部1和2的信息,eg:
find /etc -name passwd &>find.all 或 find /etc -name passwd >find.all 2>&1
4、2>&1 ---標準錯誤重新定向到標準輸出
5、用法:find /etc -name passwd &2>&1 |less
可分解成
find /etc -name passwd & 表示前面的命令放到后臺執(zhí)行。
2>&1 |less 表示將標準錯誤重定向至標準輸出,并用less進行分頁顯示