首页 » 信息技术 »

Shell命令中的元字符(meta character)

2019年2月10日 / 46次阅读
Bash

  • 打开支付宝,搜索“ 529018372 ”,领取专属红包!每日支付每日领。

Shell(bash)的元字符(Meta Character)是指键盘上可输入的对于Shell来说具有其他特殊含义的字符。

简单的讲就是元字符:一些有特殊意义的字符,可以替代其他字符的字符。下面分别介绍:

(1)~ ,- 和 /

这几个符号都是需要在cd命令之后使用的。

~表示/home/username目录,

-表示来时的路径,同时也是命令行参数的前置符号,

/表示根目录,/同时也是Linux下路径中使用的符号。

[xinlin@localhost ~]$ cd Python-3.7.1
[xinlin@localhost Python-3.7.1]$ cd ~
[xinlin@localhost ~]$ pwd
/home/xinlin
[xinlin@localhost ~]$ cd /
[xinlin@localhost /]$ pwd
/
[xinlin@localhost ~]$ cd -  # 这样可以方便的回到来时的路径。

(2)*, ? 和 []

这三个符号其实就是正则表达式里面的符号,其含义也与正则表达式一样。

*,表示匹配0个或多个任意字符;

?,表示匹配1个任意支付;

[],表示匹配方括号中的某一个字符;

查询test目录以a开头的文件?
ls a*
查询test目录以txt为后缀的文件?
ls *.txt
删除以b开头的文件?
rm b*

查询test目录第二个字符为b的文件?
ls ?b*
查询test目录以a开头的文件,文件名的长度是3字符?
ls a??

touch link1.txt link2.txt n.txt k.txt
ls *[link]*.txt (4)
ls *link*.txt(2)
ls [b-fB-F]*.txt(0)

(3)&,&& 和 ;

&用于命令行的末尾,表示让此命令在后台执行,具体可参考:Linux命令的前台执行和后台执行

&&用于连接多个命令,当前一个命名执行成功后,继续执行后一个命令;常用语编译安装软件,make && make install

; 也是用于临街多个命令,不同于&&的地方在于,使用;连接的命令,总是会被执行,不管前一个命令执行是正确还是错误,后面的命令总会被执行。例如:cal; date

注意:如果是将多个命令以回车换行的方式写入.sh脚本文件,执行这个脚本,效果与使用;一样,不管前面行的命令执行是否正确,后面行的命令总是会被执行(除非执行exit命令,而且必须是bash shellfile.sh的方式执行)。

(4) | 

管道符号,用于将左边程序执行的输入传给右边程序继续执行,比如:

cat filename | more

ps -e | grep httpd

(5)>,>>,<

重定向符号,

“>”,重定向输出到文件,覆盖文件的内容:

cal 10 2014 > test.txt

“>>”,重定向输出到文件,追加文件的内容:

[xinlin@localhost ~]$ cal 7 2013 >> test.txt
[xinlin@localhost ~]$ cat test.txt
October 2014
Su Mo Tu We Th Fr Sa
1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 31

July 2013
Su Mo Tu We Th Fr Sa
1 2 3 4 5 6
7 8 9 10 11 12 13
14 15 16 17 18 19 20
21 22 23 24 25 26 27
28 29 30 31

“<”:重定向输入到文件:

[xinlin@localhost ~]$ cat < test.txt  # 就是cat test.txt
October 2014
Su Mo Tu We Th Fr Sa
1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 31

July 2013
Su Mo Tu We Th Fr Sa
1 2 3 4 5 6
7 8 9 10 11 12 13
14 15 16 17 18 19 20
21 22 23 24 25 26 27
28 29 30 31

[xinlin@localhost ~]$ cat < test.txt > tt.txt  # 相当于cp test.txt tt.txt
[xinlin@localhost ~]$ ll
total 28120
-rw-rw-r--. 1 xinlin xinlin 133 Feb 10 19:15 211802.txt
drwxrwxr-x. 23 xinlin xinlin 20480 Dec 29 20:51 git-2.9.5
-rw-rw-r--. 1 xinlin xinlin 5928730 Dec 28 22:32 git-2.9.5.tar.gz
drwxrwxr-x. 4 xinlin xinlin 126 Jan 30 22:12 LinkAnalyser
drwxr-xr-x. 19 xinlin xinlin 4096 Dec 28 21:04 Python-3.7.1
-rw-rw-r--. 1 xinlin xinlin 22802018 Dec 28 20:12 Python-3.7.1.tgz
drwxrwxr-x. 6 xinlin xinlin 4096 Jan 30 21:47 teapot
-rw-rw-r--. 1 xinlin xinlin 38 Feb 10 19:10 test.sh
-rw-rw-r--. 1 xinlin xinlin 284 Feb 10 19:17 test.txt
-rw-rw-r--. 1 xinlin xinlin 284 Feb 10 19:18 tt.txt
[xinlin@localhost ~]$ cat tt.txt
October 2014
Su Mo Tu We Th Fr Sa
1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 31

July 2013
Su Mo Tu We Th Fr Sa
1 2 3 4 5 6
7 8 9 10 11 12 13
14 15 16 17 18 19 20
21 22 23 24 25 26 27
28 29 30 31

(6)!

执行历史命令,请参考:巧用history中的编号来再次执行某Linux命令

(7)$

应用shell全局变量,例如:

echo $PATH

(8). 

. 就是source命令,请参考:Linux下的source命令

有的地方说这是shell的文件包含,顾名思义,在同一个bash进程中,包含某个文件里面的shell语句。

(9)()

创建一个subshell,在subshell中运行()中的脚本。

(),表示在另一个进程中运行()中的脚本,有点像bash file;

$(),表示使用()中的脚本运行之后的打印,也称为命令替换;与反引号(Esc键下面的那个)的效果一样:

[xinlin@localhost ~]$ echo `date`
Mon Feb 11 17:10:25 CST 2019
[xinlin@localhost ~]$ echo $(date)
Mon Feb 11 17:10:29 CST 2019

使用反引号的唯一理由,似乎只是还有些老旧的shell程序还支持,而不支持$()方式。

(... &),表示()中的脚本在后台运行,且其父进程号为1,效果与setsid命令一样。

(10){}

 

本文链接:http://www.maixj.net/ict/shell-meta-character-20062

相关文章

留言区

《Shell命令中的元字符(meta character)》有1条留言

电子邮件地址不会被公开。 必填项已用*标注

  • 麦新杰

    Linux下shell的巧妙应用,对系统的运维很有四两拨千斤的功效! [回复]


前一篇:
后一篇:
推一篇:可靠正规,长期稳定,网络兼职项目!!

栏目精选

云上小悟,麦新杰的独立博客

Ctrl+D 收藏本页

栏目


©Copyright 麦新杰 Since 2014 云上小悟独立博客版权所有 备案号:苏ICP备14045477号-1。云上小悟网站部分内容来源于网络,转载目的是为了整合信息,收藏学习,服务大家,有些转载内容也难以判断是否有侵权问题,如果侵犯了您的权益,请及时联系站长,我会立即删除。

网站二维码
go to top