Redirection
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).

Pipe
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.

Examples (Redirection):
1) To write the output of a command like ls to a file, enter

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.

2) Redirections also works the other way round. Instead of using the standard input from the keyboard for a command, you can use a file as input:

sort < filelist.txt

This will force the sort command to get its input from the contents of filelist.txt. The result is shown on the screen. Of course, you can also write the result into another file, using a combination of redirections:

sort < filelist.txt > sorted_filelist.txt

Example (Pipe):
If a command generates a lengthy output, like ls -l may do, it 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 less.

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 the user tux, enter