home | O'Reilly's CD bookshelfs | FreeBSD | Linux | Cisco | Cisco Exam  


Linux in a NutshellLinux in a NutshellSearch this book

7.7. Built-in Commands

Examples to be entered as a command line are shown with the $ prompt. Otherwise, examples should be treated as code fragments that might be included in a shell script. For convenience, some of the reserved words used by multiline commands also are included.

bind

bind [options]
bind [options] key:function

Print or set the bindings that allow keys to invoke functions such as cursor movement and line editing. Typical syntax choices for keys are "\C-t" for Ctrl-T and "\M-t" or "\et" for Esc-T (quoting is needed to escape the sequences from the shell). Function names can be seen though the -l option.

Options

-f filename
Consult filename for bindings, which should be in the same format as on the bind command line.

-l
Print all Readline functions, which are functions that can be bound to keys.

-m keymap
Specify a keymap for this and further bindings. Possible keymaps are emacs, emacs-standard, emacs-meta, emacs-ctlx, vi, vi-move, vi-command, and vi-insert.

-p
Display all functions and the keys that invoke them, in the format by which keys can be set.

-q function
Display the key bindings that invoke function.

-r key
Remove the binding attached to key so that it no longer works.

-s
Display all macros and the keys that invoke them, in the format by which keys can be set.

-u function
Remove all the bindings attached to function so that no keys will invoke it.

-v
Display all Readline variables (settings that affect history and line editing) and their current settings, in the format by which variables can be set.

-x key:command
Bind key to a shell command.

-P
Display all bound keys and the functions they invoke.

-S
Display all macros and the keys that invoke them.

-V
Display all Readline variables (settings that affect history and line editing) and their current settings.

Example

Bind Ctrl-T to copy-forward-word, the function that copies the part of the word following the cursor so it can be repasted:

$ bind "\C-t":copy-forward-word
complete

complete [options] names

Specify completions for arguments to each name, for use with bash's programmable completion feature. With no options or with -p, print all completion specifications such that they can be reused as input.

Options

-o comp-option
Specify other aspects of the completion specification's behavior besides generating a completion. Possible values of comp-option are:

default
Use readline's default filename completion if the completion specification generates no matches.

dirnames
Use directory name completion if the completion specification generates no matches.

filenames
Tell readline that the completion specification generates filenames so that it can process them accordingly. For use with shell functions.

nospace
Tell readline not to append a space to completions at the end of the line. This is the default.

-p
Print all completion specifications.

-r
Remove completion specification for each name, or all specifications if no names are given.

-A action
Specify an action to generate a list of completions. Possible actions are:

alias
Alias names. May be specified as -a.

arrayvar
Array variable names.

binding
readline key binding names.

builtin
Shell built-in command names. May be specified as -b.

command
Command names. May be specified as -c.

directory
Directory names. May be specified as -d.

disabled
Disabled shell built-in command names.

enabled
Enabled shell built-in command names.

export
Exported shell variable names. May be specified as -e.

file
Filenames. May be specified as -f.

function
Shell function names.

group
Group names. May be specified as -g.

helptopic
Help topic names accepted by the help built-in command.

hostname
Hostnames, from the file specified by HOSTFILE.

job
Job names, if job control is active. May be specified as -j.

keyword
Shell reserved words. May be specified as -k.

running
Names of running jobs, if job control is active.

service
Service names. May be specified as -s.

setopt
Valid arguments for the -o option to the set built-in command.

shopt
Valid shell option names for the shopt built-in command.

signal
Signal names.

stopped
Names of stopped jobs, if job control is active.

user
Usernames. May be specified as -u.

variable
Shell variable names. May be specified as -v.

-C command
Execute the specified command in a subshell and use the output as possible completions.

-F function
Execute the specified function in the current shell and take the possible completions from the COMPREPLY array variable.

-G globpat
Expand the specified filename expansion pattern to generate the possible completions.

-P prefix
Prepend the specified prefix to each possible completion after all other options have been applied.

-S suffix
Append the specified suffix to each possible completion after all other options have been applied.

-W list
Split the specified word list and expand each resulting word. The possible completions are the members of the resulting list that match the word being completed.

-X pattern
Use the specified pattern as a filter and apply it to the list of possible completions generated by all the other options except -P and -S, removing all matches from the list. A leading ! in the pattern negates it so that any completion that does not match the pattern is removed.

echo

echo [options] [strings]

Write each string to standard output, separated by spaces and terminated by a newline. If no strings are supplied, echo a newline. (See also echo in Chapter 3.)

Options

-e
Enable interpretation of escape characters:

\a
Audible alert

\b
Backspace

\c
Suppress the terminating newline (same as -n)

