dbx 命令语言基于 Korn Shell (ksh 88) 语法,包括 I/O 重定向、循环、内置运算、历史记录及命令行编辑。本章列出了 ksh-88 和 dbx 命令语言之间的差别。
如果启动时未找到 dbx 初始化文件,dbx 会采用 ksh 模式。
本章由以下部分组成:
以下 ksh-88 功能尚未在 dbx 中实现:
用于给数组 name 赋值的 set -A name
set -o 特定选项: allexport bgnice gmacs markdirs noclobber nolog privileged protected viraw
typeset -l -u -L -R -H 属性
用于命令替换的反引号 (\Q…\Q)(用 $(...) 代替)
用于表达式求值的 [ [ expression ] ] 复合命令
@(pattern[|pattern] …) 扩展模式匹配
协同进程(与程序通信的在后台运行的命令或管道)
dbx 添加了以下功能作为扩展:
$[ p– > flags ] 语言表达式
typeset -q 为用户定义的函数启用特殊引用
类似 C shell 的 history 和 alias 参数
set +o path 禁用路径搜索
用于八进制和十六进制数的 0xabcd C 语法
bind 更改 Emacs 模式绑定
set -o hashall
set -o ignore suspend
print -e 和 read -e(与 -r、raw 相对)
内置 dbx 命令
某些 dbx 命令已重命名,以避免与 ksh 命令发生冲突。
dbx print 命令保留了名称 print;ksh print 命令已被重命名为 kprint。
ksh kill 命令已与 dbxkill 命令合并。
alias 命令是 ksh alias 命令,在 dbx 兼容模式下除外。
address/format 现为 examine address/format。
/pattern 现为 search pattern。
?pattern 现为 bsearch pattern。
bind 命令允许编辑函数的再绑定。可以使用命令显示或修改 EMacs 风格编辑器和 vi 风格编辑器的键绑定。bind 命令的语法为:
bind |
显示当前编辑键绑定 |
bind key=definition |
将 key 绑定到 definition |
bind key |
显示 key 的当前定义 |
bind key= |
删除 key 绑定 |
bind -m key=definition |
将 key 定义为具有 definition 的宏 |
bind -m |
与 bind 相同 |
其中:
key 为键名。
definition 为要绑定到键的宏的定义。
以下是 EMacs 风格编辑器的其中一些更重要的缺省键绑定:
^A = 行开始 |
^B = 后一个字符 |
^D = 磁带结束符或删除 |
^E = 行结束 |
^F = 前一个字符 |
^G = 终止 |
^K = 删除到行末 |
^L = 刷新 |
^N = 下一个历史命令 |
^P = 上一个历史命令 |
^R = 搜索历史命令 |
^^ = 引号 |
^? = 向后删除字符 |
^H = 向后删除字符 |
^[b = 后退一个字 |
^[d = 向前删除字 |
^[f = 向前一个字 |
^[^H = 向后删除字 |
^[^[ = 完成 |
^[? = 列出命令 |
以下是 vi 风格编辑器的其中一些更重要的缺省键绑定:
a = 追加 |
A = 行尾追加 |
c = 更改 |
d = 删除 |
G = 行跳转 |
h = 后一个字符 |
i = 插入 |
I = 行首插入 |
j = 后一行 |
k = 前一行 |
l = 行向前 |
n = 下一个匹配 |
N = 前一个匹配 |
p = 后置 |
p = 前置 |
r = 重复 |
R = 替换 |
s = 代替 |
u = 取消操作 |
x = 删除字符 |
X = 删除前一字符 |
y = yank |
~ = 格式调换 |
_ = 最后参数 |
* = 展开 |
= = 列出展开式 |
- = 前一行 |
+ = 后一行 |
sp = 前一字符 |
# = 注释掉命令 |
? = 从开始搜索历史命令 | |
/ = 从当前开始搜索历史命令 |
在插入模式下,下列按键是特殊的:
^? = 删除字符 |
^H = 删除字符 |
^U = 删除行 |
^W = 删除字 |