当前位置: 首页 > news >正文

Linux中的链接运算符详解 - 提高编程效率与性能

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

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

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

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

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

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

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

ping -c5 www.tecmint.com &

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

apt update & apt upgrade &

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

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

apt update ; apt upgrade ; mkdir test

上述命令组合将首先执行更新指令,然后执行升级指令,最后在当前工作目录下创建一个“test”目录。

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

如果第一个命令执行成功,即第一个命令的退出状态为 0,则 AND 运算符 (&&) 仅执行第二个命令。该命令在检查最后一个命令的执行状态时非常有用。 例如,我想在终端中使用 links 命令访问网站 howtoing.com,但在此之前,我需要检查主机是否在线。

ping -c3 www.tecmint.com && links www.tecmint.com

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

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

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

apt update || links tecmint.com

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

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

mkdir test || links tecmint.com

在这里,用户在其主目录中创建一个允许用户使用的文件夹“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 操作,如果成功则回显“Verified”,否则回显“Host Down”。

ping -c3 www.tecmint.com && echo "Verified" || echo "Host Down"

示例输出:

PING www.tecmint.com (212.71.234.61) 56(84) bytes of data. 
64 bytes from www.tecmint.com (212.71.234.61): icmp_req=1 ttl=55 time=216 ms 
64 bytes from www.tecmint.com (212.71.234.61): icmp_req=2 ttl=55 time=224 ms 
64 bytes from www.tecmint.com (212.71.234.61): icmp_req=3 ttl=55 time=226 ms 

--- www.tecmint.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.tecmint.com && echo "verified" || echo "Host Down"

示例输出:

ping: unknown host www.tecmint.com 
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

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

Reference

[1]

Source: https://www.tecmint.com/chaining-operators-in-linux-with-practical-examples/

本文由 mdnice 多平台发布

相关文章:

Linux中的链接运算符详解 - 提高编程效率与性能

Linux 命令的链接意味着,组合多个命令并根据它们之间使用的操作符的行为使它们执行。 Linux 中的命令链就像您在 shell 本身编写简短的 shell 脚本,然后直接从终端执行它们。链接使得流程自动化成为可能。 此外,无人值守的机器可以在链接操作…...

JS模块化规范之ES6及UMD

JS模块化规范之ES6及总结 前言ES6模块化概念基本使用ES6实现 UMD(Universal Module Definition)总结 前言 ESM在模块之间的依赖关系是高度确定的,与运行状态无关,编译工具只需要对ESM模块做静态分析,就可以从代码字面中推断出哪些模块值未曾被…...

XM平台官网开户注册流程图解

注册前准备 在进行XM外汇官网注册之前,首先需要准备必要的信息,包括个人身份信息、联系方式以及相关财务信息。确保这些信息的准确性是保证注册流程顺利进行的关键。 一、要访问XM外汇官方网站,首先打开您的浏览器。在浏览器的地址栏中输入…...

【Linux进阶之路】线程

文章目录 一、初始线程1.概念2.执行3.调度4.切换 二、线程控制1.创建2.等待3.分离4.退出5.取消 三、线程安全1.互斥1.1初始1.2理解1.3锁1.3.1概念1.3.2原理1.3.4死锁 2.同步2.1概念2.2原理 3.生产消费者模型 总结尾序 一、初始线程 1.概念 简单的概念: 线程就是一…...

个性化TikTok外贸工具定制!突破营销新境界!

随着全球化的加速发展,外贸行业正面临着前所未有的机遇和挑战,在这个竞争激烈的市场环境中,如何脱颖而出,吸引更多的潜在客户,成为每个外贸企业亟待解决的问题,而个性化TikTok外贸工具的定制,正…...

设计模式-门面模式

设计模式专栏 模式介绍模式特点应用场景门面模式和代理模式的区别代码示例Java实现门面模式Python实现门面模式 门面模式在spring中的应用 模式介绍 门面模式是一种常用的软件设计模式,也称为外观模式。它提供了一个高层次的接口,将一个子系统的外部与内…...

