本文档概述了常见的外壳功能(每种外壳风格都相同)和不同的外壳功能(外壳特定功能)。
C.1. 共同特征
以下功能是每个外壳的标准功能。 请注意,stop、suspend、jobs、bg 和 fg 命令仅在支持作业控制的系统上可用。
表 C-1。 常见的外壳功能
命令 | 意 |
> | 重定向输出 |
>> | 附加到文件 |
< | 重定向输入 |
<< | “这里”文档(重定向输入) |
| | 管道输出 |
& | 在后台运行进程。 |
; | 在同一行上分开命令 |
* | 匹配文件名中的任何字符 |
? | 匹配文件名中的单个字符 |
[] | 匹配任何封闭的字符 |
() | 在子shell中执行 |
`` | 替换封闭命令的输出 |
“” | 部分引用(允许变量和命令扩展) |
'' | 完整报价(无扩展) |
\ | 引用以下字符 |
$变量 | 使用变量值 |
$$ | 进程标识 |
$0 | 命令名称 |
$n | 第 n 个参数(n 从 0 到 9) |
$* | 所有参数都是一个简单的词 |
# | 开始评论 |
bg | 后台执行 |
打破 | Break from 循环语句 |
cd | 更改目录 |
继续 | 恢复程序循环 |
回音 | 显示输出 |
评估 | 评估参数 |
EXEC | 执行一个新的shell |
fg | 前台执行 |
工作 | 显示活动职位 |
杀 | 终止正在运行的作业 |
新组 | 更改为新组 |
转移 | 移位位置参数 |
停止 | 暂停后台作业 |
暂停 | 暂停前台工作 |
次 | 时间命令 |
遮罩 | 设置或列出文件权限 |
未设定 | 擦除变量或函数定义 |
等待 | 等待后台作业完成 |
C.2. 不同的特点
下表显示了标准外壳之间的主要区别(sh), 再次伯恩斯 (打坏), 科恩贝壳 (KSH) 和 C 外壳 (长山壕).
外壳兼容性
由于 Bourne Again SHell 是 sh所有 sh 命令也将在 打坏 - 但反之则不然。 打坏 有更多自己的功能,并且如下表所示,许多功能从其他 shell 中合并而来。
由于 Turbo C shell 是 长山壕所有 长山壕 命令将在 tcsh的,但反过来不行。
表 C-2。 不同的外壳特征
sh | 打坏 | KSH | 长山壕 | 意义/动作 |
$ | $ | $ | % | 默认用户提示 |
>| | >| | >! | 强制重定向 | |
> 文件 2>&1 | &> 文件 or > 文件 2>&1 | > 文件 2>&1 | >& 文件 | 将 stdout 和 stderr 重定向到 文件 |
{} | {} | 展开列表中的元素 | ||
`命令` | `命令` or $(命令) | $(命令) | `命令` | 封闭的替代输出 命令 |
$ HOME | $ HOME | $ HOME | $家 | 主目录 |
~ | ~ | ~ | 主目录符号 | |
~+, ~-, 迪尔斯 | ~+, ~- | =-, =N | 访问目录栈 | |
VAR=值 | VAR=值 | VAR=值 |
集 VAR=值 | 变量赋值 | |||
出口 VAR | 出口 VAR=值 | 出口 VAR=值 | 设定 VAR VAL | 设置环境变量 |
${nnnn} | ${nn} | 可以引用 9 个以上的参数 | ||
"$@" | "$@" | "$@" | 所有参数作为单独的词 | |
$# | $# | $# | $#参数 | 参数数量 |
$? | $? | $? | $状态 | 最近执行的命令的退出状态 |
$! | $! | $! | 最近后台进程的PID | |
$- | $- | $- | 当前选项 | |
. 文件 | 资源 文件 or . 文件 | . 文件 | 资源 文件 | 读取文件中的命令 |
别名 x='y' | 别名 x=y | 别名 xy | 姓名 x 代表命令 y | |
案件 | 案件 | 案件 | 开关 or 案件 | 选择替代品 |
完成 | 完成 | 完成 | end | 结束循环语句 |
ESAC | ESAC | ESAC | 收尾 | 结束 案件 or 开关 |
出口 n | 出口 n | 出口 n | 出口 (表达式) | 有状态退出 |
/do | /do | /do | 的foreach | 循环变量 |
集 -f , 集 -o nullglob|dotglob|nocaseglob|noglob | 无球 | 忽略文件名生成的替换字符 | ||
哈希 | 哈希 | 别号 -t | 哈希统计 | 显示散列命令(跟踪别名) |
哈希 命令 | 哈希 命令 | 别号 -t 命令 | 重新哈希 | 记住命令位置 |
哈希 -r | 哈希 -r | 散列 | 忘记命令位置 |
历史 | 历史 | 历史 | 列出以前的命令 | |
Arrowup+输入 or !! | r | !! | 重做上一条命令 | |
!STR | r STR | !STR | 重做最后一个以“str”开头的命令 | |
!CMD:S /x/y/ | r x=你的命令 | !CMD:S /x/y/ | 在最近的以“cmd”开头的命令中将“x”替换为“y”,然后执行。 | |
如果 [ $i -eq 5 ] | 如果 [ $i -eq 5 ] | 如果 ((i==5)) | 如果($i==5) | 样品条件测试 |
fi | fi | fi | ENDIF | 结束 if 声明 |
极限 | 极限 | 极限 | 限制 | 设置资源限制 |
PWD | PWD | PWD | 迪尔斯 | 打印工作目录 |
读 | 读 | 读 | $< | 从终端读取 |
陷阱 2 | 陷阱 2 | 陷阱 2 | 内存 | 忽略中断 |
无别名 | 无别名 | 无别名 | 删除别名 | |
直到 | 直到 | 直到 | 开始 直到 循环 | |
而/do | 而/do | 而/do | 而 | 开始 而 循环 |
Bourne Again SHell 具有更多未在此处列出的功能。 这张表只是让您了解这个 shell 如何整合来自其他 shell 的所有有用的想法:列中没有空格 打坏. 有关仅在 Bash 中找到的功能的更多信息可以从 Bash 信息页面的“Bash 功能”部分中检索。
更多信息:
您至少应该阅读一本手册,即您的 shell 手册。 首选是 信息重击, 打坏 是 GNU shell,对初学者来说是最简单的。 把它打印出来带回家,只要你有 5 分钟的时间研究它。
如果您在理解 shell 命令时遇到困难,请参阅附录 B。