英语法语西班牙语

Ad


OnWorks 网站图标

bash - 云端在线

通过 Ubuntu Online、Fedora Online、Windows 在线模拟器或 MAC OS 在线模拟器在 OnWorks 免费托管服务提供商中运行 bash

这是可以使用我们的多个免费在线工作站之一在 OnWorks 免费托管服务提供商中运行的命令 bash,例如 Ubuntu Online、Fedora Online、Windows 在线模拟器或 MAC OS 在线模拟器

程序:

您的姓名


bash - GNU Bourne-Again 外壳

概要


打坏 [选项] [command_string | 文件]

版权


Bash 的版权 (C) 1989-2013 归自由软件基金会所有。

商品描述


是一个 sh- 兼容的命令语言解释器,执行从
标准输入或来自文件。 还结合了有用的功能 科恩C
贝壳(KSH长山壕).

旨在成为 Shell 和 Utilities 部分的一致实现
IEEE POSIX 规范(IEEE 标准 1003.1)。 可以配置为POSIX-
默认符合。

配置


描述中记录的所有单字符 shell 选项
内置命令可以在调用 shell 时用作选项。 此外, 打坏
在调用时解释以下选项:

-c 如果 -c 选项存在,然后从第一个非选项中读取命令
论点 命令字符串. 如果后面有争论 命令字符串, 他们
分配给位置参数,从 $0.
-i 如果 -i 选项存在,外壳是 互动.
-l 他们成为 打坏 就像它被作为登录 shell 调用一样(参见 召唤 下文)。
-r 如果 -r 选项存在,外壳变成 受限 (见 受限 SHELL
下文)。
-s 如果 -s 选项存在,或者如果选项处理后没有剩余参数,
然后从标准输入读取命令。 此选项允许
调用交互式 shell 时要设置的位置参数。
-D 所有以双引号括起来的字符串的列表 $ 印在标准上
输出。 这些是需要进行语言翻译的字符串
当前语言环境不是 C or POSIX. 这意味着 -n 选项; 没有命令会
被执行。
[-+]O [购物选项]
购物选项 是接受的 shell 选项之一 购物车 内置(见
SHELL 内置 指令 以下)。 如果 购物选项 存在, -O 设置值
那个选项; +O 取消设置。 如果 购物选项 未提供,名称和
接受的 shell 选项的值 购物车 印在标准上
输出。 如果调用选项是 +O, 输出以格式显示
可以作为输入重用。
-- A -- 表示选项结束并禁用进一步的选项处理。 任何
之后的争论 -- 被视为文件名和参数。 一个论点 -
相当于 --.

还解释了许多多字符选项。 这些选项必须出现在
要识别的单字符选项之前的命令行。

--调试器
安排调试器配置文件在 shell 启动之前执行。 打开
扩展调试模式(参见 扩展调试 选项 购物车
下面内置)。
- 降低点串
相当于 -D, 但输出在 GNU gettext的 po (可移植对象)文件
格式。
--转储字符串
相当于 -D.
- 帮帮我 在标准输出上显示使用消息并成功退出。
--init-文件 文件
--rc文件 文件
从执行命令 文件 而不是系统范围的初始化文件
/etc/bash.bashrc 和标准的个人初始化文件 在〜/ .bashrc 如果
shell 是交互式的(见 召唤 下文)。

- 登录
相当于 -l.

--无编辑
不要使用 GNU 的ReadLine 在 shell 启动时读取命令行的库
互动。

--无配置文件
不要读取系统范围的启动文件 / etc / profile 或任何个人
初始化文件 在〜/ .bash_profile, 〜/.bash_login〜/ .profile。 默认,
打坏 当它作为登录 shell 调用时读取这些文件(请参阅 召唤 下文)。

--诺克 不读取和执行系统范围的初始化文件 /etc/bash.bashrc
个人初始化文件 在〜/ .bashrc 如果外壳是交互式的。 这个
如果 shell 被调用为 sh.

--posix
改变行为 打坏 默认操作与 POSIX 不同的地方
标准匹配标准(POSIX 模式)。 看到 SEE ALSO 以下供参考
详细说明 posix 模式如何影响 bash 行为的文档。

- 受限制的
外壳变得受限(请参阅 受限 SHELL 下文)。

--详细
相当于 -v.

- 版
显示此实例的版本信息 打坏 在标准输出上并退出
成功。

争论


如果在选项处理后参数仍然存在,并且 -c 也不是 -s 选项已经
提供,假设第一个参数是包含 shell 的文件的名称
命令。 如果 打坏 以这种方式调用, $0 设置为文件名,并且
位置参数设置为其余参数。 读取并执行
来自该文件的命令,然后退出。 的退出状态是最后一次的退出状态
脚本中执行的命令。 如果没有执行任何命令,则退出状态为 0。
首先尝试打开当前目录中的文件,如果没有找到文件,
然后shell搜索目录 PATH 用于脚本。

召唤


A 登录 是一个参数零的第一个字符是 -, 或者开始于
- 登录 选项。

An 互动 shell 是一个没有非选项参数并且没有 -c 选项
其标准输入和错误都连接到终端(由
安逸(3)) 或一个以 -i 选项。 PS1 设置好了 $- 包括 i if 打坏 is
交互式,允许 shell 脚本或启动文件来测试这种状态。

以下段落描述了如何 打坏 执行其启动文件。 如果其中任何一个
文件存在但无法读取, 打坏 报告错误。 波浪号在文件名中展开
如下所述 波浪号 扩展 ,在 扩张 部分。

什么时候 打坏 作为交互式登录 shell 调用,或作为非交互式 shell 调用
- 登录 选项,它首先从文件中读取并执行命令 / etc / profile,如果该
文件已存在。 读取该文件后,它会查找 在〜/ .bash_profile, 〜/.bash_login
〜/ .profile, 按照这个顺序,从第一个存在的命令读取和执行命令
并且是可读的。 这 --无配置文件 选项可以在shell启动时使用禁止
这种行为。

当登录 shell 退出时, 打坏 从文件中读取并执行命令 〜/ .bash_logout,
如果它存在。

当一个不是登录 shell 的交互式 shell 启动时, 打坏 读取并执行
命令来自 /etc/bash.bashrc在〜/ .bashrc, 如果这些文件存在。 这可能被禁止
通过使用 --诺克 选项。 该 --rc文件 文件 选项将强制 打坏 读取和执行
命令来自 文件 而不是 /etc/bash.bashrc在〜/ .bashrc.

什么时候 打坏 以非交互方式启动,以运行 shell 脚本,例如,它查找
变量 bash_env 在环境中,如果它出现在那里就扩大它的价值,并使用
扩展值作为要读取和执行的文件的名称。 表现得好像
执行了以下命令:
如果 [ -n "$BASH_ENV" ]; 然后 。 "$BASH_ENV"; 菲
但其价值 PATH 变量不用于搜索文件名。

If 打坏 使用名称调用 sh,它试图模仿历史的启动行为
版本 sh 尽可能接近,同时也符合 POSIX 标准。
当作为交互式登录 shell 或非交互式 shell 调用时 - 登录
选项,它首先尝试从 / etc / profile〜/ .profile,
以该顺序。 这 --无配置文件 选项可用于禁止此行为。 调用时
作为具有名称的交互式外壳 sh, 打坏 寻找变量 ENV, 展开其
value 如果它被定义,并使用扩展的值作为文件名来读取和
执行。 由于 shell 调用为 sh 不尝试读取和执行命令
任何其他启动文件, --rc文件 选项无效。 非交互式外壳
用名字调用 sh 不尝试读取任何其他启动文件。 调用时
as sh, 打坏 εισέρχεται POSIX 读取启动文件后的模式。

什么时候 打坏 开始于 POSIX 模式,就像 --posix 命令行选项,它遵循
启动文件的 POSIX 标准。 在这种模式下,交互式 shell 扩展了 ENV
从名称为扩展名的文件中读取和执行变量和命令
价值。 不会读取其他启动文件。

尝试确定何时在其标准输入连接到
网络连接,当由远程 shell 守护进程执行时,通常 rshd,或
安全外壳守护进程 sshd的。 如果 打坏 确定它正在以这种方式运行,它读取
并执行来自 在〜/ .bashrc在〜/ .bashrc, 如果这些文件存在并且可读。
如果调用为,它不会这样做 sh。 该 --诺克 选项可用于禁止此
行为,以及 --rc文件 选项可用于强制读取另一个文件,但
也不 rshd 也不 sshd的 通常使用这些选项调用 shell 或允许它们
指定的。

如果 shell 以不等于真实用户的有效用户(组)ID 启动
(组) id, 和 -p 未提供选项,不读取启动文件,shell 函数
不是从环境中继承的, 贝壳类, 巴斯夫, CDPATH环球网
变量,如果它们出现在环境中,将被忽略,有效的用户 ID 是
设置为真实用户ID。 如果 -p 选项在调用时提供,启动行为
是一样的,但有效的用户 ID 不会被重置。

释义


本文档的其余部分使用了以下定义。
空白 空格或制表符。
被外壳视为单个单元的字符序列。 也被称为
象征.
姓名 A 仅由字母数字字符和下划线组成,并且开头
带有字母字符或下划线。 也被称为 识别码.
元字符
不加引号时用于分隔单词的字符。 以下之一:
| & ; ( ) < > 空间 标签
控制 操作者
A 象征 执行控制功能。 它是以下符号之一:
|| & && ; ;; ( ) | |&

RESERVED


保留的 是对外壳具有特殊含义的词。 下面的话
不加引号时被识别为保留,或者是简单命令的第一个单词
(见 SHELL 语法 下面)或 a 的第三个词 案件 or 命令:

! 案件 协力 do 完成 ELIF 其他 ESAC fi 功能 if in 选择 然后 直到 { }
[[ ]]

SHELL 语法


简易 命令
A 简单 命令 是一系列可选的变量赋值,后跟 空白-
分隔单词和重定向,并以 控制 操作者. 第一个字
指定要执行的命令,并作为参数零传递。 剩下的话
作为参数传递给调用的命令。

a的返回值 简单 命令 是它的退出状态,或者 128+n 如果命令是
信号终止 n.

管道
A 管道 是由一个控制运算符分隔的一个或多个命令的序列
| or |&. 管道的格式是:

[ [-p]] [ ! ] 命令 [[||&] command2 ...]

标准输出 命令 通过管道连接到标准输入 command2.
此连接在命令指定的任何重定向之前执行(请参阅
重定向 以下)。 如果 |& 用来, 命令的标准误,除了它的标准
输出,连接到 command2通过管道的标准输入; 它是简写
2>&1 |. 标准错误到标准输出的这种隐式重定向是
在命令指定的任何重定向之后执行。

管道的返回状态是最后一条命令的退出状态,除非
管道故障 选项已启用。 如果 管道故障 启用,管道的返回状态是
以非零状态退出的最后一个(最右边)命令的值,如果全部退出则为零
命令成功退出。 如果保留字 ! 在管道之前,退出状态
该管道的逻辑否定是如上所述的退出状态。 贝壳
在返回值之前等待管道中的所有命令终止。

如果 保留字位于管道之前,经过的时间以及用户和系统时间
当管道终止时报告其执行消耗。 这 -p 选项
将输出格式更改为 POSIX 指定的格式。 当外壳在 POSIX 模式,但
不认识 如果下一个标记以“-”开头,则作为保留字。 这
时间格式 变量可以设置为一个格式字符串,指定如何计时
应显示信息; 见描述 时间格式 变量
联络一位教师

当外壳在 POSIX 模式, 可以跟一个换行符。 在这种情况下,
shell 显示 shell 及其子进程消耗的用户和系统总时间。 这
时间格式 变量可用于指定时间信息的格式。

管道中的每个命令都作为单独的进程(即,在子外壳中)执行。

书单
A 名单 是由操作符之一分隔的一个或多个管道的序列 ;, &, &&,
or ||, 并可选地由其中之一终止 ;, &.

在这些列表运算符中, &&|| 具有相同的优先级,其次是 ;&, 其中有
同等优先。

一个或多个换行符的序列可能出现在 名单 而不是分号来分隔
命令。

如果命令被控制操作员终止 &,shell在执行命令
背景 在一个子外壳中。 shell 不会等待命令完成,并且
返回状态为 0。 由 a 分隔的命令 ; 依次执行; 外壳等待
每个命令依次终止。 返回状态是最后一次的退出状态
命令执行。

AND 和 OR 列表是多个管道之一的序列,由 &&|| 控制
运营商,分别。 AND 和 OR 列表以左结合性执行。 一个与
列表具有形式

command1 && command2

command2 执行当且仅当, command1 返回零退出状态。

OR 列表具有以下形式

command1 || command2

command2 被执行当且仅当 command1 返回非零退出状态。 回报
AND 和 OR 列表的状态是列表中执行的最后一个命令的退出状态。

复合肥产线 命令
A 复合 命令 是以下之一。 大多数情况下一个 名单 在命令的
描述可以通过一个或多个换行符与命令的其余部分分开,并且可以
后跟一个换行符代替分号。

(名单) 名单 在子shell环境中执行(参见 指挥 执行 环境
以下)。 影响 shell 的变量赋值和内置命令
命令完成后,环境不会保持有效。 退货状态
是退出状态 名单.

{ 名单;}
名单 只是在当前 shell 环境中执行。 名单 必须终止
带有换行符或分号。 这被称为 命令. 退货状态
是退出状态 名单. 请注意,与元字符不同 (), {}
,那恭喜你, 保留的 并且必须出现在允许保留字的地方
认可。 由于它们不会导致断字,因此必须将它们与 名单
通过空格或其他 shell 元字符。

((表达))
表达 根据下面描述的规则进行评估 算术
评估. 如果表达式的值非零,则返回状态为 0;
否则返回状态为 1。这完全等同于 "表达".

[[ 表达 ]]
根据条件表达式的计算返回 0 或 1 状态
表达. 表达式由下面描述的主要部分组成
有条件的 表情. 不进行分词和路径名扩展
之间的话 [[]]; 波浪号扩展、参数和变量
扩展、算术扩展、命令替换、进程替换和
执行引用删除。 条件运算符,例如 -f 必须不引用
被认定为初选。

