如果我們想對一類文件批量操作,例如批量查看硬盤文件屬性,那么正常命令是如下所示:
[root@localhost Desktop]# ls /dev/sda1
[root@localhost 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數字的設備文件
[root@localhost Desktop]# ls /dev/sda[0-9] /dev/sda1 /dev/sda2
實例4:查看sda后面包含1或3或5的設備文件
[root@localhost Desktop]# ls /dev/sda[135] /dev/sda1
另外,bash還有多種特殊字符的擴展
\(反斜杠) : 轉譯后面的單個字符
''(單引號) : 轉譯所有字符
""(雙引號) : 變量依然生效
``(反引號) : 之行命令語句
實例:
定義名稱為PRICE的變量值為5:
[root@localhost Desktop]# PRICE=5
想要輸出“價格是5”:
[root@localhost Desktop]# echo "Price is $PRICE" Price is 5
想要輸出“價格是$5”,但是因為美元符號與代表變量取值的$符號沖突了,所以報錯
[root@localhost Desktop]# echo "Price is $$PRICE" Price is 5435PRICE [root@localhost Desktop]#
此時需要添加一個反斜杠,將$進行轉譯
[root@localhost Desktop]# echo "Price is \$$PRICE" Price is $5
使用單引號,變量將不再被取值
[root@localhost Desktop]# echo 'Price is \$$PRICE' Price is \$$PRICE
執行uname -a 會查看本機內核的版本和架構信息(反引號里面的命令會被執行)
[root@localhost Desktop]# echo "uname -a" uname -a [root@localhost Desktop]# echo 'uname -a' uname -a [root@localhost 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