===============1.有些人經常問我這個問題問題===========
經常在腳本里面看到這個 2>&1 表示什么意思啊?
==============2.理論==========================
在linux中,每個進程都會有三個文件,並且這三個文件會進行重定向處理:
/dev/stdin ----->/proc/self/fd/0 //表示標准輸入,即鍵盤輸入
/dev/stdout ----->/proc/self/fd/1 //表示標准輸出,即顯示屏,屏幕
/dev/stderr ----> /proc/self/fd/2 //表示標准錯誤輸出,有些腳本運行時會報錯,就會輸入到這。
你看到的2>&1中的數字就是上面重定向后的數字。
0: 表示鍵盤輸入
1:將信息輸入到屏幕(一般linux命令都是默認為1)
2:將信息輸入到錯誤輸出
===================3.舉個栗子====================
在終端中寫一個sh文件
>>>>>>>>>>>>>>
$cat demo.sh
#!/bash/bin
xxxx
date
<<<<<<<<<<<<<<
執行這個sh文件,並將輸出到demo.log中
./demo.sh > demo.log
./demo.sh: line 2: xxxx: command not found
由於xxxx不是linux命令會報錯,並且將錯誤信息輸出到屏幕(標准輸出),而date是linux
命令,會正確輸出,並將正確的信息輸出到demo.log文件中
cat demo.log
Sat Mar 5 09:49:11 HKT 2016
==============4.再回頭看最開始的問題============
2>&1 意思就很明了了,就是講執行linux命令時的錯誤信息也輸出到屏幕上。
./demo.sh 2>&1
./demo.sh: line 2: xxxx: command not found
Sat Mar 5 09:57:09 HKT 2016
===============收工======================