除非另外说明,这一章介绍的内建命令如果接受 - 引导的选项,那么它也接受 -- 作为参数,来指示选项的结束
- : [arguments]
- 没有效果;这个命令除了扩展 arguments 并且作任何指定的重定向之外,不做任何事。退出时返回0。
- . filename [arguments]
- source filename [arguments]
- 读取并在当前 shell 环境中执行 filename 中的命令,返回 filename 中最后一个命令的返回状态。如果 filename 中不包含斜杠 (slash),系统将在 PATH 中查找包含 filename 的目录。在 PATH 中搜索的文件不必是可执行的。如果 bash 不是运行于 posix mode,当 PATH 中找不到文件时会在当前目录搜索。如果 shopt 内建命令的 sourcepath 选项被关闭, PATH 将不会被搜索。如果有任何 arguments ,它们成为 filename 的位置参数 (positional parameters),否则位置参数不发生变化。返回状态是脚本中最后一个命令退出时的状态。没有执行命令则返回0,没有找到或不能读取 filename 时返回false。
- alias [-p] [name[=value] ...]
- Alias 不带参数或者带 -p 参数运行时将在标准输出以这样的格式 alias name=value 给出别名列表。如果有参数,将创建提供了 value 的 name 的别名。 value 中尾部的空格使得别名被扩展时,下一个词做别名替换。对于参数列表中的每一个 name,如果 value 没有给出,这个别名的名称和值会被打印出来。 Alias 返回 true 除非 name 没有定义为别名。
- bg [jobspec]
- 使挂起的程序 jobspec 在后台继续执行,就好像它是用 & 启动的一样。如果没有指定 jobspec,shell 意义上的 current job 当前作业 将被使用。 bg jobspec 返回0,除非当前禁止了作业控制,或者在允许作业控制,但是没有找到 jobspec ,或者它不是在作业控制下启动的时候。
- bind [-m keymap] [-lpsvPSV]
- bind [-m keymap] [-q function] [-u function] [-r keyseq]
- bind [-m keymap] -f filename
- bind [-m keymap] -x keyseq:shell-command
- bind [-m keymap] keyseq:function-name
- bind readline-command
- 显示当前 readline 键和功能的,将一个按键序列和一个 readline 功能或宏进行关联,或者设置一个 readline 变量。每一个在非选项的参数都是一个命令,好像它是在 .inputrc 中出现的一样。但是每个关联或者命令必须作为单独的参数传递;也就是这样 '"C-xC-r": re-read-init-file'。如果有参数,它们有如下的意义:
- -m keymap
- 使用 keymap 作为随后的关联的keymap。可选的 keymap 名称是 emacs, emacs-standard, emacs-meta, emacs-ctlx, vi, vi-move, vi-command,还有 vi-insert。 vi 和 vi-command 等价; emacs 和 emacs-standard 等价。
- -l
- 列出所有的 readline 功能。
- -p
- 以程序可读的方式显示 readline 功能名称和关联
- -P
- 列出当前 readline 功能名称和关联。
- -v
- 以程序可读的方式显示 readline 变量名称和值
- -V
- 列出当前 readline 变量和值。
- -s
- 以程序可读的方式显示 readline 键序列和对应的宏
- -S
- 显示 readline 宏对应的键序列和他们输出的字符串
- -f filename
- 从 filename 中读取键序列
- -q function
- 查询那些键将执行function。
- -u function
- 取消所有关联到 function 的键。
- -r keyseq
- 取消当前任何 keyseq 的关联。
- -x keyseq:shell-command
- 使 shell-command 在 keyseq 按下时被执行。
返回值是0,除非给出了一个不能识别的选项或是产生了一个错误。
- break [n]
- 从一个 for, while, until, 或者 select 循环退出。如果指定了 n ,就跳出 n 层循环。 n 必须 > 1。如果 n 比当前循环层数还要大,将跳出所有循环。返回值是0,除非执行 break 的时候 shell 不是在执行一个循环。
- builtin shell-builtin [arguments]
- 执行指定的 shell 内建命令,传递 arguments ,返回命令的返回值。这在定义了一个和 shell 内建命令同名的函数时很有用,在那个函数中使用它来执行相应的功能。cd 命令常以这种方式重新定义。返回状态是 false,如果指定的 shell-builtin 并不是一个 shell 内建命令。
- cd [-L|-P] [dir]
- 改变当前路径到 dir。这个变量的默认值是 HOME 目录。环境变量 CDPATH 定义了包含 dir 的搜索路径。在 CDPATH 中可选的路径名以冒号(:) 分隔。 CDPATH 中的空路径名与当前路径相同,就是 ``.''. 如果 目录名 以斜杠 (/,slash) 起始,那么 CDPATH 不会被使用。 -P 选项是说使用物理路径结构而不是跟随符号链接,(参见 set 命令中的 -P 选项); -L 选项强制跟随符号链接。另外,选项 - 与 $OLDPWD 是相同的。返回值是 true ,如果成功地改变了目录;否则是 false。
- command [-pVv] command [arg ...]
- 运行 command ,使用 args 作为参数,禁止通常的查找 shell 函数的过程。只有内建命令或者 PATH 中包含的命令可以执行。如果给出 -p 参数, command 的查找是以 PATH 的默认值进行的。这样可以保证找到所有的标准工具。如果给出 -V 或者 -v 选项,关于 command 的说明将被打印出来。 -v 选项使得表述这个命令的词,或者要执行 command 需要执行的文件显示出来; -V 选项给出更详细的描述。如果给出 -V 或者 -v 选项,退出状态在找到了 command 的情况下0,没找到就是1。如果没有提供选项,并且产生了错误或者 command 没有找到,退出状态就是127。否则, command 内建命令的退出状态是 command 的退出状态。
- compgen [option] [word]
- 根据 option 为 word 产生可能的补全。option 是内建命令 complete 接受的任何选项,除了 -p 和 -r,将匹配结果写到标准输出。当使用 -F 或 -C 选项时,可编程补全功能所设置的多数 shell 变量如果存在,其值将不再有用。
产生的匹配与可编程补全代码根据补全规则加上相同的标志直接产生的结果相同。如果指定了 word,只有匹配 word 的补全结果将被显示出来。
返回值为真,除非提供了非法的选项,或者没有产生匹配。
- complete [-abcdefgjksuv] [-o comp-option] [-A action] [-G globpat] [-W wordlist] [-P prefix] [-S suffix]
[-X filterpat] [-F function] [-C command] name [name ...]- complete -pr [name ...]
- 指定每个 name 的参数应当如何被补全。如果给出了 -p
选项,或者没有选项给出,现有的补全规则将被显示出来,以一种可以重用为输入的格式显示。-r 选项将一个针对每个 name
的补全规则删除。或者,如果没有给出 name,将删除所有补全规则。
尝试词的补全时,应用这些补全规则的过程在上面 Programmable Completion(可编程补全) 中详述。
其他选项,如果给出的话,具有下列意义。-G, -W, 和 -X 选项的参数 (如果需要的话,还包括 -P 和 -S 选项) 应当被引用,避免在执行内建命令 complete 之前被扩展。
- -o comp-option
- comp-option 控制着 compspec 除了简单地产生补全之外的多种行为。 comp-option
可以是如下之一:
- default
- 使用 readline 的默认文件名补全,如果 compspec 没有得到匹配。
- dirnames
- 进行目录名补全,如果 compspec 没有得到匹配。
- filenames
- 告诉 readline,compspec 产生了文件名,使它可以进行任何文件名专用的处理 (例如,给目录名加上斜杠或消除尾部空白)。主要用于 shell 函数。
- nospace
- 告诉 readline 不要向补全的词在行的最后添加一个空格 (这是默认行为)。
- -A action
- action 可以是下列之一,来产生一系列可能的补全结果:
- alias
- 起别名。也可以用 -a 指定。
- arrayvar
- 数组变量名。
- binding
- Readline 按键关联。
- builtin
- shell 内建命令的名称。也可以用 -b 指定。
- command
- 命令名。也可以用 -c 指定。
- directory
- 目录名。也可以用 -d 指定。
- disabled
- 被禁用的内建命令名称。
- enabled
- 启用的内建命令名称。
- export
- 被导出的 shell 变量名称。也可以用 -e 指定。
- file
- 文件名。也可以用 -f 指定。
- function
- shell 函数的名称。
- group
- 组名。也可以用 -g 指定。
- helptopic
- 内建命令 help 接受的帮助主题。
- hostname
- 主机名,从环境变量 HOSTFILE 指定的文件中得到。
- job
- 作业名,如果作业控制被激活的话。也可以用 -j 指定。
- keyword
- shell 保留字。也可以用 -k 指定。
- running
- 正在运行的作业名,如果作业控制被激活的话。
- service
- 服务名。也可以用 -s 指定。
- setopt
- 内建命令 set 的 -o 选项的有效参数。
- shopt
- 内建命令 shopt 接受的 shell 选项名。
- signal
- 信号名。
- stopped
- 停止的作业名,如果作业控制被激活的话。
- user
- 用户名。也可以用 -u 指定。
- variable
- shell 变量的名称。也可以用 -v 指定。
- -G globpat
- 文件名扩展模式 globpat 被扩展,产生可能的补全。
- -W wordlist
- wordlist 被使用 IFS 特殊变量中的字符作为定界符来拆分,每个结果的词被扩展。可能的补全是结果列表中匹配要补全的词的那一些。
- -C command
- command 将在一个子 shell 环境中执行,它的结果用作可能的补全。
- -F function
- shell 函数 function 将在当前 shell 环境中执行。当它结束时,可能的补全可以从数组元素 COMPREPLY 中得到。
- -X filterpat
- filterpat 是一个模式,用于文件名扩展。所有前面的选项和参数产生的可能的补全都要经过这一步处理,每一个匹配 filterpat 的补全都被从列表中删除。为 filterpat 加上前导 ! 使模式意义相反;这种情况下,所有不匹配 filterpat 的模式被删除。
- -P prefix
- 在所有其他选项都处理过之后,prefix 被加到每个可能的补全前面。
- -S suffix
- 在所有其他选项都处理过之后,suffix 被加到每个可能的补全后面。
返回值为真,除非给出了非法的选项,给出除 -p 和 -r 之外的某个选项时没有给出 name 参数,试图删除一条 name 的补全规则但是规则不存在,或者添加补全规则时出错。
- continue [n]
- 复位到外层 for, while, until, 或 select 循环的下一次开始。如果指定了 n, 复位到向外第 n 层循环的开始。 n 必须 > 1。如果 n 比外部循环的层数要多,将复位到最外层的循环 (``top-level'' loop,顶层循环)。返回值是 0,除非执行 continue 时,shell 不是在循环之中。
- declare [-afFirtx] [-p] [name[=value]]
- typeset [-afFirtx] [-p] [name[=value]]
- 声明变量且/或设置它们的属性。如果没有给出 name 则显示变量的值。选项 -p 将显示每个名称 name
的属性和值。当使用 -p 时,其他选项被忽略。选项 -F 禁止显示函数定义;只有函数名和属性会被显示。 -F 选项暗含
-f. 下列选项可用来限制只输出具有指定属性的变量,或者为变量设置属性:
- -a
- 每个 name 都是数组变量 (参见上面的 Arrays 段落)。
- -f
- 只使用函数名。
- -i
- 变量被当作一个整数;当变量被赋值时将进行算术运算 (参见 算术求值 (ARITHMETIC EVALUATION) 章节)。
- -r
- 使得 name 只读。这些名称不能再被后续的赋值语句赋值或取消定义。
- -t
- 设置每个 name 的 trace(跟踪) 属性。被跟踪的函数继承了调用者 shell 的 DEBUG 陷阱。trace 属性对变量没有特殊意义。
- -x
- 标记 name 为可以通过环境导出给后续命令。
使用 `+' 代替 `-' 将关闭属性,特殊情况是 +a 不能用于销毁一个数组变量。当用于函数中时,它使得每个 name 成为局部的,就像使用了 local 命令。返回值是 0,除非遇到了非法的选项,试图使用 ``-f foo=bar'' 定义函数,试图向只读变量赋值,试图向数组变量赋值但没有使用复合的赋值语法 (参见上面的 Arrays 段落),name 之一不是有效的 shell 变量名,试图将数组变量的数组状态关闭,或者是试图使用 -f 显示一个不存在的函数。
- dirs [-clpv] [+n] [-n]
- 没有选项时显示当前保存的目录。默认输出为一行,目录名用空格分开。可以使用 pushd 命令将目录添加到列表, popd
命令将列表中的条目删除。
- +n
- 显示 dirs 在不带选项执行时显示的列表的第 n 个条目,从 0 开始自左算起。
- -n
- 显示 dirs 在不带选项执行时显示的列表的第 n 个条目,从 0 开始自右算起。
- -c
- 删除所有条目,清空目录栈。
- -l
- 产生长列表;默认列表格式使用波浪线来表示个人目录。
- -p
- 输出目录栈,一行一个。
- -v
- 输出目录栈,一行一个,每个条目前面加上它在栈中的位置索引。
返回值是 0,除非给出了非法的参数,或者 n 索引超出了目录栈的范围。
- disown [-ar] [-h] [jobspec ...]
- 没有选项时,每个 jobspec 被从正在运行的作业表中删除。如果给出了 - 选项,每个 jobspec 并不从表中删除,而是被标记,使得在 shell 接到 SIGHUP 信号时,不会向作业发出 SIGHUP 信号。如果没有给出 jobspec, 也没有给出 -a 或者 -r 选项,将使用当前作业 (current job)。如果没有给出 jobspec, 选项 -a 意味着删除或标记所有作业;选项 -r 不带 jobspec 参数时限制操作只对正在运行的作业进行。返回值是 0,除非 jobspec 不指定有效的作业。
- echo [-neE] [arg ...]
- 输出 arg,以空格分开,最后加一个新行符。返回值总是 0。如果指定了 -n,将不在尾部添加新行符。如果给出了
-e 选项,将允许解释下列反斜杠转义的字符。 -E 选项禁止这些转义字符的解释,即使在默认解释它们的系统中也是如此。 shell
选项 xpg_echo 可以用来在运行时判断 echo 是否默认展开这些转义字符。 echo 不将 --
作为选项的结束。 echo 解释下列转义序列:
- a
- alert (bell) 响铃
- backspace 回退
- c
- suppress trailing newline 删除尾部新行符
- e
- an escape character 字符 Esc
- f
- form feed 进纸
- new line 新行符
- carriage return 回车
- horizontal tab 水平跳格
- v
- vertical tab 竖直跳格
- \
- backslash 反斜杠