標准輸入、標准輸出、標准錯誤詳解


 

文件描述符

當執行shell命令時,會默認打開3個文件,每個文件有對應的文件描述符來方便我們使用:

 

類型 文件描述符 默認情況 對應文件句柄位置
標准輸入(standard input) 0 從鍵盤獲得輸入 /proc/self/fd/0
標准輸出(standard output) 1 輸出到屏幕(即控制台) /proc/self/fd/1
錯誤輸出(error output) 2 輸出到屏幕(即控制台) /proc/self/fd/2

 

所以我們平時在執行shell命令中,都默認是從鍵盤獲得輸入,並且將結果輸出到控制台上。但是我們可以通過更改文件描述符默認的指向,從而實現輸入輸出的重定向。比如我們將1指向文件,那么標准的輸出就會輸出到文件中。

/dev/null代表linux的空設備文件,所有往這個文件里面寫入的內容都會丟失,俗稱“黑洞” 
1、2>/dev/null意思就是把錯誤輸出到“黑洞” 

2、>/dev/null 2>&1默認情況是1,也就是等同於1>/dev/null 2>&1。意思就是把標准輸出重定向到“黑洞”,還把錯誤輸出2重定向到標准輸出1,也就是標准輸出和錯誤輸出都進了“黑洞” 

3、2>&1 >/dev/null意思就是把錯誤輸出2重定向到標准出書1,也就是屏幕,標准輸出進了“黑洞”,也就是標准輸出進了黑洞,錯誤輸出打印到屏幕 
關於這里”&”的作用,我們可以這么理解2>/dev/null重定向到文件,那么2>&1,這里如果去掉了&就是把錯誤輸出給了文件1了,用了&是表明1是標准輸出。

輸出重定向

輸出重定向的使用方式很簡單,基本的一些命令如下:

 

命令 介紹
command >filename 把標准輸出重定向到新文件中
command 1>filename 同上
command >>filename 把標准輸出追加到文件中
command 1>>filename 同上
command 2>filename 把標准錯誤重定向到新文件中
command 2>>filename 把標准錯誤追加到新文件中

 

輸入重定向

在理解了輸出重定向之后,理解輸入重定向就會容易得多。對輸入重定向的基本命令如下:

 

命令 介紹
command <filename 以filename文件作為標准輸入
command 0<filename 同上
command <<delimiter 從標准輸入中讀入,直到遇到delimiter分隔符

 

我們使用<對輸入做重定向,如果符號左邊沒有寫值,那么默認就是0。

 

 

https://blog.csdn.net/mengzuchao/article/details/82378769


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM