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 多平台发布

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/236074.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Flink cdc3.0同步实例(动态变更表结构、分库分表同步)

文章目录 前言准备flink环境docker构建mysql、doris环境数据准备 通过 FlinkCDC cli 提交任务整库同步同步变更路由变更路由表结构不一致无法同步 结尾 前言 最近Flink CDC 3.0发布, 不仅提供基础的数据同步能力。schema 变更自动同步、整库同步、分库分表等增强功…

论文笔记:Accurate Localization using LTE Signaling Data

1 intro 论文提出LTELoc,仅使用信令数据实现精准定位 信令数据已经包含在已在LTE系统中,因此这种方法几乎不需要数据获取成本仅使用TA(时序提前)和RSRP【这里单位是瓦】(参考信号接收功率) TA值对应于信号…

vue没有使用fetch报错 Uncaught (in promise) TypeError: Failed to fetch

出现下面的错误,主要也没有用谷歌浏览器什么和发起fetch请求,找了很久没有什么发现 POST https://www.google-analytics.com/mp/collect?measurement_idG-04CMS1PYS6&api_secretpRgvhB8VTii5eSmcTzVaOg net::ERR_BLOCKED_BY_CLIENT Uncaught (in pr…

获投1050万欧元!德国量子公司Kipu Quantum成功研发特定压缩算法

​(图片来源:网络) 近日,德国量子软件公司Kipu Quantum宣布成功完成种子轮融资,融资总额达1050万欧元(约合8000万人民币)。该初创公司目前已开发出运行高性能量子计算机所需的压缩算法。该算法…

【力扣100】108.将有序数组转化为二叉搜索树

添加链接描述 # Definition for a binary tree node. # class TreeNode: # def __init__(self, val0, leftNone, rightNone): # self.val val # self.left left # self.right right class Solution:def sortedArrayToBST(self, nums: List[int…

windows安装、基本使用vim

标题:windows安装、基本使用vim 1.下载并安装GVIM 百度网盘链接 提取码:2apr 进入安装界面,如下,勾选 其它都是默认即可 参考; 2.在powershell中使用vim 参考blog:window10安装vim编辑器 安装好后&…

HTML+CSS做一个冰立方体时钟

文章目录 💕效果展示💕代码展示HTMLJS💕效果展示 💕代码展示 HTML <!DOCTYPE html> <html lang

双三次 Bezier 曲面

双三次 Bezier 曲面的定义 Bezier 曲面是由 Bezier 曲线扩展得到&#xff0c;它是两组正交的 Bezier 曲线控制点构造空间网格生成的曲面 p ( u , v ) ∑ i 0 3 ∑ j 0 3 P i , j B i , 3 ( u ) B j , 3 ( v ) , ( u , v ) ∈ [ 0 , 1 ] [ 0 , 1 ] \begin{equation} \bm{p}…

Exchanger学习一

一、定义 Exchanger是一个用于线程间数据交换的工具类&#xff0c;它提供一个公共点&#xff0c;在这个公共点&#xff0c;两个线程可以交换彼此的数据。 当一个线程调用exchange方法后将进入等待状态&#xff0c;直到另外一个线程调用exchange方法&#xff0c;双方完成数据交换…

法线贴图实现衣服上皱褶特效

在线工具推荐&#xff1a; 3D数字孪生场景编辑器 - GLTF/GLB材质纹理编辑器 - 3D模型在线转换 - Three.js AI自动纹理开发包 - YOLO 虚幻合成数据生成器 - 三维模型预览图生成器 - 3D模型语义搜索引擎 法线贴图在3D建模中扮演着重要的角色&#xff0c;它通过模拟表面的微…

c++内存池项目

文章目录 一、内存池介绍二、ThreadCache实现三、CentralCache实现四、PageCache实现五、回收内存六、大于256KB的内存申请与释放七、将new和delete换为定长内存池八、多线程环境下对比malloc进行基准测试九、使用基数树进行性能优化 一、内存池介绍 二、ThreadCache实现 下面…

springboot集成springdoc-openapi(模拟前端请求)

目录 描述---痛点 Springfox对比springdoc-openapi 1. 成熟度和维护性&#xff1a; 2. 依赖和配置&#xff1a; 3. 注解和使用方式&#xff1a; 4. 特性和扩展性&#xff1a; 应用目录结构 pom文件 新增测试controller StaffController YUserController 启动测试看下…

Java基础回顾——注解

文章目录 介绍定义注解处理注解使用注解 介绍 注解Annotation&#xff1a;是放在Java源码的类、方法、字段、参数前的一种特殊注释 注释会被编译器直接忽略&#xff0c;注解则可以被编译器打包进入class文件&#xff0c;因此&#xff0c;注解是一种用作标注的“元数据”。 作…

PHP HTTPoxy CGI 应用程序漏洞 CVE-2016-5385

HTTPoxy CGI 应用程序漏洞 CVE-2016-5385 已亲自复现 漏洞名称漏洞描述影响版本 漏洞复现环境搭建漏洞利用 修复建议 漏洞名称 漏洞描述 在Oracle Communications BRM 10.x/12.x&#xff08;云软件&#xff09;中发现漏洞。它已经被宣布为关键。此漏洞影响组件用户数据库的未…

Linux笔记---用户和权限管理基本命令介绍

&#x1f34e;个人博客&#xff1a;个人主页 &#x1f3c6;个人专栏&#xff1a;Linux学习 ⛳️ 功不唐捐&#xff0c;玉汝于成 目录 ​编辑 前言&#xff1a; 命令&#xff1a; whoami&#xff1a; passwd&#xff1a; useradd&#xff1a; userdel&#xff1a; chm…

华为交换配置OSPF与BFD联动

实验拓扑 组网需求 如图所示&#xff0c;SW1、SW2和SW3之间运行OSPF&#xff0c;SW1和SW2之间的交换机仅作透传功能。现在需要SW1和SW2能够快速感应它们之间的链路状态&#xff0c;当链路SW1-SW2发生故障时&#xff0c;业务能快速切换到备份链路SW1-SW3-SW2上 配置思路 采用…

文件的基本管理

目录 一、Linux系统目录结构和相对/绝对路径 &#xff08;一&#xff09;系统目录结构 &#xff08;二&#xff09;相对路径和绝对路径 1.绝对路径 2.相对路径 &#xff08;三&#xff09;通配符的作用 二、创建、复制、删除文件&#xff0c;rm -rf /意外事故 &#xf…

说说对React Hooks的理解?解决了什么问题?

面试官&#xff1a;说说对React Hooks的理解&#xff1f;解决了什么问题&#xff1f; 一、是什么 Hook 是 React 16.8 的新增特性。它可以让你在不编写 class 的情况下使用 state 以及其他的 React 特性 至于为什么引入hook&#xff0c;官方给出的动机是解决长时间使用和维护…

山景DU561—32位高性能音频处理器(DSP)芯片

音频处理可以更好地捕捉和处理声音和音乐&#xff1b;而DSP音频处理芯片是一种利用数字信号处理技术进行音频处理的专用芯片&#xff1b;可用于多种应用&#xff0c;从音乐拾音到复杂的音频信号处理&#xff0c;和声音增强。 由工采网代理的山景DU561是一款集成多种音效算法高…

C# 获取本机IP地址的方法

在C#环境中&#xff0c;要获取本机的IP地址&#xff0c;可以使用以下方法&#xff1a; 1、使用NetworkInterface类和IPAddress类&#xff1a; using System; using System.Net; using System.Net.NetworkInformation;class Program {static void Main(){// 获取本地计算机上的…