如果你每天使用 Linux,就会发现 Shell 命令是你处理文件、安装和配置系统软件时最强大的工具。如果能在一条命令中执行多个命令,那么将节省大量时间,变得更加高效。

在本篇文章中,我们将看到如何在一条命令中通过高效组合使多个命令一起执行。

分隔符命令示例执行逻辑
;cmd1 ; cmd2不管前面的命令是否执行成功,都会执行后面的命令。
&&cmd1 && cmd2只有在前面的命令执行成功后,才会接着执行后面的命令。
||cmd1 || cmd2只有在前面的命令执行失败后,才会接着执行后面的命令。

下面我将更详细地解释上面三种分隔符,如何在 Linux 中一次性执行多个命令。

1. 分号(;)分隔符

分号(;)是一个命令的结束符,可以连续执行一个或多个命令,而不管前面的命令是否执行成功。而且,每一个命令都会作为当前 shell 的子进程来被执行,也就是所当前一个命令执行之后,无论成功还是失败,才会执行下一个命令。

例如,在下图中,我运行了三个命令,whoami 表示当前登录的用户,cat zatp.txt 表示输出 zatp.txt 文本中的内容,date -R 表示输出系统当前时区。

2. AND(&&)分隔符

在某些情况下,如果需要确保仅在第一条命令执行成功后才执行第二条命令。&&相当于逻辑与,比如下图中,我第一次运行的命令中,因为第一个命令中的文件名 zatp.tx 最后少打了一个 "t",所以会执行失败,同时第二个命令也不再执行,而第二次运行了正确的命令,此时便相当于上面的 ";" 分隔符的效果了。

我强烈建议在大多数情况下使用 && 而不是 ; 分隔符,这可以确保发生意料不到的错误,例如执行下面的命令:

cd /directory ; rm -rf *

如果第一个目录名输入错误或者不存在,也会执行 rm -rf * 命令,可能会破坏你的系统。

3. OR(||)分隔符

按照顺序,在第一个命令执行成功时,第二个命令就不会执行;或者在第一个命令返回错误时,将执行第二个命令。例如,你需要创建一个名为 zatp.com 文件,但不知道这个文件存不存在,就可以使用 || 分隔符,先验证 zatp.com 文件是否存在,如果不存在则创建它。

touch zatp.com || touch zatp.com

在上面的示例中,zatp.com 文件不存在,因此执行第二个命令创建了这个文件。

以上就是在 Linux 中一次执行多个命令的 3 种方式了,大家可以根据自己的需要进行组合使用。

Tags: Linux

This work is licensed under a Creative Commons Attribution-NonCommercial-ShareAlike 4.0 International License.