Linux系統 shell基礎(三)

一、shell中的特殊符號

號:通配符,可以匹配零個或任意多個字符
? 號:單配符,
#號:註釋符,該符號後跟的命令或參數不會執行
\號:加註在特殊符號前使其失去指令意義
|管道符:把一條命令的結果傳遞給另外一條命令,注意後一條命令不是什麼命令都可以,一般是針對文檔的命令。例如less、more、head、tail、grep、sed、awk等等。
$ :變量前綴,!¥
; 多條命令寫到一行時用;分割
~ 用戶家目錄替代符,root的家目錄,正則中表示匹配符
& 放在命令末尾表示把命令放到後臺

把正確和錯誤的結果都輸出到一個文件

用在shell中表示或者
表示如果命令1失敗則執行命令2,若命令1成功則不執行命令2,命令1、2之間只有一條命令會執行
&&表示如果命令1失敗,則命令終止,所有命令都不會執行,若命令1成功則命令2纔會執行,命令1、2要麼都執行,要麼都不執行。

示例

1、II與&&特殊符號含義示例
Linux系統 shell基礎(三)
本例中只有當ls test2成功後纔會執行 touch test2命令。因爲test2不存在,所以前一條命令不成功,後面一條命令就不會執行

那麼我們換成 ls test2 || touch test2看看
Linux系統 shell基礎(三)
本例中,因爲前面一條命令 ls test2失敗了,於是第2條命令就被執行了

二、和管道符相關的命令

(一)cut命令

分隔符
cut命令用來顯示行中的指定部分,刪除文件中指定字符串。
命令寫法:cut -d “分割標記” -f 第幾段至第幾段 cut -c n(第幾個字符)
選項:
-c:僅顯示行中指定範圍的字符;
-d:指定字段的分隔符,默認的字段分隔符爲“TAB”;
-f:顯示指定字段的內容;
用法舉例:
1、命令:cat /etc/passwd |head -2 |cut -d ":" -f 1
圖中標記1:選項-d用來制定分割符號,passwd文件中用的是“;”號,於是我們就輸入-d “;”讓程序認出文本中的分段,爲-f 選項提供分段依據
圖中標記2:選項-f是選擇第幾段到第幾段,豎排的叫段,相當於excel的選取單列。
圖中的命令含義就是顯示passwd文件中的前2行文字的第1段,分段符是分號“;”
Linux系統 shell基礎(三)

2、命令:cat /etc/passwd |head -2 |cut -c 4

Linux系統 shell基礎(三)

(二)sort命令

sort命令對文件中的某一字段進行排序,默認按ASCII碼順序,但受環境變量LC_ALL影響,默認情況下該變量值爲空,並將排序結果標準輸出(相當於把排序結果cat到屏幕上)。sort命令既可以從特定的文件,也可以從stdin中獲取輸入。關於sort命令的排序標準,參見Linux sort命令的幾個細節問題這篇文章(轉載至:http://blog.csdn.net/zenghui08/article/details/7938975

命令寫法
選項:
-t<分隔字符>:指定排序時所用的欄位分隔字符;
-n:依照數值的大小排序,採用該選項時,字母或者符號開頭的文字會被認爲數值是0而排在前面
-r:以相反的順序來排序;
-u:表示去重複
-kn1,n2:表示由n1區間排序到n2區間,可以只寫-kn1,即對n2字段排序。
用法舉例:
1、對文件passwd前5行進行排序
命令:head -n 5 /etc/passwd | sort
Linux系統 shell基礎(三)
默認情況是root在第一行的。這裏adm這個到第一行了。
2、對文件test1按數字排序
Linux系統 shell基礎(三)
注意符號和字母的行因爲等於0所以排在前面
3、對passwd文件前三行按照第三列數字大小排序並輸出結果。

head -n 3 /etc/passwd | sort -t “:” -k3 -n

Linux系統 shell基礎(三)

(三)wc命令

wc命令用於統計文檔的行數、字符數或詞數。
選項:
-l :統計行數
-m:統計字符數
-w:統計詞數
用法舉例
我先新建一個測試文檔,他的內容是下面這個
Linux系統 shell基礎(三)
1、wc -l 統計行數
Linux系統 shell基礎(三)
2、wc -m統計字符數(注意末尾那個$表示換行的意思)
Linux系統 shell基礎(三)
3、wc -w統計詞數
Linux系統 shell基礎(三)
看來應該是把只要是兩個分隔符之間的東西就認爲是一個word。這個word不是語言學上的word。

(四)uniq命令

uniq命令是用來去重的,他去的是兩個連續行之間的重,那麼你第一行和第三行內容重複的話,uniq是不去的,所以我們一般把這個命令和sort一起用,先排序再去重。注意結果是輸出到屏幕中,不會去修改原始文件,除非你用重定向把原始文件內容修改掉。
選項:
-c 統計某一內容重複次數
用法舉例:
1、排序1.txt 並去重顯示,同時顯示某一字符串重複次數。
Linux系統 shell基礎(三)

(五)tee命令

tee命令用於將數據重定向到文件,另一方面還可以提供一份重定向數據的副本作爲後續命令的stdin。tee - read from standard input and write to standard output and files,簡單的說就是把數據重定向到給定文件和屏幕上。該命令一般跟在|管道符之後。
選項:
-a 追加,像>>追加重定向。
用法舉例:

echo "i am learning linux" | tee 2.txt

Linux系統 shell基礎(三)

(六)tr命令

tr命令用於替換字符,從標準輸入中替換、縮減和/或刪除字符,並將結果寫到標準輸出。
用法:tr [選項]... SET1 [SET2]
選項:
-d 刪除某個字符,後面跟要刪除的字符
-s刪除重複的字符,注意是連續相同的字符
用法舉例:
1、替換文字中的小寫字母爲大寫字母

echo "HELLOWORLD" | tr '[A-Z]' '[a-z]'

Linux系統 shell基礎(三)

2、替換某個字符

cat 1.txt | tr '1' '@'

Linux系統 shell基礎(三)

(七)split命令

split命令可以將一個大文件分割成很多個小文件,有時需要將文件分割成更小的片段,比如爲提高可讀性,生成日誌等。實際工作中比如你碰到一個10G的日誌文件,這時你不做切割基本無法查看他,所以我們需要split他來查閱。

用法:split [選項]... [輸入 [前綴]]

選項
-b 指定分割後每個文件大小,可以寫成10KB、1.44MB等等
-l 指定多少行爲一個分割文件

用法舉例:
1、把一個文件拆成1000字節一個文件,並以test爲前綴

split -b 1000 a.txt test

Linux系統 shell基礎(三)

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章