命令符 | 功能 | 语法或参数 | 举例 |
---|
: | 扩展参数列表,执行重定向操作 | | : 是一个空操作,通常用于占位或作为占位符使用 |
. | 读取并执行指定文件中的命令(在当前 shell 环境中) | | 用于在当前 shell 环境中执行指定文件中的命令,使得这些命令在当前环境中生效。 |
alias | 为指定命令定义一个别名 | 1、创建简单别名:alias 【别名】='【要执行的命令】' 2、创建带参数的别名: alias 【别名】='【别名】 --【参数】' |
- 示例: alias ll='ls -alF'
- 说明: alias 用于创建命令的别名,例如将 ll 设置为 ls -alF 的别名,方便使用长命令的简化版本。
|
bg | 将作业以后台模式运行 | 语法:bg 【作业编号或作业名称】 |
- 示例: bg %1
- 说明: bg 将指定的作业切换到后台运行,例如 %1 是作业的标识符
|
bind | 将键盘序列绑定到一个 readline 函数或宏 |
- -l: 列出当前所有键绑定。
- -p: 以可用于重新读取的格式列出所有键绑定。
- -s: 显示或修改键序列的绑定。
- -v: 显示
bind 命令的版本。 - -P: 显示当前所有键绑定的详细描述。
- -S: 显示一个可以用来交换键序列的绑定。
- -V: 显示
bind 命令的版本。 - -r: 删除指定键序列的绑定。
- -x: 将键序列绑定到一个 shell 命令,而不是
readline 命令。这在需要将键绑定与外部命令关联时非常有用。
|
- 示例: bind '"\e[A": history-search-backward'
- 说明: bind 用于将键盘序列绑定到一个 readline 函数或宏,例如将向上箭头键绑定到历史命令搜索
|
break | 退出 for、while、select 或 until 循环 | | |
builtin | 执行指定的 shell 内建命令 | |
- 示例: builtin echo hello
- 说明: builtin 用于执行指定的 shell 内建命令,而不是外部程序,例如执行内建的 echo 而不是系统的 echo。
|
caller | 返回活动子函数调用的上下文 | |
- 示例: 在脚本中调用 caller 以查看调用堆栈信息。
- 说明: caller 显示活动子函数的调用上下文。
|
cd | 将当前目录切换为指定的目录 | | |
command | 执行指定的命令,无需进行通常的 shell 查找 | |
- 示例: command ls
- 说明: command 用于执行指定的命令,忽略 shell 的内建命令,例如执行外部的 ls 而不是内建的 ls。
|
compgen | 为指定单词生成可能的补全匹配 |
-
-a: 列出所有别名 (aliases)。 -
-A function: 列出所有函数名称。 -
-b: 列出所有Shell内建命令。 -
-c: 列出所有当前Shell可执行的命令。 -
-d: 列出所有目录名称,用于目录补全。 -
-e: 列出所有环境变量的名称。 -
-g: 列出所有全局变量的名称。 -
-k: 列出所有关键字(keywords)。 -
-s: 列出所有Shell变量的名称。 -
-t: 列出所有Shell内建命令和关键字。 -
-v: 列出所有Shell变量和函数名称。
| # 列出当前 shell 可用的内建命令 compgen -b # 列出当前 shell 可用的函数 compgen -A function # 列出当前 shell 可用的别名 compgen -a |
complete | 显示指定的单词是如何补全的 |
- -a:使用所有命令的名称作为补全的候选项。
- -b:使用内建命令的名称作为补全的候选项。
- -c:使用所有命令的名称,并在每个名称后面添加冒号(:)作为补全的候选项。
- -d:使用目录名称作为补全的候选项。
- -e:使用环境变量的名称作为补全的候选项。
- -f:使用文件名称作为补全的候选项。
- -g:使用组名称作为补全的候选项。
- -j:使用作业(job)名称作为补全的候选项。
- -k:使用关键字名称作为补全的候选项。
- -l:使用别名名称作为补全的候选项。
- -s:使用信号名称作为补全的候选项。
- -t:使用函数名称作为补全的候选项。
- -u:使用用户名称作为补全的候选项。
- -v:使用变量名称作为补全的候选项。
- -A action:定义补全的动作,action 可以是 alias、arrayvar、builtin、command、directory、file、function、group、helptopic、hostname、job、keyword、running、service、setopt、shopt、signal、stopped、user 或 variable。
- -B action:类似于 -A,但 action 是一个 Bash 函数,用于动态补全。
- -G globpat:设置用于文件名补全的 glob 模式。
- -W wordlist:指定用于命令或参数补全的空格分隔的单词列表。
- -X filterpat:使用通配符过滤文件名。
- -F function:指定一个 Bash 函数用于动态补全。
- -P prefix:为补全的结果添加一个前缀。
- -S suffix:为补全的结果添加一个后缀。
- -r:移除已定义的补全行为。
- -d:禁用补全功能,适用于指定的命令或选项。
| # 为命令 ls 设置自动补全函数 complete -F _longopt ls # 设置命令 grep 的补全选项 complete -o nospace -W "-A -B -C" grep |
compopt | 修改指定单词的补全选项 |
- -o:启用指定的补全选项。
- -u:禁用指定的补全选项。
- -o <option-name>:可以是以下之一:
- nospace:不在补全后添加空格。
- default:恢复为默认的补全行为。
- dirnames:补全目录名。
- filenames:补全文件名。
- plusdirs:包括目录名在内的文件名补全。
- nosort:不排序补全选项。
- menu:使用菜单样式的补全。
- bashdefault:使用 Bash 的默认补全行为。
- default:将补全选项恢复为默认状态。
- dirnames:启用目录名补全选项。
- filenames:启用文件名补全选项。
- nospace:禁用自动添加空格的选项。
| # 设置自动补全行为,例如禁止使用通配符 compopt -o nospace # 显示当前补全的所有选项 compopt -o |
continue | 继续执行 for、while、select 或 until 循环的下一次迭代 | |
- 示例: declare -i num=5
- 说明: declare 或 typeset 用于声明变量或设置变量的属性,例如声明一个整数类型的变量 num
|
declare | 声明一个变量或变量类型。 | 语法: declare 【参数】 【变量名】=【值】 参数:
- -a:声明一个数组变量。
- -f:显示函数定义。
- -F:只显示函数名,不显示函数体。
- -g:将变量声明为全局变量(在函数外部有效)。
- -i:声明一个整数变量。
- -l:将变量值转换为小写字母。
- -n:扫描名称中的下一个单词作为变量名。
- -p:显示变量的属性和值。
- -r:将变量声明为只读变量。
- -t:将变量声明为一个名为 test 的有效变量。
- -u:将变量值转换为大写字母。
- -x:将变量声明为环境变量。
|
-
declare myvar="Hello" 这将创建一个名为 myvar 的普通变量,并初始化其值为 "Hello"。 -
declare -r readonly_var="Cannot change this value" 这将创建一个名为 readonly_var 的只读变量,一旦赋值后就不能再修改其值。 -
declare -i number=42 这将创建一个名为 number 的整数变量,只能存储整数值。 -
declare -a myarray=(1 2 3 4 5) 这将创建一个名为 myarray 的数组变量,包含了整数元素 1 到 5。
|
dirs | 显示当前存储目录的列表 |
-
-c:清空整个目录堆栈。使用这个选项后,目录堆栈中的所有目录都会被移除。 -
-l:使用长格式显示目录堆栈中的目录。长格式显示包括目录的完整路径,并且每个目录占一行显示。 -
-p:显示当前目录堆栈中的目录,并且每个目录都在单独的一行显示,可以方便地进行处理或传递给其他命令。 -
-v:使用详细格式显示目录堆栈中的目录。详细格式显示与长格式类似,但在每个目录的前面会显示一个索引编号。 -
+N:将目录堆栈中的第 N 个目录移动到顶部。索引从 0 开始计数,所以 +0 是第一个目录。 -
-N:移除目录堆栈中的第 N 个目录。同样,索引从 0 开始计数。
|
- dirs -v
dirs 显示目录栈中的当前目录列表,例如显示详细信息(使用 -v 选项) - dirs +2
这会将目录堆栈中索引为 2 的目录移动到栈顶
|
disown | 从进程作业表中刪除指定的作业 |
-
-a:移除当前 shell 中所有的后台作业,等同于不提供任何 jobspec 或 pid。 -
-r:移除在后台运行的所有已完成作业,即已经完成的后台作业。 -
-h:标记指定的作业,使得在作业退出后不会发送 HUP 信号。 -
-v:输出详细信息,显示每个作业的状态信息。 -
-D:如果指定了 -D,则 disown 不会移除作业,而是将作业标记为不接收 SIGHUP 信号。
|
- 示例: disown %1
- 说明: disown 从 shell 的作业列表中移除指定的作业,例如移除标识符为 %1 的作业
|
echo | 将指定字符串输出到 STDOUT | | |
enable | 启用或禁用指定的内建shell命令 |
-
-a:启用所有被禁用的内置命令。 -
-d:禁用指定的内置命令,使其不能在当前 shell 会话中执行。 -
-n:列出当前 shell 中已经禁用的内置命令。 -
-p:重新启用被禁用的内置命令,使其可以在当前 shell 中执行。 -
-s:将指定的函数定义作为 shell 内置命令启用。
|
- 示例: enable -n echo
- 说明: enable 启用或禁用 shell 内建命令,例如禁用内建的 echo
|
eval | 将指定的参数拼接成一个命令,然后执行该命令 | |
- 示例: eval "ls -l"
- 说明: eval 将参数作为命令执行,例如将 "ls -l" 字符串作为命令执行
|
exec | 用指定命令替换 shell 进程 |
- -c:清除环境变量,除了指定的环境变量以外。
- -l:清除当前的环境变量。
|
- 示例: exec myprog
- 说明: exec 用新的命令(例如 myprog)替换当前 shell 进程
|
exit | 强制 shell 以指定的退出状态码退出 | |
- 示例: exit 0
- 说明: exit 终止 shell 的执行并返回指定的退出状态码,例如退出并返回状态码 0
|
export | 设置子 shell 进程可用的变量 | |
- 示例: export PATH=$PATH:/usr/local/bin
- 说明: export 设置环境变量,使得子进程可以访问,例如将 /usr/local/bin 添加到 PATH 环境变量中。
|
fc | 从历史记录中选择命令列表 |
- -l: 列出历史命令,显示编号和命令内容。
- -n: 指定新命令的编号。
- -r: 逆序列出历史命令。
|
- 示例: fc -l 1 10
- 说明: fc 用于历史命令的选择和编辑,例如列出历史记录中编号从 1 到 10 的命令
|
fg | 将作业以前台模式运行 | |
- 示例: fg %1
- 说明: fg 将指定的作业切换到前台运行,例如将标识符为 %1 的作业切换到前台
|
getopts | 分析指定的位置参数 | | 在脚本中使用 getopts 解析命令行选项 |
hash | 查找并记住指定命令的全路径名 | -p: 强制 hash 忽略当前缓存,并按指定的路径进行搜索并存储 -r: 清除 hash 表,移除所有记住的命令路径 -d: 删除指定命令的路径记录 |
- 示例: hash -r
- 说明: hash 记录命令的路径,加快后续执行速度,例如使用 -r 选项刷新路径缓存
|
help | 显示帮助文件 | | |
history | 显示命令历史记录 | |
- 示例: history | grep ls
- 说明: history 显示命令的历史记录,例如显示包含 ls 的历史命令
|
jobs | 列出活动作业 |
- -l: 显示作业编号及其进程号。
- -n: 列出最近的作业。
- -p: 只显示作业的进程组标识号码。
- -r: 只显示正在运行的作业。
- -s: 只显示已停止的作业。
|
- 示例: jobs
- 说明: jobs 显示当前 shell 中的活动作业,例如列出当前的作业列表
|
kill | 向指定的进程 ID(PID) 发送一个系统信号 | |
- 示例: kill -9 1234
- 说明: kill 向指定的进程 ID(例如 1234)发送信号,例如发送 SIGKILL(-9)信号
|
let | 计算一个数学表达式中的每个参数 | |
- 示例: let "num = 5 + 3"
- 说明: let 执行算术运算,例如计算 5 + 3 并将结果赋给 num 变量
|
local | 在函数中创建一个作用域受限的变量 | | |
logout | 退出登录 shell | | |
mapfile | 从 STDIN 读取数据行,并将其加入索引数组 |
- -n count: 指定读取的行数上限。
- -O origin: 指定从数组的第 origin 个索引位置开始存储,默认为 0。
- -s count: 指定要跳过的初始行数。
- -t: 去除每一行末尾的换行符。
- -u fd: 从文件描述符 fd 中读取输入。
- -C callback: 指定回调函数 callback,对每个读取的行进行处理。
- -c quantum: 指定每次读取的行数(量子),提高效率
|
-
- 示例: mapfile -t array < file.txt
- 说明: mapfile 从 STDIN 读取数据行并将其放入数组,例如从 file.txt 文件中读取数据。
|
popd | 从目录栈中删除记录 | popd [-n] [+N | -N]
- -n:不进行目录切换。只是从堆栈中弹出顶部目录,但不改变当前工作目录。
- +N:将堆栈中索引为 N 的目录弹出并切换到该目录。
- -N:从堆栈顶部弹出第 N 个目录并切换到该目录。-1 表示最顶部的目录,-2 表示第二个顶部目录,以此类推。
| popd +2 这会从堆栈中弹出第二个目录,并将工作目录切换到该目录。 |
printf | 使用格式化字符串显示文本 | | |
pushd | 向目录栈添加一个目录 | |
- 示例: pushd /path/to/directory
- 说明: pushd 将指定的目录添加到目录栈中
|
pwd | 显示当前工作目录的路径名 | | |
read | 从 STDIN 读取一行数据并将其赋给一个变量 |
-
-p prompt:指定一个提示符,用来提示用户输入。 -
-r:防止反斜杠字符的转义。在处理文件路径等输入时,通常建议使用 -r 选项,以避免意外的字符转义。 -
-s:静默模式,用户输入内容不显示在终端上,通常用于密码输入。 -
-n num:设置读取的字符数目,达到指定字符数后立即返回。这在读取固定长度的输入时很有用。 -
-t timeout:设置一个超时时间(秒),如果在指定时间内没有输入,则返回一个非零退出状态。
|
- 示例: read -p "Enter your name: " name
- 说明: read 从 STDIN 读取一行数据并将其赋给变量 name,例如提示用户输入名字
|
readarray | 从 STDIN 读取数据行并将其放入索引数组 |
-
-n count:指定读取的行数。默认情况下,readarray 会一直读取直到结束。使用 -n 可以限制读取的行数。 -
-O origin:设置数组的起始索引。默认情况下,数组的起始索引是 0。可以使用 -O 来指定其他起始索引。 -
-s count:跳过输入中的前几行。即从输入中开始读取时跳过指定的行数。 -
-t:删除末尾的换行符。默认情况下,readarray 会保留每行的换行符,使用 -t 可以删除这些换行符。 -
-u fd:从文件描述符 fd 中读取输入。默认情况下,readarray 从标准输入读取。 -
-C callback:在读取每行之前调用 callback 函数。可以用来预处理输入行。 -
-c quantum:指定每次调用 callback 函数处理的行数。默认是 5000 行。 -
-i text:在读取之前插入指定的文本。即每行读取前会在该行前插入指定的文本。 -
-p prompt:显示提示符,提示用户输入。类似于 read 命令的 -p 选项。 -
-t timeout:设置超时时间(秒),如果在指定时间内没有输入,则返回非零退出状态。 -
-z:以 NUL 字符而不是换行符作为行分隔符。 -
-a array:指定数组的名称,将读取的行存储到指定的数组中。 -
array:如果提供了数组名称,则将读取的行存储到该数组中。如果未提供,则默认使用 $MAPFILE
| |
readonly | 从 STDIN 读取一行数据并将其赋给一个不可修改的变量 | | |
return | 强制函数以某个值退出,这个值可以被调用脚本提取 | | |
set | 设置并显示环境变量的值和 shell 属性 |
- set -e:使得脚本在执行过程中如果遇到错误(非零返回值)就立即退出。
- set +e:禁用 set -e 的效果,使得脚本在遇到错误时不立即退出。
- set -u:使得脚本在使用未设置过的变量时显示错误信息。
- set -x:启用调试模式,输出每个命令执行前的具体内容。
- set +x:禁用调试模式。
- set -o option:打开特定的 shell 选项,如 set -o noclobber 可以防止使用 > 和 >> 覆盖已存在的文件。
|
- 示例: set -x
- 说明: set 设置环境变量的值和 shell 的属性,例如启用调试模式(-x 选项)
|
shift | 将位置参数依次向下降一个位置 | |
- 示例: shift 2
- 说明: shift 将命令行参数依次向下移动一个位置,例如将参数向左移动两个位置
|
shopt | 打开/关闭控制 shell 可选行为的变量值 |
-
- shopt -s option_name:启用指定的选项。
- shopt -u option_name:禁用指定的选项。
- globstar:允许使用 ** 来匹配任意层数的目录。
- nocaseglob:在文件名匹配时不区分大小写。
- nullglob:如果没有匹配的文件名时,返回空字符串而不是原始的通配符模式。
- shopt -p:显示当前设置的 shell 选项,以便可以重新应用它们。
- shopt -q:静默模式,用于测试选项是否已启用,无输出则表示启用。
|
- 示例: shopt -s extglob
- 说明: shopt 设置 shell 的可选行为,例如启用扩展的 globbing 功能
|
source | 读取并执行指定文件中的命令(在当前 shell 环境中) | | |
suspend | 暂停 Shell 的执行,直到收到一个 SIGCONT 信号 | | |
test | 基于指定条件返回退出状态码 0 或 1 | |
- 示例: [ -f file.txt ]
- 说明: test 或 [ 执行条件测试,例如测试文件是否存在(-f file.txt)
|
times | 显示累计的用户和系统时间 | | |
trap | 如果收到了指定的系统信号,执行指定的命令 | |
- 示例: trap "cleanup" EXIT
- 说明: trap 捕捉并处理信号,例如在退出时执行 cleanup 函数
|
type | 显示指定的单词如果作为命令将会如何被解释 | |
- 示例: type ls
- 说明: type 显示指定命令将如何被解释,例如显示 ls 命令的类型(alias、函数、内建命令等)
|
typeset | 声明一个变量或变量类型。 | | |
ulimit | 为系统用户设置指定的资源的上限 |
- -c:设置或显示 core 文件的最大字节数 (bytes)。
- -d:设置或显示数据段的最大字节数。
- -f:设置或显示文件的最大字节数。
- -l:设置或显示锁定内存的最大字节数。
- -m:设置或显示常驻内存的最大字节数。
- -n:设置或显示文件描述符的最大数量。
- -q:设置或显示 POSIX 消息队列的最大字节数。
- -r:设置或显示实时调度的最大优先级。
- -s:设置或显示栈的最大字节数。
- -t:设置或显示 CPU 时间的最大秒数。
- -u:设置或显示用户的最大进程数量。
- -v:设置或显示虚拟内存的最大字节数。
- -x:设置或显示文件锁的最大字节数。
|
- 示例: ulimit -n 1024
- 说明: ulimit 设置用户进程的资源限制,例如设置文件描述符数的最大值为 1024
|
umask | 为新建的文件和目录设置默认权限 | |
- 示例: umask 0022
- 说明: umask 设置新创建文件和目录的默认权限掩码,例如设置默认掩码为 0022
|
unalias | 刪除指定的别名 | |
- 示例: unalias ll
- 说明: unalias 删除指定的命令别名,例如删除 ll 的别名
|
unset | 刪除指定的环境变量或 shell 属性 | |
- 示例: unset PATH
- 说明: unset 删除指定的环境变量或 shell 的属性,例如删除 PATH 环境变量
|
wait | 等待指定的进程完成,并返回退出状态码 | |
- 示例: wait %1
- 说明: wait 等待指定的后台进程完成并返回退出状态码,例如等待标识符为 %1 的作业完成
|