linux管道符和萬用字元

程式碼灣發表於2017-12-13

管道符

同時按下鍵盤上的Shift+鍵即可輸入管道符,其執行格式為”命令A | 命令B”。命令符的作用也可以用一句話來概括”把前一個命令原本要輸出到螢幕的資料當作是後一個命令的標準輸入”。

即將命令原來要輸出得到螢幕額度內容交由給後面的命令來處理

此處我們以一個檔案進行講解 /etc/passwd

圖0:linux管道符和萬用字元

此檔案儲存的是系統中所有的使用者,一行為一個使用者

圖1:linux管道符和萬用字元

第一個欄位為使用者名稱稱

第二個欄位為x時表示這個使用者有密碼

第三個欄位為使用者的uid號碼

第四個欄位為使用者的gid號碼

第五個欄位為使用者的描述符(描述相關)

第六個為使用者的家目錄

最後一個為使用者的登陸終端

圖2:linux管道符和萬用字元

使用此命令意思為檢視/etc/passwd 目錄下過濾nologin的使用者輸出出來

圖3:linux管道符和萬用字元

管道符疊加

圖4:linux管道符和萬用字元

增加wc –l 可以檢視nologin使用者的個數

在修改使用者密碼時,通常都需要輸入兩次密碼以進行確認,這在編寫自動化指令碼時將成為一個非常致命的缺陷。通過把管道符和passwd命令的–stdin引數相結合,我們可以用一條命令來完成密碼重置操作:

圖5:linux管道符和萬用字元

怎麼樣管道符是不是非常方便呢

大家是不是覺得管道符命令有些相見恨晚?管道符的玩法還有很多,比如,在傳送電子郵件時,預設採用互動式的方式來進行,我們完全可以利用一條結合了管道符的命令語句,把編輯好的內容與標題一起”打包”,最終用這一條命令實現郵件的傳送。

圖6:linux管道符和萬用字元

圖7:linux管道符和萬用字元

搭配使用檢視etc下所有檔案 實現翻頁效果

萬用字元

我們有時候也會遇到明明一個檔案的名稱就在嘴邊但就是想不起來的情況。如果就記得一個檔案的開頭幾個字母,想遍歷查詢出所有以這個關鍵詞開頭的檔案,該怎麼操作呢?又比如,假設想要批量檢視所有硬碟檔案的相關許可權屬性,一種方式是這樣的:

圖8:linux管道符和萬用字元

幸虧我的硬碟檔案和分割槽只有3個,要是有幾百個,估計需要花費一天的時間來忙這個事情了。由此可見,這種方式的效率確實很低。雖然我們在第6章才會講解Linux系統的儲存結構和FHS,但現在我們應該能看出一些簡單規律了。比如,這些硬碟裝置檔案都是以sda開頭並且存放到了/dev目錄中,這樣一來,即使我們不知道硬碟的分割槽編號和具體分割槽的個數,也可以使用萬用字元來搞定。顧名思義,萬用字元就是通用的匹配資訊的符號,比如星號(*)代表匹配零個或多個字元,問號(?)代表匹配單個字元,中括號內加上數字[0-9]代表匹配0~9之間的單個數字的字元,而中括號內加上字母[abc]則是代表匹配a、b、c三個字元中的任意一個字元。俗話講”百聞不如一見,看書不如實驗”,下面我們就來匹配所有在/dev目錄中且以sda開頭的檔案

圖9:linux管道符和萬用字元

如果只想檢視檔名為sda開頭,但是後面還緊跟其他某一個字元的檔案的相關資訊,該怎麼操作呢?這時就需要用到問號來進行通配了。

圖10:linux管道符和萬用字元

除了使用[0-9]來匹配0~9之間的單個數字,也可以用[135]這樣的方式僅匹配這三個指定數字中的一個,若沒有匹配到,則不會顯示出來:

圖11:linux管道符和萬用字元

相關文章