I/O重定向及管道

一、I/O重定向

    程序=指定+數據

    讀取數據:input

    輸出數據:output

    打開的文件都有一個fd:文件描述符

    linux給程序提供三種I/O設備:

        標準輸入(standard input) -0 默認接受來自鍵盤的輸入

        標注輸出(standard output) -1 默認輸出到終端窗口

        標準錯誤(standard erroe) -2 默認輸出到終端窗口

    I/O重定向:改變默認位置

二、標準輸出和標準錯誤可以被重定向到文件 

    command 操作符號 文件名

    支持的操作符號:

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

[root@localhost ~]# ls > /wang/dir
[root@localhost ~]# cat /wang/dir
anaconda-ks.cfg
mima.txt
mulu1
mulu2
wenjian1
wenjian2
yonghu.txt

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

[root@localhost ~]# xxx 2> /wang/dir
[root@localhost ~]# cat /wang/dir
-bash: xxx: command not found

        &>:把所有輸入重定向到文件  

[root@localhost ~]# ls /wang /wang/x &> /wang/dir
[root@localhost ~]# cat /wang/dir
ls: cannot access /wang/x: No such file or directory
/wang:
123
dir

    >文件內容會被覆蓋

         set -C:禁止將內容覆蓋已有文件,但可追加

            強制覆蓋>|

        set +C:允許覆蓋

    >>:在原有的內容上,追加內容,不會被覆蓋。

    2>:覆蓋重定向錯誤輸出數據流

    2>>:追加重定向錯誤輸出數據流

    標準輸出和標準錯誤各自定向不同位置

        command > 文件1 2> 文件2

[root@localhost ~]# ls /wang /wang/xx > /wang/yes 2> /wang/no
[root@localhost ~]# cat /wang/yes /wang/no
/wang:
123
dir
no
yes
ls: cannot access /wang/xx: No such file or directory

    合并標準輸出和錯誤輸出為同一個數據流進行重定向

    &>:覆蓋重定向

    &>>:追加重定向

    command > 文件 2>>&1 (固定順序)

    command >> 文件 2>>&1

    ():合并多個程序的標準輸出 

[root@localhost ~]# (ls;pwd) > /wang/321
[root@localhost ~]# cat /wang/321
anaconda-ks.cfg
mima.txt
mulu1
mulu2
wenjian1
wenjian2
yonghu.txt
/root

三、tr命令

    tr – 轉換和刪除字符

    t2 選項 set1 set2

     常用選項:

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

        -d或–delete:刪除所有屬于第一字符集的字符

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

        -t或–truncate

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

四、從文件中導入標準輸入

    使用<來重定向標準輸入

    某些命令能接受從文件中導入的stdin

        tr ‘a-z’ ‘A-Z’ < /etc/issue

        這條命令會把/etc/issus中的小寫字符都轉換成大寫字符

[root@localhost wang]# tr 'a-c' 'A-C' < /wang/qqq
ABCdefg

        tr -d abc < /etc/fstab

        刪除fstab文件中的所有adc中任意字符

[root@localhost wang]# tr -d abc < /wang/qqq
defg

        cat > filea

         mage

         wang

        按ctry+d離開,可以使用文件來代替鍵盤的輸入

[root@localhost wang]# cat  > qqq
123 
qwe
asd
123[root@localhost wang]#

        cat > filea < filed

[root@localhost wang]# cat > 123 < qqq
[root@localhost wang]# cat 123
123 
qwe
asd
123

五、把多行發送給標準輸入

    使用“<<終止詞”命令從鍵盤把多行重定向給stdin

        直到 終止詞 位置的所有文本都發送給stdin

        有時被成為就地文本(heretext)

[root@localhost wang]# mail -s "Please Call" linux@wang <<end
> Hi wang
> please give me a cao when you get in ,
> we man need to do some maintenance on server
> 
> end
[root@localhost wang]#

