1. 程式人生 > >linux shell基礎(三)

linux shell基礎(三)

8.10 shell特殊符號cut命令 8.11 sort_wc_uniq命令 8.12 tee_tr_split命令 8.13 shell特殊符號下

擴充套件

shell特殊符號總結

  • 表示任意個任意字元,? 表示任意一個字元。這兩個是比較常見的萬用字元,windows下也常用。

shell指令碼中是註釋字元。終端命令提示符#預設表示root使用者,普通使用者是$。

\ 是脫義字元。/是斜槓,我以前會把兩個符號記混。linux中斜槓使用更多一些,比如目錄路徑、終端命令換行等。斜槓是橫槓左端被壓下,我是用“先左後右”“左為尊左常用”來記憶區分這兩個符號的。windows下目錄路徑用的分隔符號與linux相反。

| 管道符是將符號左邊命令的標準輸出作為符號右邊的標準輸入引數。管道在shell指令碼中十分重要。shell指令碼語言沒有其他程式語言的函式庫,不過shell可以呼叫linux安裝的軟體工具,尤其是整合在linux發行版的小工具。下面再介紹幾個linux附帶工具。

cut 文字分割工具,引數有:-d 分隔符,-f 指定段號,-c 指定第幾個字元。示例cut -d ":" -f 2 a.txt就是將a.txt以冒號做標誌分隔每行,然後標準輸出第二段。

sort 文字排序工具,引數有:-n 以數字排序,字母和符號以零處理,-r 反序排序,-t 指定分隔符常與-k搭配使用,-kn1/-kn1,n2 指定第幾段排序,先要用-t指定怎樣分隔。sort工具預設用ascii碼排序。

wc 文字統計工具,引數有:-l 統計行數,-m 統計字元數,-w 統計詞。統計詞數時是以空格區分詞的,“a,b”中間沒有空格(一個或多個)則按一個詞算。

uniq 文字去重工具,引數有:-c統計行數。uniq經常與sort一起使用,要先排序再去重。

tee 和>類似,重定向的同時還在螢幕顯示。引數-a 和>>類似,用於文字後追加。

tr 替換字元。示例tr 'a' 'b'將a替換為b。如果是大小寫替換:tr '[a-z]' '[A-Z]'

split 文字切割工具,引數有:-b 指定切割後分檔案大小(預設單位為位元組),-l 指定切割後行數。split命令最後可以指定切割後的檔案字首,例如split -b 10M 1.txt abc

切割1.txt,切割後的檔案以abc開頭,每個檔案10M。

shell特殊符號總結

$ 變數字首,!$ 表示上一條命令最後的引數。$ 在正則表示式中表示行尾。

; 多條命令寫到一行,用分號分割。
使用者家目錄。正則表示式中表示匹配符。

& 放到命令後面,會把命令放到後臺執行。也可以表示標準輸出和標準錯誤,例如&> 1.txt表示將標準輸出和錯誤輸出重定向到1.txt。

> >> 2> 2>> &> 是常用的重定向和重定向追加的幾個形式。

[ ] 表示指定總括號中字元中的一個,例如[0-9]表示0-9任一數字,[a-zA-Z]表示任一小寫或大寫字母,[abc]表示a、b、c中的一個。

|| 和 && 表示邏輯,用於命令之間。command1 && command2 表示執行command1成功後才執行command2。command1 || command2 表示執行command1後執行command2,有一個命令成功則表示這個語句成功(即,如果兩條命令有一條成功,則echo $?返回0)