Linux 下命令分割符的区别

Linux的Shell命令分割符有&,&&||,;,在上周NJCTF时用到了这些符号,但是还不是很懂到底什么意思,多谢我的傻仔,让我深入了解了这些符号。

&

通过&可以拼接执行接下来的命令但是前后两个命令并不会影响,即使前面命令出错也不影响后面命令的执行。
栗子:

前面命令已经cd 到Desktop目录下但是&后面的ls命令还是执行在当前目录下而不是Desktop目录下

&&

&&符相当于运算符中的and 只有当前面为True才会执行后面的语句如果为Flase则不执行,且会因为前面的语句影响后面的内容。
栗子:

cd到Desktop目录下然后ls也是在Desktop目录下执行的。

前面命令出错后面直接就不执行

||

||符相当于运算符中的或,当前面命令为True时只执行前面的命令,如果为Flase则执行后面的命令。
栗子:

只执行了cd ../

由于前面命令出错所以执行后面的ls命令

;命令不管怎么样都会执行后面的命令但是跟&有点不同。
栗子:

执行cd Desktop 且执行 ls 并且 ls 是在Desktop目录下执行的,而&是不会改变当前目录

由于没有dasd目录但是ls还是会执行,且在当前目录下