Bash中的特殊字符,键盘上能敲出来的特殊字符都有其特殊意义,强调一点:元字符是被shell解释的。
1. ‘‘,取命令的执行结果
[[email protected] ~]# ls
4.txt anaconda-ks.cfg a.txt B.txt c.txt D.txt nginx-1.10.3 nginx-1.10.3.tar.gz
[[email protected] ~]# res=`ls` #取命令的运行结果,赋值给变量res
[[email protected] ~]# echo $res #查看变量res的值
4.txt anaconda-ks.cfg a.txt B.txt c.txt D.txt nginx-1.10.3 nginx-1.10.3.tar.gz
2. $(),同上,但它弥补了‘‘的嵌套缺陷
[[email protected] ~]# res=`echo `ls`` #嵌套使用后无法达到预想的效果:取echo 一堆文件名的效果。
[[email protected] ~]# echo $res
ls
[[email protected] ~]# res=$(echo $(ls)) #替代方案
[[email protected] ~]# echo $res
4.txt anaconda-ks.cfg a.txt B.txt c.txt D.txt nginx-1.10.3 nginx-1.10.3.tar.gz
3. ~, 家目录
[[email protected] tmp]# cd ~
[[email protected] ~]# pwd
/root
4. !
a !,取非
[[email protected] ~]# ls /dev/sda
sda sda1 sda2
[[email protected] ~]# ls /dev/sda[0123]
/dev/sda1 /dev/sda2
[[email protected] ~]# ls /dev/sda[!01]
/dev/sda2
b !,历史命令调用
[[email protected] ~]# !343
hostname
MiWiFi-R3-srv
c !,匹配最近一次历史命令
[[email protected] ~]# !ls
ls /dev/sda[!01]
/dev/sda2
d ! ,带空格 将命令的返回值取反
[[email protected] ~]# echo ok
ok
[[email protected] ~]# echo $? #上一条命令执行的结果,0代表执行成功,非0代表执行失败
0
[[email protected] ~]# ! echo ok #将结果取反
ok
[[email protected] ~]# echo $?
1
0-255之间,0则为真,非0位假
6. @,无特殊含义
7. # 注释
8. $
a $,变量取值
b $() 同``
c ${},变量名的范围
d $[],整数计算 echo $[2+3] - * / % 浮点数用 echo "scale=3; 10/3" | bc -l
[[email protected] ~]# money=10
[[email protected] ~]# echo $money
10
[[email protected] ~]# echo 00000$money
0000010
[[email protected] ~]# echo $money0000
[[email protected] ~]# echo ${money}0000
100000
9. %
a 杀后台进程 jobs号
b 取模
10. ^,
a 取非,和!雷同
[[email protected] ~]# ls /dev/sda[^01]
/dev/sda2
[[email protected] ~]# ls /dev/sda[!01]
/dev/sda2
b 替换
[[email protected] ~]# systemctl restart network
[[email protected] ~]# ^network^sshd^
systemctl restart sshd
11. &
a 后台执行
b &&,逻辑与
12. *
a 匹配任意长度字符串
b 计算乘法
13. (),在子进程中执行
[[email protected] ~]# x=1
[[email protected] ~]# (x=666)
[[email protected] ~]# echo $x
1
[[email protected] ~]#
[[email protected] ~]# (x=666;echo $x)
666
14. -
a 减号
b 区间
c cd -
15. _,无特殊含义
16. +,加号
17. =,赋值
18. |
a |,管道
b ||,逻辑或
19. \,转义
[[email protected] test]# echo \\
\
[[email protected] test]# echo \‘
‘
[[email protected] test]# echo "‘"
‘
20. {},命令列表 #括号内的开头和结尾必须是空格
# { ls; cd /; }
21. [],字符通配,匹配括号内之一
22. :,
a 空命令
b 真值
[[email protected] ~]# :
[[email protected] ~]# echo $?
0
23. ;,可以接多个命令:ls;pwd;echo 123;无论对错,会一直执行到最后一条命令
24. "",软引, ‘‘,硬引
[[email protected] test]# x=1
[[email protected] test]# echo "$x" #双引号的代表软引用,引号内特殊字符有特殊意义,比如$,``等
1
[[email protected] test]# echo ‘$x‘ #单引号代表硬引用,引号内所有字符都无特殊意义
$x
25. <,输入重定向
26. >,输出重定向
27. >>,追加
28. <<,here document ???
29. >&,合并2和1输出
30. ,逗号,枚举分隔符
31. .点,source ,当前目录
32. /,目录分隔符
33. ?,通配符,任一字符
34. 回车符,命令执行
35. *,通配符,任意字符
参考资料
1. http://www.cnblogs.com/linhaifeng/p/6592572.html#_label3
2. http://jingyan.baidu.com/article/3052f5a1f4486797f31f86e1.html