previoussection   next section   upper level


Section 6: Redirecting Input and Output

CONCEPT: Every program you run from the shell opens three files: Standard input, standard output, and standard error. These files provide the primary means of communications between the programs, and exist for as long as the process runs.

The standard input file provides a way to send data to a process. As a default, the standard input is read from the terminal keyboard.

The standard output provides a means for the program to output data. As a default, the standard output goes to the terminal display screen.

The standard error is where the program reports any errors encountered during execution. By default, the standard error goes to the terminal display.

CONCEPT: A program can be told where to look for input and where to send output, using input/output redirection. UNIX uses the "less-than" and "greater-than" special characters, < and >, to signify input and output redirection, respectively.

Redirecting input

Using the "less-than" sign with a file name like this:

< file1

in a shell command instructs the shell to read input from a file called file1 instead of from the keyboard.

EXAMPLE:Use standard input redirection to send the contents of the file /.bashrc to the more command:

more < .bashrc

Many UNIX commands that will accept a file name as a command line argument, will also accept input from standard input if no file is given on the command line.

EXAMPLE: To see the first ten lines of the /.bashrc file, the command:

head /.bashrc

will work just the same as the command:

head < /.bashrc

Redirecting output

Using the "greater-than" sign with a file name like this:

> file2

causes the shell to place the output from the command in a file called file2 instead of on the screen. If the file file2 already exists, the old version will be overwritten.

EXAMPLE: Type the command

mkdir tmp
ls -la > ~/tmp/ls.out
cd tmp
ls -la

to redirect the output of the ls command into a file called ls.out in directory tmp which has just made. Remember that the tilde (~) is UNIX shorthand for your home directory. In this command, the ls command will list the contents of the /tmp directory.

Use two "greater-than" signs to append to an existing file. For example:

>> file2

causes the shell to append the output from a command to the end of a file called file2. If the file file2 does not already exist, it will be created.

EXAMPLE: List the contents of the /tmp directory and put it in a file called myls. Then, list the contents of the /etc directory, and append it to the file myls:

ls ~/tmp
ls /etc
ls ~/tmp >> myls
cat myls
ls /etc >> myls
cat myls


previoussection   next section   upper level