I/O重定向:容許咱們更改輸入輸出走向,通常,輸入到鍵盤,輸出到屏幕linux
cat——鏈接文件shell
sort——排序文本行bash
uniq——報道或省略重複行less
grep——打印匹配行ui
wc——打印文件中換行符、字和字節個數spa
head——輸出文件第一部分code
tail——輸出文件最後一部分blog
1、重定向標準輸出排序
重定向標準輸出到另外一個文件除了屏幕,咱們使用「>"重定向符,其後跟着文件名ip
用>重定向符,輸出到另外一個文件
ls-l/usr/bin > ls-output.txt 建立一個長長的目錄/usr/bin列表,而且輸送程序運行結果到文件ls-output.txt中
使用>重定向符時,存在如下問題
1)制定的目錄/usr/bin必須是存在的目錄,若是不是存在的目錄,如/bin/usr,會產生錯誤信息並輸出到屏幕上
2)產生錯誤的時候,使用ls-l ls-output.txt會發現,這個目標文件裏面是空的,這是由於>重定向的時候是從頭開始重寫。那麼引入>>重定向符
>重定向輸出結果時,目標文件老是從開頭進行重寫,如何將重定向結果追加到文件內容後面,而不是從開頭重寫文件?咱們使用>>重定向符
ls-l /usr/bin >> ls-output.txt
這樣將致使輸出結果添加到文件內容以後,若是文件不存在,文件會被建立,就如同>同樣了
3)另外,其實能夠很好的利用>重定向從頭重寫目標文件的做用,來刪除目標文件中的內容
> ls-output.txt
4)錯誤消息是返回到顯示屏幕上了,咱們有時候是想將其重定向到文件中,該怎麼作?
首先,咱們先介紹文件流的前三個看作標準輸入、標準輸出、錯誤,shell內部參考他們爲文件描述符0、一、2
重定向標準錯誤:使用2>重定向符
ls-1 /bin/usr 2> ls-error.txt
引伸:
1. 重定向標準輸出和錯誤到同一個文件
ls-l bin/usr > ls-output.txt 2> &1
注意上邊的順序!首先重定義標準輸出到文件ls-output.txt,而後重定向文件描述符2(標準錯誤)到文件描述符1(標準輸出)使用表示法2>&1
另外,bash版本提供了一種新的方法,使用&>重定向符
ls-l /bin/usr &> ls-output.txt
2.處理不須要的輸出
讓其輸出到/dev/null文件中,/dev/null文件是系統設備,叫作位存儲器,能夠接受輸入,而且對輸入不作處理,可用於隱藏命令錯誤信息
ls-l /bin/usr 2> /dev/null
2、cat——鏈接文件
cat是讀取一個或多個文件,而後複製他們到標準輸出
1.顯示文件(到顯示屏),相似type命令
cat ls-output.txt
2.鏈接文件
cat movie.mpeg.0* > moovie.mpeg
3.鍵盤輸入信息,並顯示在屏幕上
[me@linuxbox-]-$ cat The quick browm fox junped over the lazy dog.
注意!輸入cat換行,再鍵盤輸入目標數據,而後ctrl+d鍵,告訴cat已經輸入到文件末尾
4.鍵盤輸入信息,並重定向到目標文件中
[me@linuxbox-]-$ cat lazy——dog.txt The quick browm fox junped over the lazy dog.
3、管道線
什麼是管道線?
命令從標準輸入讀取信數據,而後再把數據輸送到標準輸出,命令的這種能力被一個shell特性所利用,這個特性就叫作管道線,使用管道操做符|,一個命令的標準輸出能夠管道到另外一個命令的輸入
command1 | command2 command1命令的結果做爲command2的參數,
ls-l /usr/bin | less less是接受標準輸入的命令,咱們用less來一頁一頁地顯示任何命令的輸出,命令把他們的運行結果輸送到標準輸出
4、過濾器
接受輸入,並以某種方式改變它,而後輸出。好比sort
ls /bin /usr/bin | sort | less 把目錄/bin和/usr/bin中的可執行命令聯合在一塊兒,而後把他們排序,最後瀏覽執行結果
5、uniq——報道或忽略重複行
常與sort一塊兒用
ls /bin /usr/bin |sort | uniq | less
若是咱們想看到重複的數據列表,uniq_d
ls /bin /usr/bin |sort | uniq-d | less
6、wc——打印行,字和節數
wc ls-output.txt 會輸出三個數,分別是行數,單詞數和字節數
若是要強制只輸出行數,則用wc-l
ls /bin /usr/bin | sort | uniq |wc-l
7、grep——打印匹配行
grep pattern [file...] patten是模式
ls /bin /usr/bin | sort | uniq | grep zip 輸出是zip類型的匹配文件
8、head/tail——打印文件開頭和結尾部分
1.head默認打印文件的前10行,若是想改變打印行數,就用head—n
head -n 5 ls-output.txt 打印前5行 tail -n 15 ls-output.txt 打印後15行
2.使用 「-f」 選項, tail 命令繼續監測這個文件,當新的內容添加到文件後,它們會當即出如今屏幕上。這會一直繼續下去直到你輸入 Ctrl-c。
tail -f /var/log/messages
9、tee——從Stdin讀取數據,並同時輸出到Stdout和文件
tee 程序從標準輸入讀入數據,而且同時複製數據到標準輸出(容許數據繼續隨着管道線流動)和一個或多個文件
當在某個中間處理階段來捕捉一個管道線的內容時,這頗有幫助。這裏,咱們重複執行一個先前的例子,此次包含 tee 命令,在 grep過濾管道線的內容以前,來捕捉整個目錄列表到文件 ls.txt:
ls /usr/bin | tee ls.txt | grep zip