链式操作(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. 为什么我们需要不断的开发不同的机器学习模型 —— Do we Need Hundreds of Classifiers to Solve Real World Classification Problems?

    引用: 作者:xyzh https://www.zhihu.com/question/26726794/answer/151282052 写给懒得看的人: 没有最好的分类器,只有最合适的分类器. 随机 ...

  2. 使用X11进行屏幕转播是否有价值? 最好用的远控软件是什么?

    由于有多个主机在使用,而且物理位置不在一起,所以以前往往要使用VNC软件来进行远程连接,但是其延迟比较高,使用感受不是很好,而且由于我所使用的多个主机均是Ubuntu系统,于是想到了是否可以使用X11 ...

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

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

  4. MySQL 是如何实现数据的排序的?

    1.背景 或许你面试的时候被问到了mysql的排序问题 又或许你在学习排序算法的时候想到了数据库的排序是如何实现的呢 下面重点从面试的角度来回答这个问题 2.面试回答 1.普通面试者回答 普通面试者的 ...

  5. mysql 重置主键

    开发时总是要向数据库写入测试数据,删掉以后id(自增主键)依然还是在增长,这个问题我遇到好多次,也都没有在意. 最近这个习惯被朋友嫌弃 = =||| 就在网上搜索了下mysql重置主键的办法: ALT ...

  6. Java如何防御XSS攻击?

    Q1.什么是XSS攻击? 定义很多,这里我找一个比较详细的解释 https://www.cnblogs.com/csnd/p/11807592.html Q2.为什么会有XSS攻击 也看上面的链接 Q ...

  7. 牛客周赛 Round 7

    牛客周赛 Round 7 A-游游的you矩阵_牛客周赛 Round 7 (nowcoder.com) 把四种字符凑一起看看有没有\(y,o,u\)就行 #include <bits/stdc+ ...

  8. springcloud线上发布超时方案之终极杀招:预热(测试用例)

    springcloud线上发布超时系列文章: springcloud线上发布超时之feign(ribbon饥饿加载) springcloud线上发布超时之grpc springcloud线上发布超时方 ...

  9. 【Docker学习教程系列】8-如何将本地的Docker镜像发布到私服?

    通过前面的学习,我们已经知道,怎么将本地自己制作的镜像发布到阿里云远程镜像仓库中去.但是在实际工作开发中,一般,我们都是将公司的镜像发布到公司自己搭建的私服镜像仓库中,那么一个私服的镜像仓库怎么搭建? ...

  10. exceptionless 在 windows 上 手动部署,非docker 详细步骤

    关于exceptionless 是什么我就不多说了,能看到这篇文章的都知道了.网上几乎都是docker部署的,docker部署的确十分方便,但是有的人没有条件用docker,像我就不想花这个钱去多服务 ...