当与 [[是, <> 运算符使用当前的字典顺序排序
地方。

见说明 test 内置命令(下面的 SHELL BUILTIN COMMANDS 部分)用于
参数的处理(即缺少参数)。

当。。。的时候 ==!= 使用运算符,运算符右侧的字符串是
被视为一种模式并根据下面描述的规则进行匹配 模式
匹配,好像 外部全局 外壳选项已启用。 这 = 运算符相当于
==. 如果外壳选项 无大小写匹配 已启用,则执行匹配而不考虑
字母字符的情况。 如果字符串匹配 (==),或
不匹配 (!=) 模式,否则为 1。 可以引用模式的任何部分
强制引用的部分作为字符串匹配。

一个额外的二元运算符, =~, 可用,具有相同的优先级 ==!=.
使用时,运算符右边的字符串被认为是扩展的正则
表达式并相应地匹配(如 正则表达式(3))。 如果字符串返回值为 0
匹配模式,否则为 1。 如果正则表达式在语法上是
不正确,条件表达式的返回值为 2。如果 shell 选项
无大小写匹配 启用时,不考虑字母大小写进行匹配
人物。 可以引用模式的任何部分以强制引用部分
作为字符串匹配。 必须处理正则表达式中的括号表达式
小心,因为正常的引用字符在括号之间失去意义。 如果
模式存储在一个shell变量中,引用变量扩展强制整个
要作为字符串匹配的模式。 用括号括起来的子表达式匹配的子字符串
正则表达式内保存在数组变量中 BASH_重新匹配。 元素
of BASH_重新匹配 索引 0 是匹配整个正则的字符串部分
表达。 的元素 BASH_重新匹配 带索引 n 是字符串的一部分
匹配 n括号中的子表达式。

可以使用以下运算符组合表达式,按降序排列
优先级:

( 表达 )
返回值 表达. 这可用于覆盖正常
运算符的优先级。
! 表达
真如果 表达 是错误的。
表达式1 && 表达式2
如果两者都为真 表达式1表达式2 是真的。
表达式1 || 表达式2
如果任一为真 表达式1 or 表达式2 是真的。

&&|| 运营商不评估 表达式2 如果的价值 表达式1 is
足以确定整个条件表达式的返回值。

姓名 [[ in [ ... ]]; ] do 名单 ; 完成
以下单词列表 in 展开,生成项目列表。 这
变量 姓名 依次设置到此列表的每个元素,并且 名单 被执行
每一次。 如果 in 被省略, 命令执行 名单 每人一次
设置的位置参数(见 有无库存 以下)。 返回状态是
执行的最后一个命令的退出状态。 如果扩展项目
以下 in 结果是一个空列表,没有执行任何命令,并返回
状态为 0。

(( 表达式1 ; 表达式2 ; 表达式3 )); do 名单 ; 完成
一、算术表达式 表达式1 根据规则进行评估
下面描述 算术 评估. 算术表达式 表达式2 is
然后反复求值,直到求值为零。 每一次 表达式2 评估为
一个非零值, 名单 被执行并且算术表达式 表达式3 is
评估。 如果任何表达式被省略,它的行为就像它的计算结果为 1。
返回值是最后一个命令的退出状态 名单 被执行,或
如果任何表达式无效,则为 false。

选择 姓名 [ in ]; do 名单 ; 完成
以下单词列表 in 展开,生成项目列表。 一套
扩展的单词打印在标准错误上,每个单词前面都有一个数字。 如果
in 被省略,位置参数被打印(见 有无库存 下文)。
PS3 然后显示提示并从标准输入中读取一行。 如果
行由与显示的单词之一对应的数字组成,然后
价值 姓名 设置为那个词。 如果该行为空,则单词和提示为
再次显示。 如果读取 EOF,则命令完成。 读取的任何其他值
原因 姓名 设置为空。 读取的行保存在变量中 回复。 该
名单 在每次选择后执行,直到 打破 命令被执行。 出口
状态 选择 是执行的最后一个命令的退出状态 名单, 或零
如果没有执行命令。

案件 in [ [(] 模式 [ | 模式 ] ...) 名单 ;; ] ... ESAC
A 案件 命令首先展开 ,并尝试将其与每个 模式 in
转,使用与路径名扩展相同的匹配规则(参见 路径名
扩展 以下)。 这 使用波浪号展开、参数和
变量扩展、算术替换、命令替换、过程
替换和引用删除。 每个 模式 检查使用波浪号扩展
扩展、参数和变量扩展、算术替换、命令
替代和过程替代。 如果外壳选项 无大小写匹配 is
启用时,不考虑字母大小写而执行匹配
人物。 当找到匹配时,对应的 名单 被执行。 如果 ;;
使用运算符,在第一个模式之后不会尝试后续匹配
比赛。 使用 ;& 代替 ;; 导致执行继续 名单
与下一组模式相关联。 使用 ;;& 代替 ;; 导致
shell 测试语句中的下一个模式列表(如果有),并执行任何
相关 名单 在一场成功的比赛中。 如果没有模式,退出状态为零
火柴。 否则就是最后执行的命令的退出状态 名单.

if 名单; 然后 名单; [ ELIF 名单; 然后 名单; ] ... [ 其他 名单; ] fi
if 名单 被执行。 如果其退出状态为零,则 然后 名单 被执行。
否则,每 ELIF 名单 依次执行,如果退出状态为零,则
相应 然后 名单 被执行并且命令完成。 否则, 其他
名单 被执行(如果存在)。 退出状态是最后一次的退出状态
命令已执行,如果没有条件测试为真,则为零。

列表-1; do 列表-2; 完成
直到 列表-1; do 列表-2; 完成
命令不断执行列表 列表-2 只要最后一个命令
在列表中 列表-1 返回零退出状态。 这 直到 命令是相同的
命令,除了测试被否定; 列表-2 执行多久
作为最后一个命令 列表-1 返回非零退出状态。 的退出状态
直到 commands 是执行的最后一个命令的退出状态
列表-2,如果没有被执行,则为零。

协程
A 协程 是一个以 协力 保留字。 一个协程是
在子 shell 中异步执行,就好像命令已被终止 &
控制操作符,在执行 shell 和被执行的 shell 之间建立了一个双向管道
协程。

协进程的格式是:

协力 [您的姓名] 命令 [重定向]

这将创建一个名为的协进程 您的姓名。 如果 您的姓名 未提供,默认名称为 协处理.
您的姓名 不得提供,如果 命令 是一个 简单 命令 (看上面); 否则,它是
解释为简单命令的第一个单词。 协程执行时,
shell 创建一个数组变量(见 阵列 下面)命名 您的姓名 在上下文中
执行shell。 标准输出 命令 通过管道连接到文件
正在执行的 shell 中的描述符,并且该文件描述符被分配给 您的姓名[0]。 这
标准输入 命令 通过管道连接到正在执行的文件描述符
shell,并且该文件描述符被分配给 您的姓名[1]。 这个管道是在之前建立的
命令指定的任何重定向(请参阅 重定向 以下)。 文件描述符
可以用作使用标准字的 shell 命令和重定向的参数
扩展。 文件描述符在子 shell 中不可用。 进程ID
为执行协进程而生成的 shell 可用作变量的值 您的姓名_PID。
等待 内置命令可用于等待协进程终止。

由于协进程是作为异步命令创建的,因此 协力 总是命令
返回成功。 协程的返回状态是 命令.

功能 定义
shell 函数是一个对象,它像一个简单的命令一样被调用并执行一个复合
命令带有一组新的位置参数。 Shell 函数声明如下:

姓名 () 复合命令 [重定向]
功能 姓名 [()] 复合命令 [重定向]
这定义了一个名为的函数 姓名. 保留字 功能 是可选的。 如果
功能 提供了保留字,括号是可选的。 这 身体 of
该函数是复合命令 复合命令 (见 复合肥产线 命令
以上)。 该命令通常是 名单 { 和 } 之间的命令,但可以是任何
下面列出的命令 复合肥产线 命令 以上。 复合命令 被执行
每当 姓名 被指定为一个简单命令的名称。 当在 POSIX 模式,
姓名 可能不是 POSIX 之一的名称 特别 内置函数. 任何重定向
(见 重定向 下面)在定义函数时指定
函数被执行。 函数定义的退出状态为零,除非
发生语法错误或已存在同名的只读函数。 什么时候
执行,函数的退出状态就是最后一条命令的退出状态
在体内执行。 (看 职能 下面。)

评论


在非交互式 shell 或交互式 shell 中 互动评论
选项 购物车 内置已启用(请参阅 SHELL 内置 指令 下面),一个词
以。。。开始 # 导致该单词和该行上所有剩余的字符被忽略。
一个交互式 shell,没有 互动评论 选项启用不允许
注释。 这 互动评论 选项在交互式 shell 中默认打开。

引用


引用 用于去除某些字符或单词对外壳的特殊含义。
引用可用于禁用对特殊字符的特殊处理,以防止
保留字被识别为这样,并防止参数扩展。

的每一个 元字符 上面列出的 释义 对壳有特殊意义
如果要代表自己,则必须引用。

当使用命令历史扩展工具时(参见 历史 扩张
以下 历史 扩张 性格,通常 !, 必须引用以防止历史
扩张。

存在三种引用机制: 逃生 字符、单引号和双引号
引号。

未引用的反斜杠 (\)是 逃生 字符. 它保留了字面值
下一个字符,除了. 如果一个 \一对
出现,并且反斜杠本身没有被引用, \被视为一条线
继续(即从输入流中删除并有效地忽略)。

将字符括在单引号中可保留其中每个字符的字面值
报价。 单引号之间不能出现单引号,即使前面有
反斜杠。

用双引号括起来的字符会保留其中所有字符的字面值
报价,除了 $, `, \,并且,当启用历史扩展时, !。 该
字符 $` 在双引号内保留它们的特殊含义。 反斜杠
仅在后跟以下字符之一时保留其特殊含义: $, `,
", \. 双引号可以通过在双引号内引用
带反斜杠。 如果启用,将执行历史扩展,除非 ! 出现
在双引号中使用反斜杠进行转义。 前面的反斜杠 ! 是不是
除去。

特殊参数 *@ 在双引号中具有特殊含义(请参阅 有无库存
下文)。

形式词 $'绳子'受到特殊对待。 这个词扩展为 绳子,
按照 ANSI C 标准的规定替换反斜杠转义字符。 反斜杠
转义序列(如果存在)按如下方式解码:
\a 警报(铃)
\b 退格
\e
\E 转义字符
\f 换页
\n 新队
\r 回车
\t 水平标签
\v 垂直制表符
\\ 反斜线
\' 单引号
\" 双引号
\NNN 值为八进制值的八位字符 NNN (一到三
数字)
\xHH 值为十六进制值的八位字符 HH (一个或两个
十六进制数字)
\uH Unicode (ISO/IEC 10646) 字符,其值为十六进制值
H (一到四个十六进制数字)
\U哈哈哈哈哈
Unicode (ISO/IEC 10646) 字符,其值为十六进制值
哈哈哈哈哈 (一到八个十六进制数字)
\cx 一个控制——x 字符

扩展结果是单引号的,就好像美元符号不存在一样。

以美元符号 ($"绳子") 将导致字符串
根据当前语言环境翻译。 如果当前语言环境是 C or POSIX是,
美元符号被忽略。 如果字符串被翻译和替换,则替换为
双引号。

有无库存


A 参数 是一个存储值的实体。 它可以是一个 姓名,一个数字,或其中之一
下面列出的特殊字符 Special 参数。 一个 变量 是一个参数
表示为 姓名. 一个变量有一个 折扣值 零个或多个 属性. 属性是
使用分配 宣布 内置命令(见 宣布 下面在 SHELL 内置 指令).

如果一个参数已被赋值,则该参数被设置。 空字符串是有效值。
一旦设置了变量,只能通过使用 未设定 内置命令(见 SHELL
内置 指令 下文)。

A 变量 可以通过以下形式的声明分配给

姓名=[折扣值]

If 折扣值 未给出,变量被分配空字符串。 全部 价值观 经历波浪号
扩展、参数和变量扩展、命令替换、算术扩展、
和引用删除(见 扩张 以下)。 如果变量有它的 整数 属性集,
然后 折扣值 即使 $((...)) 扩展不是算术表达式
使用(见 算术 扩展 以下)。 不进行分词,使用
的例外 “$@” 如下所述 Special 参数. 路径名扩展不是
执行。 赋值语句也可以作为参数出现 别号, 宣布,
排版, 出口, 只读本地 内置命令。 当在 POSIX 模式, 这些内置函数
可能出现在命令中的一个或多个实例之后 命令 内置和保留
这些赋值语句属性。

在赋值语句为 shell 变量赋值的上下文中,或者
数组索引,+= 运算符可用于追加或添加到变量的前一个
价值。 当 += 应用于变量时 整数 属性已设置,
折扣值 计算为算术表达式并添加到变量的当前值,
这也被评估。 当使用复合将 += 应用于数组变量时
分配(见 阵列 下面),变量的值未设置(就像使用 = 时一样),
并将新值附加到数组中,从大于数组最大值的 XNUMX 开始
索引(用于索引数组)或作为关联数组中的附加键值对添加。
当应用于字符串值变量时, 折扣值 被扩展并附加到变量的
计算值。

一个变量可以赋值 名称引用 属性使用 -n 选项 宣布 or
本地 内置命令(请参阅 宣布本地 下面)创建一个
名称引用,或对另一个变量的引用。 这允许操作变量
间接地。 每当 nameref 变量被引用或赋值时,操作是
实际上对 nameref 变量的值指定的变量执行。 一个名称引用
通常在 shell 函数中用于引用名称作为参数传递的变量
函数的参数。 例如,如果一个变量名被传递给一个 shell 函数
作为它的第一个参数,运行
声明 -n ref=$1
在函数内部创建一个 nameref 变量 文献 其值为传递的变量名
作为第一个论点。 参考文献和赋值 文献 被视为参考和
对其名称作为传递的变量的赋值 $1. 如果控制变量在
loop 有 nameref 属性,单词列表可以是 shell 变量列表,还有一个
将依次为列表中的每个单词建立名称引用,当循环
执行。 数组变量不能被赋予 -n 属性。 但是,nameref 变量
可以引用数组变量和下标数组变量。 Namerefs 可以取消设置
使用 -n 选项 未设定 内置。 否则,如果 未设定 以名称执行
nameref 变量作为参数,nameref 变量引用的变量将
取消设置。

位置 参数
A 阵地 参数 是由一位或多位数字表示的参数,而不是单个
数字 0。位置参数是从 shell 的参数中分配的
被调用,并且可以使用 内置命令。 位置参数可能
不能用赋值语句赋值。 位置参数是暂时的
执行 shell 函数时替换(请参阅 职能 下文)。

当一个由多于一位数组成的位置参数被扩展时,它必须是
括在大括号中(见 扩张 下文)。

Special 参数
shell 对几个参数进行了特殊处理。 这些参数只能被引用;
不允许分配给他们。
* 扩展到位置参数,从 XNUMX 开始。 当扩展不
在双引号内,每个位置参数扩展为一个单独的词。 在
在执行它的上下文中,这些词会受到进一步的分词
和路径名扩展。 当扩展发生在双引号内时,它会扩展
到单个单词,每个参数的值由第一个字符分隔
IFS的 特殊变量。 那是, ”$*“相当于”$1c$2c...“,在哪里 c
是值的第一个字符 IFS的 多变的。 如果 IFS的 未设置,
参数用空格分隔。 如果 IFS的 为空,参数加入
没有中间分隔符。
@ 扩展到位置参数,从 XNUMX 开始。 发生膨胀时
在双引号内,每个参数扩展为一个单独的词。 那是, ”$@“是
相当于 ”$1“”$2" ... 如果双引号扩展出现在一个单词中,
第一个参数的扩展与
原始词,最后一个参数的扩展与最后一部分连接
的原词。 当没有位置参数时,“$@“而 $@ 扩大
无(即,它们被删除)。
# 扩展到十进制位置参数的数量。
? 扩展到最近执行的前台管道的退出状态。
- 扩展到调用时指定的当前选项标志,由
内置命令,或由 shell 本身设置的命令(例如 -i 选项)。
$ 扩展到 shell 的进程 ID。 在 () 子shell中,它扩展为
当前shell的进程ID,而不是子shell。
! 扩展到最近放入后台的作业的进程 ID,
无论是作为异步命令执行还是使用 bg 内置(见 JOB
控制 下文)。
0 扩展到 shell 或 shell 脚本的名称。 这是在shell中设置的
初始化。 如果 打坏 使用命令文件调用, $0 设置为名称
那个文件。 如果 打坏-c 选项,然后 $0 设置为第一个
要执行的字符串后的参数(如果存在)。 否则设置
到用于调用的文件名 打坏,由参数零给出。
_ 在 shell 启动时,设置为用于调用 shell 或 shell 的绝对路径名
在环境或参数列表中传递的脚本正在执行。 随后,
扩展后扩展到上一个命令的最后一个参数。 还设置为
用于调用每个执行并放置在
环境导出到该命令。 检查邮件时,此参数包含
当前正在检查的邮件文件的名称。

变量
以下变量由 shell 设置:

BASH 扩展到用于调用此实例的完整文件名 打坏.
巴斯夫
以冒号分隔的已启用 shell 选项列表。 列表中的每个单词都是有效的
的论据 -s 选项 购物车 内置命令(见 SHELL 内置 指令
以下)。 出现的选项 巴斯夫 是那些报告为 on by 购物车。 如果
这个变量在环境中时 打坏 启动时,每个 shell 选项中的
list 将在读取任何启动文件之前启用。 该变量是只读的。
巴什PID
扩展到当前进程ID 打坏 过程。 这不同于 $$
某些情况下,例如不需要的子外壳 打坏 重新
初始化。
BASH_别名
一个关联数组变量,其成员对应于
由维护的别名 别号 内置。 添加到此数组的元素出现在
别名列表; 取消设置数组元素会导致从别名中删除别名
名单。
BASH_ARGC
一个数组变量,其值是每个帧中的参数数量
当前 打坏 执行调用栈。 当前的参数个数
子程序(shell 函数或脚本用 . or 资源) 位于顶部
堆栈。 执行子程序时,传递的参数个数为
推到 BASH_ARGC. 壳套 BASH_ARGC 仅在扩展调试时
模式(见描述 扩展调试 选项 购物车 下面内置)
BASH_ARGV
包含当前所有参数的数组变量 打坏 执行
调用栈。 最后一个子程序调用的最后一个参数在
堆; 初始调用的第一个参数在底部。 当一个子程序
被执行,提供的参数被推送到 BASH_ARGV. 壳套
BASH_ARGV 仅在扩展调试模式下(参见 扩展调试
选项 购物车 下面内置)
BASH_CMDS
一个关联数组变量,其成员对应于内部哈希表
由维护的命令 哈希 内置。 添加到此数组的元素出现
在哈希表中; 取消设置数组元素会导致命令从
哈希表。
巴什命令
当前正在执行或即将执行的命令,除非 shell 是
作为陷阱的结果执行命令,在这种情况下它是命令
在陷阱发生时执行。
BASH_EXECUTION_STRING
命令参数 -c 调用选项。
BASH_LINE否
一个数组变量,其成员是源文件中的行号,其中每个
对应成员 函数名 被调用。 ${BASH_LINENO[$i]} 是线
源文件中的编号(${BASH_SOURCE[$i+1]}) 在哪里 ${函数名[$i]} 被称为
(或 ${BASH_LINENO[$i-1]} 如果在另一个 shell 函数中引用)。 用 线诺
获取当前行号。
BASH_重新匹配
一个数组变量,其成员由 =~ 二元运算符 [[
条件命令。 索引为 0 的元素是字符串的一部分
匹配整个正则表达式。 带索引的元素 n
匹配的字符串 n括号中的子表达式。 这个变量被读取-
只。
BASH_SOURCE
一个数组变量,其成员是源文件名,其中对应的
shell 中的函数名 函数名 定义了数组变量。 贝壳
功能 ${函数名[$i]} 在文件中定义 ${BASH_SOURCE[$i]} 并从
${BASH_SOURCE[$i+1]}.
BASH_SUBSHELL
当 shell 在每个子 shell 或子 shell 环境中增加 XNUMX
开始在该环境中执行。 初始值为 0。
BASH_VERSINFO
一个只读数组变量,其成员保存此实例的版本信息
of 打坏. 分配给数组成员的值如下:
BASH_VERSINFO[0] 主要版本号( 释放).
BASH_VERSINFO[1] 次要版本号( 版本).
BASH_VERSINFO[2] 补丁级别。
BASH_VERSINFO[3] 构建版本。
BASH_VERSINFO[4] 发布状态(例如, beta1).
BASH_VERSINFO[5] 价值 机器类型.
BASH_VERSION 版本
扩展为描述此实例版本的字符串 打坏.
COMP_CWORD
一个索引 ${COMP_WORDS} 包含当前光标位置的单词。
此变量仅在由可编程序调用的 shell 函数中可用
完成设施(见 可编程 完成 下文)。
COMP_KEY
用于调用当前完成的键(或键序列的最终键)
功能。
COMP_LINE
当前命令行。 此变量仅在 shell 函数中可用,并且
由可编程完成工具调用的外部命令(参见
可编程 完成 下文)。
comp_point
当前光标位置相对于当前开头的索引
命令。 如果当前光标位置在当前命令的末尾,则
这个变量的值等于 ${#COMP_LINE}. 此变量仅可用
在 shell 函数和由可编程完成调用的外部命令中
设施(见 可编程 完成 下文)。
COMP_类型
设置为与尝试的完成类型相对应的整数值
导致调用完成函数: TAB,对于正常完成, ?,为
在连续选项卡后列出完成, !, 用于列出部分的替代方案
单词完成, @, 如果单词未被修改,则列出补全​​,或 %,为
菜单完成。 此变量仅在 shell 函数和外部函数中可用
由可编程完成工具调用的命令(参见 可编程
完成 下文)。
COMP_WORDBREAKS
字符集 的ReadLine 库在以下情况下视为单词分隔符
执行单词完成。 如果 COMP_WORDBREAKS 未设置,它失去了它的特殊性
属性,即使它随后被重置。
comp_words
一个数组变量(见 阵列 下面)由单个单词组成
当前命令行。 该行被拆分为单词 的ReadLine 会把它分开,
运用 COMP_WORDBREAKS 如上所述。 此变量仅在 shell 中可用
由可编程完成工具调用的函数(参见 可编程
完成 下文)。
协处理 一个数组变量(见 阵列 下面)创建用于保存文件描述符
未命名协进程的输出和输入(参见 协程 以上)。
直接堆栈
一个数组变量(见 阵列 下面)包含当前的内容
目录栈。 目录按照它们的显示顺序出现在堆栈中
迪尔斯 内置。 分配给该数组变量的成员可用于
修改已经在堆栈中的目录,但是 PUSHD波普德 内置函数必须是
用于添加和删除目录。 分配给这个变量不会改变
当前目录。 如果 直接堆栈 未设置,它失去了它的特殊属性,即使
如果它随后被重置。
用户标识符 扩展为当前用户的有效用户 ID,在 shell 启动时初始化。
该变量是只读的。
函数名
包含当前所有 shell 函数名称的数组变量
执行调用栈。 索引为 0 的元素是任何当前的名称-
执行shell函数。 最底部的元素(索引最高的元素)
是“主要”。 此变量仅在执行 shell 函数时存在。
分配给 函数名 无效并返回错误状态。 如果 函数名 is
未设置,它会失去它的特殊属性,即使它随后被重置。

此变量可用于 BASH_LINE否BASH_SOURCE. 的每个元素
函数名 有对应的元素 BASH_LINE否BASH_SOURCE 描述
调用栈。 例如, ${函数名[$i]} 从文件中调用
${BASH_SOURCE[$i+1]} 在行号 ${BASH_LINENO[$i]}。 该 呼叫者 内建的
使用此信息显示当前调用堆栈。
包含当前用户所属组列表的数组变量
成员。 分配给 无效并返回错误状态。 如果
未设置,它会失去其特殊属性,即使随后被重置。
HITCMD
当前命令的历史编号或历史列表中的索引。 如果
HITCMD 未设置,它将失去其特殊属性,即使随后
重启。
主机名
自动设置为当前主机的名称。
主机类型
自动设置为唯一描述机器类型的字符串
打坏 正在执行。 默认值取决于系统。
线诺 每次引用此参数时,shell 都会替换一个十进制数
表示脚本中的当前顺序行号(从 1 开始)
或功能。 当不在脚本或函数中时,替换的值不是
保证有意义。 如果 线诺 未设置,它失去了它的特殊属性,
即使它随后被重置。
机器类型
自动设置为完整描述系统类型的字符串 打坏 is
在标准 GNU 中执行 cpu-公司系统 格式。 默认是系统-
依赖。
地图文件
一个数组变量(见 阵列 下面)创建用于保存由读取的文本 地图文件
当没有提供变量名时内置。
老残疾人 之前设置的工作目录 cd 命令。
OPTARG 处理的最后一个选项参数的值 获取选项 内置命令(见
SHELL 内置 指令 下文)。
选择 要处理的下一个参数的索引 获取选项 内置命令(见
SHELL 内置 指令 下文)。
操作系统类型 自动设置为描述操作系统的字符串 打坏 is
执行。 默认值取决于系统。
管道状态
一个数组变量(见 阵列 下面)包含来自的退出状态值列表
最近执行的前台管道中的进程(可能包含
只有一个命令)。
PPID shell 的父进程 ID。 该变量是只读的。
PWD 由设置的当前工作目录 cd 命令。
随机 每次引用这个参数时,0到32767之间的随机整数是
生成。 随机数序列可以通过赋值来初始化
随机。 如果 随机 未设置,它会失去它的特殊属性,即使它是
随后复位。
阅读LINE_LINE
的内容 的ReadLine 行缓冲区,与“bind -x”一起使用(参见 SHELL 内置
指令 下文)。
READLINE_POINT
插入点的位置 的ReadLine 行缓冲区,用于“绑定”
-x”(见 SHELL 内置 指令 下文)。
回复 设置为读取的输入行 没有参数时的内置命令
提供。
SECONDS
每次引用此参数时,自 shell 以来的秒数
调用被返回。 如果一个值被赋值给 SECONDS, 返回的值
后续引用是自赋值以来的秒数加上值
分配。 如果 SECONDS 未设置,它会失去它的特殊属性,即使它是
随后复位。
贝壳类
以冒号分隔的已启用 shell 选项列表。 列表中的每个单词都是有效的
的论据 -o 选项 内置命令(见 SHELL 内置 指令
以下)。 出现的选项 贝壳类 是那些报告为 on by -o。 如果
这个变量在环境中时 打坏 启动时,每个 shell 选项中的
list 将在读取任何启动文件之前启用。 该变量是只读的。
SLVL 每次增加一个实例 打坏 开始。
UID 扩展为当前用户的用户 ID,在 shell 启动时初始化。 这个
变量是只读的。

以下变量由 shell 使用。 在某些情况下, 打坏 分配一个默认值
变量的值; 这些情况如下所述。

BASH_COMPAT
该值用于设置 shell 的兼容性级别。 见说明
购物车 下面内置 SHELL 内置 指令 的描述
各种兼容级别及其影响。 该值可能是十进制数
(例如,4.2)或与所需兼容性相对应的整数(例如,42)
等级。 如果 BASH_COMPAT 未设置或设置为空字符串,兼容级别
设置为当前版本的默认值。 如果 BASH_COMPAT 被设置为一个值
这不是有效的兼容级别之一,shell 会打印错误
message 并将兼容性级别设置为当前版本的默认值。
有效的兼容性级别对应于接受的兼容性选项
购物车 下面描述的内置(例如, 兼容42 意味着 4.2 和 42 是
有效值)。 当前版本也是一个有效值。
bash_env
如果设置此参数时 打坏 正在执行一个shell脚本,它的值是
解释为包含初始化 shell 的命令的文件名,如
在〜/ .bashrc。 的价值 bash_env 受参数扩展,命令
在被解释为文件名之前替换和算术扩展。
PATH 不用于搜索结果文件名。
BASH_XTRACEFD
如果设置为对应于有效文件描述符的整数, 打坏 会写
跟踪输出生成时 -x 已启用该文件描述符。 文件
描述符关闭时 BASH_XTRACEFD 未设置或分配了新值。
取消设置 BASH_XTRACEFD 或为其分配空字符串会导致跟踪输出
被发送到标准错误。 注意设置 BASH_XTRACEFD 到 2(标准
错误文件描述符),然后取消设置它会导致标准错误
被关闭。
CDPATH 的搜索路径 cd 命令。 这是一个以冒号分隔的目录列表
shell 在其中查找指定的目标目录 cd 命令。
示例值为“.:~:在/ usr".
最大儿童数
设置 shell 要记住的退出子状态值的数量。 Bash 将
不允许将此值降低到 POSIX 规定的最小值以下,并且有一个
这可能不会超过的最大值(当前为 8192)。 最小值是
系统依赖。

使用的 选择 打印时确定终端宽度的复合命令
选择列表。 自动设置,如果 检查大小 选项已启用或在
收到一个交互式 shell 信号绞盘.
完全
一个数组变量,其中 打坏 读取由 a 生成的可能完成
由可编程完成工具调用的 shell 函数(请参阅 可编程
完成 以下)。 每个数组元素都包含一个可能的补全。
埃玛斯 If 打坏 当 shell 以 value 开始时,在环境中找到这个变量
“t”,它假定 shell 在 Emacs shell 缓冲区中运行并禁用
行编辑。
ENVbash_env; 在 POSIX 模式下调用 shell 时使用。
编辑部 的默认编辑器 fc 内置命令。
菲诺
执行文件名补全时要忽略的以冒号分隔的后缀列表
(见 在线阅读 以下)。 后缀与以下条目之一匹配的文件名
菲诺 从匹配的文件名列表中排除。 示例值为“.o:~”
(在为此变量赋值时需要引用,其中包含波浪号)。
最有趣
如果设置为大于 0 的数值,则定义最大函数嵌套级别。
超过此嵌套级别的函数调用将导致当前命令
中止。
环球网
以冒号分隔的模式列表,定义要被忽略的文件名集
路径名扩展。 如果与路径名扩展模式匹配的文件名也
匹配中的模式之一 环球网,它将从匹配列表中删除。
组织控制
以冒号分隔的值列表,用于控制命令在历史记录中的保存方式
列表。 如果值列表包括 忽略空间, 以 a 开头的行 空间
字符不会保存在历史列表中。 一个值 被忽略 导致线条
匹配之前的历史条目不被保存。 一个值 忽略两者 is
简写 忽略空间被忽略. 一个值 删除 导致所有以前的
与要从历史列表中删除的当前行匹配的行
行被保存。 任何不在上述列表中的值都将被忽略。 如果 组织控制 is
未设置或不包含有效值,shell 解析器读取的所有行都是
保存在历史列表中,以 历史忽略. 第二个和
不测试多行复合命令的后续行,并添加到
无论历史价值如何 组织控制.
历史档案
保存命令历史的文件的名称(参见 历史 以下)。 这
默认值为 ~ / .bash_history. 如果未设置,则不会保存命令历史记录
一个外壳退出。
历史文件大小
历史文件中包含的最大行数。 当这个变量是
分配一个值,历史文件被截断,如有必要,不包含更多
通过删除最旧的条目来超过该行数。 历史文件也是
在 shell 退出时写入后截断到这个大小。 如果值为 0,则
历史文件被截断为零大小。 非数值和数值减
比零禁止截断。 shell 将默认值设置为
历史大小 阅读任何启动文件后。
历史忽略
一个以冒号分隔的模式列表,用于决定哪些命令行应该是
保存在历史列表中。 每个模式都锚定在行的开头
并且必须匹配整行(没有隐含的`*' 被附加)。 每个图案都是
在指定的检查之后对线路进行测试 组织控制 被应用。 在
除了正常的 shell 模式匹配字符,`&' 匹配上一个
历史线。 `&' 可以使用反斜杠进行转义; 反斜杠被删除
在尝试比赛之前。 多行的第二行和后续行
复合命令没有被测试,并且被添加到历史记录中,而不管
价值 历史忽略.
历史大小
命令历史记录中要记住的命令数(请参阅 历史 以下)。 如果
值为 0,命令不保存在历史列表中。 数值减
大于零会导致每个命令都保存在历史列表中(没有
限制)。 在读取任何启动文件后,shell 将默认值设置为 500。
历史时间格式
如果此变量已设置且不为空,则其值将用作格式字符串
时间(3) 打印与显示的每个历史条目相关的时间戳
历史 内置。 如果设置了这个变量,时间戳被写入
历史文件,以便它们可以在 shell 会话中保存。 这使用历史
注释字符以将时间戳与其他历史行区分开来。
首页 当前用户的家目录; 的默认参数 cd 内建的
命令。 执行波浪号扩展时也使用此变量的值。
主机文件
包含与文件格式相同的文件名 / etc / hosts文件 应该读
当 shell 需要完成主机名时。 可能的主机名列表
在 shell 运行时可能会更改完成; 下次主机名
在更改值后尝试完成, 打坏 添加内容
将新文件添加到现有列表中。 如果 主机文件 已设置,但没有值,或没有
命名一个可读文件, 打坏 尝试阅读 / etc / hosts文件 获取列表
可能的主机名补全。 什么时候 主机文件 未设置,主机名列表是
清除。
IFS的 内部 领域 分隔器 用于扩展后的分词和
将行拆分为单词 内置命令。 默认值为
`` ''。
忽略
控制交互式 shell 在接收到一个 EOF 性格作为
唯一输入。 如果设置,该值是连续的数量 EOF 字符
必须在输入行的第一个字符之前键入 打坏 退出。 如果
变量存在但没有数值,或者没有数值,默认
值为 10。如果不存在, EOF 表示对 shell 的输入结束。
输入法
文件名 的ReadLine 启动文件,覆盖默认 〜/ .inputrc
(见 在线阅读 下文)。
用于确定未特别选择的任何类别的语言环境类别
以变​​量开头 LC_.
LC_ALL 这个变量覆盖了 和其他 LC_ 变量指定一个
语言环境类别。
LC_COLLATE
此变量确定排序结果时使用的整理顺序
路径名扩展,并确定范围表达式的行为,等价
类,以及路径名扩展和模式匹配中的整理序列。
LC_CTYPE
这个变量决定了字符的解释和行为
路径名扩展和模式匹配中的字符类。
LC_消息
此变量确定用于翻译双引号字符串的语言环境
前面有一个 $.
LC_NUMERIC
此变量确定用于数字格式的区域设置类别。
线数 使用的 选择 确定打印列长度的复合命令
选择列表。 自动设置,如果 检查大小 选项已启用或在
收到一个交互式 shell 信号绞盘.
邮箱地址 如果此参数设置为文件或目录名称,并且 邮路 变量是
没有设置, 打坏 通知用户指定文件中的邮件到达或
Maildir 格式的目录。
邮件检查
指定频率(以秒为单位) 打坏 检查邮件。 默认值为 60 秒。
当需要检查邮件时,shell 会在显示主要邮件之前这样做
迅速的。 如果此变量未设置,或设置为不大于数字的值
大于或等于零,shell 禁用邮件检查。
邮路
要检查邮件的以冒号分隔的文件名列表。 要发送的消息
当邮件到达特定文件时打印可以通过分隔
带有“?”的消息中的文件名。 在消息正文中使用时, $_
扩展为当前邮件文件的名称。 例子:
邮路='/var/mail/bfox?“你有邮件”:~/shell 邮件?"$_ 有邮件!"'
为这个变量提供一个默认值,但用户邮件的位置
它使用的文件是系统相关的(例如, /var/邮件/$ USER).
奥普特 如果设置为值 1, 打坏 显示由 获取选项
内置命令(见 SHELL 内置 指令 下文)。 奥普特 被初始化为 1
每次调用 shell 或执行 shell 脚本时。
PATH 命令的搜索路径。 它是一个以冒号分隔的目录列表,其中
shell 寻找命令(见 指挥 执行 以下)。 零长度(空)
值中的目录名 PATH 表示当前目录。 一个空
目录名称可以显示为两个相邻的冒号,或者显示为首字母或结尾
冒号。 默认路径取决于系统,由管理员设置
安装 打坏. 一个常见的值是``在/ usr / local / bin目录:/ usr / local / sbin:/ usr / bin:
/ usr / sbin:/箱:/宾''。
POSIXLY_CORRECT
如果这个变量在环境中,当 打坏 启动,shell进入 POSIX
模式 在读取启动文件之前,好像 --posix 调用选项已经
提供。 如果它是在 shell 运行时设置的, 打坏 使 POSIX 模式,好像
命令 -o POSIX 已被处决。
提示命令
如果设置,该值在发出每个主要提示之前作为命令执行。
PROMPT_DITRIM
如果设置为大于零的数字,则该值用作尾随的数量
扩展时要保留的目录组件 \w\W 提示字符串转义
(见 提示 以下)。 删除的字符将替换为省略号。
PS1 这个参数的值被扩展了(见 提示 下面)并用作
主要提示字符串。 默认值为``\s-\v\$ ''。
PS2 这个参数的值被扩展为 PS1 并用作辅助
提示字符串。 默认为``> ''。
PS3 该参数的值用作提示 选择 命令(见 SHELL
语法 以上)。
PS4 这个参数的值被扩展为 PS1 并且该值之前打印
每个命令 打坏 在执行跟踪期间显示。 的第一个字符 PS4
根据需要多次复制,以指示多个级别
间接。 默认为``+ ''。
SHELL shell 的完整路径名保存在此环境变量中。 如果不是
在 shell 启动时设置, 打坏 为它分配当前的完整路径名
用户的登录外壳。
时间格式
此参数的值用作指定计时方式的格式字符串
带有前缀的管道的信息 应显示保留字。
% 字符引入了扩展为时间值的转义序列或
其他信息。 转义序列及其含义如下; 这
大括号表示可选部分。
%% 一个字面意思 %.
%[p][l]R 经过的时间(以秒为单位)。
%[p][鲁 在用户模式下花费的 CPU 秒数。
%[p][l]S 在系统模式下花费的 CPU 秒数。
%P CPU 百分比,计算为 (%U + %S) / %R。

可选的 p 是一个数字,指定 精确, 小数位数
小数点后。 值 0 导致没有小数点或分数
输出。 最多可指定小数点后三位; 的值 p
大于 3 变为 3。如果 p 未指定,则使用值 3。

可选的 l 指定更长的格式,包括分钟,形式 MMmSS.FFs.
价值 p 确定是否包括分数。

如果没有设置这个变量, 打坏 表现得好像它有价值
$'\nreal\t%3lR\nuser\t%3lU\nsys\t%3lS'. 如果值为空,则不计时
显示信息。 当格式字符串为
显示。
输出 如果设置为大于零的值, 输出 被视为默认超时
内置。 这 选择 如果输入没有到达,则命令终止
输出 输入来自终端的秒数。 在交互式 shell 中,
值被解释为等待一行输入的秒数
发出主要提示。 等待该数量后终止
如果没有到达完整的输入行,则以秒为单位。
TMPDIR 如果设置, 打坏 使用它的值作为目录的名称 打坏 创建
供 shell 使用的临时文件。
自动恢复
此变量控制外壳如何与用户和作业控件交互。 如果
这个变量被设置,没有重定向的单字简单命令被处理
作为恢复现有停止工作的候选人。 没有歧义
允许; 如果有多个作业以输入的字符串开头,则作业
选择最近访问。 这 姓名 在这种情况下,停止的工作是
用于启动它的命令行。 如果设置为值 确切, 提供的字符串
必须与已停止作业的名称完全匹配; 如果设置为 子串,字符串
提供的需要匹配已停止作业名称的子字符串。 这 子串
value 提供类似于 %? 作业标识符(见 JOB 控制
以下)。 如果设置为任何其他值,则提供的字符串必须是 a 的前缀
停止工作的名称; 这提供了类似于 %绳子 工作
标识符。
历史字符
控制历史扩展和标记化的两个或三个字符(参见
历史 扩张 以下)。 第一个字符是 历史 扩张 字符,
表示历史扩展开始的字符,通常是`!'。 的
第二个字符是 代换 字符,用作速记
重新运行之前输入的命令,用一个字符串替换另一个
命令。 默认为`^'。 可选的第三个字符是字符
这表明该行的其余部分是作为第一行发现的注释
一个单词的字符,通常是`#'。 历史注释字符导致历史
行中剩余单词的替换将被跳过。 它不是
必然导致 shell 解析器将行的其余部分视为注释。

阵列
提供一维索引和关联数组变量。 任何变量都可以
用作索引数组; 这 宣布 内置将显式声明一个数组。 那里
对数组的大小没有最大限制,也没有对成员进行索引的任何要求
或连续分配。 索引数组使用整数(包括
算术表达式)并且是从零开始的; 使用关联数组引用
任意字符串。 除非另有说明,索引数组索引必须是非负的
整数。

如果使用以下语法将任何变量分配给了一个索引数组,则会自动创建一个索引数组
姓名[下标]=折扣值。 该 下标 被视为算术表达式,必须
评估为一个数字。 要显式声明索引数组,请使用 宣布 -a 姓名 (见
SHELL 内置 指令 下文)。 宣布 -a 姓名[下标] 也被接受; 这 下标
被忽略。

关联数组是使用创建的 宣布 -A 姓名.

可以使用以下命令为数组变量指定属性 宣布只读 内置函数。
每个属性适用于数组的所有成员。

数组被分配给使用形式的复合分配 姓名=(折扣值1 ... 价值n),
每个人 折扣值 是形式 [下标]=绳子. 索引数组赋值不
不需要任何东西 绳子. 分配给索引数组时,如果可选括号
和下标被提供,该索引被分配给; 否则元素的索引
assigned 是语句分配给的最后一个索引加一。 索引开始于
零。

分配给关联数组时,需要下标。

这种语法也被接受 宣布 内置。 单个数组元素可能是
分配给使用 姓名[下标]=折扣值 上面介绍的语法。 当分配给一个
索引数组,如果 姓名 下标为负数,该数字被解释为
相对于大于最大索引的一个 姓名,所以负指数倒计时
从数组的末尾开始,索引 -1 引用最后一个元素。

可以使用 ${ 引用数组的任何元素姓名[下标]}。 大括号是
需要避免与路径名扩展发生冲突。 如果 下标 is @ or *, 这个单词
扩展到所有成员 姓名. 这些下标仅在单词出现在
双引号。 如果单词是双引号,${姓名[*]} 扩展为一个单词
每个数组成员的值由第一个字符分隔 IFS的 特殊变量,
和 ${姓名[@]} 展开每个元素 姓名 到一个单独的词。 当没有数组时
成员,${姓名[@]} 扩展为空。 如果双引号扩展发生在
字,第一个参数的扩展与开始部分连接
原始词,最后一个参数的扩展与最后一部分连接
原词。 这类似于特殊参数的扩展 *@ (见
Special 参数 以上)。 ${#姓名[下标]} 扩展到长度
${姓名[下标]}。 如果 下标 is * or @,展开是元素的数量
数组。 引用一个没有下标的数组变量等同于引用
下标为 0 的数组。如果 下标 用于引用一个元素
索引数组的计算结果是一个小于零的数字,它被解释为相对于 XNUMX
大于数组的最大索引,因此负索引从末尾开始计数
的数组,索引为 -1 引用最后一个元素。

如果已为下标分配了值,则认为数组变量已设置。 空
字符串是一个有效值。

可以获得数组的键(索引)和值。
${!姓名[@]} 和 ${!姓名[*]} 扩展到数组变量中分配的索引 姓名。 该
双引号时的处理类似于特殊参数的扩展 @
* 双引号内。

未设定 内置函数用于销毁数组。 未设定 姓名[下标] 破坏数组
索引处的元素 下标. 索引数组的负下标被解释为
如上所述。 必须小心避免由路径名引起的不必要的副作用
扩张。 未设定 姓名,其中 姓名 是一个数组,或 未设定 姓名[下标], 在哪里 下标
is * or @, 删除整个数组。

宣布, 本地只读 内置函数每个都接受一个 -a 指定索引的选项
数组和一个 -A 选项指定关联数组。 如果提供了两个选项, -A
优先。 这 内置接受一个 -a 分配已读单词列表的选项
从标准输入到数组。 这 宣布 内置函数显示数组值
一种允许它们作为赋值重用的方式。

扩张


拆分成单词后在命令行上进行扩展。 有
进行了七种扩展: 支撑 扩张, 波浪号 扩张, 参数
变量 扩张, 命令 代换, 算术 扩张, 分裂
路径名 扩张.

展开的顺序是:大括号展开; 波浪号扩展、参数和变量
扩展、算术扩展和命令替换(从左到右完成)
时尚); 分词; 和路径名扩展。

在可以支持它的系统上,还有一个额外的扩展可用: 过程
代换. 这与波浪号、参数、变量和
算术扩展和命令替换。

只有大括号扩展、分词和路径名扩展可以改变
扩展的话; 其他扩展将单个单词扩展为单个单词。 唯一的
对此的例外是“$@“和”${姓名[@]}" 如上所述(见
有无库存).

支撑 扩展
支撑 扩张 是一种可以生成任意字符串的机制。 这
机制类似于 路径名 扩张,但生成的文件名不需要存在。
要大括号扩展的模式采用可选的形式 前言,然后是一个
一系列逗号分隔的字符串或一对大括号之间的序列表达式,
后跟一个可选的 后记. 序言以包含的每个字符串为前缀
在大括号内,然后将后记附加到每个结果字符串,扩展
左到右。

大括号扩展可以嵌套。 每个展开后的字符串的结果没有排序; 剩下
正确的顺序被保留。 例如,一个{d、c、b}e 扩展为“ade ace abe”。

序列表达式采用以下形式 {x..y[..增量]},其中 xy 是整数或
单个字符,以及 增量,一个可选的增量,是一个整数。 当整数是
提供,表达式扩展到每个数字之间 xy, 包括的。 提供
整数可以以 0 强制每个术语具有相同的宽度。 当任一 x
or y 以零开头,shell 会尝试强制所有生成的项包含
相同数量的数字,必要时补零。 当提供字符时,
表达式按字典顺序扩展到每个字符之间 xy, 包括, 使用
默认的 C 语言环境。 请注意,两者 xy 必须是同一类型。 当。。。的时候
提供了增量,它用作每个术语之间的差异。 默认的
增量为 1 或 -1,视情况而定。

大括号扩展在任何其他扩展之前执行,任何特殊字符
结果中保留了其他扩展。 它是严格的文本。 才不是
将任何句法解释应用于扩展的上下文或扩展之间的文本
大括号。

格式正确的大括号扩展必须包含不带引号的左大括号和右大括号,并且
至少一个不带引号的逗号或一个有效的序列表达式。 任何形状不正确的支架
扩展保持不变。 一种 { or , 可以用反斜杠引用以防止其被引用
被认为是大括号表达式的一部分。 为避免与参数扩展冲突,
绳子 ${ 不被认为有资格进行大括号扩展。

当字符串的公共前缀为
生成的时间比上面的例子长:

mkdir /usr/local/src/bash/{旧的,新的,dist,bugs}
or
chown 根 /用户名/{ucb/{ex,edit},lib/{ex?.?*,how_ex}}

大括号扩展引入了与历史版本的轻微不兼容 sh. sh
当左括号或右括号作为单词的一部分出现时,不会特别对待它们,并且
将它们保留在输出中。 由于大括号,从单词中删除大括号
扩张。 例如,输入一个词 sh as 文件{1,2} 相同地出现在
输出。 输出相同的词 file1 file2 扩展后 打坏. 如果严格
与...的兼容性 sh 需要,开始 打坏+B 选项或禁用大括号扩展
+B 选项 命令(见 SHELL 内置 指令 下文)。

波浪号 扩展
如果单词以未加引号的波浪号字符开头 (`~'), 前面的所有字符
考虑第一个未加引号的斜杠(或所有字符,如果没有未加引号的斜杠)
a 波浪号前缀. 如果波浪号前缀中的任何字符都没有被引用,则字符
在波浪号后面的波浪号前缀中被视为可能 登录 姓名。 如果这
登录名是空字符串,波浪号替换为 shell 参数的值
首页。 如果 首页 未设置,执行 shell 的用户的主目录被替换
反而。 否则,波浪号前缀被替换为与关联的主目录
指定的登录名。

如果波浪号前缀是“~+”,则 shell 变量的值 PWD 替换波浪号-
字首。 如果波浪号前缀是‘~-’,shell 变量的值 老残疾人, 如果是
设置,被替换。 如果波浪号前缀中波浪号后面的字符包括
一个号码 N,可选地以“+”或“-”为前缀,波浪号前缀被替换为
目录堆栈中的相应元素,因为它将由 迪尔斯
使用波浪号前缀作为参数调用的 builtin。 如果后面的字符
波浪号前缀中的波浪号由没有前导“+”或“-”的数字组成,“+”是
假定。

如果登录名无效,或者波浪号扩展失败,则单词不变。

每个变量赋值都在紧跟一个 :
或者第一个 =. 在这些情况下,还会执行波浪号扩展。 因此,一个人可能
在分配中使用带波浪号的文件名 PATH, 邮路CDPATH, 和外壳
分配扩展值。

产品型号 扩展
`$' 字符引入参数扩展、命令替换或算术
扩张。 要扩展的参数名称或符号可以用大括号括起来,即
是可选的,但用于保护要立即从字符中扩展的变量
跟随它,可以解释为名称的一部分。

使用大括号时,匹配的结束大括号是第一个`}' 没有逃脱
反斜杠或在带引号的字符串中,而不是在嵌入式算术扩展中,
命令替换或参数扩展。

${参数}
价值 参数 被取代。 需要大括号时 参数 是一个
多于一位的位置参数,或当 参数 随后是一个
不被解释为名称的一部分的字符。 这 参数 是一个
shell 参数如上所述 有无库存) 或数组引用 (阵列).

如果第一个字符 参数 是感叹号(!),它引入了一个级别
可变间接。 使用由其余部分形成的变量的值
参数 作为变量的名称; 然后扩展此变量,该值是
用于替换的其余部分,而不是值 参数 本身。 这是
被称为 间接 扩张. 对此的例外是 ${ 的扩展!字首*}和
${!姓名[@]} 如下面所描述的。 感叹号必须紧跟在左大括号之后
为了引入间接。

在以下每种情况下, 受波浪号扩展,参数扩展,
命令替换和算术扩展。

当不执行子字符串扩展时,使用下面记录的形式(例如, :-), 打坏
测试未设置或为空的参数。 省略冒号只会导致测试
对于未设置的参数。

${参数:-}
使用 默认 价值观。 如果 参数 未设置或为空,扩展 is
取代。 否则,值 参数 被取代。
${参数:=}
分配 默认 价值观。 如果 参数 未设置或为空,扩展 is
分配给 参数。 的价值 参数 然后被替换。 位置的
不能以这种方式分配参数和特殊参数。
${参数:?}
屏 显: 误差 if or 取消设置。 如果 参数 为空或未设置,扩展
(或有关该效果的消息,如果 不存在)被写入
标准错误和外壳,如果它不是交互式的,则退出。 否则,
价值 参数 被取代。
${参数:+}
使用 备用 。 如果 参数 为空或未设置,没有被替换,
否则扩展 被取代。
${参数:抵消}
${参数:抵消:长度}
子串 扩展. 扩展到 长度 值的字符 参数
从指定的字符开始 抵消。 如果 参数 is @, 索引数组
下标 @ or *,或关联数组名称,结果不同
如下面所描述的。 如果 长度 被省略,扩展为值的子串
参数 从指定的字符开始 抵消 并延伸到年底
价值。 长度抵消 是算术表达式(见 算术 评估
下文)。

If 抵消 计算结果为小于零的数字,该值用作偏移量
从值的末尾开始的字符 参数。 如果 长度 计算为一个数字
小于零,它被解释为从末尾开始的字符偏移量
价值 参数 而不是一些字符,扩展是
之间的字符 抵消 和那个结果。 请注意,负偏移必须是
与冒号至少间隔一个空格以避免与冒号混淆 :-
扩张。

If 参数 is @,结果是 长度 位置参数开始于 抵消.
负面的 抵消 相对于大于最大位置的一个
参数,因此 -1 的偏移量计算为最后一个位置参数。 它是一个
扩展错误如果 长度 计算为小于零的数字。

If 参数 是一个以@ 或 * 为下标的索引数组名,结果是
长度 以 ${ 开头的数组成员参数[抵消]}。 一个负 抵消
相对于大于指定数组的最大索引的 XNUMX 取。 它
是一个扩展错误,如果 长度 计算为小于零的数字。

应用于关联数组的子字符串扩展会产生未定义的结果。

除非使用位置参数,否则子字符串索引是从零开始的,在
在这种情况下,索引默认从 1 开始。 如果 抵消 为 0,位置
使用参数, $0 是列表的前缀。

${!字首*}
${!字首@}
名称 匹配 字首. 扩展到名称以
字首, 由第一个字符分隔 IFS的 特殊变量。 什么时候 @ is
使用并且扩展出现在双引号内,每个变量名称扩展为
一个单独的词。

${!姓名[@]}
${!姓名[*]}
清单 of 排列 。 如果 姓名 是一个数组变量,扩展为数组列表
分配的索引(键) 姓名。 如果 姓名 不是数组,如果扩展为 0 姓名 is
否则设置为空。 什么时候 @ 被使用并且扩展出现在双倍以内
引号,每个键扩展为一个单独的词。

${#参数}
产品型号 长度. 值的字符长度 参数 is
取代。 如果 参数 is * or @,替换的值是
位置参数。 如果 参数 是一个数组名下标 * or @是,
替换的值是数组中的元素数。 如果 参数 是一个
下标为负数的索引数组名称,该数字被解释为
相对于大于最大索引的一个 参数,所以负指数
从数组的末尾开始倒数,-1 的索引引用最后一个
元件。

${参数#}
${参数##}
删除 匹配 字首 模式。 该 被扩展以产生一个模式,就像
在路径名扩展中。 如果模式匹配的值的开头
参数,那么展开的结果就是展开后的值 参数
最短的匹配模式(``#'' case)或最长的匹配模式(
``##'' case) 删除。 如果 参数 is @ or *,模式去除操作是
依次应用于每个位置参数,扩展是结果
列表。 如果 参数 是一个数组变量,下标为 @ or *,图案
移除操作依次应用于数组的每个成员,扩展
是结果列表。

${参数%}
${参数%%}
删除 匹配 后缀 模式。 该 被扩展以产生一个模式,就像
在路径名扩展中。 如果模式匹配扩展的尾随部分
价值 参数,那么展开的结果就是展开后的值
参数 用最短的匹配模式(``%'' case) 或最长的
匹配模式(``%%'' case) 删除。 如果 参数 is @ or *,图案
移除操作依次应用于每个位置参数,并且
扩展是结果列表。 如果 参数 是一个带下标的数组变量
@ or *, 模式移除操作应用于数组的每个成员
反过来,扩展是结果列表。

${参数/模式/绳子}
模式 代换。 该 模式 被扩展以产生一个模式,就像在
路径名扩展。 产品型号 被扩展和最长的匹配 模式
它的值被替换为 绳子。 如果 模式 开始于 /,所有匹配
模式 被替换为 绳子. 通常只替换第一个匹配项。 如果
模式 开始于 #,它必须在扩展值的开头匹配
参数。 如果 模式 开始于 %,它必须在扩展的末尾匹配
价值 参数。 如果 绳子 为空,匹配 模式 被删除并且 /
以下 模式 可以省略。 如果 参数 is @ or *, 替代
操作依次应用于每个位置参数,扩展为
结果列表。 如果 参数 是一个数组变量,下标为 @ or *是,
替换操作依次应用于数组的每个成员,并且
扩展是结果列表。

${参数^模式}
${参数^^模式}
${参数,模式}
${参数,,模式}
案例 修改. 此扩展修改了字母字符的大小写
参数。 该 模式 被扩展以产生一个模式,就像在路径名中一样
扩张。 扩展值中的每个字符 参数 被测试
模式, 并且,如果它与模式匹配,则转换其大小写。 图案应该
不要尝试匹配多个字符。 这 ^ 运算符转换小写
字母匹配 模式 大写; 这 , 运算符转换匹配的大写
字母转小写。 这 ^^,, 扩展将每个匹配的字符转换为
扩展值; 这 ^, 扩展匹配并只转换第一个
扩展值中的字符。 如果 模式 被省略,它被视为 ?,
匹配每个字符。 如果 参数 is @ or *,案例修改
操作依次应用于每个位置参数,扩展为
结果列表。 如果 参数 是一个数组变量,下标为 @ or *是,
case 修改操作依次应用于数组的每个成员,并且
扩展是结果列表。

命令 换人
命令 代换 允许命令的输出替换命令名称。 那里
有两种形式:

$(命令)
or
`命令`

通过执行执行扩展 命令 并替换命令替换
使用命令的标准输出,删除任何尾随换行符。 嵌入式
换行符不会被删除,但在分词过程中可能会被删除。 命令
代换 $(猫 文件) 可以用等价的但更快的代替 $( 文件).

当使用旧式反引号替换形式时,反斜杠保留其文字
意思是除了后面跟着 $, `\. 第一个反引号前面没有
反斜杠终止命令替换。 当使用 $(命令) 形式,所有
括号之间的字符组成命令; 没有被特殊对待。

命令替换可以嵌套。 要在使用反引号时嵌套,请转义
带反斜杠的内部反引号。

如果替换出现在双引号内,分词和路径名扩展
不对结果执行。

算术 扩展
算术扩展允许计算算术表达式和
结果的替换。 算术展开的格式为:

$((表达))

旧格式 $[表达] 已弃用,并将在即将推出的版本中删除
猛击。

表达 被视为在双引号内,但在双引号内
括号没有特殊处理。 表达式中的所有标记都经过参数
和变量扩展、命令替换和引号删除。 结果被视为
要计算的算术表达式。 算术扩展可以嵌套。

评估是根据下面列出的规则进行的 算术
评估。 如果 表达 是无效的, 打坏 打印一条指示失败的消息并且没有
发生替代。

工艺 换人
工艺 代换 在支持命名管道的系统上受支持(先进先出)或者
/开发/FD 命名打开文件的方法。 它采用以下形式 <(名单) or >(名单)。 该
过程 名单 运行时其输入或输出连接到 FIFO 或一些文件 /开发/FD.
此文件的名称作为参数传递给当前命令,作为
扩张。 如果 >(名单) 使用表单,写入文件将提供输入 名单.
如果 <(名单) 使用表单时,应读取作为参数传递的文件以获得
输出 名单.

当可用时,进程替换与参数和
变量扩展、命令替换和算术扩展。

Word 拆分
shell 扫描参数扩展、命令替换和算术的结果
双引号内没有出现的扩展 分裂.

外壳处理每个字符 IFS的 作为分隔符,并分割另一个的结果
使用这些字符作为字段终止符扩展为单词。 如果 IFS的 未设置,或
它的价值正是 ,默认值,然后序列 , ,
在前面扩展的结果的开头和结尾是
忽略,以及任何序列 IFS的 不在开头或结尾的字符用于分隔
字。 如果 IFS的 具有除默认值以外的值,然后是空格序列
字符 空间标签 在单词的开头和结尾被忽略,只要
空白字符在值中 IFS的 (一个 IFS的 空白字符)。 任何字符
in IFS的 那不是 IFS的 空格,以及任何相邻的 IFS的 空白字符,
界定一个字段。 一个序列 IFS的 空白字符也被视为分隔符。
如果值 IFS的 为空,不发生分词。

显式空参数 ("" or '') 保留。 未加引号的隐式空参数,
由于没有值的参数的扩展而产生的结果被删除。 如果一个
没有值的参数在双引号内展开,结果为空参数并且是
保留。

请注意,如果没有发生扩展,则不会执行拆分。

路径名 扩展
分词后,除非 -f 选项已设置, 打坏 扫描每个单词
字符 *, ?[. 如果出现这些字符之一,则该词被视为
a 模式, 并替换为按字母顺序排序的文件名列表
模式(见 模式 匹配 以下)。 如果没有找到匹配的文件名,并且 shell
选项 空球 未启用,单词保持不变。 如果 空球 选项是
设置,并且找不到匹配项,则删除该单词。 如果 故障全局 设置了 shell 选项,
并且未找到匹配项,将打印错误消息并且不执行该命令。 如果
外壳选项 没有案例全局 启用时,不考虑大小写进行匹配
的字母字符。 请注意,当使用 [az] 等范围表达式(见下文)时,
可能包括其他情况的字母,具体取决于设置 LC_COLLATE。
模式用于路径名扩展,字符 ``.'' 在名字的开头或
紧跟在斜杠后面的必须显式匹配,除非 shell 选项 点球
设置。 匹配路径名时,斜杠字符必须始终明确匹配。
在其他情况下, ``.'' 字符没有特殊处理。 见说明
购物车 下面 SHELL 内置 指令 的描述 没有案例全局, 空球,
故障全局点球 外壳选项。

环球网 shell 变量可用于限制匹配 a 的文件名集
模式。 如果 环球网 设置,每个匹配的文件名也匹配
在图案 环球网 从匹配列表中删除。 文件名 ``.''
``..'' 总是被忽略时 环球网 已设置且不为空。 但是,设置
环球网 为非空值具有启用 点球 shell 选项,所以所有
其他以 a 开头的文件名 ``.'' 会匹配。 得到忽视的旧行为
以a开头的文件名 ``.'',制作 ``.*'' 其中的一种模式 环球网。 该
点球 选项被禁用时 环球网 未设置。

模式 匹配

出现在模式中的任何字符,特殊模式字符除外
下面描述,匹配自身。 NUL 字符可能不会出现在模式中。 一种
反斜杠转义以下字符; 转义反斜杠在以下情况下被丢弃
匹配。 如果要匹配特殊模式字符,则必须引用它们
从字面上。

特殊模式字符的含义如下:

* 匹配任何字符串,包括空字符串。 当。。。的时候 环球之星
选项已启用,并且 * 用于路径名扩展上下文,两个
*s 用作单个模式将匹配所有文件和零个或多个
目录和子目录。 如果后面跟着一个 /, 两个相邻 *的意志
只匹配目录和子目录。
? 匹配任何单个字符。
[...] 匹配任何一个封闭的字符。 一对字符分隔
由连字符表示 范围 表达; 介于两者之间的任何字符
这两个字符,包括,使用当前语言环境的整理
序列和字符集,是匹配的。 如果后面的第一个字符
[ 是一个 ! 或者 ^ 然后匹配任何未包含的字符。 这
范围表达式中字符的排序顺序由
当前区域设置和值 LC_COLLATE or LC_ALL 外壳变量,
如果设置。 为了获得范围表达式的传统解释,
哪里 [广告] 相当于 [A B C D], 设定值 LC_ALL 外壳变量
C, 或启用 球虫 壳选项。 一种 - 可以匹配
包括它作为集合中的第一个或最后一个字符。 一种 ] 可能匹配
通过将其包含为集合中的第一个字符。

[], 字符 可以使用语法指定
[::],其中 是 POSIX 中定义的以下类之一
标准:
名册 阿尔法 ASCII 空白 控制中心 数字 图形 降低 打印 空间
数字
字符类匹配属于该类的任何字符。 这
字符类匹配字母、数字和字符 _。

[],一个 等价 可以使用语法指定
[=c=], 匹配具有相同排序规则权重的所有字符(如
由当前语言环境定义)作为字符 c.

[], 语法 [.符号.] 匹配整理符号 符号.

如果 外部全局 shell 选项启用使用 购物车 内置,几个扩展模式
匹配运算符被识别。 在下面的描述中,一个 模式列表 是一个列表
由一个或多个模式分隔的 |. 可以使用一种或多种方式形成复合图案
更多以下子模式:

?(模式列表)
匹配给定模式的零次或一次出现
*(模式列表)
匹配给定模式的零次或多次出现
+(模式列表)
匹配一个或多个给定模式
@(模式列表)
匹配给定模式之一
!(模式列表)
匹配除给定模式之一之外的任何内容

引用 切除
在前面的扩展之后,所有未加引号的字符出现 \, '"
不是由上述扩展之一引起的被删除。

重定向


在执行命令之前,它的输入和输出可能是 重定向 使用特殊
由 shell 解释的符号。 重定向允许命令的文件句柄
复制、打开、关闭、引用不同的文件,并且可以更改文件
命令读取和写入。 重定向也可用于修改文件句柄
当前的 shell 执行环境。 以下重定向运算符可能位于
或出现在 简单 命令 或可能遵循 命令. 重定向是
按照它们出现的顺序处理,从左到右。

每个可能前面有文件描述符编号的重定向可以改为前面
形式为 {变量名}. 在这种情况下,对于除 >&- 之外的每个重定向运算符
和<&-,shell会分配一个大于等于10的文件描述符并赋值
变量名. 如果 >&- 或 <&- 前面有 {变量名}, 的价值 变量名 定义
要关闭的文件描述符。

在下面的描述中,如果省略了文件描述符编号,则第一个
重定向运算符的字符是 <,重定向指的是标准输入
(文件描述符 0)。 如果重定向运算符的第一个字符是 >是,
重定向指的是标准输出(文件描述符 1)。

以下描述中跟在重定向操作符后面的词,除非
另有说明,受大括号扩展、波浪号扩展、参数和变量的影响
扩展、命令替换、算术扩展、引号删除、路径名扩展、
和分词。 如果它扩展到一个以上的词, 打坏 报告错误。

请注意,重定向的顺序很重要。 例如,命令

ls > 目录 2>&1

将标准输出和标准错误都指向文件 目录, 而命令

ls 2>&1 > 目录

仅将标准输出定向到文件 目录,因为标准误是
在标准输出被重定向到之前从标准输出复制 目录.

当它们用于重定向时,特别处理几个文件名,如所述
在下表中:

/开发/FD/fd
If fd 是一个有效的整数,文件描述符 fd 是重复的。
/开发/标准输入
文件描述符 0 重复。
/开发/标准输出
文件描述符 1 重复。
/开发/标准错误
文件描述符 2 重复。
/开发/TCP/主持人/端口
If 主持人 是有效的主机名或 Internet 地址,并且 端口 是一个整数端口
号码或服务名称, 打坏 尝试打开相应的 TCP 套接字。
/开发/UDP/主持人/端口
If 主持人 是有效的主机名或 Internet 地址,并且 端口 是一个整数端口
号码或服务名称, 打坏 尝试打开相应的 UDP 套接字。

打开或创建文件失败会导致重定向失败。

使用大于 9 的文件描述符的重定向应谨慎使用,因为它们可能
与 shell 内部使用的文件描述符冲突。

请注意 EXEC 内置命令可以使重定向在当前 shell 中生效。

重新导向 输入
输入重定向导致文件名由扩展名产生 成为
打开以读取文件描述符 n, 或标准输入(文件描述符 0),如果 n is
未标明。

重定向输入的一般格式是:

[n]<

重新导向 输出
输出重定向导致文件名由扩展名产生 成为
为写入文件描述符而打开 n, 或标准输出(文件描述符 1),如果 n
未指定。 如果文件不存在,则创建; 如果它确实存在,那就是
截断为零大小。

重定向输出的一般格式是:

[n]>

如果重定向运算符是 >,并 无声无息 选项 内置已经
启用,如果文件名由扩展名产生,则重定向将失败
存在并且是一个普通文件。 如果重定向运算符是 >|, 或重定向
运算符是 >无声无息 选项 内置命令未启用,
即使命名为的文件也会尝试重定向 存在。

附加 重定向 输出
以这种方式重定向输出会导致文件名由
扩展 被打开以追加到文件描述符上 n, 或标准输出
(文件描述符 1)如果 n 未指定。 如果文件不存在,则创建它。

附加输出的一般格式是:

[n]>>

重新导向 普通 输出 普通 误差
此构造允许标准输出(文件描述符 1)和标准错误
输出(文件描述符 2)被重定向到名称为扩展名的文件
.

重定向标准输出和标准错误有两种格式:

&>

>&

在这两种形式中,首选第一种。 这在语义上等同于

> 2>&1

使用第二种形式时, 可能不会扩展到一个数字或 -. 如果是,其他
重定向运算符适用(请参阅 复制中 文件 下面)为了兼容性
原因。

附加 普通 输出 普通 误差
此构造允许标准输出(文件描述符 1)和标准错误
输出(文件描述符 2)要附加到名称为扩展名的文件中 .

附加标准输出和标准错误的格式是:

&>>

这在语义上等同于

>> 2>&1

(见 复制中 文件 下文)。

这里 文件
这种类型的重定向指示 shell 从当前源读取输入,直到
行只包含 定界符 (没有尾随空白)被看到。 所有的行都读
到那时为止,然后用作命令的标准输入。

here-document 的格式为:

<<[-]
此处文档
定界符

无参数和变量扩展、命令替换、算术扩展或
路径名扩展在 . 如果有任何字符 被引用,
定界符 是引用删除的结果 , 此处文档中的行是
没有扩大。 如果 未引用,此处文档的所有行都受到
参数扩展、命令替换和算术扩展,字符
序列 \ 被忽略,并且 \ 必须用于引用字符 \, $`.

如果重定向运算符是 <<-,然后所有前导制表符都被删除
输入行和包含的行 定界符. 这允许 shell 中的 here-documents
脚本以自然的方式缩进。

这里 琴弦
此处文档的一个变体,格式为:

<<

经历大括号扩展,波浪号扩展,参数和变量扩展,
命令替换、算术扩展和引号删除。 路径名扩展和
不进行分词。 结果作为单个字符串提供给
命令在其标准输入上。

复制中 文件
重定向运算符

[n]<&

用于复制输入文件描述符。 如果 扩展到一位或多位,
文件描述符由 n 被制作成该文件描述符的副本。 如果数字
in 不指定为输入打开的文件描述符,会发生重定向错误。 如果
评估为 -, 文件描述符 n 已经关了。 如果 n 没有规定,标准
使用输入(文件描述符 0)。

运营商

[n]>&

类似于复制输出文件描述符。 如果 n 未指定,
使用标准输出(文件描述符 1)。 如果数字中的 不指定文件
描述符打开输出,发生重定向错误。 如果 评估为 -,档案
描述符 n 关闭了。 作为特殊情况,如果 n 被省略,并且 不会扩展到
一位或多位数字或 -,标准输出和标准错误被重定向为
之前描述过。

移动 文件
重定向运算符

[n]<&数字-

移动文件描述符 数字 到文件描述符 n,或标准输入(文件
描述符 0) 如果 n 未指定。 数字 复制到后关闭 n.

同样,重定向操作符

[n]>&数字-

移动文件描述符 数字 到文件描述符 n,或标准输出(文件
描述符 1) 如果 n 未指定。

开幕时间 文件 阅读 写作
重定向运算符

[n]<>

导致名称为扩展的文件 开放供阅读和
写入文件描述符 n, 或者在文件描述符 0 上,如果 n 未指定。 如果文件
不存在,它被创建。

别名


别名 允许用一个字符串代替一个词作为一个词的第一个词
简单的命令。 shell 维护着一个别名列表,这些别名可以用
别号无别名 内置命令(见 SHELL 内置 指令 以下)。 第一个字
每个简单的命令,如果没有加引号,都会检查它是否有别名。 如果是,那句话
被别名的文本替换。 那些角色 /, $, `= 和任何外壳
元字符 或上面列出的引用字符可能不会出现在别名中。 这
替换文本可以包含任何有效的 shell 输入,包括 shell 元字符。 这
替换文本的第一个单词被测试别名,但一个单词与
被扩展的别名不会被第二次扩展。 这意味着一个人可以别名 ls
ls -F例如,和 打坏 不会尝试递归扩展替换文本。
如果别名值的最后一个字符是 空白,然后是下一个命令字
别名也被检查别名扩展。

别名被创建并列出 别号 命令,并删除 无别名
命令。

没有在替换文本中使用参数的机制。 如果参数是
需要时,应使用 shell 函数(请参阅 职能 下文)。

当 shell 不是交互式时,别名不会被扩展,除非 展开别名
shell 选项设置使用 购物车 (见说明 购物车SHELL 内置 指令
下文)。

有关别名的定义和使用的规则有些令人困惑。
在执行任何命令之前,总是至少读取一行完整的输入
那条线。 别名在读取命令时展开,而不是在执行时展开。
因此,与另一个命令出现在同一行上的别名定义不需要
直到下一行输入被读取为止。 别名定义后的命令
在该行上不受新别名的影响。 这种行为也是一个问题
功能被执行。 别名在读取函数定义时展开,而不是在读取时展开
函数被执行,因为函数定义本身就是一个复合命令。 作为
结果,在函数中定义的别名在该函数之后才可用
被执行。 为安全起见,始终将别名定义放在单独的行上,并且不要使用
别号 在复合命令中。

对于几乎所有目的,别名都被 shell 函数取代。

职能


一个 shell 函数,定义如下 SHELL 语法, 存储一系列
命令供以后执行。 当 shell 函数的名称用作简单的
命令名称,执行与该函数名称关联的命令列表。
函数在当前 shell 的上下文中执行; 没有创建新进程
解释它们(将此与 shell 脚本的执行进行对比)。 当一个函数是
执行时,函数的参数在执行期间成为位置参数
执行。 特殊参数 # 更新以反映更改。 特殊参数 0
不变。 的第一个元素 函数名 变量设置为名称
函数执行时的函数。

shell 执行环境的所有其他方面在函数和
它的调用者有这些例外: DEBUG返回 陷阱(见描述
陷阱 内置于 SHELL 内置 指令 下面)不会被继承,除非函数有
被给予 追踪 属性(见描述 宣布 下面内置)或
-o 函数跟踪 shell 选项已启用 内置(在这种情况下所有
函数继承 DEBUG返回 陷阱),以及 ERR 陷阱不会被继承,除非
-o 错误跟踪 外壳选项已启用。

函数的局部变量可以用 本地 内置命令。
通常,变量及其值在函数及其调用者之间共享。

最有趣 变量,如果设置为大于 0 的数值,则定义最大值
函数嵌套级别。 超过限制的函数调用会导致整个
命令中止。

如果内置命令 回报 在函数中执行,函数完成并
函数调用后的下一个命令继续执行。 任何关联的命令
返回 陷阱在执行恢复之前执行。 当一个函数完成时,
位置参数和特殊参数的值 # 恢复到值
他们在函数执行之前。

函数名称和定义可以与 -f 选项 宣布 or 排版
内置命令。 这 -F 选项 宣布 or 排版 将只列出函数名称
(以及可选的源文件和行号,如果 扩展调试 外壳选项已启用)。
可以导出函数,以便子 shell 自动使用 -f
选项 出口 内置。 可以使用以下命令删除函数定义 -f 选项
未设定 内置。 请注意,可能会导致具有相同名称的 shell 函数和变量
在传递给外壳子项的环境中的多个同名条目中。
在这可能会导致问题的情况下应该小心。

函数可以是递归的。 这 最有趣 变量可用于限制深度
函数调用栈并限制函数调用次数。 默认情况下,没有限制
强加于递归调用的数量。

算术 评估


在某些情况下,shell 允许计算算术表达式(请参阅
宣布 内置命令和 算术 扩展)。 评估是在
不检查溢出的固定宽度整数,尽管被 0 除会被捕获并且
标记为错误。 运算符及其优先级、结合性和值是
和C语言一样。 以下运营商列表按级别分组
等优先级运算符。 这些级别按优先级递减的顺序列出。

id++ id--
可变后递增和后递减
++id --id
可变预增和预减
- + 一元减号和加号
! ~ 逻辑和按位否定
**
* / % 乘法、除法、余数
+ - 加法、减法
<< >> 左右按位移位
<= >= < >
对照
== != 平等与不平等
& 按位与
^ 按位异或
| 按位或
&& 逻辑与
|| 逻辑或
表达式?表达式:表达式
条件运算符
= *= /= %= += -= << = >> = &= ^= |=
分配
表达式1 , 表达式2
逗号

允许外壳变量作为操作数; 参数扩展在
表达式被评估。 在一个表达式中,shell 变量也可以被引用
name 而不使用参数扩展语法。 为 null 或未设置的 shell 变量
在不使用参数扩展语法的情况下按名称引用时,计算结果为 0。 这
变量的值在被引用时作为算术表达式求值,或
当一个变量被赋予 整数 属性使用 宣布 -i 被分配了一个
价值。 空值的计算结果为 0。shell 变量不需要有它的 整数 属性
打开以在表达式中使用。

带有前导 0 的常量被解释为八进制数。 前导 0x 或 0X 表示
十六进制。 否则,数字采用 [根据#]n,其中可选 基地 是一个
代表算术基数的 2 到 64 之间的十进制数,以及 n 是一个数字
那个基地。 如果 根据# 省略,则使用基数 10。 指定时 n, 数字
大于 < 9 用小写字母、大写字母、@ 和 _ 表示,
以该顺序。 如果 基地 小于或等于36,小写和大写字母都可以
可互换使用以表示 10 到 35 之间的数字。

运算符按优先顺序计算。 括号中的子表达式是
首先评估并可能覆盖上面的优先规则。

有条件的 表情


条件表达式由 [[ 复合命令和 test[ 内建的
命令来测试文件属性并执行字符串和算术比较。
表达式由以下一元或二元原色组成。 如果有的话 文件 论点
对其中一个原色的形式是 /dev/fd/n, 然后是文件描述符 n 被检查。 如果
文件 其中一个初选的论据是其中之一 /开发/标准输入, /开发/标准输出
/开发/标准错误, 分别检查文件描述符 0、1 或 2。

除非另有说明,对文件进行操作的主元素遵循符号链接和
操作链接的目标,而不是链接本身。

当与 [[是, <> 运算符使用当前语言环境按字典顺序排序。
test 命令使用 ASCII 排序进行排序。

-a 文件
真如果 文件 存在。
-b 文件
真如果 文件 存在并且是一个块特殊文件。
-c 文件
真如果 文件 存在并且是一个字符特殊文件。
-d 文件
真如果 文件 存在并且是一个目录。
-e 文件
真如果 文件 存在。
-f 文件
真如果 文件 存在并且是一个普通文件。
-g 文件
真如果 文件 存在并且是 set-group-id。
-h 文件
真如果 文件 存在并且是一个符号链接。
-k 文件
真如果 文件 存在并且它的“粘性”位被设置。
-p 文件
真如果 文件 存在并且是一个命名管道 (FIFO)。
-r 文件
真如果 文件 存在且可读。
-s 文件
真如果 文件 存在并且大小大于零。
-t fd 如果文件描述符为真 fd 是开放的,指的是一个终端。
-u 文件
真如果 文件 存在并且它的 set-user-id 位被设置。
-w 文件
真如果 文件 存在且可写。
-x 文件
真如果 文件 存在并且是可执行的。
-G 文件
真如果 文件 存在并由有效组 ID 拥有。
-L 文件
真如果 文件 存在并且是一个符号链接。
-N 文件
真如果 文件 存在并且自上次阅读以来已被修改。
-O 文件
真如果 文件 存在并由有效用户 ID 拥有。
-S 文件
真如果 文件 存在并且是一个套接字。
file1 -如果 file2
真如果 file1file2 指相同的设备和 inode 编号。
file1 -nt file2
真如果 file1 更新(根据修改日期)比 file2, 或者如果 file1
存在并且 file2 才不是。
file1 -ot file2
真如果 file1file2, 或者如果 file2 存在并且 file1 才不是。
-o 选择名
如果 shell 选项为真 选择名 已启用。 请参阅下面的选项列表
的描述 -o 选项 下面内置。
-v 变量名
如果 shell 变量为真 变量名 已设置(已分配值)。
-R 变量名
如果 shell 变量为真 变量名 已设置并且是名称引用。
-z 绳子
如果长度为真 绳子 是零。
绳子
-n 绳子
如果长度为真 绳子 非零。

string1 == string2
string1 = string2
如果字符串相等,则为真。 = 应该与 test POSIX 命令
一致性。 当与 [[ 命令,这将执行模式匹配作为
如上所述 (复合肥产线 命令).

string1 != string2
如果字符串不相等,则为真。

string1 < string2
真如果 string1 排序之前 string2 按字典顺序。

string1 > string2
真如果 string1 排序后 string2 按字典顺序。

参数1 OP 参数2
OP 是其中一个 -eq, - 是, -lt, -这, -gt-ge. 这些算术二元运算符
返回真如果 参数1 等于、不等于、小于、小于或等于,
大于或大于或等于 参数2精氨酸参数2 也许
正整数或负整数。

简单 指挥 扩张


当执行一个简单的命令时,shell 执行以下扩展,
分配和重定向,从左到右。

1. 解析器标记为变量赋值的词(那些在
命令名称)并保存重定向以供以后处理。

2. 非变量赋值或重定向的词被展开。 如果有的话
扩展后保留单词,第一个单词作为命令的名称
剩下的词是论点。

3. 重定向按照上面的描述执行 重定向.

4. 后面的文字 = 在每个变量赋值中都经历波浪号扩展,
参数扩展、命令替换、算术扩展和引号删除
在分配给变量之前。

如果没有命令名称结果,变量赋值会影响当前的 shell 环境。
否则,变量被添加到执行命令的环境中,而不是
影响当前的 shell 环境。 如果任何分配尝试分配一个
一个只读变量的值,发生错误,并且命令以非零值退出
状态。

如果没有命令名称结果,则执行重定向,但不影响当前
外壳环境。 重定向错误导致命令以非零状态退出。

如果扩展后还有命令名,则执行如下所述。
否则,命令退出。 如果其中一个扩展包含命令替换,
命令的退出状态是最后一个命令替换的退出状态
执行。 如果没有命令替换,则命令以状态退出
零。

指挥 执行


在一个命令被拆分成词之后,如果它产生一个简单的命令和一个
可选的参数列表,执行以下操作。

如果命令名称不包含斜杠,shell 将尝试定位它。 如果存在
具有该名称的 shell 函数,该函数的调用方式如上所述 职能.
如果名称与函数不匹配,shell 将在 shell 列表中搜索它
内置函数。 如果找到匹配项,则调用该内置函数。

如果名称既不是 shell 函数也不是内置函数,并且不包含斜杠, 打坏
搜索每个元素 PATH 对于包含可执行文件的目录
名称。 使用哈希表来记住可执行文件的完整路径名(请参阅 哈希
SHELL 内置 指令 以下)。 目录的完整搜索 PATH is
仅当在哈希表中找不到该命令时才执行。 如果搜索是
不成功,shell 搜索一个定义的 shell 函数,名为
命令未找到句柄. 如果该函数存在,则使用原始函数调用它
命令和原始命令的参数作为其参数,以及函数的退出
status 成为 shell 的退出状态。 如果未定义该函数,则外壳
打印错误消息并返回退出状态 127。

如果搜索成功,或者命令名称包含一个或多个斜杠,则
shell 在单独的执行环境中执行命名程序。 参数 0 已设置
到给定的名称,命令的其余参数设置为参数
给定,如果有的话。

如果此执行失败,因为文件不是可执行格式,并且文件不是
一个目录,假设是一个 脚本, 一个包含 shell 命令的文件。 一个
产生子shell来执行它。 这个子shell重新初始化自己,这样效果
就好像调用了一个新的 shell 来处理脚本,除了
父级记住的命令的位置(参见 哈希 下面 SHELL 内置
指令) 由孩子保留。

如果程序是一个以 #!,第一行的剩余部分指定了一个
程序的解释器。 shell 在操作时执行指定的解释器
本身不处理这种可执行格式的系统。 的论据
解释器由一个可选参数组成,跟在解释器名称后面
程序的第一行,然后是程序名称,然后是命令
论据,如果有的话。

指挥 执行 环境


外壳有一个 执行 环境, 由以下内容组成:

· 打开由 shell 在调用时继承的、由重定向修改的文件
提供给 EXEC 内建的

· 设置的当前工作目录 cd, PUSHD波普德,或由继承人
调用时的外壳

· 文件创建模式掩码设置为 遮罩 或从 shell 的父级继承

·当前设置的陷阱 陷阱

· 通过变量赋值或用 或继承自
shell 在环境中的父级

· 在执行过程中定义的或从 shell 的父级继承的 shell 函数
环境

· 调用时启用的选项(默认情况下或使用命令行参数)或
by

· 启用的选项 购物车

· shell别名定义为 别号

· 各种进程ID,包括后台作业的ID, $$,并
价值 PPID

当要执行内建或 shell 函数以外的简单命令时,它是
在包含以下内容的单独执行环境中调用。 除非
否则,这些值是从 shell 继承的。

· shell 的打开文件,以及由指定的任何修改和添加
重定向到命令

· 当前工作目录

·文件创建模式掩码

· 标记为导出的 shell 变量和函数,以及导出的变量
命令,在环境中传递

· 被 shell 捕获的陷阱被重置为从 shell 继承的值
父级,shell 忽略的陷阱将被忽略

在这个单独的环境中调用的命令不会影响 shell 的执行
环境。

命令替换、用括号分组的命令和异步命令是
在与 shell 环境重复的子 shell 环境中调用,除了
外壳捕获的陷阱将重置为外壳从其继承的值
调用时的父级。 作为管道的一部分调用的内置命令也是
在子shell环境中执行。 对子shell环境所做的更改不能
影响shell的执行环境。

为执行命令替换而生成的子外壳继承了 -e 选项
父壳。 不在的时候 POSIX 模式, 打坏 清除 -e 此类子shell中的选项。

如果一个命令后跟一个 & 并且作业控制未激活,默认标准输入
因为命令是空文件 的/ dev / null的. 否则,调用的命令将继承
通过重定向修改的调用 shell 的文件描述符。

环境


当一个程序被调用时,它被赋予一个字符串数组,称为 环境。 这是
的列表 姓名-折扣值 对,形式 姓名=折扣值.

shell 提供了几种操作环境的方法。 在调用时,shell
自动扫描自己的环境并为找到的每个名称创建一个参数
将其标记为 出口 到子进程。 执行的命令继承环境。 这
出口宣布 -x 命令允许添加和删除参数和函数
从环境。 如果环境中某个参数的值被修改,新的
价值成为环境的一部分,取代旧的。 继承的环境
任何执行的命令都包含 shell 的初始环境,其值可能是
在外壳中修改,减去被删除的任何对 未设定 命令,加上任何添加通过
出口宣布 -x 命令。

任何环境 简单 命令 或功能可以暂时增强
用参数赋值作为前缀,如上文中所述 有无库存。 这些
赋值语句仅影响该命令看到的环境。

如果 -k 选项已设置(请参阅 下面的内置命令),然后 所有 参数
赋值被放置在命令的环境中,而不仅仅是那些在命令之前的赋值
命令名称。

什么时候 打坏 调用外部命令,变量 _ 设置为完整的文件名
命令并在其环境中传递给该命令。

退出 状态


执行命令的退出状态是返回的值 等待进程 系统调用或
等效功能。 退出状态介于 0 和 255 之间,但如下所述,
外壳可能会特别使用 125 以上的值。 从 shell 内置程序退出状态和
复合命令也仅限于此范围。 在某些情况下,外壳
将使用特殊值来指示特定的故障模式。

出于 shell 的目的,以零退出状态退出的命令已成功。 一个
退出状态为零表示成功。 非零退出状态表示失败。 当一个
命令终止于致命信号 N, 打坏 使用 128+ 的值N 作为退出状态。

如果未找到命令,则为执行它而创建的子进程将返回状态
127.如果找到一个命令但不能执行,则返回状态为126。

如果命令因扩展或重定向期间的错误而失败,则退出状态为
大于零。

Shell 内置命令返回状态 0 (true) 如果成功,并且非零 (false)如果
执行时发生错误。 所有内置函数都返回退出状态 2 以指示
不正确的用法。

本身返回最后执行的命令的退出状态,除非出现语法错误
发生,在这种情况下,它以非零值退出。 另见 出口 内置命令
联络一位教师

讯号


什么时候 打坏 是交互式的,在没有任何陷阱的情况下,它会忽略 目标期限 (所以 0
不会杀死交互式外壳),并且 SIGINT 被捕获并处理(以便 等待
内置是可中断的)。 在所有情况下, 打坏 忽略 退出. 如果作业控制在
影响, 打坏 忽略 登录, 西头信号传输协议.

运行的非内置命令 打坏 将信号处理程序设置为继承的值
来自其父级的 shell。 当作业控制无效时,异步命令忽略
SIGINT退出 除了这些继承的处理程序。 命令运行的结果
命令替换忽略键盘生成的作业控制信号 登录, 西头,
信号传输协议.

shell 在收到一条消息后默认退出 签到. 退出前,一个交互式shell
重新发送 签到 到所有正在运行或已停止的作业。 发送停止的作业 信号控制
确保他们收到 签到. 防止外壳将信号发送到
特定的工作,它应该从工作表中删除 舍弃 内置(见
SHELL 内置 指令 下面)或标记为未收到 签到 运用 舍弃 -h.

如果 呼朋唤友 shell 选项已设置为 购物车, 打坏 发送一个 签到 到所有工作
当交互式登录 shell 退出时。

If 打坏 正在等待命令完成并接收陷阱已针对的信号
已设置,在命令完成之前不会执行陷阱。 什么时候 打坏 在等待
对于异步命令,通过 等待 内置,接收信号
陷阱已设置将导致 等待 内置以退出状态立即返回
大于 128,立即执行陷阱。

JOB 控制


工作 控制 是指选择性停止的能力(暂停) 流程的执行
并继续(简历) 他们稍后执行。 用户通常使用此
通过操作系统内核共同提供的交互界面
终端驱动程序和 打坏.

外壳关联一个 工作 每个管道。 它保持一个当前执行的表
工作,可能与 工作 命令。 什么时候 打坏 异步启动作业
在里面 背景),它会打印如下一行:

[1] 25647

表明这个作业是作业号 1 并且最后一个进程的进程 ID
与此作业关联的管道是 25647。单个管道中的所有进程
是同一份工作的成员。 使用 工作 抽象作为作业控制的基础。

为方便用户界面对作业控制的实现,操作
系统保持了一个概念 当前 终端 过程 ID. 本会成员
进程组(进程组 ID 等于当前终端进程的进程
组 ID) 接收键盘生成的信号,例如 SIGINT. 据说这些过程
前景. 背景 进程是那些进程组 ID 不同于的进程
终端的; 此类进程不受键盘生成信号的影响。 只有前景
允许进程读取,或者,如果用户如此指定 stty tostop,则写入
终点站。 尝试读取的后台进程(当 stty 停止时写入)
是有效的)终端被发送一个 登录 (西头) 内核终端的信号
驱动程序,除非被捕获,否则会暂停进程。

如果操作系统所在的 打坏 正在运行支持作业控制, 打坏 包含
使用它的设施。 键入 暂停 字符(通常 ^Z, Control-Z) 而
进程正在运行会导致该进程停止并将控制权返回给 打坏。 打字
延迟 暂停 字符(通常 ^Y, Control-Y) 导致进程停止
当它试图从终端读取输入,并控制返回到 打坏。 该
然后用户可以操纵这个作业的状态,使用 bg 命令在
背景, fg 命令在前台继续它,或者 命令杀死
它。 一个 ^Z 立即生效,并具有导致挂起的额外副作用
要丢弃的输出和预先输入。

有多种方法可以在 shell 中引用作业。 人物 % 介绍一个
工作规范(工作规范)。 工作编号 n 可以称为 %n. 工作也可能是
使用用于启动它的名称的前缀,或使用出现的子字符串引用
在其命令行中。 例如, %ce 指停止 ce 工作。 如果前缀匹配
不止一份工作, 打坏 报告错误。 使用 %?ce,另一方面,指的是任何
包含字符串的作业 ce 在其命令行中。 如果子串匹配多个
工作, 打坏 报告错误。 符号 %%%+ 参考 shell 的概念
当前 工作,这是在前台或在前台启动时停止的最后一个作业
背景。 这 以前 工作 可以使用引用 %-. 如果只有一个
工作, %+%- 两者都可以用来指那个工作。 在与工作有关的输出中(例如,
的输出 工作 命令),当前作业总是标有 +,并
以前的工作 -. 一个单一的 %(没有伴随的工作规范)也指
当前的工作。

简单地命名一个工作就可以将它带到前台: %1 是同义词 ```
%1'',将作业 1 从后台带到前台。 相似地, ``%1 &'' 简历
后台作业 1,相当于 ``` %1''.

每当作业更改状态时,外壳就会立即学习。 一般, 打坏 等到它
即将在报告作业状态更改之前打印提示,以免
中断任何其他输出。 如果 -b 选项 内置命令已启用, 打坏
立即报告此类更改。 任何陷阱 信号寄存器 为每个孩子执行
退出。

如果尝试退出 打坏 在作业停止时进行(或者,如果 检查工作
选项已启用使用 购物车 内置,正在运行),shell 会打印警告
消息,并且,如果 检查工作 选项已启用,列出作业及其状态。 这
工作 然后可以使用命令来检查它们的状态。 如果第二次尝试退出
如果没有干预命令,shell 不会打印另一个警告,并且任何
停止的作业被终止。

提示


交互执行时, 打坏 显示主要提示 PS1 当它准备好时
读取命令,以及辅助提示 PS2 当它需要更多的输入来完成一个
命令。 允许通过插入一些字符串来自定义这些提示字符串
反斜杠转义的特殊字符,解码如下:
\a 一个 ASCII 铃字符 (07)
\d “Weekday Month Date”格式的日期(例如,“Tue May 26”)
\D{格式}
格式 被传递给 时间(3) 并将结果插入到
提示字符串; 一个空的 格式 导致特定于语言环境的时间
表示。 大括号是必需的
\e ASCII 转义字符 (033)
\h 直到第一个“.”的主机名
\H 主机名
\j 当前由 shell 管理的作业数
\l shell 终端设备名称的基本名称
\n 新队
\r 回车
\s 外壳的名称,基本名称 $0 (决赛之后的部分
削减)
\t 24 小时 HH:MM:SS 格式的当前时间
\T 12 小时 HH:MM:SS 格式的当前时间
\@ 12 小时 am/pm 格式的当前时间
\A 24 小时 HH:MM 格式的当前时间
\u 当前用户的用户名
\v 的版本 打坏 (例如,2.00)
\V 释放 打坏, 版本 + 补丁级别(例如,2.00.0)
\w 当前工作目录,与 $ HOME 用波浪号缩写(使用
的价值 PROMPT_DITRIM 多变的)
\W 当前工作目录的基本名称,与 $ HOME 缩写为
波浪号
\! 此命令的历史编号
\# 该命令的命令号
\$ 如果有效 UID 为 0,则 a #, 否则 $
\NNN 八进制数对应的字符 NNN
\\ 反斜杠
\[ 开始一系列非打印字符,可用于嵌入
终端控制序列进入提示
\] 结束一系列非打印字符

命令号和历史号通常是不同的:一个命令的历史号
command 是它在历史列表中的位置,其中可能包括从历史列表中恢复的命令
历史文件(见 历史 下面),而命令编号是序列中的位置
在当前 shell 会话期间执行的命令。 字符串解码后,就是
通过参数扩展、命令替换、算术扩展和引号扩展
移除,取决于价值 提示变量 shell 选项(参见
购物车 下命令 SHELL 内置 指令 下文)。

在线阅读


这是在使用交互式 shell 时处理读取输入的库,除非
--无编辑 选项在 shell 调用时给出。 使用行编辑时也使用
-e 选项 内置。 默认情况下,行编辑命令类似于
的 Emacs。 还提供 vi 风格的行编辑界面。 行编辑可以
随时使用 -o emacs的 or -o vi 选项 内置(见 SHELL
内置 指令 以下)。 要在 shell 运行后关闭行编辑,请使用 +o
emacs的 or +o vi 选项 内置。

Readline库 符号
在本节中,Emacs 风格的符号用于表示击键。 控制键是
表示为 C-,例如,Cn 表示 Control-N。 相似地, 目标 键用 M- 表示,
所以 Mx 的意思是 Meta-X。 (在没有键盘 目标 钥匙,M-x 表示电调 x, 即按
退出键然后 x 钥匙。 这使得 ESC 目标 字首. 组合 MC-x 手段
ESC-控制-x, 或按 Escape 键然后按住 Control 键同时按 x
键。)

Readline 命令可能会被赋予数字 参数,通常用作重复计数。
然而,有时,重要的是论证的符号。 通过一个
正向作用的命令的否定参数(例如, 杀线)原因
该命令向后行事。 其行为带参数的命令
与此不同的情况如下所示。

当一个命令被描述为 杀害 文本,删除的文本被保存以备将来使用
恢复 (扬声)。 杀死的文本保存在一个 . 连续杀人原因
将要累积到一个单元中的文本,可以一次全部拉出。 命令
不要终止文本将终止环上的文本块分开。

Readline库 初始化
Readline 是通过将命令放入初始化文件( 输入端 文件)。
此文件的名称取自 输入法 多变的。 如果那个变量
未设置,默认为 〜/ .inputrc. 当使用 readline 库的程序
启动,读取初始化文件,并设置键绑定和变量。
readline 初始化文件中只允许使用几个基本结构。 空白的
行被忽略。 以a开头的行 # 是评论。 以a开头的行 $
表示条件结构。 其他行表示键绑定和变量设置。

可以使用以下命令更改默认键绑定 输入端 文件。 其他使用的程序
这个库可能会添加自己的命令和绑定。

例如,放置

M-Control-u:通用参数
or
C-Meta-u:通用参数
输入端 会让 MCu 执行 readline 命令 普遍论证.

可识别以下符号字符名称: 抹去, , ESC, 低频显示器, 新线,
RET, 返回, 最高人民法院, 空间TAB.

除了命令名称之外,readline 还允许将键绑定到一个字符串
按下键时插入(a ).

Readline库 绑定
控制键绑定的语法 输入端 文件很简单。 这就是
必需是命令的名称或宏的文本以及它所指向的键序列
应该绑定。 可以通过以下两种方式之一指定名称:作为符号键名称,
可能与 元- or 控制- 前缀,或作为键序列。

使用表格时 键名:函数名 or , 键名 是拼写的键名
出英文版。 例如:

Control-u:通用参数
Meta-Rubout:向后杀戮词
Control-o: ">输出"

在上面的示例中, 绑定到函数 普遍论证, 删除 一定会
功能 向后杀词公司 一定要运行右边表示的宏
手边(即插入文本“>输出”到行中)。

在第二种形式中, “密钥序列”:函数名 or , 键序列 不同于 键名 上面在
可以通过放置序列来指定表示整个键序列的字符串
双引号内。 可以使用一些 GNU Emacs 样式的密钥转义,如下所示
例如,但无法识别符号字符名称。

"\Cu": 通用参数
“\Cx\Cr”:重新读取初始化文件
"\e[11~": "功能键 1"

在这个例子中, 再次绑定到函数 普遍论证. Cx 被绑定
功能 重新读取初始化文件ESC [ 1 1 ~ 一定要插入文本``Function
键 1''。

全套 GNU Emacs 风格的转义序列是
\C- 控制前缀
\M- 元前缀
\e 转义字符
\\ 反斜线
\" 字面意思"
\' 文字 '

除了 GNU Emacs 风格的转义序列,第二组反斜杠转义是
可供选择:
\a 警报(铃)
\b 退格
\d 删除
\f 换页
\n 新队
\r 回车
\t 水平标签
\v 垂直制表符
\NNN 值为八进制值的八位字符 NNN (一到三
数字)
\xHH 值为十六进制值的八位字符 HH (一个或两个
十六进制数字)

输入宏的文本时,必须使用单引号或双引号来表示
宏定义。 未加引号的文本被假定为函数名称。 在宏观体中,
上面描述的反斜杠转义被扩展。 反斜杠将引用任何其他字符
在宏文本中,包括“和”。

允许显示或修改当前的 readline 键绑定 绑定
内置命令。 可以在交互使用过程中切换编辑模式,使用 -o
选项 内置命令(见 SHELL 内置 指令 下文)。

Readline库 变量
Readline 具有可用于进一步自定义其行为的变量。 一个变量可能
设置在 输入端 带有表格声明的文件

变量名 折扣值

除非另有说明,readline 变量可以取值 On or 关闭 (不考虑
案件)。 无法识别的变量名称将被忽略。 读取变量值时,为空或
空值、“on”(不区分大小写)和“1”等价于 On. 所有其他值都是
相当于 关闭. 变量及其默认值是:

钟型 (听得见)
控制当 readline 想要敲响终端铃时会发生什么。 如果设置为
没有, readline 永远不会响铃。 如果设置为 可见, readline 使用一个可见的
如果有空,请敲钟。 如果设置为 听得见, readline 尝试使
终端的铃声。
绑定 tty 特殊字符 (上)
如果设置为 On, readline 尝试绑定被特别处理的控制字符
内核的终端驱动程序到它们的 readline 等价物。
彩色统计 (离开)
如果设置为 On, readline 使用不同的颜色显示可能的完成
指明他们的文件类型。 颜色定义取自
LS_颜色 环境变量。
评论开始 (``#'')
readline 时插入的字符串 插入评论 命令被执行。
此命令绑定到 M-# 在 emacs 模式下 # 在 vi 命令模式下。
完成忽略大小写 (离开)
如果设置为 On, readline 在一个
不区分大小写的时尚。
完成前缀显示长度 (0)
可能的补全列表的公共前缀的字符长度
即未经修改即显示。 当设置为大于零的值时,
长于该值的公共前缀在以下情况下用省略号替换
显示可能的完成。
完成查询项 (100)
这决定了何时询问用户查看可能的数量
生成的完成 可能的完成 命令。 它可以设置为任何
大于或等于零的整数值。 如果可能完成的数量
大于或等于该变量的值,询问用户是否
或者他是否愿意查看它们; 否则,它们只是简单地列在终端上。
转换元 (上)
如果设置为 On, readline 会将第八位设置为 ASCII 的字符转换为
通过剥离第八位并添加转义字符前缀(在
效果,使用转义作为 目标 字首).
禁用完成 (离开)
如果设置为 On, readline 将禁止单词完成。 完成字符将是
插入到行中,就好像它们已被映射到 自插入.
编辑模式 (emacs)
控制 readline 是否以一组类似于 Emacs的 or vi.
编辑模式 可以设置为 emacs的 or vi.
回声控制字符 (上)
设置为 On, 在表明他们支持它的操作系统上, readline 回显
对应于键盘产生的信号的字符。
启用键盘 (离开)
设置为 On, readline 将尝试启用应用程序键盘
叫。 某些系统需要它来启用箭头键。
启用元键 (上)
设置为 On, readline 将尝试启用终端的任何元修饰键
声称在被调用时提供支持。 在许多终端上,元键用于
发送八位字符。
展开-波浪号 (离开)
如果设置为 On, 当 readline 尝试完成单词时执行波浪号扩展。
历史保存点 (离开)
如果设置为 On,历史代码尝试将点放置在每个
历史行检索 前史 or 下一个历史.
历史规模 (0)
设置历史列表中保存的最大历史条目数。 如果设置为
零,删除任何现有的历史条目并且不保存新条目。 如果
设置为小于零的值,历史条目的数量不受限制。 经过
默认情况下,历史条目的数量没有限制。
水平滚动模式 (离开)
设置为 On, 使 readline 使用单行显示,滚动输入
当它变得比屏幕宽度长时水平在单个屏幕行上
而不是换行。
输入元 (离开)
如果设置为 On, readline 将启用八位输入(也就是说,它不会剥离
它读取的字符中的高位),无论终端声称它是什么
可以支持。 名字 元标志 是这个变量的同义词。
isearch-终结者 (``C-[C-J'')
应该终止增量搜索的字符串
随后将字符作为命令执行。 如果这个变量没有被
给定一个值,字符 ESCCJ 将终止增量搜索。
键盘映射 (emacs)
设置当前的 readline 键盘映射。 一组有效的键盘映射名称是 电子书,
emacs 标准, emacs-元, emacs-ctlx, 你, vi命令vi-插入. vi is
相当于 vi命令; emacs的 相当于 emacs-标准. 默认值
is emacs的; 的价值 编辑模式 也会影响默认键盘映射。
键序列超时 (500)
指定持续时间 的ReadLine 读取歧义时会等待一个字符
键序列(可以使用读取的输入形成完整的键序列的一种)
远,或者可以采取额外的输入来完成更长的按键序列)。 如果没有输入
在超时内收到, 的ReadLine 将使用较短但完整的密钥
顺序。 该值以毫秒为单位指定,因此值 1000 表示
的ReadLine 将等待一秒钟的额外输入。 如果此变量设置为
值小于或等于零,或非数字值, 的ReadLine 将等待
直到按下另一个键来决定要完成哪个键序列。
标记目录 (上)
如果设置为 On, 完成的目录名称附加斜线。
标记修改行 (离开)
如果设置为 On, 已修改的历史行显示前
星号 (*).
标记符号链接目录 (离开)
如果设置为 On, 作为目录符号链接的完整名称带有斜杠
附加(取决于值 标记目录).
匹配隐藏文件 (上)
这个变量,当设置为 On, 导致 readline 匹配名称开头的文件
带有“.” (隐藏文件)在执行文件名补全时。 如果设置为 关闭是,
领先'.' 必须由用户在要完成的文件名中提供。
菜单完成显示前缀 (离开)
如果设置为 On, 菜单完成显示可能的列表的公共前缀
在循环遍历列表之前完成(可能为空)。
输出元 (离开)
如果设置为 On, readline 将直接显示第 XNUMX 位设置的字符
而不是作为元前缀转义序列。
页面完成 (上)
如果设置为 On, readline 使用内部 更多- 像寻呼机一样显示一屏
一次可能完成。
打印完成水平 (离开)
如果设置为 On, readline 将显示匹配项水平排序的补全
按字母顺序排列,而不是向下排列。
全部恢复到换行符 (离开)
如果设置为 On, readline 将在返回之前撤消对历史记录行的所有更改
接受线 被执行。 默认情况下,历史行可以被修改和保留
跨调用的单个撤消列表 的ReadLine.
如果不明确,则全部显示 (离开)
这改变了完成函数的默认行为。 如果设置为 On, 字
有多个可能的完成导致匹配被列出
立即而不是按铃。
显示所有如果未修改 (离开)
这以类似的方式改变了完成函数的默认行为
如果不明确,则全部显示. 如果设置为 On, 有多个可能的词
没有任何可能的部分完成的完成(可能的完成不
共享一个公共前缀)导致立即列出匹配项而不是
敲钟。
显示模式提示 (离开)
如果设置为 On, 在提示的开头添加一个字符表示正在编辑
模式:emacs (@)、vi 命令 (:) 或 vi 插入 (+)。
跳过完成的文本 (离开)
如果设置为 On, 这会改变插入单个时的默认完成行为
匹配到线。 仅在中间执行完成时才处于活动状态
一个字。 如果启用,readline 不会从完成中插入字符
匹配正在完成的单词中点之后的字符,因此单词的部分
跟随光标不重复。
可见统计 (离开)
如果设置为 On, 表示文件类型的字符 统计(2) 附加
列出可能的完成时到文件名。

Readline库 条件 结构体
Readline 实现了一种类似于条件编译功能的工具
允许键绑定和变量设置执行的 C 预处理器
测试的结果。 使用了四个解析器指令。

$如果 $如果 构造允许基于编辑模式进行绑定,
正在使用的终端,或使用 readline 的应用程序。 测试文本
延伸到行尾; 不需要字符来隔离它。

模式 模式= 的形式 $如果 指令用于测试readline是否在
emacs 或 vi 模式。 这可以与 键盘映射
例如,在命令中设置绑定 emacs-标准emacs-ctlx
仅当 readline 以 emacs 模式启动时才使用键盘映射。

术语 术语= 表单可用于包含特定于终端的键绑定,
也许是为了绑定终端功能键输出的按键序列。
右边的那个字 = 针对两个全名进行测试
终端和终端名称在第一个之前的部分 -。 这
允许 周日 匹配两者 周日太阳命令,例如。

应用的区域
应用的区域 构造用于包含特定于应用程序的设置。
每个使用 readline 库的程序设置 应用的区域 姓名和一个
初始化文件可以测试特定值。 这可以用来
将键序列绑定到对特定程序有用的函数。 为了
例如,以下命令添加了一个引用当前的键序列
或前一个词 打坏:

$如果
# 引用当前或上一个单词
"\C-xq": "\eb\"\ef\""
$endif

$endif 如上例所示,此命令终止 $如果 命令。

$其他 该分支中的命令 $如果 如果测试失败,则执行指令。

$包括
该指令将单个文件名作为参数并读取命令和
来自该文件的绑定。 例如,以下指令将读取
/etc/输入文件:

$包括 /etc/输入文件

搜索
Readline 提供了用于搜索命令历史记录的命令(请参阅 历史 下面)
对于包含指定字符串的行。 有两种搜索模式: 增量
增量.

增量搜索在用户完成输入搜索字符串之前开始。 作为每个
键入搜索字符串的字符,readline 显示历史记录中的下一个条目
匹配到目前为止输入的字符串。 增量搜索只需要尽可能多的字符
根据需要找到所需的历史条目。 出现在值中的字符
isearch-终结者 变量用于终止增量搜索。 如果说
变量尚未赋值,Escape 和 Control-J 字符将终止
增量搜索。 Control-G 将中止增量搜索并恢复
原线。 当搜索终止时,包含搜索的历史条目
字符串成为当前行。

要在历史列表中查找其他匹配条目,请键入 Control-S 或 Control-R 作为
合适的。 这将在历史记录中向后或向前搜索下一个条目
匹配到目前为止键入的搜索字符串。 绑定到 readline 的任何其他键序列
命令将终止搜索并执行该命令。 例如,一个 新队
终止搜索并接受该行,从而执行历史记录中的命令
名单。

Readline 会记住最后一个增量搜索字符串。 如果输入两个 Control-R
没有任何定义新搜索字符串的中间字符,任何记住的搜索
字符串被使用。

非增量搜索在开始搜索之前读取整个搜索字符串
匹配历史线。 搜索字符串可以由用户键入或作为搜索字符串的一部分
当前行的内容。

Readline库 命令 名称
以下是命令名称和默认键序列的列表
他们是绑定的。 没有伴随按键序列的命令名称不受
默认。 在以下描述中, 指的是当前光标位置,和
标记 指由保存的光标位置 设置标记 命令。 之间的文字
点和标记被称为 地区.

命令 移动
行首 (钙)
移动到当前行的开头。
行结束 (铈)
移动到行尾。
前向字符 (比照)
向前移动一个字符。
向后字符 (Cb)
向后移动一个字符。
前言 (MF)
前进到下一个单词的结尾。 单词由字母数字组成
字符(字母和数字)。
反向词 (MB)
移回当前或上一个单词的开头。 词是由
字母数字字符(字母和数字)。
外壳转发字
前进到下一个单词的结尾。 单词由不带引号的 shell 分隔
元字符。
shell 向后字
移回当前或上一个单词的开头。 单词由
未引用的 shell 元字符。
清屏 (Cl)
清除屏幕,将当前行留在屏幕顶部。 与
参数,刷新当前行而不清除屏幕。
重绘电流线
刷新当前行。

命令 操纵 发展历程
接受线 (新队, 返回)
无论光标在哪里,都接受该行。 如果此行非空,则添加
根据状态将其添加到历史列表中 组织控制 多变的。 如果
line 是修改过的历史线,然后将历史线恢复到原来的
州。
前史 (CP)
从历史列表中获取上一个命令,在列表中移回。
下一个历史 (CN)
从历史列表中获取下一个命令,在列表中向前移动。
历史的开端 (M-<)
移动到历史记录的第一行。
历史的终结 (M->)
移动到输入历史的末尾,即当前正在输入的行。
反向搜索历史 (铬)
从当前行开始向后搜索并在历史中“向上”移动
必要的。 这是一个增量搜索。
前向搜索历史 (CS)
从当前行开始向前搜索并在历史记录中“向下”移动
有必要的。 这是一个增量搜索。
非增量反向搜索历史 (MP)
使用非当前行开始向后搜索历史记录
增量搜索用户提供的字符串。
非增量前向搜索历史 (锰)
使用非增量搜索字符串向前搜索历史记录
由用户提供。
历史搜索
在历史中向前搜索开始之间的字符串
当前线和点。 这是一个非增量搜索。
历史搜索向后
在历史记录中向后搜索开始之间的字符串
当前线和点。 这是一个非增量搜索。
复制-nth-arg (MCy)
将第一个参数插入上一个命令(通常是命令上的第二个字)
前一行)在点。 有论据 n,插入 n上一个单词
命令(上一个命令中的单词以单词 0 开头)。 否定论据
插入 n上一个命令末尾的第 th 个单词。 一旦争论 n is
计算,参数被提取,就好像“!n" 历史扩张已经
指定的。
猛拉最后一个参数 (M-., M-_)
将最后一个参数插入上一条命令(上一条命令的最后一个字)
历史条目)。 使用数字参数,行为完全像 复制-nth-arg.
连续调用 猛拉最后一个参数 返回历史列表,插入
中每一行的最后一个词(或由第一次调用的参数指定的词)
转动。 提供给这些连续调用的任何数字参数确定
穿越历史的方向。 一个否定的参数会改变方向
通过历史(向后或向前)。 使用历史扩展设施
提取最后一个单词,就好像已经指定了“!$”历史扩展。
外壳扩展线 (MCe)
像 shell 一样展开该行。 这将执行别名和历史扩展为
以及所有的 shell 词扩展。 看 历史 扩张 下面为一个
历史扩展的描述。
历史扩展线 (M-^)
对当前行进行历史扩展。 看 历史 扩张 下面为一个
历史扩展的描述。
魔法空间
对当前行进行历史扩展并插入一个空格。 看 历史
扩张 下面是对历史扩展的描述。
别名扩展行
对当前行进行别名扩展。 看 别名 以上为说明
别名扩展。
历史和别名扩展线
在当前行上执行历史和别名扩展。
插入最后一个参数 (M-., M-_)
的同义词 猛拉最后一个参数.
操作并获取下一个 (合作)
接受当前行执行并获取相对于当前行的下一行
历史记录中的当前行进行编辑。 任何参数都将被忽略。
编辑和执行命令 (C-xC-e)
在当前命令行调用编辑器,将结果作为shell执行
命令。 试图调用 $ VISUAL, $编辑器emacs的 作为编辑,在
那个命令。

命令 改变 文本
文件结束 (通常 光盘)
指示文件结束的字符设置,例如,由``stty''。 如果这
当行上没有字符时读取字符,并且点在
行的开头,Readline 将其解释为输入的结尾并返回 EOF.
删除字符 (光盘)
删除该点的字符。 如果此函数绑定到相同的字符
tty EOF 性格,如 光盘 一般是,效果见上。
向后删除字符 (抹去)
删除光标后面的字符。 当给定一个数字参数时,保存
删除了杀戮环上的文字。
向前向后删除字符
删除光标下的字符,除非光标在行尾,
在这种情况下,光标后面的字符将被删除。
引用插入 (Cq, 简历)
将输入的下一个字符逐字添加到行中。 这是插入的方法
Cq,例如。
制表符插入 (简历 标签)
插入制表符。
自插入 (一个, b, A, 1, !, ...)
插入键入的字符。
转置字符 (ct)
将点之前的字符向前拖动到点处的字符上方,移动点
也向前。 如果点在行尾,则这将两个
点之前的字符。 否定论点没有任何效果。
转置词 (公吨)
将点之前的单词拖过点之后的单词,将点移到该单词上
以及。 如果点在行尾,则将最后两个单词转置为
线。
大写字 (亩)
大写当前(或后续)单词。 对于否定参数,大写
前一个字,但不要动点。
小写字 (毫升)
小写当前(或后续)单词。 对于否定的参数,小写
前一个字,但不要动点。
大写单词 (麦克)
将当前(或后续)单词大写。 使用否定参数,大写
前一个字,但不要动点。
覆盖模式
切换覆盖模式。 使用明确的正数参数,切换到
覆盖模式。 使用明确的非正数字参数,切换到插入
模式。 此命令仅影响 emacs的 模式; vi 模式确实以不同的方式覆盖。
每次调用 阅读线() 以插入模式启动。 在覆盖模式下,字符绑定
自插入 在点替换文本而不是将文本向右推。
绑定到的字符 向后删除字符 用 a 替换点之前的字符
空间。 默认情况下,该命令是未绑定的。

杀害 扬京
杀线 (CK)
删除从点到行尾的文本。
倒杀线 (Cx 抹去)
杀回行首。
unix 行丢弃 (铜)
从点到线的开头向后杀死。 删除的文本保存在
杀环。
杀全线
杀死当前行上的所有字符,无论点在哪里。
杀字 (MD)
从点到当前单词的末尾,或者如果在单词之间,则杀死到当前单词的末尾
下一个词。 单词边界与所使用的相同 前言.
向后杀词 (M-鲁布特)
杀死点后面的词。 单词边界与所使用的相同
反向词.
壳杀字 (MD)
从点到当前单词的末尾,或者如果在单词之间,则杀死到当前单词的末尾
下一个词。 单词边界与所使用的相同 外壳转发字.
shell 向后杀字 (M-鲁布特)
杀死点后面的词。 单词边界与所使用的相同
shell 向后字.
unix-字-rubout (连续)
删除 point 后面的单词,使用空格作为单词边界。 被杀死的文字
保存在终止环上。
unix-文件名-rubout
删除 point 后面的单词,使用空格和斜杠字符作为单词
边界。 杀死的文本保存在终止环上。
删除水平空间 (M-\)
删除点周围的所有空格和制表符。
杀死区域
杀死当前区域中的文本。
复制区域即杀
将区域中的文本复制到终止缓冲区。
向后复制
复制指向终止缓冲区之前的单词。 单词边界与
反向词.
复制转发字
将以下单词复制到终止缓冲区。 字界是一样的
as 前言.
猛拉 (Cy)
将杀死环的顶部猛拉到缓冲区中。
砰砰声 (我的)
旋转止动环,然后猛拉新的顶部。 仅适用于以下 猛拉 or 砰砰声.

数字 参数
数字参数 (M-0, M-1, ..., 米--)
将此数字添加到已经累积的参数中,或者开始一个新的参数。 米--
开始否定论点。
普遍论证
这是另一种指定参数的方法。 如果此命令后跟一个或
更多的数字,可选地带有前导减号,这些数字定义
争论。 如果命令后跟数字,则执行 普遍论证 再次
结束数字参数,否则会被忽略。 作为特殊情况,如果这
命令后紧跟一个既不是数字也不是减号的字符
符号,下一个命令的参数计数乘以四。 论据
count 最初是一个,所以第一次执行这个函数会使
参数计数为 XNUMX,第二次使参数计数为 XNUMX,依此类推。

完成
完成 (标签)
尝试对 point 之前的文本进行补全。 尝试完成
将文本视为变量(如果文本以 $), 用户名 (如果文本
开始于 ~), 主机名(如果文本以 @) 或命令(包​​括别名
和功能)依次。 如果这些都没有产生匹配,则文件名完成是
尝试过。
可能的完成 (男-?)
列出点之前文本的可能完成方式。
插入完成 (M-*)
在本应由以下内容生成的点之前插入文本的所有完成
可能的完成.
菜单完成
完成,但用来自的单个匹配替换要完成的单词
可能完成的列表。 重复执行 菜单完成 步骤
通过可能的完成列表,依次插入每个匹配项。 在最后
在完成列表中,钟声响起(取决于设置 钟型)
并恢复了原文。 一个论点 n 移动 n 位置向前
匹配列表; 可以使用否定参数来向后移动
列表。 此命令旨在绑定到 TAB,但默认情况下是未绑定的。
菜单完全向后
相同 菜单完成, 但在可能的列表中向后移动
完成,好像 菜单完成 被给予否定的论据。 这个命令
默认情况下是未绑定的。
删除字符或列表
如果不在行首或行尾,则删除光标下的字符
(喜欢 删除字符)。 如果在行尾,行为与
可能的完成. 默认情况下,此命令未绑定。
完整文件名 (M-/)
尝试对点之前的文本进行文件名补全。
可能的文件名完成 (Cx /)
列出点之前文本的可能完成方式,将其视为文件名。
完整的用户名 (M-~)
尝试完成点之前的文本,将其视为用户名。
可能的用户名完成 (Cx ~)
列出点之前文本的可能完成方式,将其视为用户名。
完全变量 (百万美元)
尝试完成 point 之前的文本,将其视为 shell 变量。
可能的变量完成 (Cx $)
列出点之前文本可能的补全,将其视为外壳
变量。
完整的主机名 (男-@)
尝试完成点之前的文本,将其视为主机名。
可能的主机名完成 (Cx @)
列出点之前文本的可能完成方式,将其视为主机名。
完成命令 (M-!)
尝试完成 point 之前的文本,将其视为命令名称。
命令完成尝试将文本与别名、保留字、
shell 函数、shell 内置函数,最后是可执行文件名,按顺序排列。
可能的命令完成 (Cx !)
列出点之前文本可能的补全,将其视为命令
名称。
动态完整历史 (M-TAB)
尝试完成点之前的文本,将文本与来自的行进行比较
可能完成匹配的历史列表。
dabbrev-展开
尝试在点之前的文本上完成菜单,将文本与行进行比较
从可能的完成匹配的历史列表中。
大括号 (M-{)
执行文件名补全并插入可能的补全列表
在大括号内,因此该列表可用于外壳程序(请参阅 支撑 扩展 以上)。

键盘
开始-kbd-宏 (Cx ()
开始保存输入到当前键盘宏中的字符。
结束-kbd-宏 (Cx ))
停止保存输入到当前键盘宏中的字符并存储
定义。
调用最后一个 kbd 宏 (Cx e)
通过使宏中的字符重新执行定义的最后一个键盘宏
看起来就像在键盘上打字一样。
打印最后一个 kbd 宏 ()
打印以适合的格式定义的最后一个键盘宏 输入端 文件中。

其他
重新读取初始化文件 (Cx 铬)
阅读内容 输入端 文件,并合并任何绑定或变量
在那里找到作业。
中止 (CG)
中止当前的编辑命令并按响终端的铃声(取决于
的设置 钟型).
做大写版本 (嘛, 兆, M-x, ...)
如果元化字符 x 是小写,运行绑定到的命令
对应的大写字符。
前缀元 (ESC键)
Metafy 输入的下一个字符。 ESC f 相当于 元-f.
复原 (C-_, Cx 铜)
增量撤消,每行单独记住。
回线 (先生)
撤消对此行所做的所有更改。 这就像执行 复原 命令足够了
线返回初始状态的次数。
波浪号展开 (M-&)
对当前单词进行波浪号扩展。
设置标记 (C-@, M- )
将标记设置为点。 如果提供了数字参数,则标记设置为
那个位置。
交换点和标记 (Cx Cx)
用标记交换点。 当前光标位置设置为保存的
位置,旧光标位置保存为标记。
字符搜索 (C-])
读取一个字符并将点移动到该字符的下一个出现处。 一个
负计数搜索以前的出现。
字符向后搜索 (MC-])
读取一个字符并将点移动到该字符的前一个出现处
特点。 负计数搜索后续出现。
跳过CSI序列
读取足够多的字符以使用多键序列,例如为
Home 和 End 等键。 此类序列以控制序列指示器开始
(CSI),通常是 ESC-[. 如果这个序列绑定到“\[”,产生这样的键
除非明确绑定到 readline 命令,否则序列将无效,
而不是将杂散字符插入编辑缓冲区。 这是不受约束的
默认,但通常绑定到 ESC-[。
插入评论 (M-#)
没有数字参数,readline的值 评论开始 变量是
插入到当前行的开头。 如果提供了数字参数,
此命令用作切换:如果行首的字符执行
不匹配的值 评论开始, 值被插入,否则
中的字符 评论开始 从行首删除。 在任一
在这种情况下,该行被接受,就像输入了换行符一样。 默认值为
评论开始 导致此命令使当前行成为 shell 注释。 如果一个
数字参数导致注释字符被删除,该行将是
由外壳执行。
全局完整词 (镁)
point 之前的单词被视为路径名扩展的模式,带有
星号隐式附加。 此模式用于生成匹配列表
可能完成的文件名。
全局扩展词 (Cx *)
point 之前的单词被视为路径名扩展的模式,列表
匹配的文件名被插入,替换单词。 如果数字参数是
提供,在路径名扩展之前附加一个星号。
全局列表扩展 (Cx g)
将生成的扩展列表 全局扩展词 is
显示,并重新绘制线条。 如果提供了数字参数,则星号
附加在路径名扩展之前。
转储功能
将所有函数及其键绑定打印到 readline 输出流。
如果提供了数字参数,则输出的格式为
可以成为一个 输入端 文件中。
转储变量
将所有可设置的 readline 变量及其值打印到 readline
输出流。 如果提供了数字参数,则输出的格式如下
一种方式,它可以成为一个 输入端 文件中。
转储宏
打印绑定到宏的所有 readline 键序列和它们的字符串
输出。 如果提供了数字参数,则输出的格式如下
它可以成为一个 输入端 文件中。
显示外壳版本 (Cx 简历)
显示当前实例的版本信息 打坏.

可编程 完成
当尝试将单词完成作为完成命令的参数时
规格(一 比较规格) 已使用 完成 内置(见 SHELL 内置
指令 下面),调用可编程完成设施。

首先,识别命令名称。 如果命令字是空字符串
(在空行的开头尝试完成),任何用 -E
选项 完成 用来。 如果已为该命令定义了 compspec,则 compspec
用于生成单词的可能完成列表。 如果命令字是
完整路径名,首先搜索完整路径名的 compspec。 如果没有compspec
找到完整路径名,尝试找到该部分的 compspec
在最后的斜线之后。 如果这些搜索未产生 compspec,则任何 compspec
定义为 -D 选项 完成 用作默认值。

一旦找到了一个 compspec,它就会被用来生成匹配词的列表。 如果一个
未找到 compspec,默认 打坏 完成如上所述 完成 is
执行。

首先,使用由 compspec 指定的操作。 仅匹配前缀为
返回正在完成的单词。 当。。。的时候 -f or -d 选项用于文件名或
目录名补全,shell变量 菲诺 用于过滤匹配项。

由路径名扩展模式指定的任何完成 -G 选项生成
下一个。 模式生成的单词不需要与正在完成的单词匹配。 这
环球网 shell 变量不用于过滤匹配,但是 菲诺 变量是
用过的。

接下来,指定为参数的字符串 -W 选项被考虑。 字符串是
首先使用中的字符拆分 IFS的 特殊变量作为分隔符。 壳牌报价
很荣幸。 然后使用大括号扩展、波浪号扩展、参数扩展每个单词
和变量扩展、命令替换和算术扩展,如上所述
扩张. 使用上面描述的规则分割结果 Word
拆分. 扩展的结果与单词 is 前缀匹配
完成,匹配的词成为可能的完成。

生成这些匹配项后,使用
-F-C 选项被调用。 当命令或函数被调用时, COMP_LINE,
comp_point, COMP_KEYCOMP_类型 变量被赋值,如上所述
变量. 如果正在调用 shell 函数,则 comp_wordsCOMP_CWORD
还设置了变量。 当函数或命令被调用时,第一个参数 ($1)
是正在完成其参数的命令的名称,第二个参数 ($2)
是正在完成的单词,第三个参数($3) 是单词前面的单词
在当前命令行上完成。 不过滤生成的完成
对正在完成的词执行; 函数或命令已完成
生成匹配的自由。

指定的任何函数 -F 首先被调用。 该函数可以使用任何shell
设施,包括 合成 内置如下所述,以生成匹配项。 它
必须把可能的完成放在 完全 数组变量,每个数组元素一个。

接下来,使用指定的任何命令 -C 选项在等效于的环境中调用
命令替换。 它应该打印一个完成列表,每行一个,到
标准输出。 如有必要,可以使用反斜杠来转义换行符。

生成所有可能的完成后,使用指定的任何过滤器 -X
选项应用于列表。 过滤器是用于路径名扩展的模式; 一个
& 在模式中被替换为正在完成的单词的文本。 一个字面意思 & 五月
用反斜杠转义; 在尝试匹配之前删除反斜杠。 任何
匹配模式的完成将从列表中删除。 一个领先的 ! 取反
图案; 在这种情况下,任何与模式不匹配的完成都将被删除。

最后,使用指定的任何前缀和后缀 -P-S 选项被添加到每个
补全列表的成员,结果返回给readline补全码
作为可能完成的列表。

如果先前应用的操作未生成任何匹配项,并且 -o 目录名 选项
被提供给 完成 当 compspec 被定义时,目录名完成是
尝试过。

如果 -o 加目录 选项被提供给 完成 当 compspec 被定义时,
尝试完成目录名并将任何匹配项添加到结果中
其他行为。

默认情况下,如果找到了一个 compspec,它生成的任何内容都会返回给完成
代码作为完整的可能完成集。 默认的 打坏 完成度不是
已尝试,并且文件名完成的 readline 默认值被禁用。 如果 -o
bash默认 选项被提供给 完成 当 compspec 被定义时, 打坏
如果 compspec 未生成匹配项,则会尝试默认完成。 如果 -o 默认
选项被提供给 完成 当 compspec 被定义时,readline 的默认值
如果 compspec(以及,如果尝试,默认 打坏
完成)不生成匹配项。

当 compspec 指示需要完成目录名称时,可编程
完成函数强制 readline 将斜杠附加到已完成的名称中
目录的符号链接,取决于 标记目录 的ReadLine
变量,无论设置如何 标记符号链接目录 读行变量。

有一些支持动态修改完成。 这在以下情况下最有用
与指定的默认完成结合使用 完成 -D. 这是可能的
对于作为完成处理程序执行的 shell 函数,以指示完成应该是
通过返回退出状态 124 重试。如果 shell 函数返回 124,并且更改
与正在尝试完成的命令关联的 compspec(提供
作为函数执行时的第一个参数),可编程完成重新启动
从一开始,就试图为该命令找到一个新的 compspec。 这允许
尝试完成时动态构建的一组完成,而不是
一次全部加载。

例如,假设有一个 compspecs 库,每个都保存在一个文件中
对应于命令的名称,以下默认完成函数将
动态加载完成:

_completion_loader()
{
。 “/etc/bash_completion.d/$1.sh" >/dev/null 2>&1 && 返回 124
}
完成 -D -F _completion_loader -o bashdefault -o 默认

历史


当。。。的时候 -o 历史 选项 启用了 builtin,shell 提供了对
命令 历史,先前键入的命令列表。 的价值 历史大小
变量用作保存在历史列表中的命令数。 案文
最后 历史大小 命令(默认 500)被保存。 shell 将每个命令存储在
参数和变量扩展之前的历史列表(参见 扩张 以上)但之后
执行历史扩展,取决于 shell 变量的值 历史忽略
组织控制.

启动时,历史从变量命名的文件中初始化 历史档案
(默认 ~ / .bash_history)。 由值命名的文件 历史档案 被截断,如果
必要的,包含不超过由值指定的行数
历史文件大小。 如果 历史文件大小 未设置或设置为空、非数字值或数字
值小于零,历史文件不会被截断。 读取历史文件时,
以历史注释字符开头的行后面紧跟一个数字是
解释为前一历史行的时间戳。 这些时间戳是可选的
根据值显示 历史时间格式 多变的。 当一个壳
历史启用退出,最后 $HISTSIZE 行从历史列表复制到
$历史文件。 如果 历史追加 shell 选项已启用(请参阅 购物车
SHELL 内置 指令 下面),这些行被附加到历史文件中,否则
历史文件被覆盖。 如果 历史档案 未设置,或者如果历史文件不可写,
历史没有保存。 如果 历史时间格式 设置变量,写入时间戳
到历史文件,用历史注释字符标记,以便它们可以被保留
跨 shell 会话。 这使用历史注释字符来区分时间戳
来自其他历史线。 保存历史后,历史文件被截断为
包含不超过 历史文件大小 线。 如果 历史文件大小 未设置或设置为 null,一个非
数值,或小于零的数值,历史文件不会被截断。

内置命令 fc (见 SHELL 内置 指令 下面)可用于列出或编辑和
重新执行历史列表的一部分。 这 历史 内置可用于显示或
修改历史列表并操作历史文件。 使用命令行编辑时,
搜索命令可用于每个编辑模式,提供对历史的访问
名单。

shell 允许控制将哪些命令保存在历史列表中。 这
组织控制历史忽略 可以设置变量以使外壳仅保存一个子集
输入的命令。 这 商人 shell 选项,如果启用,会导致 shell
尝试将多行命令的每一行保存在同一历史条目中,添加
必要时使用分号以保持句法正确性。 这 石匠 外壳选项
导致 shell 使用嵌入的换行符而不是分号来保存命令。 看
的描述 购物车 下面内置 SHELL 内置 指令 有关的信息
设置和取消设置外壳选项。

历史 扩张


shell 支持历史扩展功能,类似于历史扩展
csh。 本节介绍可用的语法功能。 此功能已启用
默认情况下用于交互式 shell,并且可以使用 +H 选项
内置命令(见 SHELL 内置 指令 以下)。 非交互式 shell 不执行
默认情况下历史扩展。

历史扩展将历史列表中的单词引入输入流,使其
易于重复的命令,将上一个命令的参数插入到当前输入中
行,或快速修复先前命令中的错误。

历史扩展在读完一行后立即执行,在 shell 之前
把它分解成文字。 它分两部分进行。 首先是确定哪一行
从替换过程中使用的历史列表中。 二是选择部分
该行包含在当前行中。 从历史中选择的行是
活动,并且该行的部分是 。 各个 修饰符 ,那恭喜你,
可用于操作选定的单词。 该行被分成相同的单词
读取输入时的时尚,以便几个 元字符- 分隔的单词被包围
引号被认为是一个词。 历史扩展是由出现的
历史扩展字符,即 ! 默认情况下。 只有反斜杠 (\) 和单
引号可以引用历史扩展字符。

如果在历史之后立即发现几个字符会抑制历史扩展
扩展字符,即使未加引号:空格、制表符、换行符、回车符和 =.
如果 外部全局 外壳选项已启用, ( 也会抑制扩张。

几个 shell 选项可设置 购物车 内置可用于定制行为
的历史扩展。 如果 历史验证 shell 选项已启用(请参阅
购物车 下面内置),和 的ReadLine 正在使用,历史替换不是
立即传递给shell解析器。 相反,扩展的行被重新加载到
的ReadLine 编辑缓冲区以供进一步修改。 如果 的ReadLine 正在使用,并且
历史编辑 启用 shell 选项,失败的历史替换将被重新加载到
的ReadLine 编辑缓冲区进行更正。 这 -p 选项 历史 内置命令
可用于查看历史扩展在使用之前会做什么。 这 -s 选项
历史 内置命令可用于将命令添加到历史列表的末尾,而不需要
实际执行它们,以便它们可用于后续调用。

shell 允许控制历史扩展机制使用的各种字符
(见说明 历史字符 上下 变量)。 外壳使用
历史注释字符,用于在写入历史文件时标记历史时间戳。

活动 代号
事件指示符是对历史列表中命令行条目的引用。 除非
引用是绝对的,事件相对于历史中的当前位置
名单。

! 开始历史替换,除非后面跟着一个 空白, 换行, 马车
返回, = 或 ( (当 外部全局 shell 选项启用使用 购物车 内置)。
!n 参考命令行 n.
!-n 参考当前命令减 n.
!! 参考上一条命令。 这是'!-1'的同义词。
!绳子
参考历史列表中当前位置之前的最新命令
从...开始 绳子.
!?绳子[?]
参考历史列表中当前位置之前的最新命令
包含 绳子. 尾随 ? 可以省略,如果 绳子 立即被跟踪
通过换行符。
^string1^string2^
快速替代。 重复前面的命令,替换 string1 string2.
相当于``!!:s/string1/string2/'' (看 修饰符 下文)。
!# 到目前为止输入的整个命令行。

Word 代号
单词指示符用于从事件中选择所需的单词。 一个 : 分离事件
来自单词指示符的规范。 如果以指示符开头,则可以省略
^, $, *, -%. 单词从行首开始编号,
第一个词用 0(零)表示。 单词插入到当前行中分隔
按单个空格。

0 (零)
第零个字。 对于 shell,这是命令字。
n n第一句话。
^ 第一个论点。 即第 1 个字。
$ 最后一个字。 这通常是最后一个参数,但会扩展到第零个
如果一行中只有一个单词。
% 与最近的`?绳子?' 搜索。
x-y 一系列单词; `-y' 缩写为 '0-y'.
* 除第零个以外的所有单词。 这是`的同义词1- $'。 这不是错误
使用 * 如果事件中只有一个词; 空字符串返回
那种情况。
x* 缩写 x-$.
x- 缩写 x-$ 喜欢 x*,但省略了最后一个字。

如果在没有事件规范的情况下提供了一个字指示符,则前面的命令是
作为事件使用。

修饰符
在可选的单词指示符之后,可能会出现一个或多个
以下修饰符,每个修饰符前面都有一个“:”。

h 删除尾随文件名组件,只留下头部。
t 删除所有前导文件名组件,留下尾部。
r 删除表单的尾随后缀 .XXX, 留下基本名称。
e 删除除尾随后缀之外的所有内容。
p 打印新命令但不执行它。
q 引用替换的单词,避免进一步的替换。
x 引用替换的词作为 q,但在 空白 和换行符。
s///
替代 对于第一次出现 在事件行中。 任何分隔符
可以代替 /. 最后一个分隔符是可选的,如果它是最后一个
事件线的特征。 分隔符可以引用在
单反斜杠。 如果 & 出现在 ,它被替换为 . 一个反斜杠
将引用 &。 如果 为空,它被设置为最后 替换,或者,如果没有
之前的历史替换发生,最后一次 绳子!?绳子[?]
搜索。
& 重复之前的替换。
g 使更改应用于整个事件线。 这用于
与`结合:s'(例如,`:GS///') 或`:&'。 如果与`一起使用:s', 任何
可以使用分隔符代替 /,如果是最后一个分隔符,则它是可选的
事件行的最后一个字符。 一个 a 可以用作同义词 g.
G 应用以下`s' 对事件行中的每个单词进行一次修饰。

SHELL 内置 指令


除非另有说明,本节中记录的每个内置命令都接受
选项之前 - 接受 -- 表示选项的结束。 这 :, true, false,
test 内置函数不接受选项并且不处理 -- 特别。 这 出口, 注销,
打破, 继续, 转移 内置函数接受并处理以开头的参数 -
不需要 --. 其他接受参数但未指定为的内置函数
接受选项解释以开头的参数 - 作为无效选项并要求 --
以防止这种解释。
: [参数]
没有效果; 该命令除了扩展之外什么都不做 参数 并执行任何
指定的重定向。 返回零退出代码。

. 文件名 [参数]
资源 文件名 [参数]
读取和执行命令 文件名 在当前 shell 环境中并返回
执行的最后一个命令的退出状态 文件名。 如果 文件名 才不是
包含斜杠,文件名在 PATH 用于查找包含的目录
文件名. 在中搜索的文件 PATH 不需要是可执行的。 什么时候 打坏 是不是
in POSIX 模式, 如果没有找到文件,则搜索当前目录 PATH。 如果
源路径 选项 购物车 内置命令被关闭, PATH 是不是
搜索。 如果有的话 参数 提供,它们成为位置参数
,尤其是 文件名 被执行。 否则位置参数不变。 这
返回状态是脚本中退出的最后一个命令的状态(如果没有,则为 0
命令被执行),如果是假的 文件名 未找到或无法读取。

别号 [-p[姓名[=折扣值] ...]
别名 没有论据或与 -p 选项打印别名列表
申请 别号 姓名=折扣值 在标准输出上。 当提供参数时,别名是
为每个定义 姓名 谁的 折扣值 给出。 中的尾随空格 折扣值 导致
扩展别名时要检查别名替换的下一个单词。 为了
姓名 在参数列表中没有 折扣值 提供了名称和值
打印别名。 别名 返回真,除非 姓名 给出没有
别名已定义。

bg [工作规范 ...]
恢复每个暂停的工作 工作规范 在后台,好像它已经开始
&。 如果 工作规范 不存在,外壳的概念 当前 工作 用来。 bg
工作规范 除非在禁用作业控制时运行或与作业一起运行时运行,否则返回 0
控制启用,任何指定 工作规范 未找到或在没有工作的情况下开始
控制。

绑定 [-m 键盘映射[-lpsvPSVX]
绑定 [-m 键盘映射[-q 功能[-u 功能[-r 键序列]
绑定 [-m 键盘映射] -f 文件名
绑定 [-m 键盘映射] -x 键序列:外壳命令
绑定 [-m 键盘映射] 键序列:函数名
绑定 读行命令
显示当前 的ReadLine 键和函数绑定,将键序列绑定到
的ReadLine 函数或宏,或设置一个 的ReadLine 多变的。 每个非选项参数
是一个命令,因为它会出现在 .inputrc, 但每个绑定或命令必须是
作为单独的参数传递; 例如,'"\Cx\Cr": re-read-init-file'。 选项,如果
提供,具有以下含义:
-m 键盘映射
使用 键盘映射 作为受后续绑定影响的键映射。
可接受 键盘映射 名字是 电子书, emacs 标准, emacs-元, emacs-ctlx,
你, 六动, vi命令vi-插入. vi 相当于 vi命令;
emacs的 相当于 emacs-标准.
-l 列出所有人的名字 的ReadLine 功能。
-p 屏 显: 的ReadLine 函数名和绑定,它们可以是
重读。
-P 列出当前 的ReadLine 函数名和绑定。
-s 屏 显: 的ReadLine 键序列绑定到宏和它们输出的字符串
以这种方式可以重新阅读它们。
-S 屏 显: 的ReadLine 键序列绑定到宏和它们输出的字符串。
-v 屏 显: 的ReadLine 变量名和值,它们可以是
重读。
-V 列出当前 的ReadLine 变量名和值。
-f 文件名
从中读取键绑定 文件名.
-q 功能
查询哪些键调用了命名的 功能.
-u 功能
解除绑定到命名的所有键 功能.
-r 键序列
删除任何当前绑定 键序列.
-x 键序列:外壳命令
原因 外壳命令 随时执行 键序列 被输入。 什么时候
外壳命令 被执行,shell 设置 阅读LINE_LINE 变量到
的内容 的ReadLine 行缓冲区和 READLINE_POINT 变量到
插入点的当前位置。 如果执行的命令发生变化
的值 阅读LINE_LINE or READLINE_POINT,这些新值将是
反映在编辑状态。
-X 列出绑定到 shell 命令和关联命令的所有键序列
可以作为输入重用的格式。

除非给出了无法识别的选项或发生了错误,否则返回值为 0。

打破 [n]
从内退出 , , 直到选择 环形。 如果 n 被指定,中断 n
水平。 n 必须≥1。如果 n 大于封闭循环的数量,所有
封闭循环被退出。 返回值为 0 除非 n 不大于或
等于1。

内建的 外壳内置 [参数]
执行指定的shell内置,传递它 参数,并返回其出口
地位。 这在定义名称与 shell 相同的函数时很有用
内置,在函数内保留内置的功能。 这 cd
内置通常以这种方式重新定义。 返回状态为假,如果
外壳内置 不是 shell 内置命令。

呼叫者 [表达式]
返回任何活动子例程调用的上下文(shell 函数或脚本
与执行 . or 资源 内置)。 没有 表达式, 呼叫者 显示行
当前子程序调用的编号和源文件名。 如果一个非负
整数提供为 表达式, 呼叫者 显示行号、子程序名称和
当前执行调用堆栈中与该位置对应的源文件。
例如,此额外信息可用于打印堆栈跟踪。 这
当前帧是第 0 帧。除非 shell 没有执行,否则返回值为 0
子程序调用或 表达式 与呼叫中的有效位置不对应
叠加。

cd [-L|[-P [-e]] [-@]] [DIR]
将当前目录更改为 DIR。 如果 DIR 未提供,值 首页
shell 变量是默认值。 后面的任何附加参数 DIR 被忽略了。
变量 CDPATH 定义包含目录的搜索路径 DIR: 每个
目录名在 CDPATH 被搜索 DIR. 中的替代目录名称
CDPATH 由冒号 (:) 分隔。 中的空目录名称 CDPATH 是一样的
作为当前目录,即,``.''。 如果 DIR 以斜杠 (/) 开头,然后 CDPATH
未使用。 的 -P 选择原因 cd 使用物理目录结构
遍历时解析符号链接 DIR 在处理实例之前 ..
in DIR (另请参见 -P 选项 内置命令); 这 -L 期权力量
在处理实例后解析链接的符号链接
.. in DIR。 如果 .. 出现在 DIR,它是通过立即删除
以前的路径名组件来自 DIR, 回到斜线或开头 DIR。 如果
-e 选项随附 -P, 并且当前工作目录不能为
成功更改目录后成功确定, cd 将返回一个
不成功的状态。 在支持它的系统上, -@ 选项显示
与作为目录的文件关联的扩展属性。 一个论点 - is
转换成 $OLDPWD 在尝试更改目录之前。 如果一个非空
目录名来自 CDPATH 被使用,或者如果 - 是第一个参数,并且
目录更改成功,新工作目录的绝对路径名
写入标准输出。 如果目录是,则返回值为真
成功更改; 否则为假。

命令 [-pVv] 命令 [ARG ...]
运行 命令 ARGS 抑制正常的 shell 函数查找。 仅内置
命令或命令 PATH 被执行。 如果 -p 给出了选项,
寻找 命令 使用默认值执行 PATH 那是
保证找到所有标准实用程序。 如果任一 -V or -v 选项是
提供,描述 命令 被打印。 这 -v 选项导致一个词
指示用于调用的命令或文件名 命令 要显示; 这 -V
选项产生更详细的描述。 如果 -V or -v 提供选项,
如果退出状态为 0 命令 被发现,如果没有,则为 1。 如果这两个选项都不是
提供并发生错误或 命令 找不到,退出状态是 127。
否则,退出状态 命令 内置是退出状态 命令.

合成 [选项[]
生成可能的完成匹配 根据本 选项s,这可能
是被接受的任何选项 完成 内置除了 -p-r
将匹配写入标准输出。 当使用 -F or -C 选项,
由可编程完成工具设置的各种 shell 变量,而
可用,不会有有用的值。

匹配将以与可编程完成相同的方式生成
代码直接从具有相同的完成规范生成它们
旗帜。 如果 指定,只有那些完成匹配
显示。

除非提供无效选项或没有匹配项,否则返回值为真
产生。

完成 [-abcdefgjksuv[-o 补偿选择[-DE[-A 行动[-G 全局模式[-W 词汇表[-F
功能[-C 命令]
[-X 过滤器[-P 字首[-S 后缀] 姓名 [姓名 ...]
完成 -公关 [-DE[姓名 ...]
指定每个参数的方式 姓名 应该完成。 如果 -p 选项是
提供,或者如果没有提供选项,现有的完井规范是
以允许它们作为输入重用的方式打印。 这 -r 选项删除一个
每个完成规范 姓名,或者,如果没有 姓名s 提供,所有
完成规范。 这 -D option 表示剩余的选项和
动作应该适用于“默认”命令完成; 也就是完成
尝试执行先前未定义完成的命令。 这 -E
option 指示剩余的选项和操作应应用于“空”
命令完成; 也就是说,在空行上尝试完成。

当单词完成时应用这些完成规范的过程
尝试在上面进行了描述 可编程 完成.

其他选项,如果指定,具有以下含义。 的论据 -G,
-W-X 选项(以及,如有必要, -P-S 选项)应该被引用到
保护他们免受扩张之前 完成 内置函数被调用。
-o 补偿选择
补偿选择 控制 compspec 行为的多个方面
完成的简单生成。 补偿选择 可能是以下之一:
bash默认
执行其余的默认值 打坏 如果 compspec 完成
不产生匹配。
默认 如果 compspec 使用 readline 的默认文件名完成
不产生匹配。
目录名
如果 compspec 生成没有,则执行目录名称补全
匹配。
档名
告诉 readline compspec 生成文件名,因此它可以
执行任何特定于文件名的处理(例如在
目录名称、引用特殊字符或禁止
尾随空格)。 旨在与 shell 函数一起使用。
没有引用 告诉 readline 不要引用完整的单词,如果它们是
文件名(引用文件名是默认值)。
没有空间 告诉 readline 不要在单词后附加空格(默认)
在行尾完成。
加目录
在生成由 compspec 定义的任何匹配项后,目录
尝试完成名称并将任何匹配项添加到
其他动作的结果。
-A 行动
行动 可能是以下之一以生成可能的列表
完成:
别号 别名。 也可以指定为 -a.
数组变量
数组变量名。
捆绑 Readline库 键绑定名称。
内建的 shell 内置命令的名称。 也可以指定为 -b.
命令 命令名称。 也可以指定为 -c.
目录
目录名称。 也可以指定为 -d.
禁用
禁用的 shell 内置函数的名称。
启用 启用的 shell 内置函数的名称。
出口 导出的 shell 变量的名称。 也可以指定为 -e.
文件 文件名。 也可以指定为 -f.
功能
外壳函数的名称。
组名。 也可以指定为 -g.
帮助主题
被接受的帮助主题 帮助 内置。
主机
主机名,取自指定的文件 主机文件
变量。
工作 作业名称(如果作业控制处于活动状态)。 也可以指定为 -j.
关键词 外壳保留字。 也可以指定为 -k.
运行 正在运行的作业的名称(如果作业控制处于活动状态)。
服务 服务名称。 也可以指定为 -s.
设置选项 的有效参数 -o 选项 内置。
购物车 Shell 选项名称被接受 购物车 内置。
信号 信号名称。
停止 已停止作业的名称(如果作业控制处于活动状态)。
用户 用户名。 也可以指定为 -u.
变量
所有 shell 变量的名称。 也可以指定为 -v.
-C 命令
命令 在子shell环境中执行,其输出用作
可能的完成。
-F 功能
外壳函数 功能 在当前 shell 环境中执行。
当函数被执行时,第一个参数 ($1) 是名称
其参数正在完成的命令,第二个参数 ($2)是
正在完成的单词,以及第三个参数($3) 是前面的词
当前命令行上正在完成的单词。 当它完成时,
从值中检索可能的完成 完全
数组变量。
-G 全局模式
路径名扩展模式 全局模式 被扩展以产生可能的
完成。
-P 字首
字首 毕竟在每个可能完成的开头添加
已应用其他选项。
-S 后缀
后缀 在所有其他选项都有后附加到每个可能的完成
被应用。
-W 词汇表
词汇表 使用中的字符分割 IFS的 特殊变量为
分隔符,并且每个结果单词都被扩展。 可能的完成
是与正在完成的单词匹配的结果列表的成员。
-X 过滤器
过滤器 是用于路径名扩展的模式。 它适用于
由上述选项生成的可能完成列表和
参数,每个完成匹配 过滤器 已从列表中删除。
领先 ! in 过滤器 否定模式; 在这种情况下,任何完成
不匹配 过滤器 已移除。

除非提供无效选项,否则返回值为真
-p or -r 不提供 姓名 论点,试图删除一个
完成规范 姓名 不存在规范或错误
发生添加完成规范。

复合体 [-o 选项[-DE[+o 选项[姓名]
修改每个选项的完成选项 姓名 根据本 选项s,或为
当前正在执行的完成如果没有 姓名s 提供。 如果不 选项s 给出,
显示每个的完成选项 姓名 或当前完成。 这
可能的值 选项 是有效的 完成 内置上述。
-D option 表示剩余的选项应适用于“默认”
命令完成; 也就是说,尝试完成一个没有的命令
完成之前已经定义。 这 -E 选项表示剩余的
选项应适用于“空”命令完成; 也就是说,完成尝试
在一个空行上。

除非提供无效选项,否则返回值为真,尝试进行
修改选项 姓名 不存在完成规范的,或
发生输出错误。

继续 [n]
恢复封闭的下一次迭代 , , 直到选择 环形。 如果 n
指定,恢复在 n第一个封闭循环。 n 必须≥1。如果 n 更伟大
比封闭循环的数量,最后一个封闭循环(“顶级”
循环)被恢复。 返回值为 0 除非 n 不大于或等于
1.

宣布 [-aAfFgilnrtux[-p[姓名[=折扣值] ...]
排版 [-aAfFgilnrtux[-p[姓名[=折扣值] ...]
声明变量和/或赋予它们属性。 如果不 姓名给出 s 然后显示
变量的值。 这 -p 选项将显示的属性和值
姓名。 何时 -p 用于 姓名 参数,附加选项,除了 -f
-F,被忽略。 什么时候 -p 不提供 姓名 参数,它将显示
具有由指定的属性的所有变量的属性和值
其他选项。 如果没有提供其他选项 -p, 宣布 将显示
所有 shell 变量的属性和值。 这 -f 选项将限制
显示到 shell 函数。 这 -F 选项禁止显示功能
定义; 仅打印函数名称和属性。 如果 扩展调试
外壳选项启用使用 购物车, 源文件名和行号
功能定义也显示。 这 -F 选项暗示 -f。 该 -g
选项强制在全局范围内创建或修改变量,即使
宣布 在shell函数中执行。 在所有其他情况下它被忽略。 这
以下选项可用于将输出限制为具有指定的变量
属性或赋予变量属性:
-a姓名 是一个索引数组变量(见 阵列 以上)。
-A姓名 是一个关联数组变量(见 阵列 以上)。
-f 仅使用函数名称。
-i 该变量被视为整数; 算术评估(见 算术
评估 以上)在变量被赋值时执行。
-l 当变量被赋值时,所有的大写字符都是
转换为小写。 大写属性被禁用。
-n 给每个 姓名名称引用 属性,使其成为对另一个的名称引用
多变的。 另一个变量由值定义 姓名。 所有
参考和赋值 姓名,除了改变 -n 属性
本身,在引用的变量上执行 姓名的价值。 这 -n
属性不能应用于数组变量。
-r 他们成为 姓名s 只读。 这些名称不能被赋值
随后的赋值语句或未设置。
-t 给每个 姓名追踪 属性。 被追踪的函数继承了 DEBUG
返回 来自调用 shell 的陷阱。 trace 属性没有特殊的
变量的意义。
-u 当变量被赋值时,所有的小写字符都是
转换为大写。 小写属性被禁用。
-x 纪念 姓名s 用于通过环境导出到后续命令。

使用 `+' 代替 `-' 会关闭该属性,除了
+a 不能用于销毁数组变量和 +r 不会删除只读
属性。 在函数中使用时, 宣布排版 让每个 姓名 本地,如
本地 命令,除非 -g 提供选项。 如果变量名是
后跟 =折扣值,变量的值设置为 折扣值。 使用时 -a or -A
以及用于创建数组变量、附加属性的复合赋值语法
在后续分配之前不会生效。 返回值为 0,除非
遇到无效选项,尝试使用``-f 定义函数
foo=bar'',尝试为只读变量赋值,尝试
用于在不使用复合的情况下为数组变量赋值
赋值语法(见 阵列 以上),其中之一 名称 不是有效的外壳
变量名称,尝试关闭只读状态的只读状态
变量,尝试关闭数组变量的数组状态,或
尝试显示一个不存在的函数 -f.

迪尔斯 [-clpv] [+n] [-n]
如果没有选项,则显示当前记住的目录列表。 这
默认显示在一行中,目录名用空格分隔。
目录被添加到列表中 PUSHD 命令; 这 波普德 命令删除
列表中的条目。
-c 通过删除所有条目来清除目录堆栈。
-l 使用完整路径名生成列表; 默认列表格式使用
波浪号表示主目录。
-p 每行一个条目打印目录堆栈。
-v 每行打印一个条目的目录堆栈,每个条目的前缀为
它在堆栈中的索引。
+n 显示 n从显示的列表左侧算起的第 th 个条目 迪尔斯 ,尤其是
不带选项调用,从零开始。
-n 显示 n从显示的列表右侧算起的第 th 个条目 迪尔斯
在没有选项的情况下调用时,从零开始。

返回值为 0,除非提供了无效的选项或 n 指标超出
目录堆栈的末尾。

舍弃 [-ar[-h[工作规范 ...]
没有选项,删除每个 工作规范 从活动工作表中。 如果 工作规范 is
不存在,也不存在 -a 也不是 -r 提供了选项, 当前 工作 is
用过的。 如果 -h 给出了选项,每个 工作规范 没有从表中删除,但是
被标记为 签到 如果外壳收到一个,则不会发送到作业 签到。 如果
没有 工作规范 提供, -a option 表示删除或标记所有作业; 这 -r
没有一个选项 工作规范 参数将操作限制为正在运行的作业。 回报
值是 0 除非 工作规范 未指定有效作业。

回音 [-neE[ARG ...]
输出 ARGs,以空格分隔,后跟换行符。 退货状态是
0 除非发生写错误。 如果 -n 指定,尾随换行符是
压制。 如果 -e 给出了选项,解释了以下反斜杠-
转义字符已启用。 这 -E 选项禁用对这些的解释
转义字符,即使在默认情况下解释它们的系统上也是如此。 这
xpg_回声 shell 选项可用于动态确定是否 回音
默认情况下扩展这些转义字符。 回音 不解释 -- 意味着
选项结束。 回音 解释以下转义序列:
\a 警报(铃)
\b 退格
\c 抑制进一步的输出
\e
\E 转义字符
\f 换页
\n 新队
\r 回车
\t 水平标签
\v 垂直制表符
\\ 反斜线
\0NNN 值为八进制值的八位字符 NNN (零到三
八进制数字)
\xHH 值为十六进制值的八位字符 HH (一个或两个
十六进制数字)
\uH Unicode (ISO/IEC 10646) 字符,其值为十六进制值
H (一到四个十六进制数字)
\U哈哈哈哈哈
Unicode (ISO/IEC 10646) 字符,其值为十六进制值
哈哈哈哈哈 (一到八个十六进制数字)

enable [-a[-dnps[-f 文件名[姓名 ...]
启用和禁用内置 shell 命令。 禁用内置允许磁盘
与要执行的 shell 内置命令同名的命令
指定一个完整的路径名,即使 shell 通常搜索内置函数
在磁盘命令之前。 如果 -n 使用,每个 姓名 被禁用; 否则, 名称 ,那恭喜你,
启用。 例如,要使用 test 通过找到的二进制文件 PATH 而不是
shell 内置版本,运行“启用 -n 测试”。 这 -f 选项意味着加载新的
内置命令 姓名 来自共享对象 文件名, 在支持动态的系统上
加载。 这 -d 选项将删除以前加载的内置 -f。 如果不
姓名 给出了参数,或者如果 -p 提供了选项,shell 内置程序列表
被打印。 没有其他选项参数,列表包含所有启用的 shell
内置函数。 如果 -n 提供,只打印禁用的内置函数。 如果 -a is
提供,打印的列表包括所有内置函数,并指示是否或
不是每个都启用。 如果 -s 提供,输出仅限于 POSIX
特别 内置函数。 返回值为 0,除非 姓名 不是内置的 shell 或
从共享对象加载新的内置函数时出错。

评估 [ARG ...]
ARGs 被读取并连接到一个命令中。 这个命令是
然后由shell读取并执行,其退出状态作为值返回
of 评估. 如果没有 ARGS,或只有空参数, 评估 返回0。

EXEC [-cl[-a 姓名[命令 [参数]]
If 命令 已指定,它会替换 shell。 不会创建新进程。 这
参数 成为论据 命令。 如果 -l 提供选项,外壳
在传递给的第零个参数的开头放置一个破折号 命令。 这是
什么 登录(1) 确实。 这 -c 选择原因 命令 以空执行
环境。 如果 -a 提供,外壳通过 姓名 作为第零个参数
执行的命令。 如果 命令 由于某种原因无法执行,非
交互式 shell 退出,除非 执行失败 外壳选项已启用。 在那里面
情况下,它返回失败。 如果文件不能,交互式 shell 将返回失败
被执行。 如果 命令 未指定,任何重定向都在
当前shell,返回状态为0。如果有重定向错误,
返回状态为 1。

出口 [n]
导致外壳以状态退出 n。 如果 n 省略,退出状态为
执行的最后一个命令的那个。 一个陷阱 退出 在shell之前执行
终止。

出口 [-fn[姓名[=]] ...
出口 -p
提供的 名称 被标记为自动导出到环境
随后执行的命令。 如果 -f 给出了选项,则 名称
职能。 如果不 名称 给出,或者如果 -p 提供选项,名称列表
打印所有导出的变量。 这 -n 选项导致导出属性
从每个中删除 姓名. 如果变量名后跟 =, 的价值
变量设置为 . 出口 除非无效,否则返回退出状态 0
遇到选项,其中之一 名称 不是有效的 shell 变量名,或 -f
提供了一个 姓名 那不是一个函数。

fc [-e 名称[-lnr[第一[最后]
fc -s [=代表[CMD]
第一种形式从中选择一系列命令 第一最后 从历史列表中
并显示或编辑并重新执行它们。 姓氏:最后 可以指定为
字符串(定位以该字符串开头的最后一个命令)或作为数字(一个
历史列表中的索引,其中负数用作与历史列表的偏移量
当前命令编号)。 如果 最后 未指定它被设置为当前命令
用于列表(以便 ``fc -l -10'' 打印最后 10 个命令)和 第一
除此以外。 如果 第一 未指定它设置为上一个命令进行编辑
和 -16 用于列表。

-n 选项在列出时禁止命令编号。 这 -r 期权反转
命令的顺序。 如果 -l 给出了选项,命令列在
标准输出。 否则,编辑器给出 名称 在文件上调用
包含这些命令。 如果 名称 没有给出,值 编辑部 变量
被使用,并且值 EDITOR if 编辑部 未设置。 如果两个变量都没有设置,
vi 用来。 编辑完成后,编辑的命令被回显并执行。

在第二种形式中, 命令 在每个实例后重新执行 被取代了
by 代表. 命令 被解释为相同 第一 多于。 一个有用的别名
这是 ``r="fc -s"'',因此键入 ``r cc'' 会运行最后一个以开头的命令
``cc'' 并键入 ``r'' 重新执行上一个命令。

如果使用第一种形式,则返回值为 0,除非是无效选项
遇到或 第一 or 最后 指定超出范围的历史行。 如果 -e 选项
提供,返回值是最后执行的命令或失败的值
如果命令的临时文件发生错误。 如果第二种形式是
使用,返回状态为重新执行命令的状态,除非 CMD 才不是
指定一个有效的历史行,在这种情况下 fc 返回失败。

fg [工作规范]
简历 工作规范 在前台,并使其成为当前工作。 如果 工作规范 是不是
目前,shell 的概念是 当前 工作 用来。 返回值是
置于前台的命令,或者在作业控制时运行失败
禁用,或者在启用作业控制的情况下运行时,如果 工作规范 没有指定一个有效的
工作或 工作规范 指定在没有作业控制的情况下启动的作业。

获取选项 选择字符串 姓名 [ARGS]
获取选项 shell 过程使用它来解析位置参数。 选择字符串
包含要识别的选项字符; 如果一个字符后跟一个
冒号,该选项应该有一个参数,应该与
它由空白。 冒号和问号字符不能用作
选项字符。 每次调用时, 获取选项 将下一个选项放在
外壳变量 姓名, 初始化 姓名 如果它不存在,则索引
要处理成变量的下一个参数 选择. 选择 被初始化为 1
每次调用 shell 或 shell 脚本时。 当一个选项需要一个
论据, 获取选项 将该参数放入变量中 OPTARG. 外壳做
未重置 选择 自动地; 必须在多次调用之间手动重置
获取选项 如果要使用一组新参数,则在同一个 shell 调用中。

当遇到选项结束时, 获取选项 以更大的返回值退出
比零。 选择 设置为第一个非选项参数的索引,并且 姓名
设定为 ?。

获取选项 通常解析位置参数,但如果给出更多参数
in ARGS, 获取选项 而是解析那些。

获取选项 可以通过两种方式报告错误。 如果第一个字符 选择字符串 是一个
冒号, 无声 使用错误报告。 在正常操作中,诊断消息
当遇到无效选项或缺少选项参数时打印。 如果
变量 奥普特 设置为 0,则不会显示错误消息,即使
的第一个字符 选择字符串 不是冒号。

如果看到无效选项, 获取选项 地方? 进入 姓名 并且,如果不是静音,则打印
错误消息和取消设置 OPTARG。 如果 获取选项 是无声的,选项字符
发现被放置在 OPTARG 并且不打印任何诊断消息。

如果未找到所需的参数,并且 获取选项 不沉默,一个问号(?)
放在 姓名, OPTARG 未设置,并打印诊断消息。 如果
获取选项 是无声的,然后是冒号 (:) 被放置在 姓名OPTARG 被设置为
找到选项字符。

获取选项 如果找到指定或未指定的选项,则返回 true。 它返回
如果遇到选项结束或发生错误,则为 false。

哈希 [-lr[-p 文件名[-dt[姓名]
每一次 哈希 被调用,命令的完整路径名 姓名
搜索目录 $路径 并记住了。 任何以前记得的
路径名被丢弃。 如果 -p 提供选项,不执行路径搜索,
文件名 用作命令的完整文件名。 这 -r 选项导致
shell 忘记所有记住的位置。 这 -d 选项导致外壳忘记
每个被记住的位置 姓名。 如果 -t 提供选项,完整的
每个路径名 姓名 对应打印。 如果多个 姓名 参数是
与供应 -t是, 姓名 在散列的完整路径名之前打印。 这 -l
选项使输出以可重复用作输入的格式显示。 如果
没有给出参数,或者如果只有 -l 已提供,有关记住的信息
命令被打印出来。 返回状态为真,除非 姓名 未找到或
提供了无效选项。

帮助 [-dms[模式]
显示有关内置命令的有用信息。 如果 模式 被指定, 帮助
提供有关所有命令匹配的详细帮助 模式; 否则帮助所有
内置函数和外壳控制结构被打印出来。
-d 显示每个的简短描述 模式
-m 显示每个的描述 模式 类似于联机帮助页的格式
-s 仅显示每个的简短使用概要 模式

除非没有命令匹配,否则返回状态为 0 模式.

历史 [n]
历史 -c
历史 -d 抵消
历史 -anrw [文件名]
历史 -p ARG [ARG ...]
历史 -s ARG [ARG ...]
如果没有选项,则显示带有行号的命令历史列表。 列出的行
* 已被修改。 一个论点 n 只列出最后一个 n 线。 如果
外壳变量 历史时间格式 被设置并且不为空,它被用作格式字符串
时间(3) 显示与每个显示历史相关的时间戳
入口。 在格式化的时间戳和
历史线。 如果 文件名 提供,它用作历史文件的名称;
如果不是,则值 历史档案 用来。 选项(如果提供)具有以下内容
含义:
-c 通过删除所有条目来清除历史列表。
-d 抵消
删除位置的历史条目 抵消.
-a 追加“新”历史行(从一开始就输入的历史行
当前 打坏 session) 到历史文件。
-n 将尚未从历史文件中读取的历史行读入
当前历史列表。 这些是附加到历史文件的行,因为
当前的开始 打坏 会议。
-r 读取历史文件的内容并将它们附加到当前历史
名单。
-w 将当前历史列表写入历史文件,覆盖历史
文件的内容。
-p 对以下进行历史替换 ARGS 并将结果显示在
标准输出。 不将结果存储在历史列表中。 每个
ARG 必须引用以禁用正常的历史扩展。
-s 存放 ARGS 在历史列表中作为一个条目。 中的最后一个命令
历史列表在删除之前 ARGS 被添加。

如果 历史时间格式 变量被设置,时间戳信息与
每个历史条目都被写入历史文件,并标有历史注释
特点。 读取历史文件时,以历史注释开头的行
后跟一个数字的字符被解释为时间戳
以前的历史线。 返回值为 0,除非无效选项是
遇到,读取或写入历史文件时发生错误,无效
抵消 作为参数提供给 -d,或作为历史扩展提供
争论 -p 将失败。

工作 [-lnprs[ 工作规范 ...]
工作 -x 命令 [ ARGS ...]
第一个表单列出了活动作业。 选项的含义如下:
-l 除了正常信息之外,还列出进程 ID。
-n 仅显示有关自用户以来已更改状态的作业的信息
最后通知了他们的状态。
-p 仅列出作业的进程组领导的进程 ID。
-r 仅显示正在运行的作业。
-s 仅显示停止的作业。

If 工作规范 给出,输出仅限于有关该作业的信息。 这
除非遇到无效选项或无效选项,否则返回状态为 0 工作规范 is
提供。

如果 -x 提供选项, 工作 替换任何 工作规范 在发现 命令 or ARGS
与相应的进程组ID,并执行 命令 通过它 ARGS,
返回其退出状态。

[-s 信号规格 | -n 信号 | -信号规格[PID | 工作规范] ...
-l [信号规格 | 退出状态]
发送由命名的信号 信号规格 or 信号 到由命名的进程 PID or
工作规范. 信号规格 是不区分大小写的信号名称,例如 杀人狂 (与或
没有 SIG的 前缀)或信号编号; 信号 是一个信号编号。 如果 信号规格
不存在,那么 目标期限 假设。 一个论点 -l 列出信号名称。
如果在以下情况下提供了任何参数 -l 给出,信号的名称
列出对应的参数,返回状态为0。
退出状态 争论 -l 是一个数字,指定信号编号或
由信号终止的进程的退出状态。 如果至少有一个,则返回 true
信号已成功发送,如果发生错误或无效选项,则为 false
遭遇。

ARG [ARG ...]
ARG 是要计算的算术表达式(请参阅 算术 评估
多于)。 如果最后 ARG 评估为 0, 返回 1; 否则返回 0。

本地 [选项[姓名[=折扣值] ...]
对于每个参数,一个名为的局部变量 姓名 创建并分配 折扣值。 该
选项 可以是接受的任何选项 宣布。 何时 本地 在一个
函数,它导致变量 姓名 有一个可见的范围仅限于此
函数及其子项。 没有操作数, 本地 写入本地列表
标准输出的变量。 使用是错误的 本地 当不在一个
功能。 返回状态为 0,除非 本地 在函数外使用,一个
无效 姓名 提供,或 姓名 是只读变量。

注销 退出登录 shell。

地图文件 [-n [-O 起源[-s [-t[-u fd[-C 回电话[-c 量子[排列]
读取数组 [-n [-O 起源[-s [-t[-u fd[-C 回电话[-c 量子]
[排列]
将标准输入中的行读入索引数组变量 排列,或从
文件描述符 fd 如果 -u 提供选项。 变量 地图文件
默认 排列. 选项(如果提供)具有以下含义:
-n 最多复制 线。 如果 为 0,所有行都被复制。
-O 开始分配给 排列 在索引处 起源. 默认索引为 0。
-s 丢弃第一个 行读。
-t 从读取的每一行中删除尾随的换行符。
-u 从文件描述符中读取行 fd 而不是标准输入。
-C 评估 回电话 每次 量子 行被读取。 这 -c 选项指定
量子.
-c 指定每次调用之间读取的行数 回电话.

If -C 没有指定 -c,默认量程为 5000。当 回电话 is
评估,它被提供下一个要分配的数组元素的索引和
要作为附加参数分配给该元素的行。 回电话 is
在读取行之后但在分配数组元素之前评估。

如果没有提供明确的来源, 地图文件 会清除 排列 分配前
到它。

地图文件 除非无效的选项或选项参数是成功返回
供应, 排列 无效或不可分配,或者如果 排列 不是索引数组。

波普德 [-n] [+n] [-n]
从目录堆栈中删除条目。 没有参数,删除顶部
堆栈中的目录,并执行 cd 到新的顶级目录。 参数,
如果提供,则具有以下含义:
-n 从目录中删除目录时抑制目录的正常更改
堆栈,因此只有堆栈被操作。
+n 删除 n从显示的列表左侧算起的第 th 个条目 迪尔斯,
从零开始。 例如:``popd +0'' 删除第一个目录,
``popd +1'' 第二个。
-n 删除 n从显示的列表右侧算起的第 th 个条目 迪尔斯,
从零开始。 例如: ``popd -0'' 删除最后一个目录,
倒数第二个“popd -1”。

如果 波普德 命令成功,一个 迪尔斯 也被执行,并且返回
状态为 0。 波普德 如果遇到无效选项,则返回 false,目录
堆栈为空,指定了不存在的目录堆栈条目,或目录
更改失败。

的printf [-v VAR] 格式 [参数]
写入格式化 参数 到标准输出的控制下
格式。 该 -v 选项导致将输出分配给变量 VAR
而不是打印到标准输出。

格式 是一个字符串,它包含三种类型的对象:plain
字符,它们被简单地复制到标准输出,字符转义序列,
转换并复制到标准输出和格式规范,
每一个都会导致下一个连续的打印 论点。 除了
标准 的printf(1) 格式规范, 的printf 解释如下
扩充功能:
%b 原因 的printf 扩展相应的反斜杠转义序列
论点 (除了那个 \c 终止输出,反斜杠 \', \"\?
不会被删除,八进制转义开始于 \0 最多可包含四个
数字)。
%q 原因 的printf 输出对应的 论点 以一种可以
重新用作外壳输入。
%(日期文件)T
原因 的printf 输出使用产生的日期时间字符串 日期文件 as
一个格式字符串 时间(3). 相应的 论点 是一个整数
表示自纪元以来的秒数。 二特殊论证
可以使用的值:-1 表示当前时间,-2 表示
调用 shell 的时间。 如果未指定参数,则转换行为
好像已经给出 -1 一样。 这是通常的例外 的printf 行为。

非字符串格式说明符的参数被视为 C 常量,除了 a
允许前导加号或减号,如果前导字符是单个或
双引号,值为后面字符的ASCII值。

格式 根据需要重新使用以消耗所有 参数。 如果 格式
需要更多 参数 比提供的,额外的格式规范表现
就好像提供了零值或空字符串(视情况而定)。 回报
成功时值为零,失败时非零。

PUSHD [-n] [+n] [-n]
PUSHD [-n[DIR]
将目录添加到目录堆栈的顶部,或旋转堆栈,使
新的栈顶当前工作目录。 没有任何争论,
交换前两个目录并返回 0,除非目录堆栈是
空的。 参数(如果提供)具有以下含义:
-n 添加目录时禁止目录的正常更改
堆栈,因此只有堆栈被操作。
+n 旋转堆栈,使 nth 目录(从左边数
显示的列表 迪尔斯,从零开始)位于顶部。
-n 旋转堆栈,使 n第 th 目录(从右边开始计数)
显示的列表 迪尔斯,从零开始)位于顶部。
DIR 添加 DIR 到顶部的目录堆栈,使其成为新的当前
工作目录就好像它已作为参数提供给 cd
内置。

如果 PUSHD 命令成功,一个 迪尔斯 也被执行。 如果第一种形式
用来, PUSHD 返回 0 除非 cd 到 DIR 失败。 使用第二种形式, PUSHD
除非目录栈为空,否则返回 0,一个不存在的目录栈
指定元素,或目录更改为指定的新当前
目录失败。

PWD [-LP]
打印当前工作目录的绝对路径名。 打印的路径名
不包含符号链接,如果 -P 提供选项或 -o 选项
内置命令已启用。 如果 -L 选项被使用,路径名
打印可能包含符号链接。 除非发生错误,否则返回状态为 0
读取当前目录的名称或提供无效选项时。

[[-a 一个名字[-d DELIM[-i 文本[-n 字符[-N 字符[-p 提示[-t
超时[-u fd[姓名 ...]
从标准输入或文件描述符中读取一行 fd 提供
作为对 -u 选项,并且第一个词被分配给第一个 姓名,
第二个字到第二个字 姓名,等等,还有剩余的词和它们的
分配给最后一个的中间分隔符 姓名. 如果阅读的单词较少
从输入流比名称,其余名称分配空值。
中的字符 IFS的 用于使用相同的规则将行拆分为单词
用于扩展的外壳(如上文所述 Word 拆分)。 反斜杠
特点 (\) 可用于删除下一个读取字符的任何特殊含义
和线路延续。 选项(如果提供)具有以下含义:
-a 一个名字
这些词被分配给数组变量的顺序索引 一个名字,
从 0 开始。 一个名字 在分配任何新值之前未设置。 其他
姓名 参数被忽略。
-d DELIM
的第一个字符 DELIM 用于终止输入行,而不是
比换行符。
-e 如果标准输入来自终端, 的ReadLine (见 在线阅读
以上)用于获取线。 Readline 使用当前(或默认,
如果行编辑以前未激活)编辑设置。
-i 文本
If 的ReadLine 被用来读取行, 文本 被放入编辑
编辑开始前的缓冲区。
-n 字符
阅读后返回 字符 字符而不是等待
完整的输入行,但如果少于 字符
在分隔符之前读取字符。
-N 字符
准确阅读后返回 字符 字符而不是等待
一个完整的输入行,除非遇到 EOF 或 超时。
输入中遇到的分隔符不会被特殊处理,并且
不要引起 返回直到 字符 字符被读取。
-p 提示
屏 显: 提示 在标准错误上,没有尾随换行符,之前
试图读取任何输入。 提示仅在输入时显示
来自一个终端。
-r 反斜杠不充当转义字符。 反斜杠被认为是
成为这条线的一部分。 特别是,反斜杠-换行符对可能不是
用作行的延续。
-s 静音模式。 如果输入来自终端,则不回显字符。
-t 超时
原因 如果输入的完整行(或
指定数量的字符)未在其中读取 超时 秒。 超时
可以是十进制数,小数部分后跟小数部分
观点。 此选项仅在以下情况下有效 正在从一个读取输入
终端、管道或其他特殊文件; 读取时没有效果
常规文件。 如果 超时, 保存读入的任何部分输入
指定的变量 姓名。 如果 超时 是0, 立即返回,
无需尝试读取任何数据。 如果输入可用,则退出状态为 0
在指定的文件描述符上,否则为非零。 退出状态为
如果超过超时,则大于 128。
-u fd 从文件描述符读取输入 fd.

如果不 名称 提供,读取的行被分配给变量 回复。 该
返回码为零,除非遇到文件尾, 超时(其中
如果返回码大于 128),变量赋值错误(如
分配给只读变量)发生,或者提供了无效的文件描述符
作为论据 -u.

只读 [-aAF[-p[姓名[=] ...]
给定的 名称 被标记为只读; 这些的价值 名称 不得更改
通过随后的分配。 如果 -f 提供选项,功能
对应于该 名称 如此标记。 这 -a 选项将变量限制为
索引数组; 这 -A 选项将变量限制为关联数组。 如果
提供了两个选项, -A 优先。 如果不 姓名 给出参数,或
如果 -p 提供选项,打印所有只读名称的列表。 另一个
选项可用于将输出限制为只读集的子集
名称。 这 -p 选项使输出以可重复使用的格式显示
作为输入。 如果变量名后跟 =,变量的值为
设置 . 除非遇到无效选项,否则返回状态为 0,一
名称 不是有效的 shell 变量名,或 -f 提供了一个 姓名
不是函数。

回报 [n]
使函数停止执行并返回由指定的值 n
呼叫者。 如果 n 省略,返回状态为最后执行的命令的状态
函数体。 如果 回报 在函数外部使用,但在执行期间
脚本由 . (资源) 命令,它会导致 shell 停止执行该命令
脚本并返回 n 或在其中执行的最后一个命令的退出状态
脚本作为脚本的退出状态。 如果 n 提供,返回值是
它的最低有效 8 位。 返回状态非零,如果 回报 提供
非数字参数,或在函数外部使用而不是在执行期间使用
脚本 . or 资源. 任何与 返回 陷阱被执行
在函数或脚本之后恢复执行之前。

[--abefhkmnptuvxBCEHPT[-o 选项名称[ARG ...]
[+abefhkmnptuvxBCEHPT[+o 选项名称[ARG ...]
如果没有选项,每个 shell 变量的名称和值都显示在一个
可重复用作设置或重置当前设置的输入的格式
变量。 只读变量无法重置。 在 POSIX 模式,只有外壳
列出变量。 输出根据当前语言环境排序。 什么时候
选项被指定,它们设置或取消设置 shell 属性。 任何剩余的参数
选项处理后被视为位置参数的值,并且是
按顺序分配给 $1, $2, ... $n. 选项(如果指定)具有以下内容
含义:
-a 自动标记修改或创建的变量和函数
用于导出到后续命令的环境。
-b 立即报告已终止后台作业的状态,而不是
在下一个主要提示之前。 这仅在作业控制是有效的
启用。
-e 立即退出,如果 管道 (可能由单个 简单
命令),该 名单,或 复合 命令 (见 SHELL 语法 以上),退出
具有非零状态。 如果命令失败,shell 不会退出
是命令列表的一部分,紧跟在 or 直到 关键词,
测试的一部分 if or ELIF 保留字,任何的一部分
命令在一个 && or || 除了最后的命令之外的列表
&& or ||, 管道中的任何命令,但最后一个,或者如果命令的
返回值被反转 !. 如果复合命令不是 a
subshel​​l 返回非零状态,因为命令失败而 -e
被忽略,shell 不会退出。 一个陷阱 ERR,如果设置,则执行
在 shell 退出之前。 此选项适用于 shell 环境和
每个子shell环境分别(见 指挥 执行 环境
以上),并可能导致子shell在执行所有命令之前退出
在子外壳中。

如果复合命令或 shell 函数在以下上下文中执行 -e is
被忽略,复合命令中不执行任何命令或
函数体会受到 -e 设置,即使 -e 被设置和一个
命令返回失败状态。 如果复合命令或 shell 函数
-e 在上下文中执行时 -e 被忽略,该设置将
在复合命令或包含的命令之前没有任何效果
函数调用完成。
-f 禁用路径名扩展。
-h 在查找命令以供执行时记住它们的位置。
这是默认启用的。
-k 赋值语句形式的所有参数都放在
命令的环境,而不仅仅是命令名称之前的环境。
-m 监控模式。 作业控制已启用。 默认情况下,此选项处于启用状态
支持它的系统上的交互式 shell(请参阅 JOB 控制 多于)。 全部
进程在单独的进程组中运行。 当后台工作
完成后,shell 会打印一行包含其退出状态的行。
-n 读取命令但不执行它们。 这可用于检查外壳
语法错误的脚本。 这被交互式 shell 忽略。
-o 选项名称
选项名称 可以是以下之一:
出口
与...一样 -a.
大括号展开
与...一样 -B.
emacs的 使用 emacs 风格的命令行编辑界面。 这是启用的
默认情况下,当 shell 是交互式的时,除非 shell 是
开始于 --无编辑 选项。 这也影响编辑
接口用于 -e.
错误退出 与...一样 -e.
错误跟踪
与...一样 -E.
函数跟踪
与...一样 -T.
哈沙尔 与...一样 -h.
组织扩展
与...一样 -H.
历史 启用命令历史记录,如上文所述 历史。 这
选项在交互式 shell 中默认打开。
忽略
效果就好像 shell 命令 ``IGNOREEOF=10'' 已经被
执行(见 变量 以上)。
关键词 与...一样 -k.
监控 与...一样 -m.
无声无息
与...一样 -C.
NOEXEC 与...一样 -n.
无球 与...一样 -f.
无日志 目前忽略。
通知 与...一样 -b.
名词集 与...一样 -u.
一个命令 与...一样 -t.

与...一样 -P.
管道故障
如果设置,则管道的返回值是最后一个的值
(最右边)命令以非零状态退出,如果全部为零
管道中的命令成功退出。 这个选项是
默认禁用。
POSIX 改变行为 打坏 默认操作不同的地方
从 POSIX 标准到匹配标准 (POSIX 模式)。 看到
SEE ALSO 下面是对详细介绍 posix 的文档的参考
模式会影响 bash 的行为。
特权
与...一样 -p.
详细 与...一样 -v.
vi 使用 vi 风格的命令行编辑界面。 这也影响
用于的编辑界面 -e.
跟踪 与...一样 -x.
If -o 不提供 选项名称, 当前选项的值
被打印。 如果 +o 不提供 选项名称, 一系列
重新创建当前选项设置的命令显示在
标准输出。
-p 打开 特权 模式。 在这种模式下, $环境变量$BASH_ENV 文件是
未处理,shell 函数未从环境中继承,并且
贝壳类, 巴斯夫, CDPATH环球网 变量,如果它们出现
在环境中,被忽略。 如果 shell 以
有效用户(组)id 不等于真实用户(组)id,并且 -p
未提供选项,将执行这些操作并提供有效的用户 ID
设置为真实用户 ID。 如果 -p 选项在启动时提供,
有效用户 ID 不会重置。 关闭此选项会导致
有效的用户和组 ID 被设置为真实的用户和组 ID。
-t 读取并执行一条命令后退出。
-u 处理特殊参数“@”以外的未设置变量和参数
和“*”作为执行参数扩展时的错误。 如果扩展是
尝试使用未设置的变量或参数,shell 会打印错误
消息,如果不是交互式的,则以非零状态退出。
-v 在读取 shell 输入行时打印它们。
-x 每个展开后 简单 命令, 命令, 案件 命令, 选择
命令或算术 命令,显示扩展值 PS4,
后跟命令及其扩展参数或关联的单词列表。
-B shell 执行大括号扩展(参见 支撑 扩展 多于)。 这是在
默认情况下。
-C 如果设置, 打坏 不会用 >, >&<>
重定向操作符。 创建输出文件时,这可能会被覆盖
通过使用重定向运算符 >| 而不是 >.
-E 如果设置,任何陷阱 ERR 由shell函数继承,命令
替换和在子 shell 环境中执行的命令。 这 ERR
在这种情况下,陷阱通常不会被继承。
-H 启用 ! 样式历史替换。 此选项在默认情况下处于启用状态
外壳是交互式的。
-P 如果设置,shell 在执行命令时不解析符号链接
cd 更改当前工作目录。 它使用物理
目录结构代替。 默认情况下, 打坏 遵循逻辑链
执行更改当前目录的命令时的目录。
-T 如果设置,任何陷阱 DEBUG返回 被shell函数继承,
命令替换,以及在子 shell 环境中执行的命令。
DEBUG返回 在这种情况下,陷阱通常不会被继承。
-- 如果此选项后面没有参数,则位置参数为
未设置。 否则,位置参数设置为 ARGs,即使
其中一些以 -.
- 信号选项结束,导致所有剩余 ARGs 分配给
位置参数。 这 -x-v 选项被关闭。 如果有
没有 ARGs,位置参数保持不变。

除非另有说明,否则这些选项默认关闭。 使用 + 而不是 -
导致这些选项被关闭。 这些选项也可以指定为
调用 shell 的参数。 可以找到当前的选项集
in $-. 除非遇到无效选项,否则返回状态始终为真。

转移 [n]
位置参数来自 n+1 ... 重命名为 $1 .... 参数
用数字表示 $# 向下 $#-n+1 未设置。 n 必须是非负数
数字小于或等于 $#。 如果 n 为 0,则不更改任何参数。 如果 n is
未给出,则假定为 1。如果 n 大于 $#,位置
参数不变。 返回状态大于零,如果 n 更伟大
$# 或小于零; 否则为 0。

购物车 [-pqsu[-o[选择名 ...]
切换控制可选外壳行为的设置值。 设置
可以是下面列出的那些,或者,如果 -o 选项被使用,那些可用的
-o 选项 内置命令。 没有选择,或 -p
选项,显示所有可设置选项的列表,并指示是否
或者不是每个都设置了。 这 -p 选项导致输出以一种可能的形式显示
作为输入重用。 其他选项的含义如下:
-s 启用(设置)每个 选择名.
-u 禁用(取消设置)每个 选择名.
-q 抑制正常输出(安静模式); 返回状态表明是否
选择名 设置或取消设置。 如果多个 选择名 参数给出
-q, 返回状态为零,如果全部 选择名 已启用; 非零
除此以外。
-o 限制值 选择名 为那些定义的 -o 选项
内置。

如果有 -s or -u 没有使用 选择名 论据, 购物车 只显示那些
分别设置或取消设置的选项。 除非另有说明,否则 购物车
默认情况下禁用(未设置)选项。

列出选项时的返回状态为零,如果全部 选择名 已启用,非
否则为零。 设置或取消设置选项时,返回状态为零
除非一个 选择名 不是有效的 shell 选项。

的列表中 购物车 选项是:

自动光盘 如果设置,则作为目录名称的命令名称将被执行,就好像它
是争论的焦点 cd 命令。 此选项仅供
交互式外壳。
cdable_vars
如果设置,则为 cd 不是目录的内置命令是
假定为变量的名称,其值为要更改的目录
至。
CD拼写 如果设置,则目录组件拼写中的小错误 cd
命令将被更正。 检查的错误被转置
个字符、一个缺失字符和一个字符太多。 如果一个
找到更正,打印更正后的文件名,然后命令
收益。 此选项仅由交互式 shell 使用。
检查哈希
如果设置, 打坏 检查在哈希表中找到的命令之前是否存在
试图执行它。 如果散列命令不再存在,则正常路径
执行搜索。
检查工作
如果设置, 打坏 列出之前停止和运行的任何作业的状态
退出交互式 shell。 如果任何作业正在运行,这将导致
退出将被推迟到没有干预的情况下尝试第二次退出
命令(见 JOB 控制 多于)。 如果有的话,shell 总是推迟退出
作业停止。
检查大小
如果设置, 打坏 在每个命令后检查窗口大小,如有必要,
更新值 线数.
商人 如果设置, 打坏 尝试将多行命令的所有行保存在
相同的历史条目。 这允许轻松重新编辑多行命令。
兼容31
如果设置, 打坏 将其行为更改为 3.1 版的行为
引用的论据 [[ 条件命令 =~ 操作员和语言环境-
使用时的特定字符串比较 [[ 条件命令 <>
运营商。 bash-4.1 之前的 Bash 版本使用 ASCII 整理和
链表(3); bash-4.1 及更高版本使用当前语言环境的整理顺序
斯特科尔(3)。
兼容32
如果设置, 打坏 将其行为更改为 3.2 版的行为
使用时特定于语言环境的字符串比较 [[ 条件命令 <
> 运算符(见上一项)。
兼容40
如果设置, 打坏 将其行为更改为 4.0 版的行为
使用时特定于语言环境的字符串比较 [[ 条件命令 <
> 运营商(见描述 兼容31) 的影响
中断命令列表。 Bash 4.0 及更高版本中断了
就像 shell 收到中断一样列出; 以前的版本继续
使用列表中的下一个命令。
兼容41
如果设置, 打坏,当在 POSIX 模式,在双引号中处理单引号
参数扩展为特殊字符。 单引号必须匹配
(偶数)和单引号之间的字符是
视为引用。 这是 posix 模式到 4.1 版的行为。
默认的 bash 行为与以前的版本一样。
兼容42
如果设置, 打坏 不处理模式中的替换字符串
使用引号删除的替换词扩展。
完整引用
如果设置, 打坏 引用文件名和目录中的所有 shell 元字符
执行完成时的名称。 如果没有设置, 打坏 删除元字符
例如将引用的字符集中的美元符号
当这些元字符出现在 shell 变量中时完成的文件名
待完成的文字参考。 这意味着美元符号
扩展到目录的变量名不会被引用; 然而,任何
文件名中出现的美元符号也不会被引用。 这是
仅当 bash 使用反斜杠引用完整的文件名时才有效。
这个变量是默认设置的,这是默认的 bash 行为
通过 4.2 的版本。
直接扩展
如果设置, 打坏 用单词扩展的结果替换目录名称
执行文件名补全时。 这改变了
readline 编辑缓冲区。 如果没有设置, 打坏 试图保留什么
用户输入。
咒语
如果设置, 打坏 尝试在单词期间对目录名称进行拼写更正
如果最初提供的目录名称不存在,则完成。
点球 如果设置, 打坏 包括以“.”开头的文件名在结果中
路径名扩展。
执行失败
如果设置,则非交互式 shell 在无法执行文件时不会退出
指定为参数 EXEC 内置命令。 交互式外壳
不退出如果 EXEC 将失败。
展开别名
如果设置,别名将按照上面的描述进行扩展 别名. 这个选项
默认情况下为交互式 shell 启用。
扩展调试
如果设置,将启用供调试器使用的行为:
1. -F 选项 宣布 内置显示源文件名
和作为一个函数提供的每个函数名对应的行号
论据。
2. 如果命令由 DEBUG 陷阱返回一个非零值,
下一个命令被跳过并且不执行。
3. 如果命令由 DEBUG 陷阱返回值 2,并且
shell 在子程序中执行(shell 函数或 shell
执行的脚本 . or 资源 内置函数),调用 回报 is
模拟的。
4. BASH_ARGCBASH_ARGV 按照他们的描述进行更新
以上说明。
5. 启用函数跟踪:命令替换、shell 函数、
和子shell调用 ( 命令 ) 继承 DEBUG返回
陷阱。
6. 错误跟踪已启用:命令替换、shell 函数、
和子shell调用 ( 命令 ) 继承 ERR 陷阱。
外部全局 如果设置,则上面描述的扩展模式匹配功能
路径名 扩展 已启用。
引述
如果设置, $'绳子'和 $"绳子" 引用是在 ${参数}
用双引号括起来的扩展。 默认情况下启用此选项。
故障全局
如果设置,则在路径名扩展期间无法匹配文件名的模式
导致扩展错误。
强制忽略
如果设置,则由指定的后缀 菲诺 shell 变量导致单词
在执行单词完成时被忽略,即使被忽略的单词是
唯一可能的完成。 看 SHELL 变数 以上为说明
of 菲诺. 默认情况下启用此选项。
球虫
如果设置,则在模式匹配括号表达式中使用的范围表达式(请参阅
模式 匹配 以上) 表现得好像在传统的 C 语言环境中一样
进行比较。 即当前语言环境的整理顺序
不考虑,所以 b 不会整理之间 AB
大写和小写 ASCII 字符将整理在一起。
环球之星
如果设置,模式 ** 在路径名扩展上下文中使用将匹配所有
文件和零个或多个目录和子目录。 如果图案是
其次是 /, 只有目录和子目录匹配。
gnu_errfmt
如果设置,shell 错误消息将写入标准 GNU 错误消息
格式。
历史追加
如果设置,历史列表将附加到由值命名的文件中
历史档案 当 shell 退出时变量,而不是覆盖文件。
历史编辑
如果设置,并且 的ReadLine 正在使用,用户有机会重新
编辑失败的历史替换。
历史验证
如果设置,并且 的ReadLine 正在使用,历史替换的结果是
不会立即传递给 shell 解析器。 相反,结果行是
加载到 的ReadLine 编辑缓冲区,允许进一步修改。
主机完成
如果设置,并且 的ReadLine 正在使用, 打坏 将尝试执行主机名
当一个单词包含一个时完成 @ 正在完成(见 完成
在线阅读 多于)。 这是默认启用的。
呼朋唤友
如果设置, 打坏 会寄 签到 交互式登录 shell 时的所有作业
退出。
互动评论
如果设置,则允许以开头的单词 # 导致那个词和所有剩余的
在交互式 shell 中要忽略该行上的字符(请参阅 评论
多于)。 默认情况下启用此选项。
最后管
如果设置,并且作业控制未激活,shell 将运行最后一个命令
管道未在当前 shell 环境中的后台执行。
石匠 如果设置,并且 商人 选项被启用,多行命令被保存到
嵌入换行符而不是使用分号分隔符的历史记录
在可能的情况。
登录外壳
如果 shell 作为登录 shell 启动,则该 shell 会设置此选项(请参阅
召唤 多于)。 该值不得更改。
邮件警告
如果设置,和一个文件 打坏 正在检查邮件已被访问
上次检查时,消息“The mail in 邮件文件 一直
显示读''。
no_empty_cmd_completion
如果设置,并且 的ReadLine 正在使用, 打坏 不会尝试搜索
PATH 在尝试完成空时的可能完成
线。
没有案例全局
如果设置, 打坏 在以下情况下以不区分大小写的方式匹配文件名
执行路径名扩展(请参阅 路径名 扩展 以上)。
无大小写匹配
如果设置, 打坏 执行时以不区分大小写的方式匹配模式
执行时匹配 案件 or [[ 条件命令。
空球
如果设置, 打坏 允许不匹配任何文件的模式(请参阅 路径名 扩展
以上)扩展为空字符串,而不是他们自己。
程序组合
如果设置,可编程完成设施(见 可编程 完成
以上)已启用。 默认情况下启用此选项。
提示变量
如果设置,提示字符串将进行参数扩展、命令替换、
算术扩展,并在按照描述扩展后删除引号
in 提示 多于。 默认情况下启用此选项。
受限壳
如果 shell 以受限模式启动,则 shell 设置此选项(请参阅
受限 SHELL 以下)。 该值不得更改。 这不是重置
当启动文件被执行时,允许启动文件发现
外壳是否受到限制。
移位详细
如果设置,则 转移 当班次计数时,内置打印错误消息
超过位置参数的数量。
源路径
如果设置,则 资源 (.) 内置使用的值 PATH 找到目录
包含作为参数提供的文件。 此选项由启用
默认。
xpg_回声
如果设置,则 回音 默认情况下,内置扩展反斜杠转义序列。

暂停 [-f]
暂停这个 shell 的执行,直到它收到一个 信号控制 信号。 登录
shell 不能被挂起; 这 -f 选项可用于覆盖它并强制
暂停。 返回状态为 0 除非 shell 是登录 shell 并且 -f 是不是
提供,或者如果作业控制未启用。

test 表达式
[ 表达式 ]
根据对
条件表达式 表达式. 每个运算符和操作数必须是单独的
争论。 表达式由上面描述的基本元素组成
有条件的 表情. test 不接受任何选项,也不接受和
忽略一个论点 -- 表示期权的结束。

表达式可以使用以下运算符组合,以递减的形式列出
优先顺序。 评估取决于参数的数量; 见下文。
当有五个或更多参数时使用运算符优先级。
! 表达式 真如果 表达式 是错误的。
( 表达式 )
返回值 表达式. 这可用于覆盖正常
运算符的优先级。
表达式1 -a 表达式2
如果两者都为真 表达式1表达式2 是真的。
表达式1 -o 表达式2
如果任一为真 表达式1 or 表达式2 是真的。

test[ 使用一组基于
参数的数量。

0参数
表达式是错误的。
1 参数
当且仅当参数不为空时,表达式才为真。
2参数
如果第一个参数是 !,表达式为真当且仅当第二个
参数为空。 如果第一个参数是一元条件之一
上面列出的运算符 有条件的 表情, 表达式为真
如果一元测试为真。 如果第一个参数不是有效的一元
条件运算符,表达式为假。
3参数
以下条件按所列顺序应用。 如果第二个
参数是上面列出的二元条件运算符之一
有条件的 表情,表达式的结果是
使用第一个和第三个参数作为操作数的二进制测试。 这 -a-o
当存在三个参数时,运算符被视为二元运算符。
如果第一个参数是 !, 值是两个参数的否定
使用第二个和第三个参数进行测试。 如果第一个参数正好
( 第三个论点正是 ), 结果是单参数检验
的第二个论点。 否则,表达式为假。
4参数
如果第一个参数是 !,结果是对三个参数的否定
由其余参数组成的表达式。 否则,表达式
使用列出的规则根据优先级进行解析和评估
以上。
5 个或更多参数
表达式根据优先级使用
上面列出的规则。

当与 test or [是, <> 运算符使用 ASCII 按字典顺序排序
排序。

打印 shell 和进程运行的累积用户和系统时间
从壳。 返回状态为 0。

陷阱 [-lp] [[ARG] 信号规格 ...]
命令 ARG 当 shell 接收到信号时被读取并执行
信号规格。 如果 ARG 不存在(并且有一个 信号规格),或 -, 每个指定
信号被重置为其原始配置(它在进入
壳)。 如果 ARG 是每个指定的信号的空字符串 信号规格 被忽略
通过 shell 和它调用的命令。 如果 ARG 不存在并且 -p 一直
提供,然后与每个关联的陷阱命令 信号规格 被显示。 如果不
提供参数或仅提供参数 -p 给出, 陷阱 打印命令列表
与每个信号相关联。 这 -l 选项使 shell 打印一个列表
信号名称及其对应的编号。 每个 信号规格 是信号名称
定义于信号.h>,或信号编号。 信号名称不区分大小写,并且
SIG的 前缀是可选的。

如果一个 信号规格 is 退出 (0) 命令 ARG 在退出 shell 时执行。 如果一个
信号规格 is DEBUG, 命令 ARG 在每个之前执行 简单 命令,
命令, 案件 命令, 选择 命令,每一个算术 命令,并在
第一个命令在 shell 函数中执行(参见 SHELL 语法 多于)。 请参阅
的描述 扩展调试 选项 购物车 内置了解其效果的详细信息
DEBUG 陷阱。 如果一个 信号规格 is 返回, 命令 ARG 每次执行
shell 函数或脚本执行 . or 资源 内置完成
执行。

如果一个 信号规格 is ERR, 命令 ARG 每当一个管道(可能
由单个简单命令组成)、列表或复合命令返回
非零退出状态,受以下条件限制。 这 ERR 陷阱不是
如果失败的命令是紧跟在命令列表中的一部分,则执行
or 直到 关键字,测试的一部分 if 语句,命令的一部分
在一个执行 && or || 除了最后的命令之外的列表 && or ||, 任何
管道中的命令但最后一个,或者如果命令的返回值是
倒置使用 !. 这些是相同的条件被遵守 错误退出 (-e) 选项。

进入 shell 时忽略的信号不能被捕获或重置。 被困
未被忽略的信号在子shell中重置为其原始值
或创建时的子shell环境。 返回状态为假(如果有)
信号规格 是无效的; 否则 陷阱 返回true。

类型 [-aftpP] 姓名 [姓名 ...]
如果没有选项,请说明每个选项如何 姓名 如果用作命令将被解释
名称。 如果 -t 使用选项, 类型 打印一个字符串,它是其中之一 别号,
关键词, 功能, 内建的文件 if 姓名 是一个别名,shell 保留字,
函数、内置文件或磁盘文件。 如果 姓名 没有找到,那么
不打印任何内容,并返回 false 退出状态。 如果 -p 选项是
用过的, 类型 要么返回将执行的磁盘文件的名称,如果 姓名
被指定为命令名,或者如果 ``type -t name'' 不会返回则什么都没有
文件。 该 -P 选项强制一个 PATH 搜索每个 姓名, 即使 ``type -t name''
不会回来 文件. 如果一个命令被散列, -p-P 打印哈希值,
这不一定是首先出现的文件 PATH。 如果 -a 选项是
用过的, 类型 打印包含名为的可执行文件的所有位置 姓名。 这
包括别名和函数,当且仅当 -p 选项也没有使用。 这
使用时不参考散列命令表 -a。 该 -f 选项抑制
shell 函数查找,与 命令 内置。 类型 如果全部返回 true
找到参数,如果没有找到则为假。

极限 [-HSTabcdefilmnpqrstuvx [限制]]
提供对 shell 可用资源和已启动进程的控制
通过它,在允许这种控制的系统上。 这 -H-S 选项指定
为给定资源设置硬或软限制。 不能增加硬限制
设置后由非 root 用户使用; 软限制可以增加到
硬限制。 如果两者都没有 -H 也不 -S 已指定,软限制和硬限制
被设置。 的价值 限制 可以是为资源指定的单位中的数字
或特殊值之一 , 无限, 代表当前
硬限制、当前软限制和无限制。 如果 限制 is
省略,打印资源软限制的当前值,除非
-H 给出了选项。 当指定多个资源时,限制名称和
单位在值之前打印。 其他选项解释如下:
-a 报告所有电流限制
-b 最大套接字缓冲区大小
-c 创建的核心文件的最大大小
-d 进程数据段的最大大小
-e 最大调度优先级(“nice”)
-f shell 及其子进程写入的文件的最大大小
-i 待处理信号的最大数量
-l 可以锁定到内存中的最大大小
-m 最大驻留集大小(许多系统不遵守此限制)
-n 打开文件描述符的最大数量(大多数系统不允许这样做
要设置的值)
-p 512 字节块中的管道大小(可能未设置)
-q POSIX 消息队列中的最大字节数
-r 最大实时调度优先级
-s 最大堆栈大小
-t 以秒为单位的最大 cpu 时间
-u 单个用户可用的最大进程数
-v 可用于 shell 的最大虚拟内存量,在某些情况下
系统,对它的孩子
-x 最大文件锁数
-T 最大线程数

If 限制 给出,并且 -a 未使用选项, 限制 是的新值
指定的资源。 如果没有给出选项,那么 -f 假设。 值在
1024 字节增量,除了 -t,以秒为单位; -p,单位为
512 字节块; 和 -T, -b, -n-u,它们是未缩放的值。 回报
除非提供了无效的选项或参数,否则 status 为 0,或者发生错误
同时设置新的限制。

遮罩 [-p[-S[模式]
用户文件创建掩码设置为 模式。 如果 模式 以数字开头,它是
解释为八进制数; 否则它被解释为一个符号模式掩码
类似于接受的 CHMOD(1). 如果 模式 被省略,当前值
面具被打印。 这 -S 选项使掩码以符号形式打印; 这
默认输出是八进制数。 如果 -p 提供选项,并且 模式 is
省略,输出的形式可以作为输入重用。 返回状态为
0 如果模式已成功更改或否 模式 提供了参数,并且
否则为假。

无别名 [-a[姓名 ...]
删除每个 姓名 从定义的别名列表中。 如果 -a 提供,所有别名
定义被删除。 返回值为真,除非提供 姓名 是不是一个
定义的别名。

未设定 [-fv] [-n[姓名 ...]
对于每一个 姓名,去掉对应的变量或函数。 如果 -v 选项是
给定,每个 姓名 引用一个 shell 变量,并且该变量被删除。 读-
只有变量不能被取消。 如果 -f 被指定,每个 姓名 指壳
函数,函数定义被删除。 如果 -n 提供选项,
姓名 是一个变量 名称引用 属性, 姓名 将未设置而不是
它引用的变量。 -n 如果 -f 提供选项。 如果不
提供选项,每个 姓名 指一个变量; 如果没有变量
该名称,任何具有该名称的功能都未设置。 每个未设置的变量或函数
从传递给后续命令的环境中删除。 如果有任何一个
COMP_WORDBREAKS, 随机, SECONDS, 线诺, HITCMD, 函数名, 直接堆栈
未设置,即使它们随后被重置,它们也会失去其特殊属性。
退出状态为真,除非 姓名 是只读的。

等待 [-n[n ...]
等待每个指定的子进程并返回其终止状态。 每个 n
可以是进程 ID 或作业规范; 如果给出了工作规范,则所有流程
在该工作的管道中等待。 如果 n 未给出,所有当前处于活动状态
等待子进程,返回状态为零。 如果 -n 选项是
供应, 等待 等待任何作业终止并返回其退出状态。 如果 n
指定不存在的进程或作业,返回状态为 127。否则,
return status 是等待的最后一个进程或作业的退出状态。

受限 SHELL


If 打坏 以名字开头 巴什,或 -r 选项在调用时提供,
shell 变得受限。 受限制的 shell 用于设置更多环境
控制比标准外壳。 它的行为与 打坏 有这个特例
禁止或不执行以下操作:

· 改变目录 cd

· 设置或取消设置的值 SHELL, PATH, ENVbash_env

· 指定包含的命令名称 /

· 指定包含一个的文件名 / 作为对 . 内置命令

· 指定一个包含斜杠的文件名作为参数 -p 选项
哈希 内置命令

· 启动时从shell环境导入函数定义

· 解析值 贝壳类 从启动时的 shell 环境

· 使用 >、>|、<>、>&、&> 和 >> 重定向运算符重定向输出

· 使用 EXEC 用另一个命令替换 shell 的内置命令

· 添加或删除内置命令 -f-d 选项 enable
内置命令

· 使用 enable 启用禁用的 shell 内置命令的内置命令

· 指定 -p 选项 命令 内置命令

· 关闭受限模式 +r or +o 受限.

在读取任何启动文件后会强制执行这些限制。

当一个被发现是 shell 脚本的命令被执行时(见 指挥 执行
多于), 巴什 关闭为执行脚本而生成的 shell 中的任何限制。

通过 onworks.net 服务在线使用 bash


免费服务器和工作站

下载 Windows 和 Linux 应用程序

  • 1
    Eclipse Tomcat 插件
    Eclipse Tomcat 插件
    Eclipse Tomcat 插件提供
    一个tomcat servlet的简单集成
    java开发的容器
    网络应用程序。 你可以加入我们
    讨论...
    下载 Eclipse Tomcat 插件
  • 2
    WebTorrent桌面
    WebTorrent桌面
    WebTorrent 桌面用于流式传输
    在 Mac、Windows 或 Linux 上下载种子。 它
    连接到 BitTorrent 和
    WebTorrent 同行。 现在没有了
    需要等待...
    下载 WebTorrent 桌面版
  • 3
    GEnx发动机
    GEnx发动机
    GenX 是一个科学的程序来改进
    X 射线反射率,中子
    反射率和表面 X 射线
    使用差分的衍射数据
    进化算法……
    下载 GenX
  • 4
    pspp4窗口
    pspp4窗口
    PSPP 是一个统计程序
    采样数据的分析。 这是一个免费的
    专有程序的替代品
    统计软件。 PSPP 同时具有基于文本和
    图形我们...
    下载 pspp4windows
  • 5
    Git 扩展
    Git 扩展
    Git Extensions 是一个独立的 UI 工具
    用于管理 Git 存储库。 它也是
    与 Windows 资源管理器和
    Microsoft Visual Studio
    (2015/2017/2019)。 这...
    下载 Git 扩展
  • 6
    eSpeak:语音合成
    eSpeak:语音合成
    英语文本到语音引擎和
    许多其他语言。 紧凑的尺寸与
    清晰但做作的发音。
    可作为命令行程序使用
    许多 ...
    下载 eSpeak:语音合成
  • 更多 ”

Linux 命令

Ad