分号
分号,没有任何逻辑关系的连接符。当多个命令用分号连接时,各命令之间的执行成功与否彼此没有任何影响,都会一条一条执行下去。
[root@localhost ~]# echo test>test.txt; cat test.txt
test
逻辑或
逻辑或,当用此连接符连接多个命令时,前面的命令执行成功,则后面的命令不会执行。前面的命令执行失败,后面的命令才会执行。
# 不存在 test.txt,所以会执行 echo命令
[root@localhost ~]# ls test.txt || echo notExist
逻辑与
逻辑与,当用此连接符连接多个命令时,前面的命令执行成功,才会执行后面的命令,前面的命令执行失败,后面的命令不会执行,与 || 正好相反。
[root@localhost ~]# touch test.txt && echo test > test.txt && cat test.txt
test
区分&
& 放在启动参数后面表示此进程为后台进程
需要区分以下两个示例
# 将docker stop置为后台执行 然后执行 docker rm
docker stop $(docker ps -q) & docker rm $(docker ps -aq)
# 执行完docker stop后 执行docker rm
docker stop $(docker ps -q) && docker rm $(docker ps -aq)
第一条命令执行可能会报错,因为如果容器还没完全停止之前,是不能删除的。第二个命令就没有该问题
管道符
管道符,当用此连接符连接多个命令时,前面命令执行的正确输出,会交给后面的命令继续处理。若前面的命令执行失败,则会报错,若后面的命令无法处理前面命令的输出,也会报错。
比如经常搭配管道符与grep
一起使用
[root@localhost ~]# ls | grep git
参考
https://www.jb51.net/article/136261.htm