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:
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.
Bourne and Korn Shell Redirection| Description | Command |
|---|
| Take STDIN from file | <file, or 0<file |
Redirect STDOUT to file | > file, or 1>file| Redirect 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.
C Shell Redirection Metacharacters| 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.
Windows Command Redirection SymbolsSymbol
| 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.
|