网站搜索

Linux 中 10 个有用的链接运算符及其示例


Linux 命令的链接意味着,组合多个命令并根据它们之间使用的操作符的行为使它们执行。

Linux 中的命令链就像您在 shell 本身编写简短的 shell 脚本,然后直接从终端执行它们。链接使得流程自动化成为可能。

此外,无人值守的机器可以在链接操作员的帮助下系统地运行。

本文旨在阐明常用的命令链运算符。它提供了简短的描述和相应的示例,可以提高您的工作效率,使您能够编写简洁、有意义的代码,同时有时会减少系统负载。

1. 与号运算符 (&) – 在后台运行 Linux 命令

&’的作用是让命令在后台运行。只需键入命令,后跟空格和“&”。您可以在后台一次性执行多个命令。

在后台运行一个名为“ping”的 Linux 命令:

ping -­c5 linux-console.net &

同时在后台运行两个或多个 apt 命令:

apt update & apt upgrade &

2. 分号运算符 (;) – 运行多个命令

分号 (;) 运算符可以一次运行多个命令,并且命令的执行按顺序发生。

apt update ; apt upgrade ; mkdir test

上述命令组合将首先执行update指令,然后执行upgrade指令,最后在当前工作目录下创建一个test目录。

3. AND 运算符 (&&) – 成功后运行第二个命令

如果第一个命令的执行成功,即命令的退出状态,AND 运算符 (&&) 将仅执行第二个命令第一个命令是0。该命令对于检查最后一个命令的执行状态非常有用。

例如,我想在终端中使用 links 命令访问网站 howtoing.com,但在此之前,我需要检查主机是否 live >不

ping -c3 linux-console.net && links linux-console.net

4. OR 运算符 (||) – 条件命令执行

OR 运算符 (||) 很像编程中的“else”语句。 || 运算符允许您仅在第一个命令执行失败时才执行第二个命令,即第一个命令的退出状态为“1”。

例如,我想从非root帐户执行“apt update”,如果第一个命令失败,则第二个“links www.howtoing.com”命令将执行。

apt update || links linux-console.net

在上面的命令中,由于用户不允许更新系统,因此意味着第一个命令的退出状态为'1' > 因此最后一个命令“links howtoing.com”被执行。

如果第一个命令成功执行,退出状态为“0”怎么办?明显地!第二个命令不会执行。

mkdir test || links linux-console.net

在这里,用户在其主目录中创建一个文件夹“test”,用户有权使用该文件夹。命令执行成功,给出退出状态“0”,因此命令的最后部分未执行。

5. NOT 运算符 (!) – 选择性执行命令

NOT 运算符 (!) 很像“ except ”语句。该命令将执行除提供的条件之外的所有命令。要理解这一点,请在您的主目录中创建一个目录“howtoing”,并对其进行“cd”。

mkdir tecmint 
cd tecmint

接下来,在文件夹“howtoing”中创建多种类型的文件。

touch a.doc b.doc a.pdf b.pdf a.xml b.xml a.html b.html

看到我们已经在文件夹“howtoing”中创建了所有新文件。

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”语句。

例如,让我们对 howtoing.com 执行 ping 操作,如果成功则回显“已验证”,否则回显“Host Down”。

ping -c3 linux-console.net && echo "Verified" || echo "Host Down"

示例输出

PING linux-console.net (212.71.234.61) 56(84) bytes of data. 
64 bytes from linux-console.net (212.71.234.61): icmp_req=1 ttl=55 time=216 ms 
64 bytes from linux-console.net (212.71.234.61): icmp_req=2 ttl=55 time=224 ms 
64 bytes from linux-console.net (212.71.234.61): icmp_req=3 ttl=55 time=226 ms 

--- linux-console.net 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 linux-console.net && echo "verified" || echo "Host Down"

示例输出

ping: unknown host linux-console.net 
Host Down

7. PIPE 运算符 (|) – 简化的输出处理

当第一个命令的输出充当第二个命令的输入时,此PIPE运算符非常有用。例如,将“ls -l”的输出通过管道传输到“less”并查看命令的输出。

ls -l | less

drwx------  tecmint tecmint  4.0 KB Thu Nov 16 12:03:02 2023 AnyDesk
drwxrwxr-x  tecmint tecmint  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  tecmint tecmint  4.0 KB Sat Nov 18 12:32:49 2023 Desktop
drwx--x---+ tecmint tecmint  100 KB Fri Dec  8 12:00:49 2023 Downloads
drwxrwxr-x  tecmint tecmint  4.0 KB Wed Sep 13 10:25:07 2023 llpp
drwxrwxr-x  tecmint tecmint  4.0 KB Thu Nov 16 14:26:46 2023 MyImages
drwxrwxr-x  tecmint tecmint  4.0 KB Wed Sep 13 14:55:42 2023 Obsidian Vault
drwxrwxr-x  tecmint tecmint  4.0 KB Tue Oct 10 10:44:32 2023 opt
drwxrwxr-x  tecmint tecmint  4.0 KB Thu Nov 16 14:46:54 2023 php
drwxrwxr-x  tecmint tecmint  4.0 KB Thu Nov 16 15:54:33 2023 tar_examples
.rw-rw-r--  tecmint tecmint   73 KB Mon Sep 18 11:46:02 2023 Apache-Web-Server-Security.png
.rw-rw-r--  tecmint tecmint  2.2 KB Sun Oct 29 00:17:15 2023 ChatGPT-SEO-Prompts
.rw-rw-r--  tecmint tecmint   41 KB Thu Nov 23 11:34:33 2023 Create-Users-in-Linux.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_x2Command_x3Command_x4 都不会执行,为此我们使用优先运算符,如下所示:

(Command_x1 &&Command_x2) || (Command_x3 && Command_x4)

在上面的伪命令中,如果Command_x1失败,Command_x2也会失败,但Command_x3Command_x4仍然执行,具体取决于Command_x3 的退出状态。

10. 连接运算符 (\) – 多行命令连接

正如名称所示,串联运算符 (\) 用于在 shell 中串联多行大型命令。例如,以下命令将打开一个文本文件 test(1).txt

nano test\(1\).txt

目前为止就这样了。我很快就会写出另一篇有趣的文章。在那之前,请继续关注,保持健康,并与Tecmint保持联系。不要忘记在我们的评论部分提供您宝贵的反馈。