Most Java Programmers I know are unaware of how to redirect Stderr to a file. Here is a 1 minute tutorial on the same. For both Unix and Windows:
When writing shell scripts, you can control input/output redirection. Input redirection is the ability to force a command to read any necessary input from a file instead of from the keyboard. Output redirection is the ability to send the output from a command into a file or pipe instead of to the screen.
Each process created by a shell script begins with three file descriptors associated with it:
0 stdin |
1 stdout |
2 stderr |
You can use the file descriptor numbers 0 (standard input), 1 (standard output), and 2 (standard error) together with the redirection metacharacters to control input and output in the Bourne and Korn shells.
Description | Command | ||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
Take STDIN from file | <file, or 0<file | ||||||||||||||||
Redirect STDOUT to file | > file, or 1>fileRedirect STDERR to file | 2> file | Append STDOUT to end of file | >> file | Redirect STDERR to STDOUT | 2>&1 | Pipe standard output of cmd1 as standard input to cmd2 | cmd1 | cmd2 | Use file as both STDIN and STDOUT | <> file | Close STDIN | <&- | Close STDOUT | >&- | Close STDERR | 2>&- | |
When redirecting STDIN and STDOUT in the Bourne and Korn shells, you can omit the file descriptors 0 and 1 from the redirection symbols. You must always use the file descriptor 2 with the redirection symbol.
The 0 and 1 file descriptors are implied, and not used explicitly for the C shell. The C shell representation for standard error (2) is an ampersand (&). STDERR can only be redirected when redirecting STDOUT.
Description | Command |
---|---|
Redirect STDOUT to file | > file |
Take input from file | < file |
Append STDOUT to end of file | >> file |
Redirect STDOUT and STDERR to file | >& file |
Append STDOUT and STDERR to file | >>& file |
For windows:
The command shell provides facilities to change the default stream input and output. These facilities are accessed by placing special command redirection symbols in a command.
Symbol | Description |
---|---|
>file | Redirects command output to the file specified. You can also use a standard device name such as LPT1, CON, PRN or CONOUT$ as the file name. Any preexisting contents of the file are lost. |
>>file | Redirects command output to the file specified. If the file already exists, all command output is appended to the end of the file. |
<file | Redirects command input from the file specified. You can also use a standard device name such as CON or CONIN$. |
2>file | Redirects command error output to the file specified. You can also use a standard device name such as LPT1, CON, PRN or CONOUT$ as the file name. Any preexisting contents of the file are lost. |
2>&1 | Redirects command error output to the same location as command output. This makes any command output redirection also apply to command error output. |
cmd1 | cmd2 | Pipes the command output of cmd1 to the command input of cmd2. Multiple pipe characters are allowed, creating a chain of commands, each sending output to the next command in the chain. |
No comments:
Post a Comment