bash参考手册之三(基本的Shell特性)续一
来源:互联网 发布:上海少年编程培训 编辑:程序博客网 时间:2024/05/16 08:58
3.2.2 管道
管道是由控制操作符'|'或'|&'分隔开的一组简单命令的序列。
管道的格式
[time [-p]] [!] command1 [ [| or |&] command2 …]
在管道中的每个命令的输出是通过管道连接到下一个命令的输入。也就是说,每个命令读取前一个命令的输出。此连接在该命令指定的重定向之前执行。
如果使用'|&',则command1的标准错误通过管道连接到command2的标准输入。它是 2>&1 |的简写。这个隐含的标准错误重定向在其他重定向之后执行。
保留字time,会在管道完成后,打印时间统计数据。目前的统计数据包括整个管道的执行时间,以及命令执行消耗的用户时间和系统时间。 -p选项指定了POSIX输出格式。当shell在POSIX模式(参见bash POSIX模式),如果下一个标记以一个“ - ”开始时,它不识别time为保留字。 TIMEFORMAT变量可以设置为一个字符串,以设置显示时间的格式。可用的格式的说明(见 Bash变量)。time保留字允许记录shell的内建命令,shell函数和管道的计时。外部命令time不能容易地达到这些计时的目的。
当shell在POSIX模式(参见bash POSIX模式),time后面可能会跟着一个换行符。在这种情况下,shell显示由shell和它的子进程消耗的总的用户和系统时间。变量TIMEFORMAT被用来指定时间信息的格式。
如果管道不是异步执行的(见列表),shell会等待管道中的所有命令完成。
在管道中的每个命令在其自己的子shell中执行(见命令执行环境)。管道的退出状态是在管道中的最后一个命令的退出状态,除非pipefail选项被启用(参见内建命令set)。如果启用了pipefail,管道的返回值是最后一个(最右边)的命令的退出状态,可能是一个非零的值,或者,如果所有命令成功完成,则是零值。如果保留字'!'位于管道之前,则退出状态是上述的退出状态的逻辑否。 shell等待管道中的所有命令终止后才返回一个值。
3.2.3 命令列表
命令列表是由一个或多个管道组成的序列,它们被这些分隔符号“;“,”&“,”&&“,”| |“分隔,并且由一个';','&',或换行符终止。
在这些操作符中,“&&”和“| |”具有相同的优先级,然后';'和'&',具有相同的优先级。
可能会出现一个或多个换行符来分隔命令列表,它们相当于分号。
如果命令终止于控制操作符'&',shell将在子shell中异步执行这个命令。这被称为在后台执行命令。 shell不会等待命令完成,返回值是0(真)。当作业控制没有被激活时(见作业控制),异步命令的标准输入,在没有指定明确的重定向时,将被重定向到/dev/null。
“;”分隔开的命令将按顺序执行,shell会等待每个命令都终止。返回状态是最后执行的命令的退出状态。
AND和OR命令列表,是使用控制操作符“&&”和“| |”分隔的一个或多个管道组成的序列。 AND和OR命令列表按左结合执行。
AND命令列表的形式
command1 && command2
command2,当且仅当,command1返回的退出状态是零的情况下才执行。
OR命令列表的形式
command1 || command2
command2,当且仅当,command1返回的退出状态非零的情况下才执行。
AND和OR命令列表的返回状态,是命令列表中的最后一个执行的命令的退出状态。
原文链接:http://www.gnu.org/software/bash/manual/bash.html#Pipelines
- bash参考手册之三(基本的Shell特性)续一
- bash参考手册之三(基本的Shell特性)
- bash参考手册之三(基本的Shell特性)续三
- bash参考手册之三(基本的Shell特性)续二
- bash参考手册之三(基本的Shell特性)续四
- bash参考手册之三(基本的Shell特性)续五
- bash参考手册之三(基本的Shell特性)续六
- bash参考手册之三(基本的Shell特性)续七
- bash参考手册之三(基本的Shell特性)续八
- bash参考手册之三(基本的Shell特性)续九
- bash参考手册之六(Bash特性)续三
- bash参考手册之六(Bash特性)续一
- bash参考手册之五(shell变量)续三
- bash参考手册之五(shell变量)续一
- bash参考手册之六(Bash特性)续二
- bash参考手册之六(Bash特性)续四
- bash参考手册之六(Bash特性)续五
- bash参考手册之六(Bash特性)续六
- 374. Seeing is believing. 眼见为实
- 步步测试完善Java中Socket通信图解法(三)
- 国外IT网站
- Android培训---使用支持类库
- Spring MVC 3.0.5+Spring 3.0.5+MyBatis3.0.4全注解实例详解(二)
- bash参考手册之三(基本的Shell特性)续一
- 深入浅出Javascript(三)创建自定义对象以及属性、方法
- CodeSmith 使用教程(9): Progress对象
- 在线头像制作网站FaceYourManga
- Dead Man's Island——5、A Dead Man
- Spring MVC 3.0.5+Spring 3.0.5+MyBatis3.0.4全注解实例详解(一)
- Android Recovery模式
- 常用Powerbuilder 的颜色列表
- CentOS 更改默认启动顺序