搭建接口自动化测试框架python+requests+pytest

安装python(最好是比较新比较稳定的版本),然后是python的解释器或者叫编译器pycharm安装后新建一个项目,以此项目为基础,安装依赖搭建框架。打开pycharm,点击左上角的File->New project->弹出如下界面…...

一套rk3588 rtsp服务器推流的 github 方案及记录 -02

整体方案参考上一篇博文 https://blog.csdn.net/qq_31764341/article/details/134810566 本篇博文主要介绍基于RK3588进行硬解码 还是之前的套路,我不生产代码,我只是代码的搬运工,今天我们搬运瑞芯微的官方代码,并记录下来整个调…...

docker运行java程序的Dockerfile

1&#xff0c;docker运行java程序的Dockerfile # 使用基础镜像 FROM alpine:latest # 暴露容器的端口 不会自动将容器的端口映射到宿主机上 docker run -d -p <宿主机端口>:7080 <镜像名称> EXPOSE 9202 EXPOSE 19202 #下载jdk8 RUN apk update && apk a…...

docker数据卷数据卷容器

前言 今天调休在家&#xff0c;随便玩玩&#xff0c;简单做下学习记录 1. 数据卷特点 数据卷在容器启动时初始化&#xff0c;如果容器使用的镜像在挂载点包含了数据&#xff0c;这些数据会被拷贝到新初始化的数据卷中数据卷可以在容器之间共享和重用可以对数据卷里的内容直接…...

使用HTTP协议有哪些风险?HTTP与HTTPS的区别是什么

作为两种常见的网络协议&#xff0c;HTTP和HTTPS都是用于在浏览器和服务器之间传输数据的。然而在保障数据安全性方面&#xff0c;HTTPS远远优于HTTP。在网络安全愈发重要的当下&#xff0c;HTTP协议的不安全性使得其逐渐被淘汰弃用。那么使用HTTP协议有哪些风险呢&#xff1f;…...

【jvm从入门到实战】(十) 实战篇-内存调优

内存溢出和内存泄漏&#xff1a;在Java中如果不再使用一个对象&#xff0c;但是该对象依然在GC ROOT的引用链上&#xff0c;这个对象就不会被垃圾回收器回收&#xff0c;这种情况就称之为内存泄漏。内存泄漏绝大多数情况都是由堆内存泄漏引起的。少量的内存泄漏可以容忍&#x…...

设计模式分类

不同设计模式的复杂程度、 细节层次以及在整个系统中的应用范围等方面各不相同。 我喜欢将其类比于道路的建造&#xff1a; 如果你希望让十字路口更加安全&#xff0c; 那么可以安装一些交通信号灯&#xff0c; 或者修建包含行人地下通道在内的多层互通式立交桥。 最基础的、 底…...

【前缀和】【单调栈】LeetCode2281:巫师的总力量和

作者推荐 map|动态规划|单调栈|LeetCode975:奇偶跳 涉及知识点 单调栈 C算法&#xff1a;前缀和、前缀乘积、前缀异或的原理、源码及测试用例 包括课程视频 题目 作为国王的统治者&#xff0c;你有一支巫师军队听你指挥。 给你一个下标从 0 开始的整数数组 strength &…...

力扣面试经典题之二叉树

104. 二叉树的最大深度 简单 给定一个二叉树 root &#xff0c;返回其最大深度。 二叉树的 最大深度 是指从根节点到最远叶子节点的最长路径上的节点数。 示例 1&#xff1a; 输入&#xff1a;root [3,9,20,null,null,15,7] 输出&#xff1a;3示例 2&#xff1a; 输入&#xf…...

图灵日记之java奇妙历险记--数据类型与变量运算符

目录 数据类型与变量字面常量数据类型变量语法格式整型变量浮点型变量字符型变量希尔型变量类型转换自动类型转换(隐式)强制类型转换(显式) 类型提升不同数据类型的运算小于4字节数据类型的运算 字符串类型 运算符算术运算符关系运算符逻辑运算符逻辑与&&逻辑或||逻辑非…...

PhysX——源码编译

