shell 特殊符號

一、特殊符號linux

 

 

相關例子,詳見下圖,正則表達式

 

二、關於管道符shell

(1)、cut 分割3d

-d 分隔符 -f 指定段號 -c 指定第幾個字符blog

舉例子,見下圖,排序

上圖例子中,| 輸出結果,cut 分割出後面想要的結果。通常狀況下,-c 和 -d 、-f 不一樣時使用。圖片

 

(2)、sort 排序it

-n 以數字排序 -r 反序 -t 分隔符 -kn1/-kn1,n2百度

舉例子,見下圖,im

能夠注意到,紅色框框裏面的內容是按字母順序排列的,這個就是 sort 做用的結果。sort 後面不加任何選項,則從首字符向後,依次按ASCII碼值進行比較,最後將他們按升序輸出。

 

關於ASCII碼,百度百科的解釋以下:

接着往下操做,見下圖,

回車以後,進入下圖,

隨機輸入上圖紅色框框的內容,保存後退出。使用 sort 查看文件 1.txt ,見下圖,

能夠看到上圖的排列順序是,先特殊符號,再數字,而後再字母,包括 * 號。以上就是 ASCII 碼的排列順序。

 -n 選項是以數字排序,前面的特殊符號和字母,都默認爲 0 。見下圖,

-r 選項是反序的意思,見下圖,

-t 後面跟分隔符,-kn1/-kn1,n2 ,這些用的比較少,瞭解便可。

 

(3)、wc 

-l 統計行數  -m 統計字符數  -w 統計詞

舉個例子,見下圖,

進入 2.txt 文件,編輯輸入下圖紅色框框的內容,

保存後退出。接着統計 2.txt 的字符數,見下圖,

能夠看到,2.txt 的字符數是 8 ,爲何會是 8 呢?cat -A 以前說過,它能夠查看 2.txt 文件裏的全部內容,包括隱藏的。而後,就看到了每一行末尾的 $ ,表示的是換行符。因此,wc -m 2.txt 的結果是 8 。

接着對 -w 進行操做,見下圖,

2.txt 裏的內容有兩行,因此顯示的結果是 2 。再次進入 2.txt 編輯文件內容,見下圖,

補充完上圖內容後,保存並退出。再次查看統計詞,見下圖,

-w 是以空白字符做爲分隔符的,因此結果顯示爲 3 。

 

(4)、uniq 去重複,-c 統計行數

輸入命令 vi 2.txt ,回車,見下圖,

增長上圖紅色框框的內容,保存並退出。接着往下操做,

發現 uniq 命令對 2.txt 的內容沒有任何影響,再次進入文件 2.txt ,編輯內容以下,

將最後的1和2互換位置,而後保存退出。接着使用命令 uniq 2.txt 查看,見下圖,

這時候,就會看到去重複了。這是有條件的去重複,必須兩個一樣的字符在先後位置,才能去重複。

通常狀況下,uniq 和 sort 是一塊兒使用的,見下圖,

先排序,後去重複。這樣子使用命令以後,就看不到重複的數值了。還可使用 -c 選項來統計重複的次數,每一排前面的數字就是重複的次數。

 

(5)、tee

和 > 相似,重定向的同時還在屏幕顯示,|tee -a 有追加做用

舉例子,見下圖,

從上圖能夠看出 |tee 的一個做用就是重定向,還有一個做用是把文件內容打印到屏幕上。

-a 選項有追加的做用,見下圖,

再追加一次,再查看文件,見下圖,

 

(6)、tr 命令

tr 替換字符,tr 'a' 'b',大小寫替換 tr '[a-z]' '[A-Z]'

具體操做,詳見下圖,

 

(7)、split 命令

split 切割,-b 大小(默認單位字節),-l 行數

首先來建立一個大文件,輸入命令 find /etc/ -type f -name "*conf" ,回車,見下圖, 

該命令結果內容太多,不一一截圖,接着操做以下,

後面這些 4.0 KB的文件也不少,不一一截圖了。接着用命令 du -sh * ,回車,見下圖,

內容也很是多,不一一截圖。1000 單位是 b 。由於前面切割的單位是 1000 ,接着往 100 切割,見下圖,

切割成 100 以後,文件就更多了,圖片內容截圖不全,能夠注意到這些小文件的命名都是有按字母排序的。文件太多,所有刪除掉,接着往下操做,

以上就是 split 的用法,能夠按大小切割,也能夠按行數切割。

 

三、特殊符號

$ 、 ~ 、 & 、> 、>> 、2> 、2>> 、 &> 、 [ ] ,這些符號前面都有說過,這邊就不介紹了。正則表達式,後面再介紹。

下面說一下 ; 分號,見下圖,

這個命令 for i in `seq 1 10` ,後面再介紹。注意上圖中紅色框框的內容,單引號和反引號做用的結果是不同的。接着按向上的方向鍵,就出現上圖中最後面的那個命令,也就是命令歷史,會發現裏面自動加上了分號 ; ,這就是多條命令之間用分號分割。繼續操做,見下圖,

兩條命令之間用分號分割,分號先後能夠空格也能夠不用空格,結果都是同樣的,建議仍是用空格區分一下,看起來比較直觀。

接着介紹一下 || 和 && 這兩個符號,其中 || 用在 shell 當中就表示或者的意思,見下圖,

上圖中, la.txt 是沒有的文件,因此會出現報錯。用 ;號兩個結果都能執行,換成 || 號,也兩個結果都有出現。接着把 la.txt 文件換成正確的 1.txt 文件,就只出現了一個結果,是前面一條命令的結果。以上說明,|| 號是或者的意思,前一條命令執行不成功的話,就執行後面的一條命令。前面的命令執行成功的話,後面的命令就不執行了。

反過來,若是前面的命令執行成功了,纔會執行後面的命令,就用 && 號,見下圖,

如今舉一個實際應用的例子,見下圖,

關於命令 [ -d lyslinux ] || mkdir lyslinux 後面會介紹,如今先了解一下。[ -d lysliunx ] 這個命令的意思是用來判斷 lyslinux 是否是一個目錄,而且這個目錄是否存在?是目錄而且存在的話,這個命令就成功了。若是不存在的話就建立一個目錄 lyslinux ,如上圖紅色框框顯示的結果。而命令 [ -d lyslinux ] && mkdir lyslinux 的意思是,目錄 lyslinux 存在的話,再去建立一個目錄 lyslinux ,因此執行的結果就是沒法建立目錄 」lyslinux「:文件已存在,執行的是後面的命令。接着執行命令 [ -d lyslinux ] || mkdir lyslinux ,就沒有報錯,意思是目錄 lyslinux 存在就不執行後面的建立目錄的命令。

關於 || 和 && 的用法,後面在 shell 腳本里會屢次用到。

相關文章
相關標籤/搜索