Linux重定向及標準輸入 輸出 錯誤相關

2021-07-24 00:25:54 字數 2981 閱讀 6607



通常情況,每個

unix

程式在啟動時都會開啟三個流,乙個用於輸入,乙個用於輸出,乙個用於列印診斷或錯誤訊息。它們分別被做:標準輸入

,標準輸出

,標準錯誤。

標準輸入是程式可以讀取其輸入的位置。預設情況下,程序從鍵盤讀取

stdin

標準輸出是程式寫入其輸出的位置。預設情況下,程序將

stdout

寫到終端螢幕上。

標準錯誤是程式寫入其錯誤訊息的位置。預設情況下,程序將

stderr

寫到終端螢幕上。

重定向

:

資料流重導向

(重定向

)就是將某個指令(命令

)執行後的執行返回值

,一般這些返回值就是你執行完後出現在螢幕上那些結果資料。如果不想讓他預設流向螢幕,可以把這些結果資料傳輸到其他的地方,例如檔案或者裝置

(例如印表機

,不過在

linux

裡面一切都一切都是檔案

,所以印表機這樣的裝置也是檔案)。

>

資料流重導向:輸出導向,會替換被導向的檔案內容

.

>>

資料流重導向:輸出導向,不會替換被導向的檔案內容,會累加資料

.

檔案描述符

:

posix

定義了stdin_fileno

、stdout_fileno

和stderr_fileno

來代替0、1

、2。這三個符號常量的定義位於標頭檔案

unistd.h

標準輸入

(stdin)

檔案描述符為

0 ,使用

<

或<<

;其實可以理解為這個箭頭指向**資料就往**跑

.這裡是輸入

(stdin).

命令就通過

<

來獲取資料

.等於資料是從左邊往命令裡面流.

標準輸出

(stdout)

檔案描述符為

1 ,使用

>

或》 ;輸出的時候不能用

<

或者<<,

因為命令總是在前面

.這裡命令要輸出資料

.所以資料的**是命令

,資料就會隨著箭頭指向你給的方向.

標準錯誤輸出

(stderr)

檔案描述符為

2 ,使用

2>

或2>>;

command >file 2>&1

首先

command >file 2>file

的意思是將命令所產生的標準輸出資訊

,和錯誤的輸出資訊送到

file

中;command>file 2>file

這樣的寫法

,stdout

和stderr

都直接送到

file

中, file

會被開啟兩次,這樣

stdout

和stderr

會互相覆蓋

,這樣寫相當使用了兩個同時去搶占

file

的管道.

定向了2

次。那如果使用

command >file 2>&1

這條命令就將

stdout

直接送向

file,stderr

繼承了第一次重定向

(fd1)

到管道後

,再被送往

file,

此時,file

只被開啟了一次

,也只使用了乙個管道

fd1,

它包括了

stdout

和stderr

的內容。

/dev/null

linux

下還有乙個非凡的檔案

/dev/null

,它就像乙個無底洞,所有重定向到它的資訊都會消失得無影無蹤。這一點非常有用,當我們不需要回顯程式的所有資訊時,就可以將輸出重定向到

/dev/null

。假如想要正常輸出和錯誤資訊都不顯示,則要把標準輸出和標準錯誤都重定向到

/dev/null

>/dev/null

表示將程式通過

printf

或者fprintf

列印到handle為1

的stdout

檔案的資訊,送到

/dev/null

空洞檔案。

例項:

crontab

排程,顯示標準和出錯資訊到乙個輸出檔案。

[hadoop@emr-worker-8 sdk-dataproc]$ crontab -l

0 6 * * * sh /home/hadoop/sdk-dataproc/sdk-ctl.sh >>/home/hadoop/sdk-dataproc/corn-err.txt 2>&1

linux標準輸入輸出與重定向

原文 1.標準輸入輸出和錯誤 linux下使用標準輸入檔案stdin和標準輸出檔案stdout,來表示每個命令的輸入和輸出,還使用乙個標準錯誤輸出檔案stderr用於輸出錯誤資訊。這三個標準輸入輸出系統預設與控制終端裝置相聯絡在一起。因此,在標準情況下,每個命令通常從它的控制終端中獲取輸入,將輸出列...

Linux重定向(輸入輸出重定向)

我們知道,linux 中標準的輸入裝置預設指的是鍵盤,標準的輸出裝置預設指的是顯示器。而本節所要介紹的輸入 輸出重定向,完全可以從字面意思去理解,也就是 通常是用檔案或命令的執行結果來代替鍵盤作為新的輸入裝置,而新的輸出裝置通常指的就是檔案。對於輸入重定向來說,其需要用到的符號以及作用如表 1 所示...

輸入輸出及重定向

重定向標準輸出 1.將命令的執行結果輸入到指定的檔案中,而不是直接顯示在螢幕中。2.是指在不修改原檔案的情況下追加到指定的檔案中。3.接檔案 是指無論是命令的標準正確輸入還是標準錯誤輸入都輸入到檔案中.4.接檔案 是指無論是命令的標準正確輸入還是標準錯誤輸入都追加到檔案中.注意 直接輸入檔案符 會覆...