* 代表零个或者多个任意字符
?代表一个任意字符
# 注释符号,注释说明的意思,即#后面的内容Linux忽略掉,或者是在shell脚本中作解释符号、解释说明用,用在需要说明注释的文字行首
\ 脱意字符,将后面的特殊符号(例如*)还原为普通字符,例子如下:
#ls -d test\*
无法访问test*:没有那个文件或目录
| 管道符,将前面的命令的结果丢给符号后面的命令。
需要注意的是:后面的命令,并非所有命令都可以,一般针对文档操作的命令比较常用,例如
cat,less,head,tail,grep,cut,sort,wc,uniq,tee,tr,split,sed,awk等等。
其中grep,sed,awk 为正则表达式必须掌握的工具。
例子:#cat testb.txt |wc -l
0
wc -l 用来计算一个文档有多少行。
$ 特殊符号
用于变量前面的标识符号,$PATH $HOME
和!一起使用,#!$ 上条命令中最后一个参数,就是上条命令中最后出现的东西如路径、文件名等等。
; 特殊符号
可以在一行运行多条命令
#ls -d test*; touch test111; ls-d test*
test1 test2
test1 test2 test111
~ 特殊符号
用户的家目录,如果是root则是/root,普通用户/home/username
& 特殊符号
把命令放到后台执行,需要加上这个符号。通常用于命令运行时间比较长的情况。
#sleep 30 &
[1] 3260
#jobs
[1]+ running sleep 30 &
> >> 2> 2>> < 重定向符号
> 重定向
>> 追加重定向
2> 错误重定向
2>> 错误追加重定向
< 反向重定向
反向重定向,会将右边的文档的内容,重定向给左边的这个命令,比如 # wc -l < 1.txt
当运行一条命令报错时,报错信息会输入到当前屏幕,如果想重定向到一个文本里,则要用2>和2>>。
#ls aaa
没有那个文件或目录
#ls aaa 2>/tmp/error
#cat /tmp/error
没有那个文件或目录
[ ] 中括号
中间为字符组合,代表中间字符中的任意一个。括号内只能是完全匹配,不可以使用*
#ls -d test*
test1 test2 test3 testa testb testc
#ls -d test[1-3]
test1 test2 test3
#ls -d test[1a3]
test1 test3 testa
#ls -d test[0-9]
test1 test2 test3
#ls -d test[0-9a-z]
test1 test2 test3 testa testb testc