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的部分行。

posted @ 2022-07-30 23:21  Ofnoname  阅读(653)  评论(0编辑  收藏  举报