linux数据流重定向
通常情況下,我們由鍵盤輸入數據,計算機通過屏幕顯示輸出,然而有時我們并不想通過鍵盤輸入和屏幕輸出,為了解決這個問題,就引入數據流重定向的概念。
1 標準輸入:代碼為0,使用<或<<
2 標準輸出:代碼為1 ,使用>或>>
3 標準錯誤輸出:代碼為2,使用2>或2>>(注解:為與標準輸出>和>>區(qū)分,所以需要加入2)
這里以ls舉例,相信大家對ls命令非常熟悉,用來顯示目錄的內容,現在假定當前目錄為用戶主文件夾,在終端輸入以下指令(輸入:),會在屏幕顯示(輸出)
輸入:ls 輸出:bin opt 模板 圖片 下載 桌面 公共的 視頻 文檔 音樂現在我們想讓輸出的內容輸出到test.txt中,而不是屏幕上,則需要標準輸出>或>>
ls > ./test.txt可以顯示test.txt的數據
cat test.txt我們會發(fā)現ls的輸出已經輸出到test.txt中。
這次我們使用>>來重復一次命令
ls >> ./test.txt再次顯示test.txt的內容
cat test.txt我們會發(fā)現兩次執(zhí)行的結果都在test.txt中。
如果我們再使用>的指令執(zhí)行一遍,我們會發(fā)現之前的執(zhí)行結果全部被覆蓋,這就是>> 和 >的區(qū)別
> 表示覆蓋
>>表示追加
?
這次,我們使用2>把執(zhí)行的結果輸出到test.txt中,輸入
ls 2>test.txt再次顯示test.txt的內容,我們會發(fā)現,此次文件中什么內容都沒有,這是因為,2>表示把錯誤的信息輸出到文件中,我們的指令沒有錯誤,所以導致了test.txt中的內容為空。
假設我們的目錄中沒有test1.txt,我們知道以下代碼會產生錯誤。
ls test1.txt如果我們此時通過2>來輸出,那么文件中應該會信息,輸入
ls test1.txt 2>test.txt此時我們再顯示test.txt的內容,我們會發(fā)現test.txt會顯示
ls: 無法訪問test1.txt: 沒有那個文件或目錄由此我們知道了標準輸出和標準錯誤輸出的區(qū)別:
標準輸出是輸出正確的信息
標準錯誤輸出是用來輸出錯誤的信息
如果我們想把正確和錯誤信息輸出到同一個文件中,需要采用以下命令
指令 > 文件 2&>1 或 指令 &> 文件?
標準輸入就是把由鍵盤的輸入變?yōu)槲募妮斎?/p>
<表示文件來源、
<<表示結束輸入
?
有時我們還想在一個命令行中執(zhí)行多個命令,則需要用分號(;)把命令隔開,如
ls test.txt; ls bin;則屏幕分別輸出ls test.txt和ls bin的輸出結果
?
有時我們需要前一個命令執(zhí)行成功才可執(zhí)行下一個命令,如
1創(chuàng)建一個文件夾
2 在文件夾中創(chuàng)建一個文件
如果文件夾創(chuàng)建不成功,那么我們不會繼續(xù)執(zhí)行創(chuàng)建文件的指令,此時就需要&&
指令1 && 指令2這個指令表示指令1執(zhí)行成功,才會執(zhí)行指令2
有時我們也會需要指令1執(zhí)行不成功去執(zhí)行指令2 的情況,此時需要||
指令1 || 指令2表示指令1執(zhí)行不成功,則執(zhí)行指令2
轉載于:https://www.cnblogs.com/qixianyu/p/6574535.html
總結
以上是生活随笔為你收集整理的linux数据流重定向的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Problem 77:Prime sum
- 下一篇: 几个让我印象深刻的面试题(二)