Linux下的標准輸入,輸出,重定向,管道


Linux系統中,有4個特殊符號  <   >  |  -   在我們處理輸入和輸出時存在重要但具有迷惑性的作用

  • > 表示重定向 , >filename就是把標准輸出村存儲到文件filename里面,標准錯誤錯誤還是會顯示在屏幕上。
  • 2 >&1  表示把標准錯誤重定向到標准輸出。Linux終端用2表示標准錯誤,1表示標准輸出。
  • -(短橫線) 表示標准輸入,一般用於一個程序需要多個輸入的時候。
  • <  標准輸入,后面可以跟產生輸出的命令,一般用於一個程序需要多個輸入的時候,相比-適用范圍更廣
  • | 管道符,表示把前一個命令的輸出作為后一個命令的輸入。用於數據在不同的命令之間傳輸,用途是減少硬盤存取損耗。
#! /bin/bash
echo "I am std output"
#下面是隨筆寫的一個理論上不存在的命令,會報錯
unexisted_command

#輸出
#I am std output
#stdout_error.sh: 行 4: unexisted_command:未找到命令
cat <<END | diff - <(echo "1 2 3" | tr ' ' '\n')
>2
>2
>4
>END
0a1
>1
3d3
<4
#diff是比較兩個文件的差異,需要兩個參數
#-(短橫線)表示上一個命令的參數,傳遞給diff
#< 表示其后的命令的輸出,也重定向給diff

  

管道符的更多應用  

echo "actgaaaaacccccg" | tr ' ' '\n' | wc -l
>3

echo "a b c" | tr ' ' '\n' | sed =
1
a
2
b
3
c
#sed = :先輸出行號,再輸出每行內容

echo "actg aaaaa ccccg" | tr ' ' '\n' | sed = | sed 'N;s/\n/\t/g'
>1
actg
>2
aaaaa
>3
cccccg
#N表示讀入下一行;sed命令每次只讀一行,加上N;之后,就是緩存了第二行
#s:替換

 


免責聲明!

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



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