\e
Escape character

\f
Form feed

\n
Newline

\r
Carriage return

\t
Horizontal tab

\v
Vertical tab

\\
Backslash

\nnn
The character in the ASCII set corresponding to the octal number nnn.

\xnn
The character in the ASCII set corresponding to the hexadecimal number nn (1 or 2 hex digits).

-n
Do not append a newline to the output.

-E
Disable interpretation of escape characters.

jobs

jobs [options] [jobIDs]

List all running or stopped jobs, or those specified by jobIDs. For example, you can check whether a long compilation or text format is still running. Also useful before logging out. See also Section 7.6 earlier in this chapter.

Options

-l
List job IDs and process group IDs.

-n
List only jobs whose status has changed since last notification.

-p
List process group IDs only.

-r
List active, running jobs only.

-s
List stopped jobs only.

-x command [arguments]
Execute command. If jobIDs are specified, replace them with command.

kill

kill [options] IDs

Terminate each specified process ID or job ID. You must own the process or be a privileged user. See also Section 7.6 and the killall command in Chapter 3.

Options

-signal
The signal number (from ps -f) or name (from kill -l). The default is TERM (signal number 15). With a signal number of 9, the kill is unconditional. If nothing else works to kill a process, kill -9 almost always kills it, but does not allow the process any time to clean up.

--
Consider all subsequent strings to be arguments, not options.

-l [arg]
With no argument, list the signal names. (Used by itself.) The argument can be a signal name or a number representing either the signal number or the exit status of a process terminated by a signal. If it is a name, the correspoding number is returned; otherwise, the corresponding name is returned.

-n signum
Specify the signal number to send.

-s signal
Specify signal. May be a signal name or number.

read

read [options] [variable1 variable2 ...]

Read one line of standard input and assign each word (as defined by IFS) to the corresponding variable, with all leftover words assigned to the last variable. If only one variable is specified, the entire line will be assigned to that variable. The return status is 0 unless EOF is reached, a distinction that is useful for running loops over input files. If no variable names are provided, read the entire string into the environment variable REPLY.

Options

-a var
Read each word into an element of var, which is treated as an array variable.

-d char
Stop reading the line at char instead of at the newline.

-e
Line editing and command history are enabled during input.

-n num
Read only num characters from the line.

-p string
Display the prompt string to the user before reading each line, if input is interactive.

-r
Raw mode; ignore \ as a line continuation character.

-s
Do not echo the characters entered by the user (useful for reading a password).

-t seconds
Time out and return without setting any variables if input is interactive and no input has been entered for seconds seconds.

-u fd
Read input from specified file descriptor fd instead of standard input.

Examples

 read first last address
Sarah Caldwell 123 Main Street
$ echo "$last, $first\n$address"
Caldwell, Sarah
123 Main Street

The following commands, which read a password into the variable $user_pw and then display its value, use recently added options that are not in all versions of bash in current use.

$ read -sp "Enter password (will not appear on screen)" user_pw
Enter password (will not appear on screen)
$ echo $user_pw
You weren't supposed to know!

The following script reads input from the system's password file, which uses colons to delimit fields (making it a popular subject for examples of input parsing).

IFS=:
cat /etc/passwd |
while
read account pw user group gecos home shell
do
echo "Account name $account has user info: $gecos"
done
set

set [options] [arg1 arg2 ...]

With no arguments, set prints the values of all variables known to the current shell. Options can be enabled (-option) or disabled (+option). Options can also be set when the shell is invoked, via bash. Arguments are assigned in order to $1, $2, and so on.

Options

-
Turn off -v and -x, and turn off option processing.

--
Used as the last option; turn off option processing so that arguments beginning with - are not misinterpreted as options. (For example, you can set $1 to -1.) If no arguments are given after --, unset the positional parameters.

-a
From now on, automatically mark variables for export after defining or changing them.

-b
Report background job status at termination instead of waiting for next shell prompt.

-e
Exit if a command yields a nonzero exit status.

-f
Do not expand filename metacharacters (e.g., * ? [ ]). Wildcard expansion is sometimes called globbing.

-h
Locate and remember commands as they are defined.

-k
Assignment of environment variables (var=value) will take effect regardless of where they appear on the command line. Normally, assignments must precede the command name.

-m
Monitor mode. Enable job control; background jobs execute in a separate process group. -m usually is set automatically.

-n
Read commands, but don't execute. Useful for checking errors, particularly for shell scripts.

-o [m]
List shell modes, or turn on mode m. Many modes can be set by other options. The modes can be turned off through the +o option. Modes are:

allexport
Same as -a.

braceexpand
Same as -B.

emacs
Enter Emacs editing mode (on by default).

errexit
Same as -e.

