1: stdout
2: stderr
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.
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 error:
&>word
and
>&word
Of the two forms, the first is preferred. This is semantically equivalent to
>word 2>&1
To redirect both stdout output and stderr error to a file:
# find . &> /tmp/test.txt
Redirects STDOUT to log and than replaces STDERR with the redirected STDOUT:
# some_cmd > log 2>&1
Replaces STDERR with STDOUT and then redirects the original STDOUT to log:
# some_cmd 2>&1 > log
Lookup the manual and find keyword redirection for detail:
# man bash
Reference:
http://stackoverflow.com/questions/4699790/cmd-21-log-vs-cmd-log-21
http://superuser.com/questions/71428/what-does-21-do-in-command-line
http://stackoverflow.com/questions/818255/in-the-shell-what-does-21-mean
No comments:
Post a Comment