[英]Order of redirecting stderr and stdout to the same file
將stderr和stdout都重定向到同一文件時,為什么在將stdout重定向到文件后為什么必須將stderr重定向到stdout? 它是如何工作的,為什么不允許反向方式?
2>&1
工作方式如下:
1 ---> output 1 --------> output
=====> /
2 ---> error 2 ---/
不是這個:
1 ---> output --> 1 ----> output
=====> /
2 ---> error 2 ---/
使標准誤差將任何標准輸出的話 ,不是會是什么。
有關更多信息和炫酷的ASCII藝術,請訪問BashGuide推薦的Illustrated重定向教程 。
將stdout重定向到file之后 ,沒有必要將stderr重定向到stdout ,您可以使用2>&1
將stderr重定向到stdout。 或1>&2
將stdout重定向到stder。 您也可以分別重定向1>
和2>
(如果選擇)。 舉個例子,
echo a 2>/dev/null 1>&2
不會在終端上輸出任何內容(但是如果使用echo a 2>/dev/null
,則會得到a
;因為它將stderr重定向到/dev/null
)。
使用yourcmd > file 2>&1
,將標准輸出發送到file
然后將stderr
重定向到標准輸出進行的操作,即file
。
使用yourcmd 2>&1 > file
, yourcmd 2>&1 > file
stderr
發送到當前stdout
所在的位置(很可能是您的終端),然后將當前stdout
重定向到file
。
回答您的問題,我將引用Greycat和Lhunath撰寫的 Bash Guide中的Redirection wiki。
我建議您先訪問Bash FAQ 55,然后再訪問本文中的其他鏈接,因為它可以更快地回答您的問題,而其他鏈接將幫助您更全面地了解重定向。
重定向
重定向是外殼程序用於在文件描述符上打開,關閉,復制和執行其他操作的機制。 在運行命令本身之前,重定向是簡單命令評估的最后一步或倒數第二步(取決於外殼程序和命令)。
鏈接
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.