【linux編程】文本處理-重定向

重定向

重定向 1>&2 2>&1的定義

在 shell 程式中,最常使用的 FD (file descriptor) 大概有三個, 分別是:

  • 0: Standard Input (STDIN)
  • 1: Standard Output (STDOUT)
  • 2: Standard Error Output (STDERR)

在標準情況下, 這些FD分別跟如下設備關聯:

  • stdin(0): keyboard 鍵盤輸入,并返回在前端
  • stdout(1): monitor 正確返回值 輸出到前端
  • stderr(2): monitor 錯誤返回值 輸出到前端

舉例

當前目錄只有一個文件 a.txt.

[root@redhat box]# ls 

a.txt 

[root@redhat box]# ls a.txt b.txt          

錯誤返回值

ls: b.txt: No such file or directory

由于沒有b.txt這個文件, 于是返回錯誤值, 這就是所謂的2輸出

正確返回值

a.txt 而這個就是所謂的1輸出

再接著看:

[root@redhat box]# ls a.txt b.txt  1>file.out 2>file.err 

執行后,沒有任何返回值. 原因是, 返回值都重定向到相應的文件中了,而不再前端顯示

[root@redhat box]# cat file.out 

a.txt 

[root@redhat box]# cat file.err 

ls: b.txt: No such file or directory 

一般來說,"1>" 通??梢允÷猿?">".

即可以把如上命令寫成: ls a.txt b.txt >file.out 2>file.err


"1>&2" 和 "2>&1"的區別

  • 1>&2 正確返回值傳遞給2輸出通道 &2表示2輸出通道

  • 如果此處錯寫成 1>2, 就表示把1輸出重定向到文件2中.

  • 2>&1 錯誤返回值傳遞給1輸出通道, 同樣&1表示1輸出通道.

舉個例子.

[root@redhat box]# ls a.txt b.txt 1>file.out 2>&1 

[root@redhat box]# cat file.out 

ls: b.txt: No such file or directory 

a.txt 

現在, 正確的輸出和錯誤的輸出都定向到了file.out這個文件中, 而不顯示在前端.

補充下, 輸出不只1和2, 還有其他的類型, 這兩種只是最常用和最基本的.

?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內容

  • Spring Cloud為開發人員提供了快速構建分布式系統中一些常見模式的工具(例如配置管理,服務發現,斷路器,智...
    卡卡羅2017閱讀 134,837評論 18 139
  • 我是陳阿土 陳阿土是臺灣的農民,從來沒有出過遠門。攢了半輩子的錢,終于參加一個旅游團出了國。 國外的一切都是非常新...
    沫沫水田飛白鷺閱讀 547評論 0 0
  • 文/張小魚 剛才給媽媽打電話,隨意聊天中她問到你,愣了幾秒,只好含糊回答說『對啊,他也休假,我們昨天見面了』沒有向...
    Z的一朵白月光閱讀 205評論 0 0
  • 2017.10.24之《助推》:以設計之名,以偏見之名 以設計之名 先來掃一眼書的目錄,想基本知道書的主題,掃目錄...
    酈無悔閱讀 237評論 6 5
  • 第一章 曉夜清風夢微寒 第三節 雨輕塵輕輕咂一口,慢慢回味。 “冥山銀針茶,茶香氣清高,味醇甘爽,湯黃澄高,芽壯...
    月曦月夕閱讀 325評論 0 0