linux命令中'|'竖线,‘||’双竖线,&和&&所表达的意义

发布时间:2020/06/11 作者:天马行空 阅读(2660)

1、竖线'|' ,在linux中作为管道符,将'|'前面命令的输出作为'|'后面的输入
比如:显示text.txt文件的前面两行,cat test.txt|head -n2

[root@iz2ze9pf0xgaj16n65280pz ~]# cat test.txt 
aaaaa
bbbbb
ccccc
ddddd
eeeee
fffff
ggggg
[root@iz2ze9pf0xgaj16n65280pz ~]# cat test.txt|head -n2
aaaaa
bbbbb


2、双竖线'||',用双竖线'||'分割的多条命令,代表的是或者

执行的时候遵循如下规则,如果前一条命令为假,则继续执行后面的命令,如果前一条命令为真,则后面的命令不会执行。
比如:输入1小于2双竖线输出b,前面为真,后面不执行则没有输出b,输入1大于2双竖线echo b,前面为假则输出b。

[root@iz2ze9pf0xgaj16n65280pz ~]# [[ 1 -lt 2 ]]||echo b
[root@iz2ze9pf0xgaj16n65280pz ~]# [[ 1 -gt 2 ]]||echo b
b


再比如:判断文件是否存在,不存在则创建,存在就什么都不执行。

[root@iz2ze9pf0xgaj16n65280pz ~]# ls
[root@iz2ze9pf0xgaj16n65280pz ~]# [[ -f 1.txt ]] || touch 1.txt
[root@iz2ze9pf0xgaj16n65280pz ~]# ls
1.txt
[root@iz2ze9pf0xgaj16n65280pz ~]# || touch 2.txt
[root@iz2ze9pf0xgaj16n65280pz ~]# ls
1.txt


3、&& 可同时执行多条命令,代表的是且,当碰到执行错误的命令时,将不再执行后面的命令。如果一直没有错误的,则执行完毕。

[root@iz2ze9pf0xgaj16n65280pz ~]# [[ 1 -lt 2 ]] && echo b
b
[root@iz2ze9pf0xgaj16n65280pz ~]# [[ 1 -gt 2 ]] && echo b


4、&同时执行多条命令,不管命令是否执行成功

[root@iz2ze9pf0xgaj16n65280pz ~]# [[ 1 -gt 2 ]] & echo b
[1] 27051
b
关键字linux