从git下载源码 git主页 https://github.com/NVIDIA-Omniverse/PhysXclone地址 https://github.com/NVIDIA-Omniverse/PhysX.git源码编译 运行PhysX需要两个编译器的支持&#xff0c;CMake 3.12 或以上版本以及Python 2.7.6 版本 进入工程的 physx 目录&#xff0c;运行generate…...

小鹅通基于 TSE 云原生 API 网关的落地实践

导语 2023腾讯全球数字生态大会已于9月7-8日完美落幕&#xff0c;40专场活动展示了腾讯最新的前沿技术、核心产品、解决方案。 微服务与消息队列专场&#xff0c;我们邀请到了小鹅通的基础架构组负责人黄徐震为我们带来了《小鹅通基于 TSE 云原生网关的落地实践》的精彩演讲。…...

Postgresql处理JSON类型中替换某个属性值问题

一、问题描述 使用postgresql对json的特性使用sql批量处理json中某个属性的值 结构如下&#xff1a; {"id": 1,"parentId": 123,"globalParameters": [{"value": "date","boardId": 123,"canReName":…...

@德人合科技——天锐绿盾 | 图纸加密软件有哪些功能呢?

德人合科技 | 天锐绿盾加密软件是一款全面保障企业电脑数据和安全使用的加密软件 PC端访问地址&#xff1a;www.drhchina.com 它的功能包括但不限于&#xff1a; 实时操作日志&#xff1a;可以实时详细地记录所有终端的操作日志&#xff0c;包括终端上窗口标题的变换、程序的…...

android 使用GSON 序列化对象出现字段被优化问题解决方案

一、问题描述 有以下结构&#xff1a; public class NativeParam<T> {private T data;public NativeParam(T data) {this.data data;}public T getData() {return data;}public void setData(T data) {this.data data;} };NativeParam<String> data "1.0…...

进入不了Bios?进入Bios的方法都在这了,肯定能进!

前言 有些小伙伴可能在重装系统的第一步就卡住了&#xff0c;接着就放弃了。哇哈哈哈啊&#xff0c;先让小白笑会&#xff5e; 根据小白十二年的装机经验&#xff0c;不同主板进入Bios的时候有不同的姿势。也许要蹲着大喊Bios才能进入呢&#xff1f;要不试试&#xff1f; 好了…...

手把手教你基于 FastGPT 搭建个人知识库

前言 大家好&#xff0c;我是潇潇雨声。我发现在使用 GPT 时&#xff0c;尽管它能够生成一些小红书文案和日志&#xff0c;但内容常常显得空洞缺乏深度。今天我想分享一个解决这个问题的方法&#xff0c;那就是基于开源项目 FastGPT[1]。 我们可以通过向 GPT 提供一些有针对性的…...

gitee 怎么添加SSH密钥

要在Gitee上添加SSH密钥&#xff0c;请按照以下步骤操作&#xff1a; 登录到Gitee账户并导航到您要添加SSH密钥的存储库页面。点击页面右上方的“设置”按钮。在设置页面中&#xff0c;选择“SSH公钥”选项卡。点击“添加密钥”按钮。在弹出的对话框中&#xff0c;输入密钥标题…...

万界星空开源MES/注塑MES/开源注塑MES/免费MES/MES源码

一、系统概述&#xff1a; 万界星空科技免费MES、开源MES、商业开源MES、市面上最好的开源MES、MES源代码、适合二开的开源MES、好看的数据大屏、功能齐全开源mes. 1.万界星空开源MES制造执行系统的Java开源版本。 开源mes系统包括系统管理&#xff0c;车间基础数据管理&…...

macOS 开发 - MASShortcut

文章目录 关于 MASShortcut项目结构 快速使用源码学习检测是否有热键冲突处理 Event macOS 开发交流 秋秋群&#xff1a;644096295&#xff0c;V : ez-code 关于 MASShortcut MASShortcut 是一款快捷键管理工具&#xff0c;替代和兼容 ShortcutRecorder github : https://git…...

【大数据面试】Flink面试题附答案

