首頁技術(shù)文章正文

引號、通配符、連接符,Shell中常用的符號講解

更新時間:2022-04-08 來源:黑馬程序員 瀏覽量:

Shell除了命令,還有一些作用很強大的符號,比如引號、通配符、連接符等。這些符號在Shell命令中有著各種各樣的作用,借助這些符號,用戶可以用命令完成更復(fù)雜的功能。本節(jié)將對Shell中常用的符號進行講解。Shell除了命令,還有一些作用很強大的符號,比如引號、通配符、連接符等。這些符號在Shell命令中有著各種各樣的作用,借助這些符號,用戶可以用命令完成更復(fù)雜的功能。本節(jié)將對Shell中常用的符號進行講解。

引號

在Shell中,引號主要用來轉(zhuǎn)換元字符的含義。所謂元字符是指那些在正則表達式(正則表達式將在3.4節(jié)學習)中具有特殊處理能力的字符,例如$、\、>等字符。

Shell中的引號有三種:單引號('')、雙引號("")與反引號(``)。接下來分別來學習一下這幾種引號。

1、單引號

單引號可以將它中間的字符還原為字面意義,實現(xiàn)屏蔽Shell元字符的功能。引號里的字符串就是一個單純的字符串,沒有任何含義,例如定義變量NUM=100,在輸出變量時需要添加$符號,如果這個變量加上單引號輸出,則直接將$符號與變量整體作為一個字符串輸出,命令如下所示。

[itheima@localhost ~]$NUM=100
[itheima@localhost ~]$echo $NUM
100
[itheima@localhost ~]$echo '$NUM'
$NUM
在第二次加單引號輸出$NUM時,直接輸出了一個字符串而不是值100,單引號將$符號的功能屏蔽了。

注意:不可以在兩個單引號中間單獨插入一個單引號,單引號必須要成對出現(xiàn)。

2、雙引號

雙引號也具有屏蔽作用,但它不會屏蔽$符號、\符號和``符號。將剛才定義的變量NUM加雙引號輸出,具體如下所示:

[itheima@localhost ~]$echo "$NUM"
100

由以上輸出結(jié)果可知,使用雙引號輸出變量NUM時,$符號的功能不會被屏蔽。

注意:雙引號也可以屏蔽單引號的作用,在一對雙引號中,單引號不必成對出現(xiàn)。

3、反引號

反引號,它可以進行命令替換。反引號與雙引號可以結(jié)合使用。例如輸出系統(tǒng)的時間,具體操作如下。

[itheima@localhost ~]$echo "Today is `date`"
Today is 2017年09月07日星期四10:50:26 CST

以上所示的命令中用到了命令“date”, 該命令的功能是打印系統(tǒng)當前的時間 。

可以把反引號嵌入到雙引號中,但是當把反引號嵌入到單引號中時,單引號會屏蔽掉反引號的功能。例如把`date`嵌入單引號中,將不會打印出當前的時間。

[itheima@localhost ~]$echo 'Today is `date`'
Today is `date`

通配符

Shell的通配符一般用于數(shù)據(jù)處理或文件名匹配,常用的通配符如下所示。

1650858145346_通配符.png

下面將對表格中所示的通配符逐一講解。

1、通配符

“*”如果用戶想要列出/etc目錄下以sys開頭的所有文件,可以使用如下命令。

    [itheima@localhost~]$ls -d /etc/sys*
  sysconfig       sysctl.conf       sysctl.d       systemd      system-release 
system-release-cpe

在以上命令中,sys*表示匹配以字符串sys開頭的所有文件。-d選項表示僅對目標目錄本身進行處理,不遞歸處理目錄中的文件。

如果想輸出以.conf結(jié)尾的所有文件,則可以使用如下命令。

[itheima@localhost ~]$ls /etc/*.conf
asound.conf          fuse.conf     man_db.conf     rsyncd.conf
autofs.conf          GeoIP.conf    mke2fs.conf     rsyslog.conf
autofs_ldap_auth.conf      host.conf     mtools.conf     sestatus.conf
brltty.conf              idmapd.conf    nfsmount.conf sos.conf
......

在這個命令中,*.conf表示匹配所有以.conf字符串結(jié)尾的文件,此命令會輸出所有以.conf結(jié)尾的文件。因為文件太多,在這里只截取一部分。

2、通配符“?”

通配符“?”每次只能匹配一個字符,通常與其它通配符結(jié)合使用。如果想查找/etc目錄下文件名是由兩個字符組成的文件,可以使用如下命令。

[itheima@localhost ~]$ls -d /etc/??
hp pm

3、通配符“[]”

通配符“[]”表示與[]中的任一字符匹配,它通常是一個范圍,例如,在/etc目錄,列出以f~h范圍的字母開頭,并以.conf結(jié)尾的文件,可以使用如下命令。

[itheima@localhost ~]$ls /etc/[f-h]*.conf
fprintd.conf fuse.conf GeoIP.conf host.conf

由輸出結(jié)果可知,/etc目錄下以f~h范圍內(nèi)的字母開頭,并以.conf結(jié)尾的文件有四個。

4、通配符“[!]”

通配符“[!]”表示除了[]里的字符,與其它任一字符匹配。例如,如果查找以y開頭且不以.conf結(jié)尾的文件,可以使用如下命令。

[itheima@localhost ~]$ls -d /etc/y*[!.conf]
yum yum.repos.d

由輸出結(jié)果可知,/etc目錄下符號條件的匹配項有兩個。

連接符

Shell中提供了一組用于連接命令的符號,包括:“;”、“&&”以及“||”, 使 用 這 些 符 號 ,可以將多條Shell指令進行連接,使這些指令順序或根據(jù)命令執(zhí)行結(jié)果,有選擇地執(zhí)行。下面將對這些符號的功能分別進行介紹。

1、“;”連接符

使用“;”連接符間隔的命令,會按照先后次序依次執(zhí)行。假如現(xiàn)在有一系列確定的操作需要執(zhí)行,且這一系列操作的執(zhí)行需要耗費一定時間,比如安裝gdb包時,在下載好安裝包后,還需要逐個執(zhí)行以下命令:

[root@localhost ~]#tar –xzvf gdb-7.11.1.tar.gz
[root@localhost ~]#cd gdb-7.11.1
[root@localhost ~]#./configure
[root@localhost ~]#make
[root@localhost ~]#make install
[root@localhost ~]#gdb -v

且在大多數(shù)命令開始執(zhí)行后,都需要一定的時間,等待命令執(zhí)行完畢。若此時使用“;”連接符,連接這些命令,具體如下所示:

[root@localhost ~]#tar -xzvf gdb-7.11.1.tar.gz ;cd gdb-7.11.1;./configure;
make;makeinstall;gdb -v

那么系統(tǒng)會自動執(zhí)行這一系列命令。

2、“&&”連接符

使用“&&”連接符連接的命令,其前后命令的執(zhí)行遵循邏輯與關(guān)系,只有該連接符之前的命令執(zhí)行成功后,它后面的命令才被執(zhí)行。

3、“||”連接符

使用“||”連接符連接的命令,其前后命令的執(zhí)行遵循邏輯或關(guān)系,只有該連接符之前的命令執(zhí)行失敗時,它后面的命令才會執(zhí)行。








猜你喜歡:

Linux shell腳本入門視頻教程【黑馬程序員】

什么是Shell?

Spark Shell讀取HDFS文件的步驟有哪些?

怎樣通過Shell命令操作Zookeeper?

黑馬程序員Python+大數(shù)據(jù)開發(fā)培訓

分享到:
在線咨詢 我要報名
和我們在線交談!