1. 程式人生 > >基於Linux的數據流重定向

基於Linux的數據流重定向

文件描述符 tab 為什麽 size 文件 將他 希望 輸入 xxx

1、Linux默認提供了標準輸入(stdin)、標準輸出(stdout)、標準錯誤(stderr),三個特殊設備,也是三個數據流,用於終端的顯示和和輸出
2、三個文件描述符分別是:0,1,2,默認表現位置都指向了終端,多以打開仁義程序的時候,文件描述符至少是3,因為0,1,2已經被占用
3、

輸出重定向:

> 輸出重定向到一個文件或設備 覆蓋原來的文件
>! 輸出重定向到一個文件或設備 強制覆蓋原來的文件
>> 輸出重定向到一個文件或設備 追加原來的文件
< 輸入重定向到一個程序
例如:ls ~ >1.txt #將輸出的內容保存到1.txt中,文件不存在則創建,存在則清空

ls / >>1.txt #將輸出的內容保存到1.txt中,文件不存在則創建,存在則追加
錯誤重定向:
2> 將一個標準錯誤輸出重定向到一個文件或設備 覆蓋原來的文件 b-shell
2>> 將一個標準錯誤輸出重定向到一個文件或設備 追加到原來的文件
2>&1 將一個標準錯誤輸出重定向到標準輸出 註釋:1 可能就是代表 標準輸出
>& 將一個標準錯誤輸出重定向到一個文件或設備 覆蓋原來的文件 c-shell
|& 將一個標準錯誤 管道 輸送 到另一個命令作為輸入
例如:ls xxx 2> 1.txt #將錯誤內容保存到1.txt中
ls xxx / &>1.txt #將標準輸出和錯誤信息同時保存到1.txt中
輸入重定向:
例如:cat>1.txt ,回車,輸入內容,退出用ctrl + d,然後cat 1.txt
#將標準輸入重定向到1.txt中
/dev/nul/ :相當於一個黑洞,可以寫入任何數據
/dev/zero: 可以從該文件中讀取內容,永遠都是0
4、在 bash 命令執行的過程中,主要有三種輸出入的狀況,分別是:
1》標準輸入;代碼為 0 ;或稱為 stdin ;使用的方式為 <
2》標準輸出:代碼為 1 ;或稱為 stdout;使用的方式為 1>
3》錯誤輸出:代碼為 2 ;或稱為 stderr;使用的方式為 2>
5、為什麽使用命令輸出重定向:
1》當屏幕輸出的信息很重要,而且我們需要將他存下來的時候;
2》背景執行中的程序,不希望他幹擾屏幕正常的輸出結果時;
3》一些系統的例行命令(例如寫在 /etc/crontab 中的文件)的執行結果,希望他可以存下來時;
4》一些執行命令,我們已經知道他可能的錯誤訊息,所以想以『 2> /dev/null 』將他丟掉時;
5》錯誤信息與正確信息需要分別輸出時。

基於Linux的數據流重定向