目录 ✅Flink介绍、特点、应用场景 ✅Flink与Spark Streaming的区别 ✅Flink有哪些部署模式 ✅Flink架构 ✅怎么设置并行度&#xff1f; ✅什么是算子链&#xff1f; ✅什么是任务槽&#xff08;Task Slots&#xff09;&#xff1f; ✅任务槽和并行度的关系 ✅Flink作…...

语音识别之百度语音试用和OpenAiGPT开源Whisper使用

0.前言: 本文作者亲自使用了百度云语音识别,腾讯云,java的SpeechRecognition语言识别包 和OpenAI近期免费开源的语言识别Whisper(真香警告)介绍了常见的语言识别实现原理 1.NLP 自然语言处理(人类语言处理) 你好不同人说出来是不同的信号表示 单位k 16k16000个数字表示 1秒160…...

Rust报错:the msvc targets depend on the msvc linker but `link.exe` was not found

当我在我的 windows 电脑上安装 rust&#xff0c;然后用 cargo 新建了一个项目后&#xff0c;cargo run 会报错&#xff1a; error: linker link.exe not found| note: program not foundnote: the msvc targets depend on the msvc linker but link.exe was not foundnote: p…...

2312llvm,04后端上

后端 后端由一套分析和转换趟组成,任务是生成代码,即把LLVM中间(IR)转换为目标代码(或汇编). LLVM支持广泛目标:ARM,AArch64,Hexagon,MSP430,MIPS,NvidiaPTX,PowerPC,R600,SPARC,SystemZ,X86,和XCore. 所有这些后端共享一套,按通用API方法抽象后端任务的目标无关生成代码的一部…...

成品网站多少钱/网络营销策划需要包括哪些内容

中文汉化版&#xff0c;官方只有英文的。同时根据中国国情修改了部分验证规则。 这个插件支持大部分的浏览器&#xff0c;但由于有使用到了css3的阴影和圆角样式&#xff0c;所以在IE浏览器下无法看到圆角和阴影效果&#xff08;万恶的IE&#xff09;。 官方下载地址&#xff1…...

网站建设 东八区/企业网站建设的重要性

部分代码&#xff08;完整包见资源下载链接&#xff09; 注&#xff1a;资源上传时默认付费&#xff0c;可以私信我&#xff0c;我看到会回复的 <!doctype html> <html><head><meta charset"utf-8"><meta http-equiv"X-UA-Compatib…...

做做网站2023下载/深圳市龙华区

一、体验环境使用设备&#xff1a;iPhone 6S操作系统&#xff1a;iOS 10.1.1产品版本&#xff1a;3.1.1操作时间&#xff1a;2018.1.13二、产品体验(一)战略层1.产品定位Slogan&#xff1a;得到——和你一起终身学习得到是一个知识付费型的线上知识学习平台&#xff1a;通过提供…...

网站建设百科/竞价推广账户竞价托管

ArithmeticException&#xff08;除数为0的异常&#xff09;, BufferOverflowException&#xff08;缓冲区上溢异常&#xff09;, BufferUnderflowException&#xff08;缓冲区下溢异常&#xff09;, IndexOutOfBoundsException&#xff08;出界异常&#xff09;, NullPointerE…...

宠物网站素材/文案发布平台

提问嘉宾&#xff1a; 盛国军&#xff0c;上海麦考林信息科技有限公司首席架构师。曾历任8848软件架构师、光芒国际磊客中国技术总监。具有10年互联网和电子商务开发经验&#xff0c;5年软件架构师经验&#xff0c;3年两千万美金投资的大型网站技术总监管理经验。 回答嘉宾&…...

苏州淘宝网站建设培训/初学者做电商怎么入手

服务器py文件怎么连接数据库 内容精选换一换本章节适用于MRS 3.x之前版本。Loader支持以下多种连接&#xff0c;每种连接的配置介绍可根据本章节内容了解。obs-connectorgeneric-jdbc-connectorftp-connector或sftp-connectorhbase-connector、hdfs-connector或hive-connectorO…...