hashall
Same as -h.

histexpand
Same as -H.

history
Default. Preserve command history.

ignoreeof
Don't allow use of a single Ctrl-D (the end-of-file or EOF character) to log off; use the exit command to log off. This has the same effect as setting the shell variable IGNOREEOF=1.

interactive-comments
Allow comments to appear in interactive commands.

keyword
Same as -k.

monitor
Same as -m.

noclobber
Same as -C.

noexec
Same as -n.

noglob
Same as -f.

notify
Same as -b.

nounset
Same as -u.

onecmd
Same as -t.

physical
Same as -P.

posix
Match POSIX standard.

privileged
Same as -p.

verbose
Same as -v.

vi
Enable vi-style command-line editing.

xtrace
Same as -x.

+o [m]
Display the set commands that would recreate the current mode settings or turn off mode m. See the -o option for a list of modes.

-p
Start up as a privileged user; don't process $HOME/.profile.

-t
Exit after one command is executed.

-u
Indicate an error when user tries to use a variable that is undefined.

-v
Show each shell command line when read.

-x
Show commands and arguments when executed, preceded by a + or the prompt defined by the PS4 shell variable. This provides step-by-step debugging of shell scripts. (Same as -o xtrace.)

-B
Default. Enable brace expansion.

-C
Don't allow output redirection (>) to overwrite an existing file.

-H
Default. Enable ! and !! commands.

-P
Print absolute pathnames in response to pwd. By default, bash includes symbolic links in its response to pwd.

Examples

set -- "$num" -20 -30  Set $1 to $num, $2 to -20, $3 to -30
set -vx               Read each command line; show it; execute it;             
                    show it again (with arguments)
set +x                 Stop command tracing
set -o noclobber        Prevent file overwriting
set +o noclobber        Allow file overwriting again
shopt

shopt [options] [optnames]

Set or unset variables that control optional shell behavior. With no options or with -p, display the settable optnames.

Options

-o
Allow only options defined for the set -o built-in to be set or unset.

-p
Display output in a form that can be reused as input.

-q
Quiet mode. Suppress normal output.

-s
Set (enable) each specified option. With no optname, list all set options.

-u
Unset (disable) each specified option. With no optname, list all unset options.

Settable shell options

Unless otherwise noted, options are disabled by default.

cdable_vars
If an argument to the cd built-in is not a directory, assume that it's a variable containing the name of the directory to change to.

cdspell
For interactive shells, check for minor errors in the name of a directory component (transposed characters, a missing character, or an extra character). Print the corrected name and proceed.

checkhash
Check that a command found in the hash table actually exists before trying to execute it; if it is not found, do a path search.

checkwinsize
Check the window size after each command and update LINES and COLUMNS as necessary.

cmdhist
Attempt to save all lines of a multiline command in one history entry to facilitate re-editing.

dotglob
Include filenames beginning with . in the results of pathname expansion.

execfail
For a noninteractive shell, do not exit if the file specified as an argument to exec cannot be executed. For an interactive shell, do not exit from the shell if exec fails.

expand_aliases
Expand aliases. Enabled by default for interactive shells.

extglob
Enable the shell's extended pattern matching features for pathname expansion.

histappend
Append the history list to the file specified by HISTFILE when the shell exits, instead of overwriting the file.

histreedit
Give the user a chance to re-edit a failed history substitution.

histverify
Load a history substitution into the readline editing buffer so it can be further edited, instead of immediately passing it to the shell parser.

hostcomplete
Try to provide hostname completion when a word containing @ is being completed. Set by default.

huponexit
Send SIGHUP to all jobs when an interactive login shell exits.

interactive_comments
In an interactive shell, treat any word beginning with a #, and any subsequent characters, as a comment. Set by default.

lithist
If cmdhist is also enabled, save multiline commands to the history file separated by embedded newlines rather than semicolons (;) when possible.

login_shell
Set by the shell if it is started as a login shell. Cannot be changed by the user.

mailwarn
Warn if a mail file has been accessed since the last time bash checked it.

no_empty_cmd_completion
Don't attempt to search the PATH for possible completions when completion is attempted on an empty line.

nocaseglob
Use case-insensitive filename matching during pathname expansion.

nullglob
Allow patterns that do not match any files to expand to a null string.

progcomp
Enable the programmable completion facilities. Set by default.

promptvars
Perform variable and parameter expansion on prompt strings after performing normal expansion. Set by default.

restricted_shell
Set by the shell if started in restricted mode. This option cannot be changed by the user and is not reset when the startup files are executed.

shift_verbose
Cause the shift built-in to print an error message when the shift count is greater than the number of positional parameters.

