如何在Linux终端中一次运行多个命令

在一行中运行两个或多个命令可以节省大量时间,并帮助在Linux中变得更加简单和高效。

在Linux中,可以通过三种方式在一行中运行多个命令:

; 命令1 ; 命令2 首先运行命令1,然后运行命令2
&& 命令1 && 命令2 仅在命令1成功结束时才运行命令2
// 命令1 // 命令2 仅当命令1失败时才运行命令2

注:上表由于md写法缘故,用 // 代替 ||

下面详细展示如何在Linux中使用多个命令。

使用 ; 运行多个Linux命令

其中最简单的就是分号 ; ,只需组合要使用的几个命令即可:

cmd1; cmd2; cmd3

在这里,cmd1将首先运行。无论cmd1运行成功还是出错,cmd2都将在其之后运行。当cmd2命令完成时,cmd3将运行。

下面是例子:

1
2
root@pc:mkdir new_dir; cd new_dir; pwd
/home/new_dir

在上面的命令中,首先使用mkdir命令创建一个名为new_dir的新目录。然后,使用cd命令切换到该新创建的目录。最后,使用pwd命令打印当前位置。

分号 ; 后的空格是可选的,但它使命令易于阅读。

使用 && 运行多个Linux命令

有时要确保Linux命令的下一条命令仅在上一条命令成功结束时才运行。这里就要用到逻辑AND运算符&&了:

cmd1 && cmd2 && cmd3

如果使用基于Ubuntu或Debian的发行版,有时会用到以下命令:

sudo apt update && sudo apt upgrade

在这里,第一个命令刷新软件包数据库缓存。如果没有错误,它将升级所有具有较新版本的软件包。

以前面的示例为例。因为new_dir已经存在,则mkdir命令将返回错误。并详细输出错误log:

1
2
3
root@pc:mkdir new_dir && cd new_dir && pwd

mkdir: cannot create directory ‘new_dir’: File exists

使用 || 运行多个Linux命令

可以使用逻辑OR运算符 || 来运行多个命令,但是仅当前一个命令错误结束时才运行下一个命令,这与在&&中看到的相反。

cmd1 || cmd2 || cmd3

如果cmd1失败,则cmd2运行。如果cmd2成功运行,则cmd3将不会运行。

Linux命令示例:

1
2
3
root@pc:mkdir new_dir || cd new_dir || pwd
mkdir: cannot create directory ‘new_dir’: File exists
root@pc:/home/new_dir#

上面可以看出,mkdir new_dir命令失败,因为new_dir已经存在。由于此命令失败,因此下一个命令cd new_dir将成功执行。由于此命令已成功运行,下一个命令pwd将不再运行。

结合 && 和 || 使用

可以组合运算符来运行两个或多个Linux命令。

如果将三个命令与 && 和 || 组合在一起,它将在C / C++ 中充当三元运算符。

cmd1 && cmd2 || cmd3

例如,可以检查bash中是否存在文件,并相应地打印消息。

[ -f file.txt ] && echo "File exists" || echo "File doesn't exist"

在创建file.txt文件之前和之后运行上述命令,以查看区别:

1
2
3
4
5
6
7
root@pc:[ -f file.txt ] && echo "File exists" || echo "File doesn't exist"
File doesn't exist

root@pc:vi file.txt

root@pc:[ -f file.txt ] && echo "File exists" || echo "File doesn't exist"
File exists

Linux终端中一次运行多个命令是节省时间的许多Linux命令行技巧之一。尽管简单,但这是任何Linux终端用户都应该知道的基本概念。

参考: