8.10 Redirection and Pipes
Sometimes it would be useful if you could write the output of a
command to a file for further editing or if you could combine several
commands, using the output of one command as input for the next one. The
shell offers this function by means of redirection or pipes.
Normally, the standard output in the shell is your screen (or an open
shell window) and the standard input is the keyboard. With the help of
certain symbols you can redirect the input or the output to another object,
such as a file or another command.
With > you can forward the output of a
command to a file (output redirection), with < you
can use a file as input for a command (input redirection).
By means of a pipe symbol | you can also
redirect the output: with a pipe, you can combine several commands,
using the output of one command as input for the next command. In
contrast to the other redirection symbols > and <, the use of the
pipe is not constrained to files.
8.10.1 Examples for Redirection and Pipe
To write the output of a command like ls to a
ls -l > filelist.txt
This creates a file named filelist.txt that
contains the list of contents of your current directory as generated by
the ls command.
However, if a file named filelist.txt already
exists, this command overwrites the existing file. To prevent this, use
>> instead of >. Entering
ls -l >> filelist.txt
simply appends the output of the ls command to
an already existing file named filelist.txt. If the
file does not exist, it is created.
If a command generates a lengthy output, like ls
-l may do, it often may be useful to pipe
the output to a viewer like less to be able to scroll
through the pages. To do so, enter
ls -l | less
The list of contents of the current directory is shown in
The pipe is also often used in combination with the
grep command in order to search for a certain string
in the output of another command. For example, if you want to view a
list of files in a directory which are owned by a certain user,
ls -l | grep tux