71 如果我想在一行上运行两个单独的命令,我可以这样做: cd /home; ls -al 或这个: cd /home && ls -al 我得到相同的结果。但是,这两种方法在后台发生了什么?它们之间的功能区别是什么? bash — 肖恩·P source
88 在;刚刚相互分隔命令。该&&说,只有运行下面的命令,如果先前的成功 cd /home; ls -al 这cd /home即使在cd命令失败(/home不存在,你没有权限穿越它,等等),它将运行ls -al。 cd /home && ls -al ls -al如果cd /home成功,则只会运行。 — 用户名 source 2 例如,使用of ; 是非常危险的(至少使用rm命令)cd /some/dir; rm -fr ./*。因此,使用这种破坏性操作,必须确保在执行rm之前您处于正确的位置。正确的命令是cd /some/dir && rm -fr ./* — ALex_hha '16
16 cd /fakedir; ls -al ls在当前目录中运行,因为cd /fakedir将失败,并且外壳程序将忽略不为零的退出状态。 cd /fakedir && ls -al 因为&&只有前一个命令正常退出(状态为零),ls操作员才会继续操作,因此不会执行任何操作。 还有其他运算符,例如,&它将使过程成为后台。尽管通常放在命令的末尾,但可以将其放在链的中间。 — 杰夫·费兰德 source
4 您也可以像将它们if..then..else链接命令逻辑一样将它们连接在一起。 例: ls file.ext && echo "file exists" || echo "file does not exist" — 开发人员 source
;
是非常危险的(至少使用rm命令)cd /some/dir; rm -fr ./*
。因此,使用这种破坏性操作,必须确保在执行rm之前您处于正确的位置。正确的命令是cd /some/dir && rm -fr ./*