六、管道

    使用符號“|”表示,用來鏈接命令

    命令1|命令2|命令3

    將命令1的標準輸出發送給命令2的標準輸入,命令2的標準輸出發送到命令3的標準輸入

    標準錯誤默認不能通過管道轉發,可利用2>&1或|&實現

    最后一個命令會在當前shell進程的字shell進程中執行,用來組合多種工具的功能

[root@localhost wang]# cat qqq | tr 'a-d' 'A-D'
123 
qwe
AsD
123

    less:一頁一頁的查看輸入

        ls -l /wang | less

    

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

        echo"test email" | mail -s "test" user@example.com

    lpr:把輸入發送給打印機

        echo"test print" |lpr -P printer_name

七、重定向到多個目標(tee)

    命令1 | tee 文件名 | 命令2

        把命令1中的標準輸出保存在文件名中,然后管道輸出給命令2使用:

        保存不同階段的輸出

        復雜管道的故意排除

        同時查看和記錄輸出

[root@localhost wang]# ls | tee /wang/wang
123
321
dir
no
qqq
wang
yes
[root@localhost wang]# cat /wang/wang
123
321
dir
no
qqq
wang
yes

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

(0)
DYWDYW
上一篇 2016-08-02 16:44
下一篇 2016-08-02 16:58

相關推薦

  • N25-第一周博客

      第一周博客作業內容 1.描述計算機的組成及其功能 2.按系列羅列Linux的發行版,并描述不同發行版之間的聯系與區別 3.描述Linux哲學思想,并按照自己的理解對其進行解釋性描述。 4.說明Linux系統上命令的使用格式:詳細介紹,ifconfg,echo,tty,startx,export pwd,history,shutdown,powe…

    Linux干貨 2016-12-03
  • ssh 筆記

    ssh

    Linux干貨 2018-01-08
  • linux 用戶與組管理詳解

    ##用戶與組的分類 Linux系統對用戶分配如下: -系統管理員:root -普通用戶:普通用戶分為以下兩種           系統用戶:系統用戶通常是不可登陸的,執行某些服務及進程的帳號           登錄用戶:一般用戶,    …

    Linux干貨 2017-04-05
  • 程序包管理:rpm、yum以及(make)源代碼編譯安裝

    程序包管理:rpm、yum以及(make)源代碼編譯安裝 在Linux上安裝程序一般都有三種方法:源代碼編譯安裝,rpm包安裝和rpm包的前端安裝yum, (rpm,和yum程序包管理器是針對CentOS6平臺的) 程序包管理方式都大同小異:  源代碼–>目標二進制格式(二進制程序、庫文件、配置文件、幫助文件)–&gt…

    Linux干貨 2017-01-10
  • HAProxy基于Keepalived做高可用并簡單實現Web站點的動靜分離

    HAProxy簡介   HAProxy 是一個免費的,非??焖俸涂煽康慕鉀Q方案,提供 高可用性, 負載均衡和代理對TCP和HTTP的應用程序。它特別適用于非常大流量網站。多年來,它已成為標準開源的負載均衡,現在隨最主流的Linux發行版,并且通常默認的云平臺部署。 實驗描述 1、本實驗主要是在前端放置兩臺通過Keepalived做了高可用的HAProxy反向…

    Linux干貨 2016-04-16
  • 攜程全站癱瘓引發的思考

       為今年5月冠上多事之夏的名頭已是無可厚非的一件事,自支付寶光纖被挖斷后,攜程又暴出全站癱瘓的風波,從5/28 11:00開始,直到晚上11:29分才全面恢復.互聯網也是謠言四起,紛紛猜測百度騰訊誰會是下一個災難的受害者。暫切拋開這些玩笑言論,就攜程本次事情引發的思考太多,前車之鑒后事之師,如果攜程的事情發生到我們身上,我們該怎么辦,…

    Linux干貨 2015-06-03
欧美性久久久久