重定向與管道

 

   本次內容

   1.三種I/O設備

   2.把I/O從定向入文件

   3.命令tr

   4.使用管道鏈接命令

   5.tee

 

我們都知道程序是由:指令+數據

       讀入數據:Input

       輸出數據:output

而打開的文件都有一個fd: file
descriptor (文件描述符)

同時也有三種I/O設備:

                標準輸入 0  默認是由接受鍵盤輸入

                標準輸出 1  默認是輸出到終端窗口顯示屏

                標準錯誤 2   默認是輸出到終端窗口顯示屏

 

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

   標準輸出的不管是錯誤或默認輸出都可以重定向到文件之中它的格式為:    

  命令  操作符號 文件名


   支持符號包括

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

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

   &> 把所有(不管是正確還是標準輸出錯誤)的重定向到文件中

 重定向與管道

 重定向與管道

 重定向與管道

 

注意:

       用重定向符號時> ,2> ,
&> 時原來的文件內容會被覆蓋

 重定向與管道

 

在原來基礎上,追加內容  >>

 重定向與管道

 

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

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

重定向與管道


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

OMMAND >
/path/to/file.out2> /path/to/error.out

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

?&>覆蓋重定向

?&>>
追加重定向

?COMMAND
> /path/to/file.out 2>&1 (順序很重要)

?COMMAND
>> /path/to/file.out 2>&1

 

 重定向與管道

 

  注意:>>& 排序是錯誤的

 重定向與管道

 

  標準輸出 <

 重定向與管道

    tr轉換和刪除字符

?tr[OPTION]…
SET1 [SET2]

?選項:

-c–C –complement:取反(除了)

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

-s  連續的壓縮

 重定向與管道

 

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

?

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

?有時被稱為就地文

 重定向與管道

 

   管道 

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

命令1 | 命令2 | 命令3 | … 

   表示用命令1的輸出作為命令2的輸入命令2的輸出作為命令3的輸入

   注意:STDERR默認不能通過管道轉發,可利用2>&1 或|& 實現

 重定向與管道

 

將/home 里面的文件打包,但打包的數據不是記錄到文件,而是傳送到stdout,經過管道后,將tar -cvf-/home 傳送給后面的tar -xvf-, 后面的這個-則是取前一個命令的stdout,因此,就不需要使用臨時file了

?tar -cvf-/home | tar -xvf-

 

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

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

-a 追加

?使用:

?保存不同階段的輸出

?復雜管道的故障排除

?同時查看和記錄輸出

重定向與管道

一道很有意思的題目,不用循環,可以用管道

   計算1+2+3+..+99+100的總和

重定向與管道

 

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

(0)
m25Chronosm25Chronos
上一篇 2017-07-23
下一篇 2017-07-23

相關推薦

  • shell腳本終結篇——數組

    數組定義: 變量:存儲單個元素的內存空間 數組:存儲多個元素的連續的內存空間,相當于多個變量的集合 數組名和索引: 索引:編號從0開始,屬于數值索引 注意:索引可支持使用自定義的格式,而不僅僅是數值格式,自定義格式的數組即為關聯數組,bash4.0版本之后開始支持 bash的數組支持稀疏格式(索引不連續) 聲明數組: declare -a ARRAY_NAM…

    Linux干貨 2016-08-24
  • redis/twemproxy 客戶端連接異常

    對于一個DBA,客戶端連接異常問題可以說是家常便飯的事情,處理多了都想吐。 root cause無疑發生在三個地方,先找自身的原因,依次排查下去: 1)服務器端db的負載,如果負載太高,創建socket太慢引起超時。另外服務器端socket的個數太多,也可以導致創建連接需要很長的時間或者創建連接不成功。 2)網絡是夠有抖動,包括lvs/twemproxy重啟…

    Linux干貨 2015-04-03
  • ps查看進程

    ps命令 ps [OPTION]支持三種選項UNIX選項 如-A -eBSD選項 如aGNU選項 如–help選項:默認顯示當前終端中的進程a 選項包括所有終端中的進程x 選項包括不連接終端的進程u 選項顯示進程所有者的信息f 選項顯示進程樹,相當于 –forestk|–sort 屬性 對屬性排序,屬性前加- 表示倒序o …

    2017-12-19
  • 馬哥教育網絡21期+第四周練習博客

    1、復制/etc/skel目錄為/home/tuser1,要求/home/tuser1及其內部文件的屬組和其它用戶均沒有任何訪問權限。 [root@localhost ~]# cp -r /etc/skel/ /home/tuser1 [root@localhost ~]# chmod&n…

    Linux干貨 2016-08-02
  • 2016/10/19作業:軟鏈接與硬鏈接的區別

    軟鏈接和硬鏈接的區別 linux中鏈接分為兩種,一種是硬鏈接(Hard Link),一種是符號鏈接(Symbolic Link),其中,符號鏈接又稱為軟鏈接。 硬鏈接: 在Linux文件系統中 ,磁盤中的所有文件都有一個編號,這個編號稱為索引節點(Inode)。在Linux中,多個同一索引節點可以有多個文件名,這就是硬鏈接。硬鏈…

    Linux干貨 2016-10-20
  • NTP服務器搭建

        1、NTP(Network Time Protocol)         在計算機世界中,NTP(Network Time Protocol,網絡時間協議)被廣泛用于對時間的統一性和準確性要求非常高的場景,是用來使網絡中的各個計算機時間同步的一種協議?!?/p>

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