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

引號(hào)、通配符、連接符,Shell中常用的符號(hào)講解

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

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

引號(hào)

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

Shell中的引號(hào)有三種:?jiǎn)我?hào)('')、雙引號(hào)("")與反引號(hào)(``)。接下來分別來學(xué)習(xí)一下這幾種引號(hào)。

1、單引號(hào)

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

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

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

2、雙引號(hào)

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

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

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

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

3、反引號(hào)

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

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

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

可以把反引號(hào)嵌入到雙引號(hào)中,但是當(dāng)把反引號(hào)嵌入到單引號(hào)中時(shí),單引號(hào)會(huì)屏蔽掉反引號(hào)的功能。例如把`date`嵌入單引號(hào)中,將不會(huì)打印出當(dāng)前的時(shí)間。

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

通配符

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

1650858145346_通配符.png

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

1、通配符

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

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

在以上命令中,sys*表示匹配以字符串sys開頭的所有文件。-d選項(xiàng)表示僅對(duì)目標(biāo)目錄本身進(jìn)行處理,不遞歸處理目錄中的文件。

如果想輸出以.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
......

在這個(gè)命令中,*.conf表示匹配所有以.conf字符串結(jié)尾的文件,此命令會(huì)輸出所有以.conf結(jié)尾的文件。因?yàn)槲募啵谶@里只截取一部分。

2、通配符“?”

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

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

3、通配符“[]”

通配符“[]”表示與[]中的任一字符匹配,它通常是一個(gè)范圍,例如,在/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é)尾的文件有四個(gè)。

4、通配符“[!]”

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

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

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

連接符

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

1、“;”連接符

使用“;”連接符間隔的命令,會(huì)按照先后次序依次執(zhí)行。假如現(xiàn)在有一系列確定的操作需要執(zhí)行,且這一系列操作的執(zhí)行需要耗費(fèi)一定時(shí)間,比如安裝gdb包時(shí),在下載好安裝包后,還需要逐個(gè)執(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í)行后,都需要一定的時(shí)間,等待命令執(zhí)行完畢。若此時(shí)使用“;”連接符,連接這些命令,具體如下所示:

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

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

2、“&&”連接符

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

3、“||”連接符

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








猜你喜歡:

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

什么是Shell?

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

怎樣通過Shell命令操作Zookeeper?

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

分享到:
在線咨詢 我要報(bào)名
和我們?cè)诰€交談!