資料流重導向:即將本應在標準輸入輸出(std input / output / error output)的資料傳到別的地方去。
例如將除錯資訊存入文件中,而非直接輸出到螢幕上。也可以用 tee 命令,即輸出到標準輸出,又寫入指定文件:也叫雙向導向。
傳送字元如下所示:
1.標準輸入(stdin):**為0,使用 < 或 <<2.標準輸出(stdout):**為1,使用 > 或 >> ; 或者 1> 或 1>>,系統預設為1,所以只寫》或》系統預設為標準(正確)輸出。
3.標準錯誤輸出(stderr):**為2,使用 2> 或 2>>
>:以覆蓋的方式將(正確的資料)輸出到指定的文件或裝置上。文件原先的資料被本次資料覆蓋舉例:>>:以累加的方式將(正確的資料)輸出到指定的文件或裝置上。文件原先資料保留,本次資料接在原先資料之後。
1.標準輸出重導向
[root@www ~]# ll / <==此時螢幕會顯示出檔名資訊2.若將正確和錯誤的資訊分別寫入不同的文件[root@www ~]# ll / > ~/rootfile <==螢幕幵無任何資訊,資訊輸入到rootfile裡面去了,
<==若該檔案不存在就建立之,否則系統先將該檔案中資料清空,再寫入新資料,也即覆蓋。
將 stdout 與 stderr 分別存入不同的檔案去
[dmtsai@www ~]$ find /home -name .bashrc > list_right 2> list_error <==list_right 中存放正確輸出的資訊: (1)>;list_error中存放錯誤輸出的資訊: 2>3.將指令的資料全部寫入名為 list 的檔案中
[dmtsai@www ~]$ find /home -name .bashrc > list 2> list <==錯誤這其中設計到輸出順序問題。[dmtsai@www ~]$ find /home -name .bashrc > list 2>&1<==正確
[dmtsai@www ~]$ find /home -name .bashrc &> list<==正確
4.standard input:< 與 << :將原本需要有鍵盤輸入的資料,該有檔案的內容來代替。
範例六:利用 cat 指令來建立乙個檔案的簡單流程
[root@www ~]# cat > catfile由於加入 > 在 cat 後,所以那個 catfile 會被主動的建立,而內容就是剛剛鍵盤上面輸入的那兩行資料testing
cat file test
<==這裡按下 [ctrl]+d 來離開
[root@www ~]# cat catfile
testing
cat file test
了。 唔!那我能利用純文字檔案取代鍵盤的輸入,也就是說,用某個檔案的內容來取代鍵盤的敲擊
呢? 可以的!如下所示:
範例七:用 stdin 取代鍵盤的輸入以建立新檔案的簡單流程
[root@www ~]# cat > catfile < ~/.bashrc[root@www ~]# ll catfile ~/.bashrc
-rw-r--r-- 1 root root 194 sep 26 13:36 /root/.bashrc
<< 與 < 的區別:
< : 的結束識別符號是eof,標準文件結束符。
<< : 可以自己指定輸入結束的標誌,如下所示:
資料流重導向應用的場合:
螢幕輸出的資訊很重要,而且我們需要將他存下來的時候; 背景執行中的程式,不希望他干擾螢幕正常的輸出結果時;
一些系統的例行命令 (例如寫在 /etc/crontab 中的檔案) 的執行結果,希望他可以存下來時;
一些執行命令的可能已知錯諢訊息時,想以『 2> /dev/null 』將他丟掉時;
錯誤訊息不正確訊息需要分別輸出時。
參考《鳥哥》
Linux資料流重導向
當我們使用linux的時候,每下達1個命令,通常都會有對應的資訊輸出在螢幕上,這些輸出的資料就是資料流,而linux資料流重導向,就是把這些資料輸出到不同的地方了。而資料流通常分為正確的資料跟錯誤的資料,如果我們要把正確的資料導向到我們要的檔案裡面去,可以使 覆蓋 新增 來處理。malt malt ...
Linux之資料流重導向
其實一開始繞進檔案描述符這個大坑裡去了,越挖越深,什麼系統檔案表,記憶體索引節點,vfs等等都一下子冒了出來,而我暫時還沒那麼多精力搞定所有,於是只能遮蔽底層的一些細節,暫且當作黑盒子,來日再挖。1 linux系統中,一切資源都被視為檔案,包括放在磁碟上的各種文件,甚至各種裝置。檔案是linux組織...
1 5 資料流重導向(redirect)
當我們執行乙個指令時,此指令可能由檔案讀取資料,經處理之後,輸出到螢幕上,此外,若指令執行失敗,則會傳回錯誤指示。在這個過程中,輸出操作被稱為 standend output,簡稱stdout。輸出 為1,使用符號 或 表示。輸出錯誤操作被稱為 standend error output,簡稱std...