Linux下的I/O重定向與管道

一、I/O設備

    Linux中,對系統進行操作時,就需要I/O設備與系統產生交互,同時會產生三種數據,標準輸入(0)、標準輸出(1)、標準錯誤(2)。其中標準輸入(stdin)默認接受來自鍵盤的輸入,標準輸出(stdout)和標準錯誤(stderr)默認向終端窗口輸出,改變默認輸出和出入的位置,就是I/O重定向。

二、輸出重定向到文件

>:把標準輸出重定向到文件中

    blob.png

2>:把標準錯誤重定向到文件中

    blob.png

&>:把所有輸出重定向到文件中,或:COMMAND > /path/to/file.out 2> &1(注意命令順序)

    blob.png

“>”會使原來的文件中所有的內容被覆蓋,使用“set -C”可以禁止覆蓋已有的文件,如果想強制覆蓋,可以使用“>|”選項。使用“set +C”可以解鎖禁止覆蓋。

>>:在原有的內容上追加重定向的標準輸出內容

2>:重定向標準錯誤輸出流覆蓋原文件

2>>:重定向標準錯誤輸出流追加至原文件

&>>:標準輸出和錯誤輸出追加到文件中,或:COMMAND >> /path/to/file.out 2>> &1 (注意命令順序

把同一個命令的標準輸出和錯誤輸出分別定向到不同的文件:

COMMAND > /path/to/file.out 2> /path/to/error.out

當需要合并多個程序的輸出時,使用括號“()”

    blob.png

三、tr命令的使用


    tr用于從標準輸入中轉換和刪除字符,格式為:tr [OPTION]… SET1 [SET2],其中SET1用于查詢匹配字符,SET2用于替換和刪除字符。常用的選項有:

-c –complerment:取字符集的補集

-d –delete:刪除所有屬于SET1字符集的字符

-s –squeeze-repeats:把連續重復的的字符以單獨一個字符表示

    blob.png

-t –turncate-set1:將第一個字符集對應的字符轉化為第二個字符集對應的字符

    blob.png

   

四、重定向到輸入

重定向輸入“<”可以將鍵盤以外的設備輸入到命令中,使用某些可以能夠接受文件導入的標準輸入,例如:

tr 'a-z' 'A-Z' < /etc/issue  把/etc/issue中的小寫字符轉換為大寫字符 

   blob.png

tr -d abc < /etc/fstab 刪除/etc/fstab中的abc

cat > file.txt 把鍵盤輸入的內容寫到文件中,按“ctrl+d”結束輸入

cat > filea < fileb 把fileb中的內容覆蓋到filea中

使用“<<終止詞”可以把多行命令從鍵盤導向STDIN,直到“終止詞”位置的所有文本都發送到STDIN。終止詞所在行不能出現除本身以外的任何字符,包括空格,否則本行的終止符失效。

    blob.png

五、管道

管道可以把一個進程的標準輸出流與另一個進程的標準輸入流連接起來。bash中用“|”在兩個命令之間創建管道。例如:

less:逐頁查看輸入

    ls -l /etc |less

mail:通過電子郵件發送輸入

    echo "test email" | mail -s "text" stu28 

    把test email中的內容以郵件的形式發送給用戶stu28

lpr:把輸入發送給打印機

    $ echo "test print" | lpr -P printer_name    

六、tee命令

功能說明:讀取標準輸入的數據,并將其內容輸出成文件。

語法:tee [OPTION]… [FILE]…

補充說明:tee命令會從標準輸入設備讀取數據,將其內容輸出到標準輸出設備,同時保存成為文件。

常用參數:

-a –append:附加到已有文件的后面,而不是覆蓋原文件。

-i –ignore-interrupts:忽略中斷信號

–help:在線幫助

–version:顯示版本信息。

命令1 | tee 文件名 | 命令2:把命令1的STUDOUT保存在文件中,然后管道輸入給命令2

使用:

    保存不同階段的輸出

    復雜管道的故障排除

    同時查看和記錄輸出

原創文章,作者:zhanghuanyu,如若轉載,請注明出處:http://www.www58058.com/27286

(1)
zhanghuanyuzhanghuanyu
上一篇 2016-08-04
下一篇 2016-08-04

相關推薦

  • gawk基礎及進階

    GUN awk: 文本處理三工具:grep,sed,awd grep,egrep,fgrep:文本過濾工具:pattern sed:行編輯器 模式空間、保持空間 awk:報告生成器,格式化文本輸出; AWK:Aho,Weinberger,Kernighan –> New AWK,NAWK GNU awk,gawk gawk – …

    Linux干貨 2017-05-22
  • Linux計算機基礎-入門2016-07-19

    Linux計算機基礎-入門2016-07-19 計算機系統的組成部分 計算機系統由硬件系統和軟件系統兩大部分組成 硬件系統 馮.諾依曼體系結構: 1946年數學家馮.諾依曼提出運算器,控制器,存儲器,輸入設備,輸出設備。 具體變現為一下硬件: 運算器,控制器  ——>  CPU 存儲器  …

    Linux干貨 2016-08-04
  • 硬盤基礎知識及 MBR、GPT分區格式

    一,硬盤知識     硬盤接口類型:         ? 并行:             IDE: 133MB/s &n…

    Linux干貨 2016-09-19
  • N26-第五周作業-邢巖

    馬哥門徒-N26-邢巖    我要繼續今天的博客,《一萬小時天才理論》里提到了髓鞘質,我是不是正在慢慢的給自己包裹一層髓鞘質呢?如果還沒有,那么繼續吧。    第一題:顯示當前系統上root、fedora或user1用戶的默認shell。      ~]# grep -E &#8…

    2017-02-24
  • M21-陸東貴操作類作業

    1.     設置自己的終端提示符,要求字符終端登錄時: a> 需要帶顏色 b> 需要顯示當前執行到了第幾條命令 c> 顯示當前登錄終端,主機名和當前時間 解答:[root@localhost  13:19:55 37 ~]# PS1="[\[\e[1;31m\]\u@\h&nbs…

    Linux干貨 2016-10-18
  • rpm包管理

    rpm包管理 rpm(RedHat Package Manager) 是RedHat公司發展的一種將軟件安裝到Linux系統的管理機制,也是一種數據庫記錄方法。 Linux系統上軟件的安裝主要分兩種方式,從廠商發布的tarball通過編譯來安裝;或者使用廠商已經在相應平臺上編譯好的二進制文件。 從源碼編譯安裝的程序,在漏洞修補以及軟件功能升級時太過麻煩,并且…

    Linux干貨 2016-11-18
欧美性久久久久