No subject
Tue Feb 22 18:54:42 UTC 2011
REDIRECTION
Before a command is executed, its input and output may be
redirected using a special notation interpreted by the shell.
Redirection may also be used to open and close files for the current
shell execution environment. The following redirection
operators may precede or appear anywhere within a simple command or
may follow a command. Redirections are processed in the order they
appear, from left to right.
Each redirection that may be preceded by a file descriptor
number may instead be preceded by a word of the form {varname}. In
this case, for each redirection operator except >&- and <&-, the
shell will allocate a file descriptor greater than 10 and
assign it to varname. If >&- or <&- is preceded by {varname}, the
value of varname defines the file descriptor to close.
In the following descriptions, if the file descriptor number is
omitted, and the first character of the redirection operator is <, the
redirection refers to the standard input (file descriptor
0). If the first character of the redirection operator is >,
the redirection refers to the standard output (file descriptor 1).
The word following the redirection operator in the following
descriptions, unless otherwise noted, is subjected to brace expansion,
tilde expansion, parameter expansion, command substitution,
arithmetic expansion, quote removal, pathname expansion, and
word splitting. If it expands to more than one word, bash reports an
error.
Note that the order of redirections is significant. For
example, the command
ls > dirlist 2>&1
directs both standard output and standard error to the file
dirlist, while the command
ls 2>&1 > dirlist
directs only the standard output to file dirlist, because the
standard error was duplicated from the standard output before the
standard output was redirected to dirlist.
Bash handles several filenames specially when they are used in
redirections, as described in the following table:
/dev/fd/fd
If fd is a valid integer, file descriptor fd is duplic=
ated.
/dev/stdin
File descriptor 0 is duplicated.
/dev/stdout
File descriptor 1 is duplicated.
/dev/stderr
File descriptor 2 is duplicated.
/dev/tcp/host/port
If host is a valid hostname or Internet address,
and port is an integer port number or service name, bash attempts to
open a TCP connection to the corresponding socket.
/dev/udp/host/port
If host is a valid hostname or Internet address,
and port is an integer port number or service name, bash attempts to
open a UDP connection to the corresponding socket.
A failure to open or create a file causes the redirection to fail.
Redirections using file descriptors greater than 9 should be
used with care, as they may conflict with file descriptors the shell
uses internally.
Redirecting Input
Redirection of input causes the file whose name results from
the expansion of word to be opened for reading on file descriptor n,
or the standard input (file descriptor 0) if n is not speci=E2=80=90
fied.
The general format for redirecting input is:
[n]<word
Redirecting Output
Redirection of output causes the file whose name results from
the expansion of word to be opened for writing on file descriptor n,
or the standard output (file descriptor 1) if n is not speci=E2=80=90
fied. If the file does not exist it is created; if it does
exist it is truncated to zero size.
The general format for redirecting output is:
[n]>word
If the redirection operator is >, and the noclobber option to
the set builtin has been enabled, the redirection will fail if the
file whose name results from the expansion of word exists and is
a regular file. If the redirection operator is >|, or the
redirection operator is > and the noclobber option to the set builtin
command is not enabled, the redirection is attempted even if the
file named by word exists.
Appending Redirected Output
Redirection of output in this fashion causes the file whose
name results from the expansion of word to be opened for appending on
file descriptor n, or the standard output (file descriptor 1)
if n is not specified. If the file does not exist it is created.
The general format for appending output is:
[n]>>word
Redirecting Standard Output and Standard Error
This construct allows both the standard output (file descriptor
1) and the standard error output (file descriptor 2) to be redirected
to the file whose name is the expansion of word.
There are two formats for redirecting standard output and standard e=
rror:
&>word
and
>&word
Of the two forms, the first is preferred. This is semantically
equivalent to
>word 2>&1
Appending Standard Output and Standard Error
This construct allows both the standard output (file descriptor
1) and the standard error output (file descriptor 2) to be appended to
the file whose name is the expansion of word.
The format for appending standard output and standard error is:
&>>word
This is semantically equivalent to
>>word 2>&1
...
More information about the Nottingham
mailing list