Skip to content

Linux中连接多个命令

约 941 字大约 3 分钟

Linux

2025-01-13

介绍

Linux中可以同时执行多个命令,同时执行多个命令同时执行的规则有下面几种情况。

  • 执行多个命令,前一个命令执行成功,才执行后一个命令。
  • 执行多个命令,前一个命令执行失败,才执行后一个命令。
  • 执行多个命令,不管前一个执行失败,都执行后一个命令。

使用&&,确保前一个命令执行成功,才执行后一个命令

在多个命令中使用&&符号连接,必须是前一个命令执行成功,接着才会执行后一个命令,不管命令有多少个都是按这种规则去执行的。

下面就以两个简单的命令来举例,第一个命令是cd ~/.ssh/matiasDW,第二个命令是pwd

$ cd ~/.ssh/matiasDW && pwd
/Users/matias/.ssh/matiasDW

如果第一个命令输入一个错误的路径,比如cd ~/.ssh/MT,会是什么情况呢。

$ cd ~/.ssh/MT && pwd
cd: no such file or directory: /Users/matias/.ssh/MT

可以看出前一个命令执行失败,后一个命令是不能继续执行了。

使用||,确保前一个命令执行失败,才执行后一个命令

在多个命令中使用||符号连接,则代表着必须是前一个命令执行失败,才会接着执行后一个命令,如果前一个命令执行成功,后一个命令就不会执行。

下面就来看一个例子,还是使用cd ~/.ssh/MT作为第一个命令,pwd为第二个命令。

$ cd ~/.ssh/MT || pwd
cd: no such file or directory: /Users/matias/.ssh/MT
/Users/matias/.ssh/matiasDW

这里第一个命令执行失败了,执行了第二个命令。

第一个路径使用正确的路径,比如cd ~/.ssh/matiasDW,再来看一下。

$ cd ~/.ssh/matiasDW || pwd

没有输出,则表面第二个命令pwd没有执行。

使用;,不管前一个命令执行成功与否,都执行后一个命令

3,执行多个命令使;

在多个命令中使用;符号连接,表示不管前一个命令的执行是否成功,都会执行后面的命令。

接下来再以刚才的命令cd ~/.ssh/matiasDW 以及 pwd命令。

$ cd ~/.ssh/matiasDW ; pwd
/Users/matias/.ssh/matiasDW

如果第一个命令输入一个错误的路径,比如cd ~/.ssh/MT,会是什么情况呢。

$ cd ~/.ssh/MT ; pwd
cd: no such file or directory: /Users/matias/.ssh/MT
/Users/matias/.ssh/matiasDW

可以看出使用;符合连接多个命令,不管前面的命是成功还是失败,都会执行后面的命令。

应用

使用脚本连接多个命令

我经常使用的更新前端项目的脚本中,有这么一句命令。用来重启nginx服务的。

ssh -t fofpro "cd /data/apps/web-modules/module-name/; rm -rf dist.last; mv dist dist.last; mv dist.fresh dist; nginx -s reload;"

这条命令中: ssh -t fofpro使用别名连接远程服务器。 cd /data/apps/web-modules/module-name/是切换到指定目录(这个是对应的前端打包文件存放的路径)。 rm -rf dist.last; mv dist dist.last; mv dist.fresh dist先删除dist.last目录,将dist目录重命名为dist.last,将dist.fresh目录重命名为dist,这样我们就始终保留上一个版本的备份,更新后如果发现有问题可以快速切换回去。 nginx -s reload是重启nginx服务。

在这句脚本中,就使用了;来链接多个语句,虽然不够严谨,但是我们能确保重启nginx服务。

总结

执行多个无关命令时,使用;符号连接。 命令之间有依赖关系时需要看情况使用||&&