shell標准出錯重定向到標准輸出
2>&1 是將標准出錯重定向到標准輸出
第二個問題很簡單:
使用這個命令就可以實現:
cat /etc/passwd | grep root | cut -d ":" -f1
實現的效果如下:
~$ cat /etc/passwd | grep root | cut -d ":" -f1
root
你是這個意思把?
追問
對,就這個意思,還有另外一個&>這個運算符的意思是什麼?請救一下。
回答
> 是輸出重定向的意思。
> 是以覆蓋的方式重定向
>> 是追加的方式重定向。
1代表標准輸出,2代表錯誤信息輸出.
&1 就代表的是標准輸出。
最後一個& 符號,是後端執行的意思。
我找個例子,你耐心研究一下:
ls han
ls: 無法訪問han: 沒有那個文件或目錄
執行
~$ ls han >1.txt 2>&1
在shell中沒有任何顯示
此時再執行~$ cat 1.txt
ls: 無法訪問han: 沒有那個文件或目錄
說明錯誤信息被重定向到1.txt 這個文件中了。
如果不加這個&
ls han >1.txt 2>1
又會多出來一個 1 文件。
cat 1
ls: 無法訪問han: 沒有那個文件或目錄
看到了把。&1 代表邏輯上的標准輸出。 不加& ,那就會產生名為的1的文件