通常情況下,我們由鍵盤輸入資料,計算機通過螢幕顯示輸出,然而有時我們並不想通過鍵盤輸入和螢幕輸出,為了解決這個問題,就引入資料流重定向的概念。
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命令可以將檔案內容輸出到螢幕。如下所示 我們可以使...