The dbx command language is based on the syntax of the Korn Shell (ksh 88), including I/O redirection, loops, built-in arithmetic, history, and command-line editing. This chapter lists the differences between ksh-88 and dbx command language.
If no dbx initialization file is located on startup, dbx assumes ksh mode.
This chapter is organized into the following sections:
The following features of ksh-88 are not implemented in dbx:
set -A name for assigning values to array name
set -o particular options: allexport bgnice gmacs markdirs noclobber nolog privileged protected viraw
typeset -l -u -L -R -H attributes
Backquote (\Q…\Q) for command substitution (use $(...) instead)
[ [ expression ] ] compound command for expression evaluation
@(pattern[|pattern] …) extended pattern matching
Co-processes (command or pipeline running in the background that communicates with your program)
dbx adds the following features as extensions:
$[ p– > flags ] language expression
typeset -q enables special quoting for user-defined functions
C shell-like history and alias arguments
set +o path disables path searching
0xabcd C syntax for octal and hexadecimal numbers
bind to change Emacs-mode bindings
set -o hashall
set -o ignore suspend
print -e and read -e (opposite of -r, raw)
Built-in dbx commands
Particular dbx commands have been renamed to avoid conflicts with ksh commands.
The dbx print command retains the name print; the ksh print command has been renamed kprint.
The ksh kill command has been merged with the dbxkill command.
The alias command is the ksh alias command, unless in dbx compatibility mode.
address/format is now examine address/format.
/pattern is now search pattern.
?pattern is now bsearch pattern.
The bind command allows rebinding of editing functions. You can use the command to display or modify the key bindings for EMacs-style editors and vi-style editors. The syntax of the bind command is:
bind |
Display the current editing key bindings |
bind key=definition |
Bind key to definition |
bind key |
Display the current definition for key |
bind key= |
Remove binding of key |
bind -m key=definition |
Define key to be a macro with definition |
bind -m |
Same as bind |
where:
key is the name of a key.
definition is the definition of the macro to be bound to the key.
The following are some of the more important default key bindings for EMacs-style editors:
^A = beginning-of-line |
^B = backward-char |
^D = eot-or-delete |
^E = end-of-line |
^F = forward-char |
^G = abort |
^K = kill-to-eo |
^L = redraw |
^N = down-history |
^P = up-history |
^R = search-history |
^^ = quote |
^? = delete-char-backward |
^H = delete-char-backward |
^[b = backward-word |
^[d = delete-word-forward |
^[f = forward-word |
^[^H = delete-word-backward |
^[^[ = complete |
^[? = list-command |
The following are some of the more important default key bindings for vi-style editors:
a = append |
A = append at EOL |
c = change |
d = delete |
G = go to line |
h = backward character |
i = insert |
I = insert at BOL |
j = next line |
k = previous line |
l = forward line |
n = next match |
N = prev match |
p = put after |
P = put before |
r = repeat |
R = replace |
s = substitute |
u = undo |
x = delete character |
X = delete previous character |
y = yank |
~ = transpose case |
_ = last argument |
* = expand |
= = list expansion |
- = previous line |
+ = next line |
sp = forward char |
# = comment out command |
? = search history from beginning | |
/ = search history from current |
In insert mode, the following keystrokes are special:
^? = delete character |
^H = delete character |
^U = kill line |
^W = delete word |