開源的一個重要理念:不要重複發明輪子。 不少開源軟件都是現有軟件、代碼、功能的從新組合。 《大教堂與集市》linux
Linux中,大多數命令都很簡單,每每只實現一個或幾個簡單的功能,咱們能夠將不一樣功能的命令組合在一塊兒使用,以達到完成某個複雜功能的目的。 Linux中,幾乎全部命令的返回都是純文本的,而純文本形式的數據是絕大多數命令的輸入格式,這就讓協做成爲可能。 Linux的命令行爲咱們提供了管道和重定向機制,多命令協做就是經過管道和重定向完成的。正則表達式
名稱 | 說明 | 編號 | 默認 |
---|---|---|---|
STDIN | 標準輸入 | 0 | 鍵盤 |
STDOUT | 標準輸出 | 1 | 終端 |
STDERR | 標準錯誤 | 2 | 終端 |
命令經過STDIN接收參數或數據,經過STDOUT輸出結果或經過STDERR輸出錯誤。shell
分類 | 關鍵字 | 定義 | 例子 |
---|---|---|---|
重定向 | > |
將STDOUT重定向到文件(覆蓋) | echo "linuxcast.net" > outfile |
重定向 | >> |
將STDOUT重定向到文件(追加) | echo "linuxcast.net" >> outfile |
重定向 | 2> |
將STDERR重定向到文件(覆蓋) | echo "linuxcast.net" 2> outfile |
重定向 | 2>&1 |
將STDERR與STDOUT結合 | echo "linuxcast.net" 2>&1 outfile |
重定向 | < |
STDIN | grep linuxcast < /etc/passwd |
管道 | ` | ` | 將一個命令的STDOUT做爲另外一個命令的STDIN |
一個更復雜的例子:查找用戶linuxcast的Video文件,將查找錯誤重定向到null(丟棄) find / -user linuxcast 2> /dev/null | grep Video
less
cat/more/less/head/tail
該命令使用正則表達式搜索指定的純文本文件或純文本(管道)ide
-i
忽略大小寫-n
現實結果所在行數(文件)-v
輸出不帶關鍵字的行(反選)-Ax
輸出的時候包含結果所在行以後的指定行數-Bx
輸出的時候包含結果所在行以前的指定行數-d
指定分割字符,默認爲TAB-f
指定輸出的列號-c
基於字符進行切割,固定長度例: cut -d: -f1 /etc/passwd
以:
爲分割符,顯示第一列 grep linuxcast /etc/passwd | cut -d: -f3
輸出用戶linuxcast的uid(第三列) cut -c2-6 /etc/passwd
第2-6個字符工具
-l
只統計行數line-w
只統計單詞word-c
只統計字節數-m
只統計字符數-r
進行倒敘排序-n
基於數字進行排序-f
忽略大小寫-u
刪除重複行-tc
使用c做爲分隔符分割爲列進行排序-kx
當進行基於指定字符分割爲列的排序時,指定基於哪一個列排序sort -u
排序時刪除重複行uniq
刪除重複的相鄰行-i
忽略大小寫-b
忽略空格數量的改變-u
統一顯示比較信息(通常用以生成patch文件) diff -u linuxcast linuxcast-new > final.patch
aspell check linuxcast
aspell list < linuxcast
translateui
tr -d 'TMD' < linuxcast
刪除關鍵字tr 'a-z' 'A-Z' < linuxcast
轉換大小寫使用正則表達式處理文本文件spa
sed 's/linux/unix/g' linuxcast
替換linux爲unix,/g
所有替換sed '1,50s/linux/unix/g' linuxcast
替換1-50行sed -e 's/linux/unix/g' -e 's/nash/nash_su/g' linuxcast
多個正則表達式sed -f sededit linuxcast
將匹配表達式保存在sededit文件中