簡體   English   中英

將stderr和stdout重定向到同一文件的順序

[英]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 > fileyourcmd 2>&1 > file stderr發送到當前stdout所在的位置(很可能是您的終端),然后將當前stdout重定向到file

回答您的問題,我將引用GreycatLhunath撰寫的 Bash Guide中的Redirection wiki。

我建議您先訪問Bash FAQ 55,然后再訪問本文中的其他鏈接,因為它可以更快地回答您的問題,而其他鏈接將幫助您更全面地了解重定向。

重定向

重定向是外殼程序用於在文件描述符上打開,關閉,復制和執行其他操作的機制。 在運行命令本身之前,重定向是簡單命令評估的最后一步或倒數第二步(取決於外殼程序和命令)。

鏈接

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM