天天看點

Linux指令行通配符

如果我們想對一類檔案批量操作,例如批量檢視硬碟檔案屬性,那麼正常指令是如下所示:

[[email protected] Desktop]# ls /dev/sda1
[[email protected] Desktop]# ls /dev/sda2      

但是有的時候不知道分區的個數和分區号,這個時候就需要用通配符來解決了,Bash解釋器支援的多種通配符包括:

?     比對任意單個字元
[0-9]    比對範圍内的數字
[abc]    比對給出的任意字元      

執行個體1:檢視sda開頭的所有裝置檔案:

[root@localhost Desktop]# ls /dev/sda*
/dev/sda  /dev/sda1  /dev/sda2      

執行個體2:檢視sda後面又一個字元的裝置檔案

[root@localhost Desktop]# ls /dev/sda*
/dev/sda  /dev/sda1  /dev/sda2      

執行個體3:檢視sda後面包含0-9數字的裝置檔案

[[email protected] Desktop]# ls /dev/sda[0-9]
/dev/sda1  /dev/sda2      

執行個體4:檢視sda後面包含1或3或5的裝置檔案

[[email protected] Desktop]# ls /dev/sda[135]
/dev/sda1      

另外,bash還有多種特殊字元的擴充

\(反斜杠)    :    轉譯後面的單個字元
''(單引号)  :  轉譯所有字元
""(雙引号)  :  變量依然生效
``(反引号)  :  之行指令語句      

執行個體:

定義名稱為PRICE的變量值為5:

[[email protected] Desktop]# PRICE=5      

想要輸出“價格是5”:

[[email protected] Desktop]# echo "Price is $PRICE"
Price is 5      

想要輸出“價格是$5”,但是因為美元符号與代表變量取值的$符号沖突了,是以報錯

[[email protected] Desktop]# echo "Price is $$PRICE"
Price is 5435PRICE
[[email protected] Desktop]#       

此時需要添加一個反斜杠,将$進行轉譯

[[email protected] Desktop]# echo "Price is \$$PRICE"
Price is $5      

使用單引号,變量将不再被取值

[[email protected] Desktop]# echo 'Price is \$$PRICE'
Price is \$$PRICE      

執行uname -a 會檢視本機核心的版本和架構資訊(反引号裡面的指令會被執行)

[[email protected] Desktop]# echo "uname -a"
uname -a
[[email protected] Desktop]# echo 'uname -a'
uname -a
[[email protected] Desktop]# echo `uname -a`
Linux localhost.localdomain 3.10.0-327.28.3.el7.x86_64 #1 SMP Thu Aug 18 19:05:49 UTC 2016 x86_64 x86_64 x86_64 GNU/Linux      

轉載于:https://www.cnblogs.com/tdcqma/p/5853020.html

繼續閱讀