mkdir {userA,userB,userC}-{home,bin,data}
我们得到 userA-home, userA-bin, userA-data, userB-home, userB-bin,userB-data, userC-home, userC-bin,userC-data,这几个目录 。这组符号在适用性上相当广泛 。能加以善用的话,回报是精简与效率 。像下面的例子
chown root /usr/{ucb/{ex,edit},lib/{ex?.?*,how_ex}}
如果不是因为支援这种用法,我们得写几行重复几次呀!
[ ] 中括号
1、在通配符和正则表达式中[]代表一定有一个在中括号内的字符,例如[abcd]代表一定有一个字符,可能是a、b、c、d这四个任何一个;
2、流程控制中,扮演括住判断式的作用 。
if [ "$?" != 0 ]then
echo "Executes error"
exit1
fi
[-]
在通配符和正则表达式中都表示范围如[0-9]、[a-z]、[A-Z],需要注意的是字母的范围与语系有关
[^]
在通配符和正则表达式中都表示“非”之意如[^A-Z],表示非大写字符 。
[[ ]]
这组符号与先前的 [] 符号,基本上作用相同,但她允许在其中直接使用 || 与&& 逻辑等符号 。
#!/bin/bashread akif [[ $ak > 5 || $ak< 9 ]]thenecho $akfi
|| 逻辑符号
这个会时常看到,在中括号中[]代表 or 逻辑的符号 。
在命令的行中如下
cmd1||cmd2
若cmd1执行完毕且正确执行($?=0),则cmd2不执行
若cmd1执行完毕且为错误($?≠0),则开始执行cmd2
&& 逻辑符号
这个也会常看到,在中括号中[]代表 and 逻辑的符号 。
在命令行中如下
cmd1&&cmd2
若cmd1执行完毕且正确执行($?=0),则开始执行cmd2
若cmd1执行完毕且为错误($?≠0),则cmd2不执行
[root@RHEL6 ~]# ls /tmp/abc || mkdir /tmp/abc && touch /tmp/abc/hehe //如果/tmp/abc目录不存在则创建这个目录,成功后在目录下创建hehe文件 ls: cannot access /tmp/abc: No such file or directory //这个就是ls /tmp/abc标准错误输出 [root@RHEL6 ~]# ll /tmp/abc/hehe -rw-r--r--. 1 root root 0 Jun 17 11:00 /tmp/abc/hehe //已经创建了文件 [root@RHEL6 ~]# ls /tmp/bcd || echo "not exist" && echo "exist" //这个实例告诉我们||与&&的使用是要注意顺序的 。ls: cannot access /tmp/bcd: No such file or directory not exist exist [root@RHEL6 ~]# ls /tmp/bcd && echo "exist" || echo "not exist" //呈上,这个是正确的顺序 ls: cannot access /tmp/bcd: No such file or directory not exist [root@RHEL6 ~]# 一般来说,假设判断式有三个,也就是cmd1 && cmd2 || cmd3,而且顺序通常不会变,因为一般说cmd2与cmd3会放置肯定可以执行成功的命令 。
& 后台工作
单一个& 符号,且放在完整指令列的最后端,即表示将该指令列放入后台中工作 。
tar cvfz data.tar.gz data > /dev/null&
<...> 单字边界
这组符号在规则表达式中,被定义为"边界"的意思 。譬如,当我们想找寻 the 这个单字时,如果我们用
grep the FileA
你将会发现,像 there 这类的单字,也会被当成是匹配的单字 。因为 the 正巧是 there的一部份 。如果我们要必免这种情况,就得加上 "边界" 的符号
grep '' FileA
+ 加号 (plus)
在运算式中,她用来表示 "加法" 。
expr 1 + 2 + 3
此外在规则表达式中,用来表示"很多个"的前面字元的意思 。
# grep '10+9'
fileB109100910000910000931010009#这个符号在使用时,前面必须加上escape 字元 。
- 减号 (dash)
在运算式中,她用来表示 "减法" 。
expr 10 - 2
此外也是系统指令的选项符号 。
ls -expr 10 - 2
在 GNU 指令中,如果单独使用 - 符号,不加任何该加的文件名称时,代表"标准输入"的意思 。这是 GNU指令的共通选项 。譬如下例
tar xpvf -
这里的 - 符号,既代表从标准输入读取资料 。
不过,在 cd 指令中则比较特别
cd -
这代表变更工作目录到"上一次"工作目录 。
% 除法 (Modulo)
在运算式中,用来表示 "除法" 。
expr 10 % 2
此外,也被运用在关于变量的规则表达式当中的下列
${parameter%word}${parameter%%word}
一个 % 表示最短的 word 匹配,两个表示最长的 word 匹配 。
= 等号 (Equals)
常在设定变数时看到的符号 。
vara=123echo " vara = $vara"
或者像是 PATH 的设定,甚至应用在运算或判断式等此类用途上 。
== 等号 (Equals)
常在条件判断式中看到,代表 "等于" 的意思 。
推荐阅读
- 10 大可以摧毁你的 Linux 的命令
- 京东科技Redis跨数据中心双向同步优化实践
- 磕碰伤如何处理
- 脸过敏吃什么蔬菜好
- 牛奶中度过敏
- 过敏喉咙堵塞
- 马苏|知名导演聚餐获5位女生相陪,摸头牵手关系亲密,马苏现身其中
- 普京|普京就征兵过程中出现的问题作出以下批示和纠正,要求立即进行调整!
- 曹云金|曹云金:本该前程似锦,却自毁前程,其中原因不值得同情!
- 莱昂纳多·迪卡普里奥|小李子发文斥责中国渔民捕鱼,网友:管好你自己