惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

博客园 - Franky
D
Docker
Jina AI
Jina AI
The GitHub Blog
The GitHub Blog
博客园 - 聂微东
B
Blog RSS Feed
大猫的无限游戏
大猫的无限游戏
M
MIT News - Artificial intelligence
Vercel News
Vercel News
Microsoft Security Blog
Microsoft Security Blog
博客园 - 叶小钗
爱范儿
爱范儿
D
DataBreaches.Net
Hugging Face - Blog
Hugging Face - Blog
IT之家
IT之家
Recent Announcements
Recent Announcements
U
Unit 42
腾讯CDC
奇客Solidot–传递最新科技情报
奇客Solidot–传递最新科技情报
宝玉的分享
宝玉的分享
量子位
Stack Overflow Blog
Stack Overflow Blog
Cyber Security Advisories - MS-ISAC
Cyber Security Advisories - MS-ISAC
Microsoft Azure Blog
Microsoft Azure Blog

atpX

自建 S3 兼容对象存储服务 Garage 听风的歌 偶尔是深夜就好了 新玩具 AirPods Pro 3 公交车上的时间 从 WHOIS 到 RDAP 通过 WireGuard 访问 NFS 共享文件 自建音乐串流服务探索 我停止了探索 Fediverse 互联网背景噪音 我的数字生活降级 小城与确定性的墙 一只特立独行的猪 Fediverse 与社交 承认的勇气 mediaX - 轻量书影音记录管理工具 我的博客写作流程 网站新增 Misc 页面 擅长对线的鲍勃 在 Chroot 环境下使用 Rsync 同步 再见 JavaScript 当我玩博客时我在玩什么 为什么我的博客没有友链页面 小熊猫与大熊猫 (HDR 照片测试) 是时候为网站开启 HTTP/3 支持了吗 使用 AdGuard Home 搭建自用 DoH 服务 谈谈读书与消遣 2023 年终总结 西安两日游 从 AirPods「升级」到 EarPods
Linux 一次执行多个命令的 3 种方式
ATP · 2021-07-29 · via atpX

如果你每天使用 Linux,就会发现 Shell 命令是你处理文件、安装和配置系统软件时最强大的工具。如果能在一条命令中执行多个命令,那么将节省大量时间,变得更加高效。

在本篇文章中,我们将看到如何在一条命令中通过高效组合使多个命令一起执行。

分隔符 命令示例 执行逻辑
; cmd1 ; cmd2 不管前面的命令是否执行成功,都会执行后面的命令。
&& cmd1 && cmd2 只有在前面的命令执行成功后,才会接着执行后面的命令。
|| cmd1 || cmd2 只有在前面的命令执行失败后,才会接着执行后面的命令。

下面我将更详细地解释上面三种分隔符,如何在 Linux 中一次性执行多个命令。

1. 分号(;)分隔符

分号(;)是一个命令的结束符,可以连续执行一个或多个命令,而不管前面的命令是否执行成功。而且,每一个命令都会作为当前 shell 的子进程来被执行,也就是所当前一个命令执行之后,无论成功还是失败,才会执行下一个命令。

例如,在下图中,我运行了三个命令,whoami 表示当前登录的用户,cat atpx.txt 表示输出 atpx.txt 文本中的内容,date -R 表示输出系统当前时区。

Linux 分号(;)分隔符

2. AND(&&)分隔符

在某些情况下,如果需要确保仅在第一条命令执行成功后才执行第二条命令。&&相当于逻辑与,比如下图中,我第一次运行的命令中,因为第一个命令中的文件名 atpx.tx 最后少打了一个 “t”,所以会执行失败,同时第二个命令也不再执行,而第二次运行了正确的命令,此时便相当于上面的 “;” 分隔符的效果了。

Linux AND(&&)分隔符

我强烈建议在大多数情况下使用 && 而不是 ; 分隔符,这可以确保发生意料不到的错误,例如执行下面的命令:

cd /directory ; rm -rf *

如果第一个目录名输入错误或者不存在,也会执行 rm -rf * 命令,可能会破坏你的系统。

3. OR(||)分隔符

按照顺序,在第一个命令执行成功时,第二个命令就不会执行;或者在第一个命令返回错误时,将执行第二个命令。例如,你需要创建一个名为 atpx.com 文件,但不知道这个文件存不存在,就可以使用 || 分隔符,先验证 atpx.com 文件是否存在,如果不存在则创建它。

touch atpx.com || touch atpx.com

在上面的示例中,atpx.com 文件不存在,因此执行第二个命令创建了这个文件。

以上就是在 Linux 中一次执行多个命令的 3 种方式了,大家可以根据自己的需要进行组合使用。