Linux 命令列萬用字元及轉義符的實現
阿新 • • 發佈:2018-11-25
我們想對一類檔案批量操作,例如批量檢視硬碟檔案屬性,那麼正常命令會是:
[[email protected] ~]# ls /dev/sda [[email protected] ~]# ls /dev/sda1 [[email protected] ~]# ls /dev/sda2 [[email protected] ~]# ls /dev/sda3
但有些時候確實不知道分割槽的
萬用字元
星號(*)代表匹配零個或多個字元
[email protected]:~$ ls -l /dev/sda*
問號(?)代表匹配單個字元
[email protected]:~$ ls -l /dev/sda?
中括號內加上數字[0-9]代表匹配0~9之間的單個數字的字元,而中括號內加上字母[abc]則是代表匹配a、b、c三個字元中的任意一個字元
[email protected]:~$ ls -l /dev/sda[0-9] [email protected]:~$ ls -l /dev/sda[135]
示例:
檢視sda開頭的所有裝置檔案:
[[email protected] ~]# ls /dev/sda* /dev/sda /dev/sda1 /dev/sda2
檢視sda後面有一個字元的裝置檔案:
[[email protected] ~]# ls /dev/sda? /dev/sda1 /dev/sda2
檢視sda後面包含0-9數字的裝置檔案:
[[email protected] ~]# ls /dev/sda[0-9] /dev/sda1 /dev/sda2
檢視sda後面是1或3或5的裝置檔案:
[[email protected] ~]# ls /dev/sda[135] /dev/sda1
轉義符
反斜槓(\):使反斜槓後面的一個變數變為單純的字串
[email protected]:~$ echo "Price is \$$PRICE"
反引號(``):把其中的命令執行後返回結果
[email protected]:~$ echo `uname -a`
示例
定義名稱為PRICE的變數值為5:
[[email protected] ~]# PRICE=5
想要輸出”價格是5″:
[[email protected] ~]# echo "Price is $PRICE" Price is 5
想要輸出”價格是$5″,但因為美元符號與代表變數取值的$符號衝突了,所以報錯了:
[[email protected] ~]# echo "Price is $$PRICE" Price is 3767PRICE
新增一個反斜槓,將第一個$符號轉義:
[[email protected] ~]# echo "Price is \$$PRICE" Price is $5
使用單引號,變數將不再被取值:
[[email protected] ~]# echo 'Price is \$$PRICE' Price is \$$PRICE
執行uname -a後可以檢視到本機核心的版本與架構資訊(反引號裡面的命令會被執行):
[[email protected] ~]# echo `uname -a` Linux linuxprobe.com 3.10.0-123.el7.x86_64 #1 SMP Mon May 5 11:16:57 EDT 2014 x86_64 x86_64 x86_64 GNU/Linux
以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支援指令碼之家。