首页技术文章正文

引号、通配符、连接符,Shell中常用的符号讲解

更新时间:2022-04-08 来源:黑马程序员 浏览量:

Shell除了命令,还有一些作用很强大的符号,比如引号、通配符、连接符等。这些符号在Shell命令中有着各种各样的作用,借助这些符号,用户可以用命令完成更复杂的功能。本节将对Shell中常用的符号进行讲解。Shell除了命令,还有一些作用很强大的符号,比如引号、通配符、连接符等。这些符号在Shell命令中有着各种各样的作用,借助这些符号,用户可以用命令完成更复杂的功能。本节将对Shell中常用的符号进行讲解。

引号

在Shell中,引号主要用来转换元字符的含义。所谓元字符是指那些在正则表达式(正则表达式将在3.4节学习)中具有特殊处理能力的字符,例如$、\、>等字符。

Shell中的引号有三种:单引号('')、双引号("")与反引号(``)。接下来分别来学习一下这几种引号。

1、单引号

单引号可以将它中间的字符还原为字面意义,实现屏蔽Shell元字符的功能。引号里的字符串就是一个单纯的字符串,没有任何含义,例如定义变量NUM=100,在输出变量时需要添加$符号,如果这个变量加上单引号输出,则直接将$符号与变量整体作为一个字符串输出,命令如下所示。

[itheima@localhost ~]$NUM=100
[itheima@localhost ~]$echo $NUM
100
[itheima@localhost ~]$echo '$NUM'
$NUM
在第二次加单引号输出$NUM时,直接输出了一个字符串而不是值100,单引号将$符号的功能屏蔽了。

注意:不可以在两个单引号中间单独插入一个单引号,单引号必须要成对出现。

2、双引号

双引号也具有屏蔽作用,但它不会屏蔽$符号、\符号和``符号。将刚才定义的变量NUM加双引号输出,具体如下所示:

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

由以上输出结果可知,使用双引号输出变量NUM时,$符号的功能不会被屏蔽。

注意:双引号也可以屏蔽单引号的作用,在一对双引号中,单引号不必成对出现。

3、反引号

反引号,它可以进行命令替换。反引号与双引号可以结合使用。例如输出系统的时间,具体操作如下。

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

以上所示的命令中用到了命令“date”, 该命令的功能是打印系统当前的时间 。

可以把反引号嵌入到双引号中,但是当把反引号嵌入到单引号中时,单引号会屏蔽掉反引号的功能。例如把`date`嵌入单引号中,将不会打印出当前的时间。

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

通配符

Shell的通配符一般用于数据处理或文件名匹配,常用的通配符如下所示。

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结尾的所有文件,则可以使用如下命令。

[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字符串结尾的文件,此命令会输出所有以.conf结尾的文件。因为文件太多,在这里只截取一部分。

2、通配符“?”

通配符“?”每次只能匹配一个字符,通常与其它通配符结合使用。如果想查找/etc目录下文件名是由两个字符组成的文件,可以使用如下命令。

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

3、通配符“[]”

通配符“[]”表示与[]中的任一字符匹配,它通常是一个范围,例如,在/etc目录,列出以f~h范围的字母开头,并以.conf结尾的文件,可以使用如下命令。

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

由输出结果可知,/etc目录下以f~h范围内的字母开头,并以.conf结尾的文件有四个。

4、通配符“[!]”

通配符“[!]”表示除了[]里的字符,与其它任一字符匹配。例如,如果查找以y开头且不以.conf结尾的文件,可以使用如下命令。

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

由输出结果可知,/etc目录下符号条件的匹配项有两个。

连接符

Shell中提供了一组用于连接命令的符号,包括:“;”、“&&”以及“||”, 使 用 这 些 符 号 ,可以将多条Shell指令进行连接,使这些指令顺序或根据命令执行结果,有选择地执行。下面将对这些符号的功能分别进行介绍。

1、“;”连接符

使用“;”连接符间隔的命令,会按照先后次序依次执行。假如现在有一系列确定的操作需要执行,且这一系列操作的执行需要耗费一定时间,比如安装gdb包时,在下载好安装包后,还需要逐个执行以下命令:

[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

且在大多数命令开始执行后,都需要一定的时间,等待命令执行完毕。若此时使用“;”连接符,连接这些命令,具体如下所示:

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

那么系统会自动执行这一系列命令。

2、“&&”连接符

使用“&&”连接符连接的命令,其前后命令的执行遵循逻辑与关系,只有该连接符之前的命令执行成功后,它后面的命令才被执行。

3、“||”连接符

使用“||”连接符连接的命令,其前后命令的执行遵循逻辑或关系,只有该连接符之前的命令执行失败时,它后面的命令才会执行。








猜你喜欢:

Linux shell脚本入门视频教程【黑马程序员】

什么是Shell?

Spark Shell读取HDFS文件的步骤有哪些?

怎样通过Shell命令操作Zookeeper?

黑马程序员Python+大数据开发培训

分享到:
在线咨询 我要报名
和我们在线交谈!