bash 连接操作符(& && | 等)的使用
链式操作(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 连接操作符(& && | 等)的使用的更多相关文章
- SQL连接操作符介绍(循环嵌套, 哈希匹配和合并连接)
今天我将介绍在SQLServer 中的三种连接操作符类型,分别是:循环嵌套.哈希匹配和合并连接.主要对这三种连接的不同.复杂度用范例的形式一一介绍. 本文中使用了示例数据库AdventureWorks ...
- linq操作符:连接操作符
linq中的连接操作符主要包括Join()和GroupJoin()两个. 一.Join()操作符 Join()操作符非常类似于T-SQL中的inner join,它将两个数据源进行连接,根据两个数据源 ...
- python的字符串连接操作符+
如图, 运行后提示错误,这是“+” 是字符串连接操作符,字符串连接只能在被连接的每一个都是字符串时起作用.而以上程序试图将一个字符串同一个非字符串连接会引发一个异常,所以会报错. 正确的为: 或者是:
- RxJava2实战---第七章 合并操作符和连接操作符
RxJava2实战---第七章 合并操作符和连接操作符 RxJava的合并操作符: startWith():在数据序列的开头增加一项数据. merge:将多个Observable合并为一个. merg ...
- 【git】本地git bash连接远程库github
重要参考: https://www.liaoxuefeng.com/wiki/896043488029600 https://segmentfault.com/a/1190000003728094 正 ...
- VBA连接操作符
VBA支持以下连接运算符. 假设变量A=5,变量B=10,则 - 运算符 描述 示例 + 将两个值添加为变量,其值是数字 A + B = 15 & 连接两个值 A & B = 510 ...
- git bash 连接github并提交项目工程
借鉴博客:https://www.cnblogs.com/flora5/p/7152556.html https://blog.csdn.net/heng_yan/article/details/79 ...
- 怎样用 Bash 编程:逻辑操作符和 shell 扩展
学习逻辑操作符和 shell 扩展,本文是三篇 Bash 编程系列的第二篇. Bash 是一种强大的编程语言,完美契合命令行和 shell 脚本.本系列(三篇文章,基于我的 三集 Linux 自学课程 ...
- Oracle 的基本操作符
!= 不等于 select empno,ename,job from scott.emp where job!='manager' ^= 不等于 select empno,ename,job from ...
- oracle操作符
Oracle中算术操作符(+)(-)(*)(/) 值得注意的是:/ 在oracle中就相当于显示中的除法 5/2 = 2.5 比较操作符: 其中等号可以换成其他运算符:(后面为该操作符的单条件查询样例 ...
随机推荐
- 国产CPU(兆芯 kx-6640) 播放1080p视频效果
前一阵买了一个国产CPU的主机(国产CPU,国产操作系统UOS--零刻LZX迷你主机 , 显卡驱动安装以及屏幕配置),cpu是兆芯 kx-6640,用来播放1080p的视频虽然不是那么丝滑的流畅,但 ...
- LeetCode279:完全平方数——动态规划算法——python语言
无意间看到了这么一个题: LeetCode279:完全平方数,动态规划解法超过46%,作弊解法却超过97% ============================================= ...
- Linux环境下配置vscode的C/C++ 的make编译环境(编写makefile方式)代码Demo版
以前写过同样话题下的图文版的,这里给出一个代码Demo版本,上一个图文版本参见: Linux环境下配置vscode的C/C++ 的make编译环境(编写makefile方式) ============ ...
- 洛谷P5250 【深基17.例5】木材仓库
[深基17.例5]木材仓库 题目描述 博艾市有一个木材仓库,里面可以存储各种长度的木材,但是保证没有两个木材的长度是相同的.作为仓库负责人,你有时候会进货,有时候会出货,因此需要维护这个库存.有不超过 ...
- AtCoder Beginner Contest 314
AtCoder Beginner Contest 314 - AtCoder A - 3.14 (atcoder.jp) 题目提供了100位,所以直接用字符串输出 #include <bits/ ...
- 使用python-slim镜像遇到无法使用PostgreSQL的问题
前言 之前不是把 DjangoStarter 的 docker 方案重新搞好了吗 一开始demo部署是使用 SQLite 数据库的,用着没问题,但很快切换到 PostgreSQL 的时候就遇到问题了- ...
- express请求数据的获取(get和post)body-parser
get请求 直接用res.query就可以拿到数据 post请求 需要使用中间件body-parser 第一步:安装body-parser npm i body-parser 第二步:按照模板进行使用 ...
- C#自定义控件—转换开关
C#用户控件之转换开关 如何自定义一个转换键(Toggle)? 三步绘制一个精美控件: 定义属性: 画布重绘: 添加事件: 主要技能: 如何自定义属性: 画布重绘的一般格式: 控件的事件触发过程: 技 ...
- 使用.NET源生成器(SG)生成项目的版本号信息
之前写过一篇 源生成器生成自动注入的代码 主要是通过SyntaxProvider查找标注特性实现 其实除了SyntaxProvider之外还有几个很重要的Provider,比如:MetadataRef ...
- 牛逼!Vue3.5的useTemplateRef让ref操作DOM更加丝滑
前言 vue3中想要访问DOM和子组件可以使用ref进行模版引用,但是这个ref有一些让人迷惑的地方.比如定义的ref变量到底是一个响应式数据还是DOM元素?还有template中ref属性的值明明是 ...