linux資料流重定向

2022-08-22 19:51:09 字數 1623 閱讀 5340

通常情況下,我們由鍵盤輸入資料,計算機通過螢幕顯示輸出,然而有時我們並不想通過鍵盤輸入和螢幕輸出,為了解決這個問題,就引入資料流重定向的概念。

1 標準輸入:**為0,使用《或<<

2 標準輸出:**為1 ,使用》或》

3 標準錯誤輸出:**為2,使用2>或2>>(註解:為與標準輸出》和》區分,所以需要加入2)

輸入:ls

現在我們想讓輸出的內容輸出到test.txt中,而不是螢幕上,則需要標準輸出》或》

ls > ./test.txt

可以顯示test.txt的資料

cat test.txt

我們會發現ls的輸出已經輸出到test.txt中。

這次我們使用》來重複一次命令

ls >> ./test.txt

再次顯示test.txt的內容

cat test.txt

我們會發現兩次執行的結果都在test.txt中。

如果我們再使用》的指令執行一遍,我們會發現之前的執行結果全部被覆蓋,這就是》 和 >的區別

> 表示覆蓋

>>表示追加

這次,我們使用2>把執行的結果輸出到test.txt中,輸入

ls 2>test.txt

再次顯示test.txt的內容,我們會發現,此次檔案中什麼內容都沒有,這是因為,2>表示把錯誤的資訊輸出到檔案中,我們的指令沒有錯誤,所以導致了test.txt中的內容為空。

假設我們的目錄中沒有test1.txt,我們知道以下**會產生錯誤。

ls test1.txt

如果我們此時通過2>來輸出,那麼檔案中應該會資訊,輸入

ls test1.txt 2>test.txt

此時我們再顯示test.txt的內容,我們會發現test.txt會顯示

ls: 無法訪問test1.txt: 沒有那個檔案或目錄

由此我們知道了標準輸出和標準錯誤輸出的區別:

標準輸出是輸出正確的資訊

標準錯誤輸出是用來輸出錯誤的資訊

如果我們想把正確和錯誤資訊輸出到同乙個檔案中,需要採用以下命令

指令 >   檔案 2&>1   或 

指令 &> 檔案

標準輸入就是把由鍵盤的輸入變為檔案的輸入

《表示檔案**、

《表示結束輸入

有時我們還想在乙個命令列中執行多個命令,則需要用分號(;)把命令隔開,如

ls test.txt; ls bin;

則螢幕分別輸出ls test.txt和ls bin的輸出結果

有時我們需要前乙個命令執行成功才可執行下乙個命令,如

1建立乙個資料夾

2 在資料夾中建立乙個檔案

如果資料夾建立不成功,那麼我們不會繼續執行建立檔案的指令,此時就需要&&

指令1 && 指令2

這個指令表示指令1執行成功,才會執行指令2

有時我們也會需要指令1執行不成功去執行指令2 的情況,此時需要||

指令1 || 指令2

表示指令1執行不成功,則執行指令2

Linux資料流重定向

開篇 當在執行shell命令時,常見的就是輸出在螢幕上,但是我們有些時候需要儲存輸出結果或者丟棄輸出錯誤,就需要重定向了。什麼是資料流重定向 當我們執行乙個命令 命令不也是程式嘛 可能由檔案或者鍵盤讀入資料,經過處理之後,再將結果輸出到螢幕上。圖中,standard output與standard ...

Linux資料流重定向

在我們日常linux命令操作中,命令執行的輸入一般是鍵盤輸入,輸出一般是輸出到螢幕,但有時候,我們可能會去讀取檔案裡但資料作為輸入,或者將輸出儲存到檔案裡 比如日誌檔案 這個時候就需要用到資料流重定向。所謂資料流重定向,就是 1 將某個命令執行後應該要出現在螢幕上的資料傳輸到其它地方,例如檔案或者諸...

Linux 資料流重定向

1.三種資料流重定向 1 標準輸入 stdin 為0,使用0 或0 2 標準輸出 stdout 為1,使用1 或1 其中 1可以省略 3 標準錯誤輸出 stderr 為2,使用2 或2 2.標準輸出 stdout 重定向 我們知道linux中,cat命令可以將檔案內容輸出到螢幕。如下所示 我們可以使...