目录
1.一般的通配符
(1)星号(*)
匹配任意字符0次或者多次,,例如a*表示以字符a开头,后面匹配任意的字符数(但是文件名前面的原点“.”和路径名中的斜线“/”必须显示匹配)。

查找以a字符开头的.sh文件。
(2)问号(?)
匹配任意一个字符,如a?,表示匹配以字符a开头,并且后面只跟一个字符的文件。
(3)方括号([])
其中一个字符组,它匹配该字符组限定的任何一个字符。该字符组可以由直接给出的字符组成,也可以由表示限定范围的起始字符,终止字符及中间一个连字符组成:
例如:[a-z]表示匹配“a到z中的任意一个字符”,[abcdef]表示匹配"abcdef"中的任意一个字符。
(4)感叹号(!)
表示不在一对方括号中所列出的字符。如a[!1-9].sh表示以字符a开头,后面一个字符不是数字1-9中的一个数字的.sh文件名,只会匹配如af.sh,ah.sh等文件名;
(5)幂次方号(^)
只允许在一行的开始匹配字符串。
(6)美元号($)
只在行尾匹配字符串,它放在匹配单词的后面。
2.模式表达式
(1)*模式表
匹配给定表示表中的“模式”的0次或者多次出现,各模式间以“|”分开,例如:
file*(.sh | .c)将匹配文件file,file.c,file.sh,file.c.c,file.sh.c等,但是不匹配file.o或者file.s.
(2)+模式表
匹配给定模式表中的“模式”1次或者多次,各模式之间使用“|”分开,例如:
file+(.sh | .c),匹配文件file.c,file.o,file.sh.c等,但是不匹配file。
(3)?模式表
匹配模式表中任何一种“模式”的0次或者1次出现,各模式之间使用“|”分开。例如:
file?(.sh | .c)只匹配file,file.c,file.sh文件,但是比配file.c.c,file.sh.c等。
(4)@模式表
仅仅匹配模式表给定的“模式”的一次出现,各模式之间使用“|”分开,例如:
file@(.sh | .c)表示匹配file.sh和file.c文件,但是不匹配file,file.c.c,file.c.sh等。
(5)!模式表
除给定模式表中的一个“模式”之外,它可以匹配其他任何东西。
3.引号
(1)双引号
双引号括起来的符号,除$,倒引号(`)和反斜杠(\)任然保留其特殊功能之外,其他字符均作为普通的字符对待。
- $:表示变量替换,即用其后指定的变量的值来替换$和变量(这个在讲述第一个shell程序的时候已经细讲);
- 倒引号:表示命令替换;
- 反斜杠:后面的字符是这些中的字符时,反斜杠“\”才是转义字符,这些字符是:“$”,“`”,“‘’”,“\”或换行符(通过转义,表示\后面的字符进行特殊的处理)。
(2)单引号
由单引号括起来的都是普通字符串。
(3)倒引号
倒引号括起来的字符串被shell解释为命令,在执行时,shell会先执行该命令行,并以它的标准输出结果取代整个倒引号部分。

4.其他特殊的字符
(1)输入重定向符
输入重定向符"<"的作用是把命令(或者可执行程序)的标准输入重新定向到指定文件。
(2)输出重定向符
输出重定向符“>”的作用是把命令(或者可执行程序)的标准输出到重定向到指定文件。
创建a.txt文件:sudo touch a.txt
赋予权限:sudo chmod 777 a.txt
重定向:ls > a.txt(将命令ls的标准输出重定向到文件a.txt中)
查看文件内容:cat a.txt
(3)管道线
管道线由“|”隔开若干个命令组成的序列。在管道线中,每一个命令执行时都有一个独立的进程,前一个命令的输出正是下一个命令的输入。
例如:将查看文件a.txt的内容,作为输入使用grep 搜索字符“i”出现的情况。

5360



被折叠的 条评论
为什么被折叠?



