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 14:40
下一篇 2016-08-04 14:41

相關推薦

  • 自制Linux

    1. 分區出來兩個區 fdisk /dev/sdb     2. 創建文件系統   [root@localhost ~]# mkfs.ext4 /dev/sdb1  [root@localhost ~]# mkfs.ext4 /dev/sdb2 3.…

    Linux干貨 2016-09-16
  • 第八周網絡基礎以及腳本聯系

    1、請描述網橋、集線器、二層交換機、三層交換機、路由器的功能、使用場景與區別。 ![](http://i.imgur.com/5u2IMF8.png) 三層交換機:將路由技術和交換技術合二為一的技術,當對第一次數據流進行路由后,會產生一個MAC地址與IP地址相對應的映射表,當同樣的數據流再次通過時,將根據映射表進行數據交換而不在進行路由。 路由器:工作于網絡…

    Linux干貨 2017-03-30
  • N25-第一周作業

    一,描述計算機的組成及其功能。        計算機(Computer)是一種能夠按照事先存儲的程序,自動、高速地進行大量數值計算和各種信息處理的現代化智能電子設備。由硬件和軟件所組成,兩者是不可分割的。        計算機的組成分為控制…

    Linux干貨 2016-12-03
  • linux初識

    一、計算機的組成及其功能: 存儲器:    實現記憶功能的部件用來存放計算程序及參與運算的各種數據 運算器:    負責數據的算術運算和邏輯運算即數據的加工處理 控制器:    負責對程序規定的控制信息進行分析,控制并協調輸入,輸出操作或內存訪問 輸入設備:    實現計算程序和…

    Linux干貨 2016-10-30
  • linux防火墻規矩管理工具-iptables

    工具:iptables  系統:centos6.8 目錄 一、iptables簡介 二、主機報文流向 三、Netfilite功能 四、Iptables規矩     一、iptables簡介 iptables,一個運行在用戶空間的應用軟件,通過控制Linux內核netfilter模塊,來管理網絡數據包的流動與轉送。通常iptabl…

    2017-02-07
  • 網絡班21期第四周作業

    1、復制/etc/skel目錄為/home/tuser1,要求/home/tuser1及其內部文件的屬組和其它用戶均沒有任何訪問權限。          mkdir /home/tuser1        &n…

    Linux干貨 2016-08-22
欧美性久久久久