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

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:18tt.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)!

(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,效果与

(10){}

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值