重定向、管道——Linux基本命令(9)

1.     輸出重定向

Linux默認輸入是鍵盤,輸出是顯示器。可以用重定向來改變這些設置。比如用wc命令的時候本來是要手動輸入一篇文字來計算字符數的,可以直接把一個已經寫好的文件用‘<’指向這條命令,就直接可以統計這個文件的字符數等了。

 

STDOUT(標準輸出)和STDERR(標準錯誤)可以被重定向到文件

命令 操作符號 文件名

支持的操作符號包括:

>  STDOUT重定向到文件

如圖,etc下有passwd文件,app下沒有passwd文件,將他們兩個重定向導出到文件ls.txt中,回車之后只剩下錯誤的那條。然后我們查看ls.txt文件,發現正確的標準輸出在里面

重定向、管道——Linux基本命令(9)

 

2> STDERR重定向到文件

同樣,使用2>則將正確的顯示出來,將錯誤輸出到ls.txt文件了。

重定向、管道——Linux基本命令(9)

 

&> 把所有輸出重定向到文件(或者> 2>&1也可以)

如圖,兩種方法將正確錯誤都輸入進文件了

重定向、管道——Linux基本命令(9)


值得注意的是,使用> 會默認將文件內容覆蓋。

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

>>  在原有內容的基礎上,追加內容

>|
file
強制覆蓋

set +C 允許覆蓋

重定向、管道——Linux基本命令(9)

  

也可以一次分別將輸出和錯誤各自定向至不同位置

重定向、管道——Linux基本命令(9)

如圖,分別定向到right.txterror.txt文件中。

 

2.tr轉換和刪除

tr
[OPTION]… SET1 [SET2]

重定向、管道——Linux基本命令(9)

重定向、管道——Linux基本命令(9)

(先輸入條件,之后回車可以輸入要想轉換的內容,輸入一行輸出一行,直到Ctrl+C退出)

 

也可以使用重定向功能,不需要輸入,直接輸入一個文件,就可以被替換了

重定向、管道——Linux基本命令(9)

如圖,不需要將.bashrc的內容重新打一遍,就可以輸出了.bashrc內容。(這種操作不會改變.bashrc的內容。)

 

       -c C
–complement
取字符集的補集(就是不刪除什么)

如圖,將除了c以外的字符都換成a

重定向、管道——Linux基本命令(9)


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

如圖,將文件中所有的abc都刪除了

重定向、管道——Linux基本命令(9)

 

-s  –squeeze-repeats 把連續重復的字符刪除成一個字符

重定向、管道——Linux基本命令(9)

如圖,將重復的abc變成一個,其余重復的字母不動。

 

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

 

對應的字符:

[:alnum:]:字母和數字

[:alpha:]:字母