sourcepath
Cause the source built-in (.) to search the PATH to find the directory containing a file supplied as an argument. Set by default.

xpg_echo
Cause the echo built-in to expand backslash-escape sequences by default.

test

test condition
[ condition ]

Evaluate a condition and, if its value is true, return a zero exit status; otherwise, return a nonzero exit status. An alternate form of the command uses [ ] rather than the word test. condition is constructed using the following expressions. Conditions are true if the description holds true.

File conditions

-a file
file exists.

-b file
file is a block special file.

-c file
file is a character special file.

-d file
file is a directory.

-e file
file exists.

-f file
file is a regular file.

-g file
file has the set-group-ID bit set.

-h file
file is a symbolic link.

-k file
file has its sticky bit (no longer used) set.

-p file
file is a named pipe (FIFO).

-r file
file is readable.

-s file
file has a size greater than 0.

-t [n]
The open file descriptor n is associated with a terminal device (default n is 1).

-u file
file has its set-user-ID bit set.

-w file
file is writable.

-x file
file is executable.

-G file
file's group is the process's effective group ID.

-L file
file is a symbolic link.

-N file
file has been modified since its last time of access.

-O file
file's owner is the process's effective user ID.

-S file
file is a socket.

f1 -ef f2
Files f1 and f2 are linked (refer to the same file through a hard link).

f1 -nt f2
File f1 is newer than f2.

f1 -ot f2
File f1 is older than f2.

String conditions

-n s1
String s1 has nonzero length.

-o s1
Shell option s1 is set. Shell options are described under the set built-in command.

-z s1
String s1 has 0 length.

s1 = s2
Strings s1 and s2 are identical.

s1 = = s2
Strings s1 and s2 are identical.

s1 != s2
Strings s1 and s2 are not identical.

s1 < s2
String s1 is lower in the alphabet (or other sort in use) than s2. By default, the check is performed character-by-character against the ASCII character set.

s1 > s2
String s1 is higher in the alphabet (or other sort in use) than s2.

string
string is not null.

Integer comparisons

n1 -eq n2
n1 equals n2.

n1 -ge n2
n1 is greater than or equal to n2.

n1 -gt n2
n1 is greater than n2.

n1 -le n2
n1 is less than or equal to n2.

n1 -lt n2
n1 is less than n2.

n1 -ne n2
n1 does not equal n2.

Combined forms

! condition
True if condition is false.

condition1 -a condition2
True if both conditions are true.

condition1 -o condition2
True if either condition is true.

Examples

Each of the following examples shows the first line of various statements that might use a test condition:

while test $# -gt 0      While there are arguments . . .
while [ -n "$1" ]        While the first argument is nonempty . . .
if [ $count -lt 10 ]           If $count is less than 10 . . .
if [ -d RCS ]                  If the RCS directory exists . . .
if [ "$answer" != "y" ]        If the answer is not y . . .
if [ ! -r "$1" -o ! -f "$1" ]  If the first argument is not a
                               readable file or a regular file . . .
trap

trap [option] [commands] [signals]

Execute commands if any of signals is received. Each signal can be a signal name or number. Common signals include 0, 1, 2, and 15. Multiple commands should be quoted as a group and separated by semicolons internally. If commands is the null string (e.g., trap "" signals), then signals is ignored by the shell. If commands is omitted entirely, reset processing of specified signals to the default action. If both commands and signals are omitted, list current trap assignments. See examples at the end of this entry and under exec.

Options

-l
List signal names and numbers.

-p
Used with no commands to print the trap commands associated with each signal, or all signals if none is specified.

Signals

Signals are listed along with what triggers them.

0
Exit from shell (usually when shell script finishes).

1
Hang up (usually logout).

2
Interrupt (usually through Ctrl-C).

3
Quit.

4
Illegal instruction.

5
Trace trap.

6
Abort.

7
Unused.

8
Floating-point exception.

9
Termination.

10
User-defined.

11
Reference to invalid memory.

12
User-defined.

13
Write to a pipe without a process to read it.

14
Alarm timeout.

15
Software termination (usually via kill).

16
Unused.

17
Termination of child process.

18
Continue (if stopped).

19
Stop process.

20
Process suspended (usually through Ctrl-Z).

21
Background process has tty input.

22
Background process has tty output.

23-28
Unused.

29
I/O possible on a channel.

Examples

trap "" 2     Ignore signal 2 (interrupts)
trap 2        Obey interrupts again

Remove a $tmp file when the shell program exits or if the user logs out, presses Ctrl-C, or does a kill:

trap "rm -f $tmp; exit" 0 1 2 15
typeset

typeset

Obsolete. See declare.



Library Navigation Links

Copyright © 2003 O'Reilly & Associates. All rights reserved.