名称
bash ,alias, bg ,bind,break,builtin, cd ,command,compgen,complete,continue,declare,dirs,disown,echo,enable,eval,exec,exit,export,fc,fg,getopts, hash ,help, 历史 ,作业, 杀 ,让,本地,注销, popd , printf ,pushd, pwd ,读,只读, 返回 ,设置,转变,shopt,源,暂停,测试,时间,陷阱,类型,排版,ulimit,umask, unalias ,unset, wait -bash内置命令,参见bash (1)
Bash Builtin命令
除非另有说明,否则本节中记录的每个内置命令均作为接受选项,前面有-接受-表示选项结束。
: [ 参数 ]
没有效果; 该命令除了扩展参数和执行任何指定的重定向之外什么都不做。 返回零退出代码。
。 文件名 [ 参数 ]
源 文件名 [ 参数 ]
在当前shell环境中从文件名读取并执行命令,并返回从文件名执行的最后一个命令的退出状态。 如果文件名不包含斜线,则使用PATH中的文件名来查找包含文件名的目录。 在PATH中搜索的文件不需要是可执行文件。 当bash不处于posix模式时 ,如果在PATH中找不到文件,则搜索当前目录。 如果关闭shopt内建命令的sourcepath选项,则不会搜索PATH 。 如果提供了任何参数 ,则在执行文件名时它们将成为位置参数。 否则,位置参数不变。 返回状态是脚本中退出的最后一个命令的状态(如果没有执行命令,则为0),如果文件名未找到或无法读取,则返回false。
别名 [ -p ] [ 名称 [= 值 ] ...]
不带参数的别名或带-p选项的别名在标准输出上打印别名列表alias name = value 。 当提供参数时,为每个给定值的 名称定义一个别名。 值的尾部空格会导致在别名展开时检查下一个单词以进行别名替换。 对于未提供任何值的参数列表中的每个名称 ,将打印别名的名称和值。 别名返回true,除非给出了一个没有定义别名的名字 。
bg [ jobspec ]
在后台恢复挂起的作业jobspec ,就好像它已经以&开头。 如果jobspec不存在,则使用shell的当前作业概念。 bg jobspec返回0,除非在作业控制被禁用时运行,或者在启用作业控制的情况下运行时,如果找不到jobspec ,或者没有作业控制就启动jobpec 。
绑定 [ -m keymap ] [ -lpsvPSV ]
绑定 [ -m keymap ] [ -q 功能 ] [ -u 功能 ] [ -r keyseq ]
绑定 [ -m keymap ] -f 文件名
bind [ -m keymap ] -x keyseq : shell-command
绑定 [ -m keymap ] keyseq : 函数名称
绑定 readline命令
显示当前的readline键和函数绑定,将键序列绑定到readline函数或宏,或者设置readline变量。 每个非选项参数都是一个命令,因为它将出现在.inputrc中 ,但每个绑定或命令都必须作为单独的参数传递; 例如''\ Cx \ Cr':re-read-init-file'。 选项(如果提供)具有以下含义:
-m 键盘映射
使用键盘映射作为受后续绑定影响的键盘映射。 可接受的键盘映射名称是emacs,emacs-standard,emacs-meta,emacs-ctlx,vi,vi-move,vi-command和vi-insert 。 vi相当于vi-command ; emacs相当于emacs标准 。
-l
列出所有readline函数的名称。
-p
显示readline函数名称和绑定,以便可以重新读取它们。
-P
列出当前的readline函数名称和绑定。
-v
以可重读的方式显示readline变量名称和值。
-V
列出当前的readline变量名称和值。
-s
显示绑定到宏的readline键序列和它们输出的字符串,以便可以重新读取它们。
-S
显示绑定到宏的readline键序列及其输出的字符串。
-f 文件名
从文件名读取密钥绑定。
-q 功能
查询哪些键调用了命名函数 。
-u 功能
解除绑定到指定函数的所有键。
-r keyseq
删除keyseq的当前绑定。
-x keyseq : shell-command
导致在输入keyseq时执行shell命令 。
除非发生无法识别的选项或发生错误,否则返回值为0。
休息 [ n ]
从for , while , until或select循环中退出。 如果指定了n ,则打破n个级别。 n必须大于1.如果n大于封闭循环的数目,则退出所有封闭循环。 返回值是0,除非shell在执行中断时没有执行循环。
内建 贝壳内脏 [ 论点 ]
执行指定的shell内建函数 ,传递参数并返回其退出状态。 当定义一个名称与shell内建函数相同的函数时,这非常有用,它保留了函数中内置函数的功能。 cd内建通常以这种方式重新定义。 如果shell-builtin不是shell内置命令,则返回状态为false。
cd [ -L | -P ] [ dir ]
将当前目录更改为目录 。 变量HOME是默认的目录 。 变量CDPATH定义包含目录的目录的搜索路径。 CDPATH中的替代目录名称用冒号(:)分隔。 CDPATH中的空目录名称与当前目录相同,即“` 。 ''。 如果dir以斜杠(/)开始,则不使用CDPATH 。 -P选项表示使用物理目录结构而不是后面的符号链接(另请参阅set builtin命令的-P选项); -L选项强制遵循符号链接。 参数-相当于$ OLDPWD 。 如果目录成功更改,则返回值为true; 否则为假。
命令 [ -pVv ] 命令 [ arg ...]
使用args运行命令 ,抑制正常的shell函数查找。 只执行PATH中的内建命令或命令。 如果给出-p选项,则使用默认值PATH执行搜索命令 ,该值保证可以找到所有标准实用程序。 如果提供-V或-v选项,则会打印命令的说明。 -v选项会导致一个单词指示用于调用命令的命令或文件名将被显示; -V选项会产生更详细的描述。 如果提供-V或-v选项,则如果找到命令 ,则退出状态为0,否则为1。 如果没有提供任何选项并且发生错误或者找不到命令 ,则退出状态为127.否则, 命令 builtin的退出状态为命令的退出状态。
compgen [ 选项 ] [ 字 ]
根据选项 s为单词生成可能的完成匹配,该选项可能是完整内部接受的任何选项,但-p和-r除外,并将匹配写入标准输出。 当使用-F或-C选项时,由可编程完成工具设置的各种shell变量虽然可用,但不会有有用的值。
匹配的生成方式与编程完成代码直接从具有相同标志的完成规范生成它们的方式相同。 如果指定了单词 ,则只会显示与单词匹配的完成。
除非提供了无效选项或者没有生成匹配,否则返回值为true。
完成 [ -abcdefgjksuv ] [ -o comp-option ] [ -A 动作 ] [ -G globpat ] [ -W 词汇表 ] [ -P 前缀 ] [ -S 后缀 ]
[ -X filterpat ] [ -F 功能 ] [ -C 命令 ] 名称 [ 名称... ]
完成 -pr [ 姓名 ...]
指定应如何完成每个名称的参数。 如果提供了-p选项,或者没有提供选项,则现有完成规范的打印方式允许将它们重新用作输入。 -r选项删除每个名称的完成规范,或者如果没有提供名称 ,则为所有完成规范。
上面在可编程完成时描述了当完成字完成时应用这些完成规范的过程。
其他选项(如果指定)具有以下含义。 应该引用-G , -W和-X选项的参数(以及必要时的-P和-S选项),以在调用完整的内建之前保护它们免于扩展。
-o comp-option
comp-option控制compspec行为的几个方面,超越了简单的完成生成。 comp-option可以是下列之一:
默认
如果compspec不生成匹配,请使用readline的默认文件名完成。
dirnames中
如果compspec生成不匹配,则执行目录名称完成。
文件名
告诉readline,compspec生成文件名,因此它可以执行任何文件名特定的处理(如向目录名添加斜杠或抑制尾随空格)。 打算与shell函数一起使用。
没有空间
告诉readline不要在行尾添加空格(缺省值)。
- 一个 行动
该操作可能是以下操作之一,以生成可能的完成列表:
别号
别名。 也可以指定为-a 。
arrayvar
数组变量名称。
捆绑
Readline键绑定名称。
内置
shell内建命令的名称。 也可以指定为-b 。
命令
目录
目录名称。 也可以指定为-d 。
残
已禁用的shell的内部名称。
启用
启用的shell的内部名称。
出口
导出的shell变量的名称。 也可以指定为-e 。
文件
文件名称。 也可以指定为-f 。
功能
shell函数的名称。
组
组名。 也可以指定为-g 。
HELPTOPIC
帮助主题所接受的帮助内容 。
主机名,取自HOSTFILE shell变量指定的文件。
工作
作业名称,如果作业控制处于活动状态。 也可以指定为-j 。
关键词
壳牌保留字。 也可以指定为-k 。
赛跑
运行作业的名称(如果作业控制处于活动状态)。
服务
服务名称。 也可以指定为-s 。
SETOPT
集合内建的-o选项的有效参数。
禁用了javascript
外壳选项名称被内置的shopt所接受。
信号
信号名称。
停止
如果作业控制处于活动状态,则停止作业的名称。
用户
用户名称。 也可以指定为-u 。
变量
所有shell变量的名称。 也可以指定为-v 。
-G globpat
文件名扩展模式globpat被扩展以生成可能的完成。
-W 词汇表
单词表是使用IFS特殊变量中的字符作为分隔符分割的,每个结果单词都被展开。 可能的完成项是与正在完成的单词匹配的结果列表的成员。
-C 命令
命令在子shell环境中执行,其输出被用作可能的完成。
-F 功能
shell函数功能在当前shell环境中执行。 完成后,可从COMPREPLY数组变量的值中检索可能的完成项。
-X filterpat
filterpat是一种用于文件名扩展的模式。 它应用于由前面的选项和参数生成的可能完成列表,并从列表中删除每个完成匹配filterpat 。 领先! 在filterpat中否定模式; 在这种情况下,任何不匹配filterpat的完成都将被删除。
-P 前缀
在应用了所有其他选项后,在每个可能的完成开始时添加前缀 。
-S 后缀
在应用了所有其他选项后,每个可能的完成都会附加后缀 。
除非提供了无效选项,否则返回值为真,除-p或-r之外的选项不带名称参数,尝试删除没有规范的名称的完成规范或发生错误添加完成规范。
继续 [ n ]
恢复封闭的下一次迭代, while , until ,或select循环。 如果指定了n ,则在第n个循环中继续。 n必须大于1.如果n大于封闭循环的数目,则重新开始最后一个循环(“顶级”循环)。 返回值是0,除非shell在执行continue时没有执行循环。
声明 [ -afFirtx ] [ -p ] [ 名称 [= 值 ]]
排版 [ -afFirtx ] [ -p ] [ 名称 [= 值 ]]
声明变量和/或赋予它们属性。 如果没有给出名称,则显示变量的值。 -p选项将显示每个名称的属性和值。 当使用-p时 ,其他选项将被忽略。 -F选项禁止显示功能定义; 只打印功能名称和属性。 -F选项意味着-f 。 可以使用以下选项将输出限制为具有指定属性的变量或赋予变量属性:
-一个
每个名称都是一个数组变量(参见上面的数组 )。
-F
仅使用函数名称。
-一世
该变量被视为一个整数; 算术评估(请参阅算术评估)将在变量分配一个值时执行。
-r
让名字只读。 这些名称不能通过后续的赋值语句赋值或取消设置。
-t
为每个名称指定跟踪属性。 跟踪函数继承调用shell中的DEBUG陷阱。 trace属性对变量没有特殊含义。
-X
将名称标记为通过环境导出到后续命令 。
使用'+'而不是` - '可以关闭属性,除了+ a不能用来销毁数组变量。 在函数中使用时,使本地名称与本地命令一样。 除非遇到无效选项,否则返回值为0,尝试使用“-f foo = bar”定义函数,尝试将值赋给只读变量,尝试进行要为数组变量赋值而不使用复合赋值语法(参见上面的数组 ),其中一个名称不是有效的shell变量名,试图关闭只读变量的只读状态,尝试关闭数组变量的数组状态,或尝试使用-f显示不存在的函数。
dirs [-clpv ] [+ n ] [ - n ]
没有选项,显示当前记住的目录列表。 默认显示位于一行中,目录名称以空格分隔。 使用pushd命令将目录添加到列表中; popd命令从列表中删除条目。
+ n
显示从dirs所示列表左侧开始计数的第n个条目,当从零开始调用时不带选项。
- n
显示从dirs显示的列表右侧的第n个条目,该列表在从零开始调用时不带选项。
-C
通过删除所有条目来清除目录堆栈。
-l
产生更长的列表; 默认的列表格式使用代字号来表示主目录。
-p
用每行一个条目打印目录堆栈。
-v
打印目录堆栈,每行一个入口,每个入口的索引在堆栈中加前缀。
除非提供了无效选项,否则返回值为0,或者超出目录堆栈末尾的n个索引。
disown [ -ar ] [ -h ] [ jobspec ...]
如果没有选项,每个jobspec将从活动作业表中删除。 如果给出-h选项,则每个jobspec都不会从表中删除,但会被标记,以便在shell收到SIGHUP时不会将SIGHUP发送到作业。 如果没有jobspec存在,并且没有提供-a和-r选项,则使用当前作业 。 如果没有提供jobspec , -a选项意味着删除或标记所有作业; 没有jobspec参数的-r选项将操作限制为正在运行的作业。 除非jobspec没有指定有效的作业,否则返回值为0。
echo [ -neE ] [ arg ...]
输出参数 ,用空格分隔,后跟换行符。 返回状态始终为0.如果指定了-n ,则尾随的换行符被抑制。 如果给出了-e选项,则会启用对以下反斜线转义字符的解释。 -E选项禁用这些转义字符的解释,即使在默认解释它们的系统上。 xpg_echo shell选项可用于动态确定echo是否在默认情况下扩展这些转义字符。 回声不解释-意味着选项的结束。 回声解释以下转义序列:
\一个
警报(钟)
\ b
退格
\C
抑制尾随换行符
。\ E
一个转义字符
\F
形式饲料
\ n
新队
\ r
回车
\ t
水平标签
符\ v
垂直标签
\\
反斜线
\ 0 nnn
值为八进制值nnn的八位字符(零到三个八进制数字)
\ nnn
值为八进制值nnn的八位字符(一到三个八进制数字)
\ x HH
其值为十六进制值HH的八位字符(一个或两个十六进制数字)
启用 [ -adnps ] [ -f 文件名 ] [ 名称 ...]
启用和禁用内置shell命令。 即使shell通常在磁盘命令之前搜索内建命令,禁用内建命令也会执行与shell内建命名相同的磁盘命令而不指定完整的路径名。 如果使用-n ,则每个名称都被禁用; 否则, 名称已启用。 例如,要使用通过PATH而不是shell内建版本找到的测试二进制文件,请运行``enable -n test''。 -f选项表示在支持动态加载的系统上从共享对象文件名中加载新的内置命令名称 。 -d选项将删除以前用-f加载的内建程序。 如果未提供名称参数,或者提供了-p选项,则会打印shell内建列表。 没有其他选项参数,该列表包含所有已启用的shell内置函数。 如果提供了-n ,则仅打印禁用的内置函数。 如果提供了-a ,则打印的列表将包含所有内置函数,并指示是否启用每个内置函数。 如果提供了-s ,则输出仅限于POSIX 特殊内置函数。
返回值为0,除非名称不是shell内建的内容,或者从共享对象加载新内建时出错。
eval [ arg ...]
参数被读取并连接成一个命令。 该命令然后由shell读取并执行,并且其退出状态作为eval的值返回。 如果没有参数或只有空参数,则eval返回0。
exec [ -cl ] [ -a 名称 ] [ 命令 [ 参数 ]]
如果指定了命令 ,它将替换该shell。 没有新的过程被创建。 论据成为命令的论据。 如果提供了-l选项,那么shell会在第0个参数传递给命令的开始处放置一个破折号。 这是登录 (1)所做的。 -c选项使命令在空白环境下执行。 如果提供-a ,那么shell会将名称作为执行命令的第零个参数传递。 如果由于某种原因无法执行命令,则会退出非交互式shell,除非启用了shell选项execfail ,否则会返回失败。 如果文件无法执行,交互式shell将返回失败。 如果未指定command ,则任何重定向在当前shell中生效,并且返回状态为0.如果存在重定向错误,则返回状态为1。
退出 [ n ]
导致shell以状态n退出。 如果省略n ,则退出状态是最后执行的命令的状态。 EXIT上的陷阱在shell终止前执行。
导出 [ -fn ] [ name [= word ]] ...
导出 -p
提供的名称被标记为自动导出到随后执行的命令的环境。 如果给出-f选项,则名称是指函数。 如果未给出名称 ,或者提供了-p选项,则将打印在此shell中导出的所有名称的列表。 -n选项会导致将export属性从命名变量中删除。 除非遇到无效选项,否则export将返回0的退出状态,其中一个名称不是有效的shell变量名称,或-f提供的名称不是函数。
fc [ -e ename ] [ -nlr ] [ first ] [ last ]
fc -s [ pat = rep ] [ cmd ]
修复命令。 在第一种形式中,从历史列表中选择从第一个到最后一个的一系列命令。 第一个和最后一个可以被指定为一个字符串(用于定位以该字符串开头的最后一个命令)或者作为一个数字(历史列表中的一个索引,其中负数用作当前命令号的偏移量)。 如果未指定last,则将其设置为列表的当前命令(这样``fc -l -10''将输出最后的10个命令),否则设置为first 。 如果第一个未指定,则将其设置为上一个编辑命令,并将其设置为-16以供列表。
列表中的-n选项禁止命令编号。 -r选项反转命令的顺序。 如果给出-l选项,则命令将在标准输出中列出。 否则,由ename给出的编辑器将在包含这些命令的文件上调用。 如果没有给出ename ,则使用FCEDIT变量的值,并且未设置FCEDIT的EDITOR的值。 如果两个变量均未设置,则使用该变量。 编辑完成后,编辑后的命令将被回显并执行。
在第二种形式中,每个pat的实例被rep代替之后, 命令被重新执行。 一个有用的别名是``r = fc -s'',所以键入``r cc''运行最后一个以``cc'开头的命令并且键入``r''重新执行最后一个命令命令。
如果使用第一种形式,则返回值为0,除非遇到无效选项,或者首先或最后指定历史行超出范围。 如果提供-e选项,则返回值是如果临时命令文件发生错误,则执行的最后一个命令的值或失败。 如果使用第二种形式,则返回状态是重新执行的命令的状态,除非cmd未指定有效的历史行,在这种情况下, fc返回失败。
fg [ jobspec ]
在前台继续jobspec ,并使其成为当前的工作。 如果jobspec不存在,则使用shell的当前作业概念。 返回值是放置在前台的命令的值,或者在禁用作业控制时运行时失败,或者在启用作业控制的情况下运行时,如果jobspec未指定有效作业或jobspec指定在没有作业控制的情况下启动的作业。
getopts optstring name [ args ]
getopts被shell程序用来分析位置参数。 optstring包含要识别的选项字符; 如果一个字符后面跟着一个冒号,则该选项应该有一个参数,该参数应该用空格分隔。 冒号和问号字符不能用作选项字符。 每次调用时, getopts都会将下一个选项放在shell变量名称中 ,如果名称不存在则初始化名称 ,并将要处理的下一个参数的索引放入变量OPTIND中 。 每次调用shell或shell脚本时, OPTIND都被初始化为1。 当一个选项需要一个参数时, getopts将该参数放入变量OPTARG中 。该shell不会自动重置OPTIND ; 如果要使用一组新参数,则必须在同一个shell调用内的多个调用之间手动重置。
遇到选项结束时, getopts以大于零的返回值退出。 OPTIND被设置为第一个非选项参数的索引,并且名称被设置为?。
getopts通常会分析位置参数,但如果在args中给出更多参数,则getopts会解析这些参数 。
getopts可以通过两种方式报告错误。 如果optstring的第一个字符是冒号,则使用静默错误报告。 在正常操作中,遇到无效选项或缺少选项参数时会打印诊断消息。 如果变量OPTERR设置为0,即使optstring的第一个字符不是冒号,也不会显示错误消息。
如果看到一个无效的选项, getopts的地方? 输入名称 ,如果不是静音,则输出错误消息并取消OPTARG 。 如果getopts处于无声状态,则找到的选项字符将放置在OPTARG中,并且不会打印诊断消息。
如果没有找到必需的参数,并且getopts不是无声的,则会在名称中放置一个问号( ? ),取消设置OPTARG ,并打印诊断消息。 如果getopts是沉默的,那么冒号( :)被放在名字中,并且OPTARG被设置为找到的选项字符。
如果找到指定或未指定的选项, getopts将返回true。 如果遇到选项结束或发生错误,它将返回false。
哈希 [ -lr ] [ -p 文件名 ] [ -dt ] [ 名称 ]
对于每个名称 ,命令的完整文件名是通过搜索$ PATH中的目录并记住来确定的。 如果提供了-p选项,则不执行路径搜索,并将filename用作命令的完整文件名。 -r选项会导致shell忘记所有记住的位置。 -d选项会导致shell忘记每个名称的记忆位置。 如果提供了-t选项,则会打印每个名称对应的完整路径名 。 如果使用-t提供了多个名称参数,则会在散列完整路径名之前打印该名称。 -l选项会使输出以可作为输入重用的格式显示。 如果未提供参数,或者仅提供了-l ,则会打印有关记住的命令的信息。 返回状态为真,除非找不到名称或提供了无效选项。
帮助 [ -s ] [ 模式 ]
显示有关内置命令的有用信息。 如果指定了pattern ,则help会为所有匹配模式的命令提供详细的帮助; 否则打印所有内置和外壳控制结构的帮助。 -s选项将显示的信息限制为简短的使用情况摘要。 除非没有命令匹配模式,否则返回状态为0。
历史[ n ]
历史 -c
历史-d 抵消
历史 -anrw [ 文件名 ]
历史记录 -p arg [ arg ... ]
历史 -s arg [ arg ... ]
没有选项时,用行号显示命令历史列表。 用*列出的行已被修改。 n的参数只列出最后n行。 如果提供了文件名 ,它将用作历史文件的名称; 如果不是,则使用HISTFILE的值。 选项(如果提供)具有以下含义:
-C
通过删除所有条目来清除历史列表。
-d 偏移量
删除位置偏移处的历史记录。
-一个
追加“新”历史行(自当前bash会话开始以来输入的历史行)到历史文件。
-n
将尚未从历史记录文件读取的历史行读入当前历史列表。 这些是自当前bash会话开始以来附加到历史文件的行。
-r
阅读历史文件的内容并将其用作当前历史记录。
-w
将当前历史写入历史文件,覆盖历史文件的内容。
-p
对以下参数执行历史替换,并在标准输出上显示结果。 不会将结果存储在历史记录列表中。 必须引用每个参数以禁用正常的历史扩展。
-s
将参数作为单个条目存储在历史记录列表中。 在添加参数之前,历史列表中的最后一个命令被删除。
返回值为0,除非遇到无效选项,读取或写入历史文件时发生错误,将无效偏移作为参数提供给-d ,或将作为参数提供的历史扩展提供给-p失败。
工作 [ -lnprs ] [ jobspec ...]
作业 -x 命令 [ args ...]
第一种形式列出了活动作业。 选项具有以下含义:
-l
除正常信息外,还列出进程ID。
-p
仅列出作业的过程组组长的过程标识。
-n
仅显示自用户上次通知其状态以来已更改状态的作业的信息。
-r
将输出限制为正在运行的作业。
-s
限制输出到停止的作业。
如果给出jobspec ,则输出仅限于关于该作业的信息。 除非遇到无效选项或提供了无效的jobspec,否则返回状态为0。
如果提供-x选项, 作业 会将在command或args中找到的所有jobspec替换为相应的进程组ID,并执行传递它的参数args ,并返回其退出状态。
杀死 [ -s sigspec | -n signum | - sigspec ] [ pid | jobspec ] ...
kill -l [ sigspec | exit_status ]
将由sigspec或signum命名的信号发送到由pid或jobspec命名的进程。 sigspec是一个信号名称,如SIGKILL或信号编号; signum是一个信号编号。 如果sigspec是信号名称,则名称可以带或不带SIG前缀。 如果sigspec不存在,则假定为SIGTERM 。 -l的参数列出了信号名称。 如果在给出-l时提供了任何参数,则会列出与参数相对应的信号的名称,返回状态为0. exit-status参数为-l是一个数字,指定信号编号或退出状态进程被一个信号终止。 如果至少有一个信号成功发送,则kill将返回true;如果发生错误或遇到无效选项,则kill为false。
让 arg [ arg ...]
每个arg都是一个要评估的算术表达式(请参阅算术评估( ARITHMETIC EVALUATION ))。 如果最后一个参数的值为0, 让返回1; 否则返回0。
本地 [ 选项 ] [ 名称 [= 值 ] ...]
对于每个参数,都会创建一个名为name的局部变量并赋值。 该选项可以是declare接受的任何选项。 在函数内使用local时 ,会导致变量名的可见范围限制为该函数及其子项。 没有操作数时, 本地将一个局部变量列表写入标准输出。 不在函数内使用本地是错误的。 返回状态为0,除非在函数之外使用local ,提供的名称无效,或者name是只读变量。
登出
退出登录shell。
popd [ - n ] [+ n ] [ - n ]
删除目录堆栈中的条目。 如果没有参数,请从堆栈中删除顶层目录,然后执行cd到新的顶层目录。 参数,如果提供,具有以下含义:
+ n
从零开始,删除dirs所示列表左侧的第n个条目。 例如:``popd +0''删除第一个目录,第二个目录“popd +1”。
- n
从零开始删除dirs所示列表右侧的第n个条目。 例如:``popd -0''删除最后一个目录,“last-last”删除“popd -1”。
-n
从堆栈中删除目录时禁止正常更改目录,以便只操作堆栈。
如果popd命令成功,则执行dirs ,返回状态为0.如果遇到无效选项,目录堆栈为空,指定了不存在的目录堆栈条目,或者目录更改失败。
printf 格式 [ 参数 ]
在格式控制下将格式化的参数写入标准输出。 格式是一个字符串,其中包含三种类型的对象:简单复制到标准输出的普通字符,转换并复制到标准输出的字符转义序列,以及格式规范,每种格式规格都会导致下一次打印连续的论点 。 除了标准的printf (1)格式之外, %b还会导致printf在相应的参数中扩展反斜杠转义序列,并且%q会导致printf以可以作为shell输入重用的格式输出相应的参数 。
格式根据需要重用以消耗所有参数 。 如果格式需要比提供的参数更多的参数 ,则额外格式规范的行为就像提供了适当的零值或空字符串一样。 成功时返回值为零,失败时为非零。
pushd [ -n ] [ dir ]
pushd [ -n ] [+ n ] [ - n ]
将目录添加到目录堆栈顶部,或者旋转堆栈,使堆栈的新顶部成为当前工作目录。 如果没有参数,则交换前两个目录并返回0,除非目录堆栈为空。 参数,如果提供,具有以下含义:
+ n
旋转堆栈,以便第n个目录(从dirs显示的列表左侧开始,从零开始)位于顶部。
- n
旋转堆栈,以便第n个目录(从dirs显示的列表右侧开始,从零开始)位于顶部。
-n
在将目录添加到堆栈时抑制目录的正常更改,以便仅操作堆栈。
DIR
将dir添加到顶部的目录堆栈,使其成为新的当前工作目录。
如果pushd命令成功,则还会执行dirs 。 如果使用第一种形式, pushd将返回0,除非cd到dir失败。 对于第二种形式, pushd将返回0,除非目录堆栈为空,指定了不存在的目录堆栈元素,或者目录更改为指定的新当前目录失败。
pwd [ -LP ]
打印当前工作目录的绝对路径名。 如果提供了-P选项或者启用了set builtin命令的-o物理选项,则打印的路径名不包含符号链接。 如果使用-L选项,则打印的路径名可能包含符号链接。 返回状态为0,除非读取当前目录的名称时发生错误或提供了无效的选项。
read [ -ers ] [ -u fd ] [ -t timeout ] [ -a aname ] [ -p 提示符 ] [ -n nchars ] [ -d delim ] [ name ...]
从标准输入读取一行或从作为参数提供的文件描述符fd读取-u选项,并且第一个字被分配给名字 ,第二个字分配给第二个名字 ,依此类推,剩下的单词和分配给姓氏的干预分隔符。 如果从输入流中读取的名称少于名称,则剩余名称将分配空值。 IFS中的字符用于将行分成单词。 反斜杠字符( \ )可用于删除下一个字符读取和续行的任何特殊含义。 选项(如果提供)具有以下含义:
- aname
单词被分配给数组变量aname的连续索引,从0开始。在任何新值被分配之前, aname未被设置。 其他名称参数被忽略。
-d delim
delim的第一个字符用于终止输入行,而不是换行符。
-e
如果标准输入来自终端, readline (请参阅上面的READLINE )用于获取该行。
-n nrs
读取 nchars字符后读取返回,而不是等待完整的输入行。
-p 提示符
在尝试读取任何输入之前,显示标准错误提示 ,不带结尾的换行符。 仅当输入来自终端时,才会显示提示。
-r
反斜杠不作为转义字符。 反斜杠被认为是该行的一部分。 特别是,反斜线 - 换行符对可能不能用作续行。
-s
静音模式。 如果输入来自终端,则字符不会被回显。
-t 超时
如果在超时秒内未读取完整的输入行,则会导致读取超时并返回失败。 如果读取未读取来自终端或管道的输入,则此选项无效。
-u fdFP
从文件描述符fd读取输入。
如果未提供名称 ,则将读取的行分配给变量REPLY 。 返回码为零,除非遇到文件结尾, 读取超时或者将无效的文件描述符作为参数提供给-u 。
readonly [ -apf ] [ name ...]
给定的名字只读标记; 这些名称的值可能不会被后续分配更改。 如果提供了-f选项,则与名称对应的功能已标记。 -a选项将变量限制为数组。 如果未给出名称参数,或者提供了-p选项,则会打印所有只读名称的列表。 -p选项使输出以可作为输入重用的格式显示。 除非遇到无效选项,否则返回状态为0,其中一个名称不是有效的shell变量名称,或-f提供的名称不是函数。
返回 [ n ]
使函数以n指定的返回值退出。 如果省略了n ,则返回状态是在函数体中执行的最后一个命令的返回状态。 如果在函数之外使用,但在脚本执行期间使用。 ( 源 )命令,它会导致shell停止执行该脚本,并返回n或脚本内执行的最后一个命令的退出状态作为脚本的退出状态。 如果在函数外部使用,而不是在执行脚本期间使用。 ,返回状态是错误的。
设置 [ --abefhkmnptuvxBCHP ] [ -o 选项 ] [ arg ...]
如果没有选项,每个shell变量的名称和值将以可作为输入重用的格式显示。 输出按照当前的语言环境排序。 当指定选项时,它们设置或取消设置shell属性。 处理选项后剩余的任何参数都被视为位置参数的值,并按顺序分配给$ 1 , $ 2 , ... $ n 。 选项(如果指定)具有以下含义:
-一个
自动标记为了导出到后续命令的环境而修改或创建的变量和函数。
-b
立即报告已终止的后台作业的状态,而不是在下一个主要提示之前报告。 仅在启用作业控制时才有效。
-e
如果一个简单的命令 (见上面的SHELL GRAMMAR )以非零状态退出,立即退出。 如果失败的命令是until或while循环的一部分, if语句的一部分, &&或||的一部分,shell不会退出。 列表,或者如果命令的返回值正在通过! 。 如果设置了ERR ,则会在shell退出之前执行陷阱。
-F
禁用路径名扩展。
-H
记住命令在查找执行时的位置。 这是默认启用的。
-k
赋值语句形式的所有参数都放置在命令的环境中,而不仅仅是命令名称前面的那些参数。
-m
监控模式。 作业控制已启用。 默认情况下,此选项用于支持它的系统上的交互式shell(请参阅上面的JOB CONTROL )。 后台进程在单独的进程组中运行,并在完成后打印包含其退出状态的行。
-n
读取命令但不执行它们。 这可以用来检查shell脚本的语法错误。 这被交互式shell忽略。
-o 选项名称
选项名称可以是以下之一:
allexport
和-a一样 。
braceexpand
和-B一样 。
emacs的
使用emacs风格的命令行编辑界面。 当shell是交互式时,这是默认启用的,除非shell使用--no编辑选项启动。
errexit
和-e一样 。
hashall
与-h相同。
histexpand
和-H一样 。
历史
启用命令历史记录,如上面在HISTORY下所述。默认情况下,此选项在交互式shell中处于启用状态。
了ignoreeof
效果就好像执行了shell命令“IGNOREEOF = 10”(参见上面的Shell Variables )。
关键词
与-k相同。
监控
与-m相同。
noclobber选项
与-C相同。
NOEXEC
与-n相同。
noglob
与-f相同。 nolog目前被忽略。
通知
与-b相同。
nounset
与-u相同。
onecmd
与-t相同。
物理
与-P相同。
POSIX
更改默认操作不同于POSIX 1003.2标准以匹配标准( posix模式 )的bash的行为。
特权
与-p相同。
详细
与-v相同。
六
使用vi风格的命令行编辑界面。
X跟踪
与-x相同。
如果-o没有提供选项名称 ,则会打印当前选项的值。 如果+ o没有提供选项名称 ,则会在标准输出中显示一系列用于重新创建当前选项设置的设置命令。
-p
打开特权模式。 在这种模式下,不处理$ ENV和$ BASH_ENV文件,shell函数不会从环境继承,并且SHELLOPTS变量(如果它出现在环境中)将被忽略。 如果shell以有效用户(组)id不等于真实用户(组)id的方式启动,并且未提供-p选项,则会执行这些操作并将有效用户标识设置为真实用户标识。 如果在启动时提供了-p选项,则不会重置有效的用户标识。 关闭此选项会导致将有效的用户和组标识设置为真实的用户和组标识。
-t
读取并执行一个命令后退出。
-u
在执行参数扩展时将未设置的变量视为错误。 如果在未设置的变量上尝试扩展,shell将打印一条错误消息,如果不是交互式,则以非零状态退出。
-v
打印外壳输入行时读取它们。
-X
展开每个简单命令后 ,显示PS4的扩展值,然后显示命令及其扩展参数。
-B
外壳执行大括号扩展(参见上面的Brace Expansion )。 这是默认设置。
-C
如果设置, bash不会用> , >&和<>重定向操作符覆盖现有文件。 通过使用重定向操作符> |创建输出文件时,这可能会被覆盖 而不是> 。
-H
启用! 风格的历史替代。 这个选项在shell是交互式时默认打开。
-P
如果设置,那么在执行诸如cd之类的命令时,shell不会遵循符号链接,从而更改当前的工作目录。 它使用物理目录结构。 默认情况下, bash在执行更改当前目录的命令时遵循逻辑目录链。
-
如果没有参数遵循该选项,则位置参数未设置。 否则,位置参数被设置为参数 s,即使其中一些以-开头。
-
指示选项结束,使所有剩余的参数分配给位置参数。 -x和-v选项关闭。 如果没有参数,位置参数保持不变。
除非另有说明,这些选项默认是关闭的。 使用+而不是 - 会导致关闭这些选项。 这些选项也可以被指定为调用shell的参数。 当前的选项集可以在$ - 中找到。 除非遇到无效选项,否则返回状态始终为真。
shift [ n ]
来自n + 1 ...的位置参数被重命名为$ 1 ....由$#降至$# - n + 1的数字表示的参数未设置。 n必须是小于或等于$#的非负数。 如果n为0,则不更改参数。 如果未给出n ,则假定为1.如果n大于$# ,则位置参数不会改变。 如果n大于$#或小于零,则返回状态大于零; 否则为0。
shopt [ -pqsu ] [ -o ] [ optname ...]
切换控制可选外壳行为的变量值。 没有选项或使用-p选项时,会显示所有可设置选项的列表,并显示是否设置了每个选项。 -p选项使输出显示为可作为输入重用的形式。 其他选项具有以下含义:
-s
启用(设置)每个optname 。
-u
禁用(取消设置)每个optname 。
-q
抑制正常输出(安静模式); 返回状态指示optname是设置还是未设置。 如果使用-q给出多个optname参数,那么如果所有的optname都被启用,则返回状态为零; 否则不为零。
-o
将optname的值限制为为set内建的-o选项定义的值。
如果使用-s或-u而没有使用optname参数,则显示将仅限于分别设置或取消设置的选项。 除非另有说明,否则默认情况下, shopt选项被禁用(未设置)。
如果启用所有的optnames ,列表选项的返回状态为零,否则为非零。 设置或取消设置选项时,除非optname不是有效的shell选项,否则返回状态为零。
购物选项列表是:
cdable_vars
如果设置,则cd内建命令不是目录的参数被假定为变量的名称,其值是要更改为的目录。
cdspell
如果设置, cd命令中的目录组件的拼写中的小错误将被纠正。 检查的错误是转置字符,缺少字符,以及一个字符太多。 如果找到更正,则会打印更正的文件名,然后继续执行该命令。 该选项仅供交互式shell使用。
checkhash
如果设置, bash会在尝试执行之前检查在哈希表中找到的命令是否存在。 如果散列命令不再存在,则执行正常路径搜索。
checkwinsize
如果设置, bash将在每个命令之后检查窗口大小,如有必要,将更新LINES和COLUMNS的值。
cmdhist
如果设置, bash会尝试将多行命令的所有行保存在同一个历史记录条目中。 这允许轻松地重新编辑多行命令。
dotglob
如果设置, bash包含以`。'开始的文件名。 在路径名扩展的结果中。
execfail
如果设置,如果不能执行指定为exec内建命令的参数的文件,则非交互式shell将不会退出。 如果exec失败,交互式shell不会退出。
expand_aliases
如果设置,别名将按照上述ALIASES下面的描述进行扩展。 交互式shell默认启用此选项。
extglob
如果设置,则启用上面在路径名扩展下描述的扩展模式匹配功能。
histappend
如果设置,当shell退出时,历史列表会追加到由HISTFILE变量的值命名的文件中,而不是覆盖文件。
histreedit
如果设置,并且正在使用readline,则用户有机会重新编辑失败的历史记录替换。
histverify
如果设置,并且正在使用readline ,则历史替换的结果不会立即传递给shell解析器。 相反,结果行会被加载到readline编辑缓冲区中,从而允许进一步修改。
hostcomplete
如果已设置,并且正在使用readline,则当包含@的单词正在完成时, bash将尝试执行主机名完成(请参阅上面的READLINE下的完成 )。 这是默认启用的。
huponexit
如果设置,当交互式登录shell退出时, bash将发送SIGHUP给所有作业。
interactive_comments
如果设置,则允许以#开头的单词在交互式shell中忽略该单词和该行上的所有剩余字符(请参阅上面的注释 )。 该选项默认启用。
lithist
如果设置,并且启用了cmdhist选项,则多行命令将被保存到带有嵌入换行符的历史记录中,而不是在可能的情况下使用分号分隔符。
login_shell
如果它作为登录shell启动,shell会设置此选项(请参阅上面的INVOCATION )。 该值可能不会更改。
mailwarn
如果已设置,并且自上次检查邮件以来bash正在检查邮件的文件已被访问,则会显示消息“邮件文件中的邮件已被读取”。
no_empty_cmd_completion
如果已设置,并且正在使用readline ,则在空行尝试完成时, bash不会尝试在PATH中搜索可能的完成项。
nocaseglob
如果设置, bash在执行路径名扩展时以不区分大小写的方式匹配文件名(请参阅上面的路径名扩展 )。
了nullglob
如果设置, bash允许不匹配文件的模式(参见上面的路径名扩展 )扩展为空字符串,而不是它们自己。
progcomp
如果设置,则可编程完成设施(请参阅上面的可编程完成 )已启用。 该选项默认启用。
promptvars
如果设置,则提示字符串在进行后会经历变量和参数扩展