Sun Studio 12 Update 1: Debugging a Program With dbx
검색에만이 책은
PDF로 이 문서 다운로드 (2163 KB)

Chapter 19 Using dbx With the Korn Shell

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:

ksh-88 Features Not Implemented

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)

Extensions to ksh-88

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

Renamed 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.

Rebinding of Editing Functions

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