(一)命令排序
分号:; 不具备逻辑判断机制 前面即使命令失败,后续命令也会照常执行
&&: 具备逻辑判断,前面命令成功后,后面命令才会执行。比如常用: ./configure&&make&&make install
|| : 具备逻辑判断,前面命令失败后,后面命令才会执行。
比如: mkdir /home/11/22/33 && echo "ok..." || echo "failed..." -- 创建成功就打印ok,创建失败打印failed
扩展: true命令和false命令,true 永远返回为i真0,false永远返回为假(非0)
注意:这里将&符号用法做一个简单的归纳:
command & 后台执行
command &>/dev/null 混合重定向(包含标准输出1,错误输出2)
command 1 && command2 命令排序,逻辑判断
(二)Shell通配符(元字符),表示的不是本意
* 匹配任意多个字符 ls in* find / -iname "*.txt"
这里有点特殊的是,*作为通配符,在find中必须用引号,在其余命令中不能用引号
?匹配任意一个字符 touch love loove live l7ve;ll l?ve
[] 匹配括号中任意一个字符 [abc] [a-z] [0-9] [a-zA-Z0-9] [^a-zA-Z0-9] ll l[io]ve ll l[^a-z]ve
() 在子shell中执行(cd /boot ; ls) (umask 077; touch file1000) --当前shell umask不会变
{} 集合 touch file(1..9) -- 数字1-9 中间2个点
集合还有以下的用法,下面3条语句效果是一样的:
多层集合要从最外面一层开始分析
\ 转义符号 , 让元字符回归本意,也能让一个普通字符变成具有特殊含义的字符,下面来练习练习:
让元字符回归本意:
让普通字符具备特殊含义:
以上的现象可能有几个地方不好理解,简单解释下:
转义符可以转义空格,echo jian\ mei 其实中间空格本来是分割echo 参数的符号,被转义后就变成了普通空格,所以“jian mei”变成了一个参数,所以有这个文件夹被创建了。还有通常会说转义符可以作为换行符,其实不是换行符,准确点说是转义符把换行符转义了。