Each command can use three channels, either for input or output:
Standard Output. This is the default output channel. Whenever a command prints something, it uses the standard output channel.
Standard Input. If a command needs input from users or other commands, it uses this channel.
Standard Error. Commands use this channel for error reporting.
To redirect these channels, there are the following possibilities:
Command > File
Saves the output of the command into a file, an existing file will be
deleted. For example, the ls command writes its
output into the file listing.txt:
ls > listing.txt
Command >> File
Appends the output of the command to a file. For example, the
ls command appends its output to the file
listing.txt:
ls >> listing.txt
Command < File
Reads the file as input for the given command. For example, the
read command reads in the content of the file into
the variable a:
read a < foo
Command1 | Command2
Redirects the output of the left command as input for the right
command. For example, the cat command outputs the
content of the /proc/cpuinfo file. This output is
used by grep to filter only those lines which
contain cpu:
cat /proc/cpuinfo | grep cpu
Every channel has a file descriptor: 0 (zero) for
standard input, 1 for standard output and 2 for standard error. It is
allowed to insert this file descriptor before a <
or > character. For example, the following line
searches for a file starting with foo, but
suppresses its errors by redirecting it to
/dev/null:
find / -name "foo*" 2>/dev/null