fortypoundhead.com

Redirecting Input and Output in Unix

Primary Category = Tutorial

Posted On 2005-11-1 by FortyPoundHead
Keywords: Unix Tutorial Part 06
Tags: Tutorial Linux
Views: 1379
Rating: / 5.00

  • 1
  • 2
  • 3
  • 4
  • 5

 




Section 6: Redirecting Input and Output





CONCEPT: Every program you run from the shell opens three files:
Standard input, standard output, and standard error. The 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 /etc/passwd to the more command:
more <
/etc/passwd


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 /etc/passwd file, the
command:
head /etc/passwd
will work just the same as the
command:
head < /etc/passwd


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
ls /tmp >
~/ls.out
to redirect the output of the ls command into a
file called "ls.out" in your home directory. 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: In this example, I list the contents of the /tmp
directory, and put it in a file called myls. Then, I list the
contents of the /etc directory, and append it to the file
myls:
ls /tmp > myls
ls /etc >> myls



Redirecting error



Redirecting standard error is a bit trickier, depending on the kind of
shell you're using (there's more than one flavor of shell program!).
In the POSIX shell and ksh, redirect the standard error with the
symbol "2>".



EXAMPLE: Sort the /etc/passwd file, place the results in a file
called foo, and trap any errors in a file called err with the
command:
sort < /etc/passwd > foo 2> err







About the Author

FortyPoundHead has posted a total of 1975 articles.

You can find more information from FortyPoundHead by visiting .

Comments On This Post

No comments on this post yet!

 

Do you have a thought relating to this post? You can post your comment here. If you have an unrelated question, you can use the Q&A section to ask it.

Or you can drop a note to the administrators if you're not sure where you should post.


Your IP address is:54.163.159.27

Before you can post, you need to prove you are human. If you log in, this test goes away.