1 shell引号
1)反斜线\
转译
echo * 显示当前目录中所有的文件列表
echo \* 显示*字符
换行
find / \ 换行输入多行命令
> -name "test.txt" \
> -type f \
> -size +5M
find / -name "test.txt" -type f -size +5M
2)单引号''
单引号将它中间的所有任意字符还原为字面意义,实现屏蔽shell元字符的功能,单引号必须成对出现。
echo ‘$HOME’
echo 'test\'
3)双引号""
双引号类似于单引号,不会屏蔽` \ $ 这三个shell元字符的含义,如果需要屏蔽需要前面加一个\符号,其他字符的功能将被屏蔽(包括单引号)。两个双引号之间的单引号不必成对出现
[root@localhost ~]# echo $HOME
/root
[root@localhost ~]# echo "$HOME"
/root
[root@localhost ~]# echo "\$HOME"
$HOME
[root@localhost ~]# echo "this's a book"
this's a book
4)反引号``
shell中使用反引号进行命令替换,命令替换使shell可以将命令字符替换成命令执行结果的输出内容,也可用$()来实现
echo “today is `date +%D`”
echo "today is $(date +%D)"
2 正则表达式
正则表达式中有些匹配字符与shell中的通配符符号一样,但是含义不同
基本正则表达式:grep egrep vi sed awk
扩展正则表达式: egrep awk
基本正则表达式及其所对应的含义
c 匹配字母c
. 匹配任意单个字符
* 匹配前一个字符出现0次或者多次
.* 匹配任意多个任意字符
[] 匹配金河中的任意单个字符,括号中为一个集合
[x-y] 匹配连续的字串范围
^ 匹配字串的开头
$ 匹配字串的结尾
[^] 匹配否定,对括号的集合取反
\ 匹配转译后的字串
\{n,m\} 匹配前一个字符重复n到m次
\{n,\} 匹配前一个字符重复至少n次
\{n\} 匹配前一个字符重复n次
\(\) 将\(与\)之间的内容存储在“保留空间”,最大存储9个
\n 通过\1至\9调用保留空间中的内容,一般和上面的\(\)配合使用
基本正则表达式案例
grep o[os]t /etc/passwd 查找包含oot或者ost的行
grep [0-9] /etc/passwd 查找包含数字0-9的行
grep sbin/[^n] /etc/passwd 查找sbin/后面不跟n的行
grep ‘0\{1,2\}’ /etc/passwd 查找数字0出现1次到2次的行
grep "\(root\)\(:\).*\2\1" /etc/passwd 查找包含以root:开头并以:root结尾的字串行
扩展正则表达式
{n,m} 等同于基本正则表达式的\{n,m\}
+ 匹配前一个字符出现一次或多次
? 匹配前一个字符出现0次或一次
| 匹配逻辑或者,即匹配|前或后的字串
() 匹配正则集合
egrep '0{1,2}' /etc/passwd 查找数字0出现1次和2次的行
egrep '0+' /etc/passwd 查找包含至少一个0的行
egrep '(root|admin)' /etc/passwd 查找包含root或者admin的行
字符集
[:alpha:] 字母字符
[:alnum:] 字母和数字字符
[:cntrl:] 控制字符
[:digit:] 数字符号
[:xdigit:] 十六进制数字字符
[:punct:] 标点符号
[:graph:] 非空格字符
[:print:] 任何可以显示的字符
[:space:] 任何产生空白的字符
[:blank:] 空格和Tab键字符
[:lower:] 小写字母
[:upper:] 大写字母
grep [[:digit:]] /etc/passwd