stdin
), write output to standard output (stdout
), and write error output to standard error (stderr
). By default, standard input is connected to the terminal keyboard and standard output and error to the terminal screen.The way of indicating an end-of-file on the default standard input, a terminal, is usually
Redirection of I/O, for example to a file, is accomplished by specifying the destination on the command line using a redirection metacharacter followed by the desired destination.
C Shell Family
Some of the forms of redirection for the C shell family are:% command -[options] [arguments] < input file > output fileIf you are using csh and do not have the noclobber variable set, using
>
and >&
to redirect output will overwrite any existing file of that name. Setting noclobber prevents this. Using >!
and >&!
always forces the file to be overwritten. Use >>
and >>&
to append output to existing files.Redirection may fail under some circumstances: 1) if you have the variable noclobber set and you attempt to redirect output to an existing file without forcing an overwrite, 2) if you redirect output to a file you don't have write access to, and 3) if you redirect output to a directory.
Examples:
% who > names
- Redirect standard output to a file named
names
% (pwd; ls -l) > out
- Redirect output of both commands to a file named
out
% pwd; ls -l > out
- Redirect output of
ls
command only to a file namedout
myprog
, which was written to read standard input and write standard output, is redirected to read myin
and write myout
: % myprog < myin > myoutYou can suppress redirected output and/or errors by sending it to the null device,
/dev/null
. The example shows redirection of both output and errors: % who >& /dev/nullTo redirect standard error and output to different files, you can use grouping:
% (cat myfile > myout) >& myerror
Bourne Shell Family
The Bourne shell uses a different format for redirection which includes numbers. The numbers refer to the file descriptor numbers (0 standard input, 1 standard output, 2 standard error). For example, 2>
redirects file descriptor 2, or standard error. &n
is the syntax for redirecting to a specific open file. For example 2>&1
redirects 2 (standard error) to 1 (standard output); if 1 has been redirected to a file, 2 goes there too. Other file descriptor numbers are assigned sequentially to other open files, or can be explicitly referenced in the shell scripts. Some of the forms of redirection for the Bourne shell family are: <
and >
assume standard input and output, respectively, as the default, so the numbers 0 and 1 can be left off. The form of a command with standard input and output redirection is:$ command -[options] [arguments] < input file > output fileRedirection may fail under some circumstances: 1) if you have the variable noclobber set and you attempt to redirect output to an existing file without forcing an overwrite, 2) if you redirect output to a file you don't have write access to, and 3) if you redirect output to a directory.
Examples:
$ who > names
- Direct standard output to a file named
names
$ (pwd; ls -l) > out
- Direct output of both commands to a file named
out
$ pwd; ls -l > out
- Direct output of
ls
command only to a file namedout
myprog
, which was written to read standard input and write standard output, is redirected to read myin
and write myout
. $ myprog < myin > myoutYou can suppress redirected output and/or error by sending it to the null device,
/dev/null
. The example shows redirection of standard error only: $ who 2> /dev/nullTo redirect standard error and output to different files (note that grouping is not necessary in Bourne shell):
$ cat myfile > myout 2> myerror
No comments:
Post a Comment