在一行中运行两个或多个命令可以为您节省大量时间,并帮助您在 Linux 中变得更有效率和生产力。
在 Linux 中,可以通过三种方式在一行中运行多个命令:
; | 命令 1 ; 命令 2 | 先运行命令 1,然后运行命令 2 |
&& | 命令 1 && 命令 2 | 仅当命令 1 成功结束时才运行命令 2 |
|| | 命令 1 || 命令 2 | 仅当命令 1 失败时才运行命令 2 |
让我向您详细展示如何在 Linux 中链接命令。
使用 ; 在一行中运行多个 Linux 命令
其中最简单的是分号 (;)。 您只需组合要使用的几个命令; 以下列方式:
cmd1; cmd2; cmd3
在这里,cmd1 将首先运行。 不管 cmd1 运行成功还是出错,cmd2 都会在它之后运行。 当 cmd2 命令完成时,cmd3 将运行。
让我们举一个您可以轻松练习的示例(如果您愿意)。
mkdir new_dir; cd new_dir; pwd
在上面的命令中,您首先使用 mkdir 命令创建一个名为 new_dir 的新目录。 然后使用 cd 命令切换到这个新创建的目录。 最后,使用 pwd 命令打印当前位置。
分号 (;) 后面的空格是可选的,但它使命令链易于阅读。
使用 && 运行多个 Linux 命令
有时您想确保在 Linux 命令链中, 下一个命令仅在上一个命令成功结束时运行. 这就是逻辑 AND 运算符 && 出现的地方:
cmd1 && cmd2 && cmd3
如果您使用基于 Ubuntu 或 Debian 的发行版,您一定遇到过这个使用 && 概念的命令:
sudo apt update && sudo apt upgrade
这里的第一个命令 (sudo apt update) 首先刷新包数据库缓存。 如果没有错误,它将升级所有具有较新版本可用的软件包。
让我们以前面的例子为例。 如果 new_dir 已经存在, mkdir 命令将返回错误。 行为的差异; 和 && 可以在下面的屏幕截图中看到:
你有没有看到当第一个命令导致错误时,由 && 分隔的命令是如何停止的?
使用 || 一次运行多个 Linux 命令
您可以使用逻辑 OR 运算符 (||) 来运行命令链,但 下一个命令仅在上一个命令以错误结束时运行. 这与您使用 && 看到的相反。
cmd1 || cmd2 || cmd3
如果 cmd1 失败,则 cmd2 运行。 如果 cmd2 运行成功,cmd3 将不会运行。
在上面的屏幕截图中, 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文件前后运行上面的命令看看区别:
就像 Linux 终端中的复制粘贴一样,一次运行多个命令也是 Linux 命令行节省时间的众多技巧之一。 虽然很初级,但它是任何 Linux 终端用户都应该知道的基本概念。
您还可以使用 ;、&& 和 || 在其中运行多个命令 bash 脚本也是如此。
我希望你喜欢这个终端技巧。 请继续关注每周二在 #TerminalTuesday 系列下发布的更多 Linux 命令提示和工具。