如何在 Linux 中同时运行两个或多个终端命令

如果您使用 Linux,您就会知道命令行对于处理文件、安装软件和启动程序有多么有用。但如果您同时运行多个命令,效率会更高。
在命令行上组合两个或多个命令也称为“命令链接”。我们将向您展示在命令行上组合命令的不同方式。
选项一:分号 (;) 运算符
分号 (;) 运算符允许您连续执行多个命令,而不管之前的每个命令是否成功。例如,打开终端窗口(在 Ubuntu 和 Linux Mint 中为 Ctrl+Alt+T)。然后,在一行中键入以下三个命令,以分号分隔,然后按 Enter。这将为您提供当前目录的列表 (ls
),找出您当前所在的目录 (pwd
),并显示您的登录名 ( whoami
) 一次。
ls ; pwd ; whoami
您也不必在分号和命令之间放置空格。您可以将这三个命令输入为 ls;pwd;whoami
。但是,空格使组合命令更具可读性,这在将组合命令放入 shell 脚本时特别有用。

选项二:逻辑与运算符 (&&)
如果您希望第二个命令仅在第一个命令成功时运行,请使用逻辑 AND 运算符分隔命令,它是两个 & 符号 (&&
)。例如,我们想创建一个名为 MyFolder 的目录,然后切换到该目录——前提是它已成功创建。因此,我们在命令行中键入以下内容并按 Enter 键。
mkdir MyFolder && cd MyFolder
该文件夹已成功创建,因此执行了 cd
命令,我们现在位于新文件夹中。
我们建议大多数时候使用逻辑 AND 运算符而不是分号运算符 (;
)。这确保你不会做任何灾难性的事情。例如,如果您运行命令更改目录,然后强制递归地删除该目录中的所有内容(cd /some_directory ; rm -Rf *
),如果目录改变没有发生。并不是说我们建议您运行一个命令来一次无条件地删除目录中的所有文件。

选项三:逻辑或运算符 (||)
有时您可能只想在第一个命令不成功时才执行第二个命令。为此,我们使用逻辑 OR 运算符或两个竖线 (||
)。例如,我们要检查 MyFolder 目录是否存在 ([ -d ~/MyFolder ]
),如果不存在则创建它 (mkdir ~/MyFolder
).因此,我们在提示符下键入以下命令并按 Enter 键。
[ -d ~/MyFolder ] || mkdir ~/MyFolder
确保在第一个括号之后和第二个括号之前有一个空格,或者检查目录是否存在的第一个命令将不起作用。
在我们的示例中,MyFolder 目录不存在,因此第二个命令创建该目录。

组合多个运算符
您也可以在命令行上组合多个运算符。例如,我们要先检查文件是否存在([ -f ~/sample.txt ]
)。如果是,我们会在屏幕上打印一条消息(echo \File exists.\
)。如果没有,我们创建文件(touch ~/sample.txt
)。因此,我们在命令提示符下键入以下内容,然后按 Enter 键。
[ -f ~/sample.txt ] && echo "File exists." || touch ~/sample.txt
在我们的示例中,文件不存在,因此创建了它。

以下是用于组合命令的每个运算符的有用摘要:
-
A ; B
— 运行 A,然后运行 B,无论 A 成功或失败 -
A && B
— 仅当 A 成功时才运行 B - <代码>A || B — 仅当 A 失败时才运行 B
所有这些组合命令的方法也可以在 Linux 和 Windows 10 上的 shell 脚本中使用。
在 Linux 的命令行中使用“cd”时,您还可以自动更正拼写和拼写错误,以避免在组合命令时出现严重后果。
Linux Commands | ||
Files | tar · pv · cat · tac · chmod · grep · diff · sed · ar · man · pushd · popd · fsck · testdisk · seq · fd · pandoc · cd · $PATH · awk · join · jq · fold · uniq · journalctl · tail · stat · ls · fstab · echo · less · chgrp · chown · rev · look · strings · type · rename · zip · unzip · mount · umount · install · fdisk · mkfs · rm · rmdir · rsync · df · gpg · vi · nano · mkdir · du · ln · patch · convert · rclone · shred · srm · scp · gzip · chattr · cut · find · umask · wc | |
Processes | alias · screen · top · nice · renice · progress · strace · systemd · tmux · chsh · history · at · batch · free · which · dmesg · chfn · usermod · ps · chroot · xargs · tty · pinky · lsof · vmstat · timeout · wall · yes · kill · sleep · sudo · su · time · groupadd · usermod · groups · lshw · shutdown · reboot · halt · poweroff · passwd · lscpu · crontab · date · bg · fg · pidof · nohup · pmap | |
Networking | netstat · ping · traceroute · ip · ss · whois · fail2ban · bmon · dig · finger · nmap · ftp · curl · wget · who · whoami · w · iptables · ssh-keygen · ufw · arping · firewalld |
RELATED: Best Linux Laptops for Developers and Enthusiasts