链式操作(Chaining Operators),就是用于将多个命令组合在一起,根据操作符类型执行各种复杂指令。链式操作常用于你在交互shell中写下一长串指令执行的时候,它让shell脚本的自动化能力更上一层楼。让机器在无人在线的时候,也能有条不紊的工作。本文将简要介绍一些常用的链式操作符,在描述功能的基础上再提供一些相应的例子。熟练掌握他们,可以让你编写脚本的能力大大提高,写出更快,更短,更易读的代码。

1. 与号(Ampersand &)

&符号的作用是将这条命令放到背景中运行。打出任意一条命令,并在结尾空格后添加&,本次命令将在后台运行,而不会阻塞控制台。你可以继续输入指令。

ping baidu.com &

此时,ping在后台执行,你仍可以输入指令(但源源不断的ping消息占据了屏幕,因为输出仍在控制台,可用 > 重定向)。

也可以两条指令一起放入背景(这个例子不太好,不应该同时启动两条相关的指令)。

apt-get update & apt-get upgrade &

详情请搜索“shell工作管理”、“shell背景”

2. 分号(semi-colon ;)

分号没有什么特别的,它会使得本次指令从前往后一条一条按顺序执行。

apt-get update ; apt-get upgrade ; mkdir test

上面的指令首先update,然后upgrade,最后创建文件夹test。

3. 双与号(AND &&)

使用&&连接的指令,只有当前一条指令成功执行(即返回0)时,才会执行后面的指令。这条指令常用于检查指令的先决条件。比方说,我想要用link连接tecint.com,但是首先我要确定能不能找到。

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

4. 双竖线(OR ||)

&&相似,||表示“或”。第一条指令执行返回0时(成功执行),第二条指令不会执行。只有第一条指令执行失败(返回非0)时,才会执行第二条指令。

3和4都是经典的“短路规则”

apt-get update || links tecmint.com

如果是普通用户,第一条执行没有权限,就会执行指令links。那如果指令一成功执行了呢?那很显然指令2就不会执行了。

mkdir test || links tecmint.com

这次有权限了,mkdir成功后,links不会执行。

5. 单竖线(PIPE |)

这个最常用,连接两个命令,前一个的输出作为后一个的输入,应用场景广泛。

ls -l | grep cpp

调用ls -l,并且只抓取其中含有cpp的部分行。

bash 连接操作符(& && | 等)的使用的更多相关文章

  1. SQL连接操作符介绍(循环嵌套, 哈希匹配和合并连接)

    今天我将介绍在SQLServer 中的三种连接操作符类型,分别是:循环嵌套.哈希匹配和合并连接.主要对这三种连接的不同.复杂度用范例的形式一一介绍. 本文中使用了示例数据库AdventureWorks ...

  2. linq操作符:连接操作符

    linq中的连接操作符主要包括Join()和GroupJoin()两个. 一.Join()操作符 Join()操作符非常类似于T-SQL中的inner join,它将两个数据源进行连接,根据两个数据源 ...

  3. python的字符串连接操作符+

    如图, 运行后提示错误,这是“+” 是字符串连接操作符,字符串连接只能在被连接的每一个都是字符串时起作用.而以上程序试图将一个字符串同一个非字符串连接会引发一个异常,所以会报错. 正确的为: 或者是:

  4. RxJava2实战---第七章 合并操作符和连接操作符

    RxJava2实战---第七章 合并操作符和连接操作符 RxJava的合并操作符: startWith():在数据序列的开头增加一项数据. merge:将多个Observable合并为一个. merg ...

  5. 【git】本地git bash连接远程库github

    重要参考: https://www.liaoxuefeng.com/wiki/896043488029600 https://segmentfault.com/a/1190000003728094 正 ...

  6. VBA连接操作符

    VBA支持以下连接运算符. 假设变量A=5,变量B=10,则 - 运算符 描述 示例 + 将两个值添加为变量,其值是数字 A + B = 15 & 连接两个值 A & B = 510 ...

  7. git bash 连接github并提交项目工程

    借鉴博客:https://www.cnblogs.com/flora5/p/7152556.html https://blog.csdn.net/heng_yan/article/details/79 ...

  8. 怎样用 Bash 编程:逻辑操作符和 shell 扩展

    学习逻辑操作符和 shell 扩展,本文是三篇 Bash 编程系列的第二篇. Bash 是一种强大的编程语言,完美契合命令行和 shell 脚本.本系列(三篇文章,基于我的 三集 Linux 自学课程 ...

  9. Oracle 的基本操作符

    != 不等于 select empno,ename,job from scott.emp where job!='manager' ^= 不等于 select empno,ename,job from ...

  10. oracle操作符

    Oracle中算术操作符(+)(-)(*)(/) 值得注意的是:/ 在oracle中就相当于显示中的除法 5/2 = 2.5 比较操作符: 其中等号可以换成其他运算符:(后面为该操作符的单条件查询样例 ...

随机推荐

  1. 人工智能Python代码的补全利器 Kite 安装

    代码补全应用kite主要对Python代码进行补全,或者说kite是针对现在的人工智能Python代码(pytorch.tensorflow)等做补全的,而且在Python代码补全上kite可以说是现 ...

  2. python中不同方法的按索引读取数组的性能比较——哪种按索引读取数组的性能更好

    写python代码这么多年,从来也没有想过不同方式的读取python数组会有什么太大的性能差距,不过这段时间写代码突然发现这个差别还挺大,于是就多研究了一下. 本文研究的是使用不同方式来对python ...

  3. springboot整合validation统一参数检查

    1.背景 实际开发中对参数进行检查,是常见 比如如下代码 /** * 参数检查测试(传统做法) * * @param dto * @return */ @GetMapping("/param ...

  4. 社区6月月报 | Apache SeaTunnel重要更新与优化记录

    各位热爱Apache SeaTunnel的小伙伴们,社区6月份月报来啦!这里将记录Apache SeaTunnel社区每月的重要更新,欢迎关注. 月度Merge Stars 感谢以下小伙伴上个月为Ap ...

  5. MySQL 5.7 DDL 与 GH-OST 对比分析

    作者:来自 vivo 互联网存储研发团队- Xia Qianyong 本文首先介绍MySQL 5.7 DDL以及GH-OST的原理,然后从效率.空间占用.锁阻塞.binlog日志产生量.主备延时等方面 ...

  6. 使用Jackson读取xml

    找了不少,什么峰的,什么dn的参差不齐的资料,废话不少,问题是导入的包也没有.不多废话,看下面代码直接复用. package bean;import com.fasterxml.jackson.dat ...

  7. SMU Spring 2023 Contest Round 5(2023 (ICPC) Jiangxi Provincial Contest -- Official Contest)

    题目链接 Problem A. Drill Wood to Make Fire S * V >= n即可 #include<bits/stdc++.h> #define int lo ...

  8. flex数据绑定

    1 .方法绑定    [Bindable(event="myFlagChanged")] private function isEnabled():String { if (myF ...

  9. [nRF24L01+] 4. 增强型ShockBurst

    4. 增强型ShockBurst 增强型的ShockBurst是一个数据链路层,具有自动数据包组装和数据包的发送.定时.自动确认和重传.这些特性能够显著提高双向和单向系统的能效,而不会增加主机控制器侧 ...

  10. 在Ubuntu 16.04 LTS服务器上安装FreeRADIUS和Daloradius的方法

    FreeRADIUS 为AAA Radius Linux下开源解决方案,DaloRadius为图形化web管理工具. freeradius一般用来进行账户认证管理,记账管理,常见的电信运营商的宽带账户 ...