Linux 中 10 个有用的链接运算符及实例
Linux 命令的链接意味着组合几个命令并根据它们之间使用的操作符的行为执行它们。
Linux 中的命令链类似于在 shell 本身上编写简短的 shell 脚本,然后直接从终端执行它们。链式命令使该过程自动化成为可能。
此外,无人值守的机器可以在链接操作员的帮助下系统地运行。
本文旨在阐明常用的命令链运算符。它提供了简短的描述和相应的示例,可以提高您的工作效率,使您能够编写简洁、有意义的代码,同时有时还能减少系统负载。
1. 与号运算符 (&) – 在后台运行 Linux 命令
' & '的作用是使命令在后台运行。只需键入命令,后跟空格和 ' & '。您可以一次性在后台执行多个命令。
在后台运行一个名为“ ping ”的 Linux 命令:
ping -c5 www.example.com &
同时在后台运行两个或多个apt 命令:
apt update & apt upgrade &
2. 分号运算符(;)——运行多个命令
分号运算(;)
符使得一次运行多个命令成为可能,并且命令的执行按顺序进行。
apt update ; apt upgrade ; mkdir test
上述命令组合将首先执行更新指令,然后执行升级指令,最后在当前工作目录下创建一个“测试”目录。
3. AND 运算符(&&)——成功后运行第二条命令
如果第一个命令执行成功,即第一个命令的退出状态为 0 ,则 AND 运算符 ( && ) 仅会执行第二个命令。此命令在检查最后一个命令的执行状态时非常有用。
例如,我想在终端中使用links 命令访问网站example.com ,但在此之前,我需要检查主机是否处于活动状态。
ping -c3 www.example.com && links www.example.com
4. 或运算符(||)——条件命令执行
或运算符( || )很像编程中的“ else||
”语句。该运算符允许您仅当第一个命令执行失败时才执行第二个命令,即第一个命令的退出状态为“ 1 ”。
例如,我想从非 root 帐户执行“ apt update ”,如果第一个命令失败,则第二个“links www.example.com ”命令将执行。
apt update || links example.com
在上面的命令中,由于不允许用户更新系统,这意味着第一个命令的退出状态为“1”,因此执行最后一个命令“ links example.com ”。
如果第一个命令成功执行,但退出状态为“ 0 ”,会怎么样?显然!第二个命令将不会执行。
mkdir test || links example.com
这里,用户在其主目录中创建了文件夹“ test ”,用户可以访问该文件夹。该命令执行成功,退出状态为“ 0 ”,因此命令的最后一部分未执行。
5. NOT 运算符(!)——选择性执行命令
NOT 运算符( ! )非常类似于“ except ”语句。此命令将执行除提供的条件之外的所有内容。要理解这一点,请在主目录中创建一个目录“ example ”,然后“ cd ”到该目录。
mkdir example cd example
接下来,在文件夹‘ example ’中创建几种类型的文件。
touch a.doc b.doc a.pdf b.pdf a.xml b.xml a.html b.html
查看我们在“ example ”文件夹内创建的所有新文件。
ls a.doc a.html a.pdf a.xml b.doc b.html b.pdf b.xml
现在使用rm 命令以一种智能的方式一次性删除除“ html ”文件之外的所有文件。
rm -r !(*.html)
只是为了验证最后一次执行。使用ls 命令列出所有可用文件。
ls a.html b.html
6. AND – OR 运算符(&& – ||)– 条件执行命令
上述运算符是“ AND ”和“ OR ”运算符的组合。它很像“ if-else ”语句。
例如,我们对example.com进行 ping 操作,如果成功则回显“ Verified ”,否则回显“ Host Down ”。
ping -c3 www.example.com && echo "Verified" || echo "Host Down"
样本输出:
PING www.example.com (212.71.234.61) 56(84) bytes of data. 64 bytes from www.example.com (212.71.234.61): icmp_req=1 ttl=55 time=216 ms 64 bytes from www.example.com (212.71.234.61): icmp_req=2 ttl=55 time=224 ms 64 bytes from www.example.com (212.71.234.61): icmp_req=3 ttl=55 time=226 ms --- www.example.com ping statistics --- 3 packets transmitted, 3 received, 0% packet loss, time 2001ms rtt min/avg/max/mdev = 216.960/222.789/226.423/4.199 ms Verified
现在,断开您的互联网连接,然后再次尝试相同的命令。
ping -c3 www.example.com && echo "verified" || echo "Host Down"
样本输出:
ping: unknown host www.example.com Host Down
7. PIPE 运算符(|)——简化的输出处理
当第一个命令的输出作为第二个命令的输入时,此PIPE运算符非常有用。例如,将“ ls -l ”的输出通过管道传输到“ less ”,然后查看该命令的输出。
ls -l | less drwx------ example example 4.0 KB Thu Nov 16 12:03:02 2023 AnyDesk drwxrwxr-x example example 4.0 KB Tue Oct 10 10:44:35 2023 bin drwxr-xr-x root root 4.0 KB Wed Nov 24 22:05:09 2021 DEBIAN drwxrwxr-x example example 4.0 KB Sat Nov 18 12:32:49 2023 Desktop drwx--x---+ example example 100 KB Fri Dec 8 12:00:49 2023 Downloads drwxrwxr-x example example 4.0 KB Wed Sep 13 10:25:07 2023 llpp drwxrwxr-x example example 4.0 KB Thu Nov 16 14:26:46 2023 MyImages drwxrwxr-x example example 4.0 KB Wed Sep 13 14:55:42 2023 Obsidian Vault drwxrwxr-x example example 4.0 KB Tue Oct 10 10:44:32 2023 opt drwxrwxr-x example example 4.0 KB Thu Nov 16 14:46:54 2023 php drwxrwxr-x example example 4.0 KB Thu Nov 16 15:54:33 2023 tar_examples .rw-rw-r-- example example 73 KB Mon Sep 18 11:46:02 2023 Apache-Web-Server-Security.png .rw-rw-r-- example example 2.2 KB Sun Oct 29 00:17:15 2023 ChatGPT-SEO-Prompts .rw-rw-r-- example example 41 KB Thu Nov 23 11:34:33 2023 Create-Users-in-bbaqchhgcqgaqmpgldsolvupsyvtducu.png ...
8. 命令组合运算符 {}
组合两个或多个命令,第二个命令依赖于第一个命令的执行。
例如,检查目录 ' bin ' 是否可用,并输出相应的输出。
[ -d bin ] || { echo Directory does not exist, creating directory now.; mkdir bin; } && echo Directory exists.
9. 优先运算符 () – 管理命令执行顺序
该()
运算符可以按优先顺序执行命令。
Command_x1 &&Command_x2 || Command_x3 && Command_x4.
在上面的伪命令中,如果Command_x1失败了怎么办?Command_x2、Command_x3、Command_x4都不会执行,为此我们使用优先运算符,如下:
(Command_x1 &&Command_x2) || (Command_x3 && Command_x4)
在上面的伪命令中,如果Command_x1失败,则Command_x2也会失败,但Command_x3和Command_x4仍会根据Command_x3的退出状态执行。
10. 连接运算符(\) – 多行命令连接
连接运算符( \ ) 顾名思义,用于在 shell 中将多行大命令连接起来。例如,以下命令将打开文本文件test(1).txt。
nano test\(1\).txt
现在就这些了。我很快就会写出另一篇有趣的文章。在此之前,请继续关注、保持健康并与Example保持联系。别忘了在我们的评论部分提供您宝贵的反馈。