资讯动态

Linux:Bash中的命令介绍(简单命令、管道以及命令列表)

发布时间:2026/10/27 1:15:21 来源:尧图企业网站定制
相关阅读Linuxhttps://blog.csdn.net/weixin_45791458/category_12234591.html?spm1001.2014.3001.5482在Bash中命令执行的方式可以分为简单命令、管道和命令列表组成。这些结构提供了强大的工具允许用户组合命令并精确控制其执行方式。以下是对这些Bash命令形式的介绍。1.、简单命令Simple Commands简单命令是最常见的命令形式。它由一系列用空白制表符、空格分隔的token组成并由shell的控制符号终止换行符(newline)、后台执行符()或命令分隔符(;)注意这里的后台执行符()或命令分隔符(;)后仍然要有换行符(newline)之后不再进行特殊说明。结构简单命令的第一个单词通常指定要执行的命令随后的单词是该命令的选项或参数。例如ls -l /home/user [newline or or ;]其中ls是命令名-l是命令的选项/home/user是命令的参数。返回状态一般情况下指没有后台执行简单命令的返回状态是命令的退出状态(exit status)。POSIX标准定义的waitpid系统调用返回这个状态通常为零表示成功非零表示失败。如果命令因信号而终止则返回128加上信号编号。可以通过特殊变量?获得上一条前台命令的返回状态。控制符号(1)换行符(newline)换行符是命令的一般默认终止符号它告诉shell执行命令并在命令结束时将提示符返回给用户。ls -l /home/user[newline](2)后台执行符()使用后台执行符结尾的命令命令将以异步的方式在子shell注意子shell和子进程shell的区别见Linuxsubshell子shell和childprocess子进程中执行shell不会等待该命令完成而是立即返回提示符让用户执行其他命令而命令会在后台继续运行。后台执行命令的返回状态永远为0。如果作业控制未激活即shell无法管理多个作业或命令后台命令的标准输入会自动从/dev/null重定向。这意味着该命令将无法从终端或任何输入源读取数据因为/dev/null会丢弃所有输入。ls -l /home/user (3)命令分隔符(;)命令分隔符用于将多个命令串联在一起一般用于命令列表shell会顺序执行这些命令每个命令之间没有条件依赖所有命令都会按照出现的顺序执行。ls -l /home/user ;2、管道Pipelines管道是由一个或多个命令组成的序列每个命令之间通过管道符(|或|)分隔由shell的控制符号终止换行符(newline)、后台执行符()或命令分隔符(;)。结构一个管道命令的基本形式如下command1 [| or |] command2 [| or |] command3 [newline or or ;]在这个例子中command1的标准输出会作为command2的标准输入command2的标准输出会作为 command3的输入这些连接会在重定向发生前就进行。|用于将标准错误和标准输出一起传递给下一个命令相当于重定向21 |的缩写。执行方式管道中的所有命令都是同时执行的即command2并不会等待command1结束才执行这可以通过下面的命令进行验证。sleep 5 | sleep 5 ;管道中的所有命令分别在各自的子shell中执行且shell会等待管道中的所有命令完成在不使用后台执行符的前提下。返回状态一般情况下指没有后台执行管道的返回状态通常是最右边命令的退出状态。如果启用了pipefail选项那么返回状态将是最右边第一个非零的返回状态。3、命令列表Lists of Commands命令列表是由一个或多个管道不包括管道最后的终止控制符号组成的序列通过控制符号命令分隔符(;)、后台执行符()、与操作符()、或操作符(||)分隔。由shell的控制符号终止换行符(newline)、后台执行符()或命令分隔符(;)。结构(1)用命令分隔符(;)分隔的管道会按顺序执行shell会等待每个管道结束后再执行下一个管道。Pipeline1 ; Pipeline2 ; Pipeline3 [newline or or ;](2)用后台执行符()分隔的管道以后台执行符()结尾的管道将以异步的方式在子shell中执行。Pipeline1 Pipeline2 Pipeline3 [newline or or ;]其中Pipeline3是否后台执行取决于结尾是否是后台执行符()。(3)用与操作符()分隔的管道只有左边的管道执行成功返回状态为0右边的管道才会执行。Pipeline1 Pipeline2 [newline or or ;]如果Pipeline1执行成功退出状态为0则执行Pipeline2。否则Pipeline2不会执行。(4)用或操作符(||)分隔的管道只有左边的管道执行失败返回状态非0右边的管道才会执行。Pipeline1 || Pipeline2 [newline or or ;]如果Pipeline1执行失败退出状态非0则执行Pipeline2。否则Pipeline2不会执行。这四个控制符号可以混用其中||和的优先级最高且相同其次是优先级较低的优先级最低的是;。Pipeline1 || Pipeline2 Pipeline3 上面的命令列表根据相同优先级的结合性被解释为下面的形式。# 整体后台执行 ((Pipeline1 || Pipeline2) Pipeline3) Pipeline1 ; Pipeline2 上面的命令列表根据优先级被解释为下面的形式。# Pipeline后台执行 (Pipeline1 ;) (Pipeline2 )返回状态命令列表的返回状态是列表中最后前台执行的管道的返回状态。Pipeline1 Pipeline2 [newline]上面的命令列表的返回状态是Pipeline2的返回状态因为Pipeline1后台执行。

读完文章,也想定制专属网站?

尧图设计师 24 小时内与您沟通定制方案

免费获取报价 →
↑