[:cntrl:]:控制(非打?。┳址?/span>

[:digit:]:數字

[:graph:]:圖形字符

[:lower:]:小寫字母

[:print:]:可打印字符

[:punct:]:標點符號

[:space:]:空白字符

[:upper:]:大寫字母

[:xdigit:]:十六進制字符

 

3.從文件中導入STDIN

同樣的,我們可以使用<來重定向標準輸入STDIN

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

     tr ‘a-z’ ‘A-Z’< /etc/issue  該命令會把/etc/issue中的小寫字符都轉換成大寫字符

    tr –d abc < /etc/fstab  該命令可以刪除fstab文件中的所有abc中任意字符(這兩個功能上面已經使用過了)

 

     cat
> file
可以寫入內容到文件中

    重定向、管道——Linux基本命令(9)

ctrl+d或者 ctrl+c離開,可以使用文件來代替鍵盤的輸入

 

<< 終止詞

可以隨意編輯,直到某一行只有那個終止詞,將退出編輯,將上面的內容都發送給文件。

  重定向、管道——Linux基本命令(9)

 如圖,直到最后一行為!時,自動退出。

 

       Cat > 
filea <  fileb

      重定向、管道——Linux基本命令(9)

       如圖,將text.txt中的內容寫入到file.txt

 

       同樣,我們也可以通過這種方式導入文件到郵件里并發送。

       (發送郵件的代碼為 mail -s “郵件名想要發送給的用戶,然后輸入內容后使用Ctrl+d退出)

        重定向、管道——Linux基本命令(9)

       現在我們將text.txt這個文件寫入郵件并發送:

  重定向、管道——Linux基本命令(9)

       如圖,登陸magedu用戶,輸入mail查看郵件,發現收到了這封內容是text.txt的信。(看完之后輸入quit退出)

 

4.管道

管道(使用符號“|”表示)用來連接命令

重定向、管道——Linux基本命令(9)

如圖,將1+2傳給計算器,得出結果

 

命令1 | 命令2 | 命令3 |   將命令1STDOUT發送給命令2STDIN,命令2STDOUT發送到命令3STDIN。

重定向、管道——Linux基本命令(9)

如圖,將|tr結合使用,將所有重復的空格變成一個空格。

然后繼續使用|grep命令(這個命令以后會講到)查詢/boot那行

重定向、管道——Linux基本命令(9)


| 只能將正確結果重定向給下一條命令

使用 2>&1 | |&  可以將全部結果重定向

 

5.重定向到多個目標tee

       命令1 | tee [-a ] 文件名 | 命令2

把命令1STDOUT保存在文件中,做為命令2的輸入

-a 追加

      使用:

            保存不同階段的輸出

             復雜管道的故障排除

             同時查看和記錄輸出

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

(0)
T_endlessT_endless
上一篇 2017-07-20 16:26
下一篇 2017-07-20 16:52

相關推薦

  • Linux文本處理及用戶組管理命令練習

    一.文本處理基礎命令 (1).? 列出當前系統上所有已經登錄的用戶的用戶名。 ? ? ? ? ? 完成命令:who ?| ?cut ?-d’ ‘? -f1 ?| ?uniq ?-u 示例: (2).取出最后登錄到當前系統對的用戶的相關信息。 ? ? ? ? 完成命令:w ?|? tail -1 示例: (3).取出當前系統上被用戶當作…

    2018-03-11
  • 馬哥教育網絡班22期+第七周課程練習

    1、創建一個10G分區,并格式為ext4文件系統(1) 要求其block大小為2048, 預留空間百分比為2, 卷標為MYDATA, 默認掛載屬性包含acl(2) 掛載至/data/mydata目錄,要求掛載時禁止程序自動運行,且不更新文件的訪問時間戳 # fdisk /dev/sdb <<EOF> n> p> 1> &g…

    Linux干貨 2016-11-28
  • htop使用詳解

        在管理進程時通常要借助一些工具,比較常用的就是ps和top了;不過CentOS還為我們提供了一個更加強大的工具htop,下面就來了解一下此工具的使用方法。 一、安裝htop         htop工具在epel源中提供,請自行配置epel源,也可以直…

    Linux干貨 2015-05-18
  • 文本處理工具

    文件 查看命令:cat, tac,revcat [OPTION]… [FILE]…-E: 顯示行結束符$-n: 對顯示出的每一行進行 編號-A :顯示所有控制符-b: : 非空行編號-s :壓縮連續的空行成一行 分頁查看文件內容more: 分頁查看文件more [OPTIONS…] FILE…-d: 顯示翻頁及…

    Linux干貨 2017-03-17
  • 用PHP編寫Hadoop的MapReduce程序

    Hadoop流 雖然Hadoop是用java寫的,但是Hadoop提供了Hadoop流,Hadoop流提供一個API, 允許用戶使用任何語言編寫map函數和reduce函數.Hadoop流動關鍵是,它使用UNIX標準流作為程序與Hadoop之間的接口。因此,任何程序只要可以從標準輸入流中讀取數據,并且可以把數據寫入標準輸出流中,那么就可以通過Hadoop流使…

    Linux干貨 2015-04-13
  • 六步建立yum倉庫

    建立yum倉庫

    Linux干貨 2018-03-26
欧美性久久久久