Www.mitntraining.com



Class Notes on May 13, 2015:

One of the powers of the Unix command line is the use of input/output redirection and

pipes.

The bash shell has three basic streams;

■ it takes input from stdin (stream 0),

■ it sends outputto stdout (stream 1)

■ it sends error messages to stderr (stream 2) .

The drawing below has a graphical interpretation of these three streams.

■ The keyboard often serves as stdin, whereas stdout and stderr both go to the display. This can be confusing to new Linux users because there is no obvious way to recognize stdout from stderr.

■ Experienced users know that separating output from errors can be very useful

[pic]

Note: see page 171 for true image show above (Ref: LinuxTraining.pdf)

How to redirect these streams:

output redirection

■ stdout can be redirected with a greater than (>) sign. While scanning the line, the shell will see the > sign and will clear the file.

■ The > notation is in fact the abbreviation of 1> (stdout being referred to as stream 1).

Example Below:

[paul@RHELv4u3 ~]$ echo It is cold today!

It is cold today!

[paul@RHELv4u3 ~]$ echo It is cold today! > winter.txt

[paul@RHELv4u3 ~]$ cat winter.txt

It is cold today!

[paul@RHELv4u3 ~]$

- Note that the bash shell effectively removes the redirection from the command line before argument 0 is executed. This means that in the case of this command:

echo hello > greetings.txt

- the shell only counts two arguments (echo = argument 0, hello = argument 1). The redirection is removed before the argument counting takes place.

Append

■ Use >> to append output to a file.

Example:

[paul@RHELv4u3 ~]$ echo It is cold today! > winter.txt

[paul@RHELv4u3 ~]$ cat winter.txt

It is cold today!

[paul@RHELv4u3 ~]$ echo Where is the summer ? >> winter.txt

[paul@RHELv4u3 ~]$ cat winter.txt

It is cold today!

Where is the summer ?

[paul@RHELv4u3 ~]$

Saturday@9am_4/25/2015

error redirection

2> stderr

- Redirecting stderr is done with 2>. This can be very useful to prevent error messages from cluttering your screen.

[pic]

Note: image below on page: 174

- The screenshot below shows redirection of stdout to a file, and stderr to /dev/null (the null device that takes any input you want and throws it away).

Example:

Writing 1> is the same as >.

[paul@RHELv4u3 ~]$ find / > allfiles.txt 2> /dev/null

[paul@RHELv4u3 ~]$

- To redirect both stdout and stderr to the same file, use 2>&1.

Example:

[paul@RHELv4u3 ~]$ find / > allfiles_and_errors.txt 2>&1

[paul@RHELv4u3 ~]$

■ Note that the order of redirections is significant. For example:

( the command ls > dirlist 2>&1

- directs both standard output (file descriptor 1) and standard error (file descriptor 2) to the file dirlist, while the command ls 2>&1 > dirlist directs only the standard output to file dirlist, because the standard error made a copy of the standard output before the standard output was redirected to dirlist.

input redirection

Many commands can accept input from a facility called standard input.

-- By default, standard input gets its contents from the keyboard, but like standard output, it can be redirected.

-- To redirect standard input from a file instead of the keyboard, the " ................
................

In order to avoid copyright disputes, this page is only a partial summary.

Google Online Preview   Download