cd /home; ls -al
或此命令:
cd /home && ls -al
我得到相同的结果。但是,这两种方法在后台发生了什么?它们之间的功能区别是什么?
#1 楼
;
只是将一个命令与另一个命令分开。 &&
表示仅在上一个命令成功的情况下运行以下命令cd /home; ls -al
这将执行
cd /home
,即使cd
命令失败(/home
不存在,您也不会)如果没有权限遍历它,等等),它将运行ls -al
。 #2 楼
a && b
如果a返回零退出代码,则执行b。
a || b
如果a返回非零退出代码,则b为
a ; b
先执行a然后执行b。
#3 楼
cd /fakedir; ls -al
在当前目录中运行
ls
,因为cd /fakedir
将失败,并且外壳程序将忽略不为零的退出状态。cd /fakedir && ls -al
因为仅当前一个命令正常退出(状态为零)时,
&&
运算符才会继续执行,不会执行任何ls
操作。尽管通常放在命令的末尾,但可以将其放在链的中间。#4 楼
您也可以像if..then..else
一样将它们连接在一起,以链接命令逻辑。示例:
评论
使用的;是非常危险的(至少使用rm命令),例如cd / some / dir; rm -fr ./*。因此,使用这种破坏性操作,必须确保在执行rm之前您处于正确的位置。正确的命令是cd / some / dir && rm -fr ./*
– ALex_hha
16年4月18日在14:23