[linux] 輸入&輸出&錯誤流


輸入&輸出&錯誤流

Linux中有三種標准輸入輸出,分別是STDIN,STDOUT,STDERR,對應的數字分別是0,1,2。

標准 數字 含義
STDIN 0 標准輸入,默認從鍵盤讀取信息
STDOUT 1 標准輸出,默認將輸出結果輸出至終端
STDERR 2 標准錯誤,默認將輸出錯誤輸出至終端

STDOUT與STDERR都會默認顯示在終端上, 數字1和2用於區分二者信息

重定向

為什么要重定向
由上表可以看出,三種標准流都有默認的輸入或輸出設備。然而在實際工作中,輸入信息或輸出信息需要來自或輸出到指定的源(文件),此時需要將標准輸入或輸出重定向。

重定向符號

  • 輸入重定向(替代系統提供的標准輸入端口-鍵盤,指定輸入文件)
    符號 '<'
wc -l < test.txt #統計test文件的行數
  • 輸出重定向 (替代系統提供的標准輸出端口-顯示屏,指定輸出文件)
    符號 '>' 或 '>>'
echo 'OK' > test.py # 以'覆蓋'的方式輸出  
echo 'OK' >> test.py # 以'追加'的方式輸出

輸出重定向符號應為'1>'或'1>>', 但是一般1可省略,故常用'>'|'>>'

  • 錯誤重定向 (同輸出重定向類似,不同的是重定向符號前面要加2,代表標准錯誤。)
    符號 '2>' 或 '2>>'
    舉例:在終端輸入錯誤命令echoo,系統會輸出錯誤信息,可以將此錯誤信息輸出到test文件
echoo 'ok' 2> test.txt 

# 打印test文件中的錯誤信息
cat test.txt
Command 'echoo' not found, did you mean:

  command 'echo' from deb coreutils (8.30-3ubuntu2)

Try: sudo apt install <deb name>

兩個常用符號

  • '2>&1'
    將標准錯誤的重定向等同於標准輸出的重定向
echoo "OK" > test.txt 2>&1 # 此例錯誤重定向到了test.txt
  • '&>'
    不區分標准輸出1還是標准錯誤2
echoo "OK" &> test.txt #無論信息為1或2都重定向到test.txt文件中


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM