week 9 - nov 7, 2005 1 week 9 agenda i/o redirection i/o redirection pipe pipe tee tee

51
Week 9 - Nov 7, 2005 Week 9 - Nov 7, 2005 1 Week 9 Agenda Week 9 Agenda I/O redirection I/O redirection pipe pipe tee tee

Upload: conrad-cory-morton

Post on 17-Jan-2016

215 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: Week 9 - Nov 7, 2005 1 Week 9 Agenda I/O redirection I/O redirection pipe pipe tee tee

Week 9 - Nov 7, 2005Week 9 - Nov 7, 2005 11

Week 9 AgendaWeek 9 Agenda I/O redirectionI/O redirection pipepipe teetee

Page 2: Week 9 - Nov 7, 2005 1 Week 9 Agenda I/O redirection I/O redirection pipe pipe tee tee

22 Week 9 - Nov 7, 2005Week 9 - Nov 7, 2005

Redirection and PipingRedirection and Piping

Most “processes” in UNIX:Most “processes” in UNIX:

send their output to the terminal screensend their output to the terminal screen

get their input from the keyboardget their input from the keyboard

send any error messages to the terminalsend any error messages to the terminal

Page 3: Week 9 - Nov 7, 2005 1 Week 9 Agenda I/O redirection I/O redirection pipe pipe tee tee

33 Week 9 - Nov 7, 2005Week 9 - Nov 7, 2005

Redirection and PipingRedirection and Piping

Most “processes” in UNIX:Most “processes” in UNIX:

send their output to the terminal screensend their output to the terminal screen

get their input from the keyboardget their input from the keyboard

send any error messages to the terminalsend any error messages to the terminalDo you

remember what a “process” is?

Page 4: Week 9 - Nov 7, 2005 1 Week 9 Agenda I/O redirection I/O redirection pipe pipe tee tee

44 Week 9 - Nov 7, 2005Week 9 - Nov 7, 2005

A process is the execution of a A process is the execution of a command by the UNIX system.command by the UNIX system.UNIX assigns a unique process UNIX assigns a unique process identification (PID) number at the identification (PID) number at the creation of each process. creation of each process. As long as a process is in existence, it As long as a process is in existence, it keeps the same PID number. keeps the same PID number.

Page 5: Week 9 - Nov 7, 2005 1 Week 9 Agenda I/O redirection I/O redirection pipe pipe tee tee

55 Week 9 - Nov 7, 2005Week 9 - Nov 7, 2005

RedirectionRedirection

Most “processes” in UNIX:Most “processes” in UNIX:

send their to thesend their to theoutputoutput terminal screenterminal screen

inputinput keyboardkeyboardget their from theget their from the

send any to thesend any to theerror messageserror messages

terminal screenterminal screen

Page 6: Week 9 - Nov 7, 2005 1 Week 9 Agenda I/O redirection I/O redirection pipe pipe tee tee

66 Week 9 - Nov 7, 2005Week 9 - Nov 7, 2005

RedirectionRedirectionUNIX allows us to UNIX allows us to

““redirect” redirect” where where

processes send their outputprocesses send their output

wherewhere

processes get their input processes get their input

and and

where where

processes send any error messages.processes send any error messages.

Page 7: Week 9 - Nov 7, 2005 1 Week 9 Agenda I/O redirection I/O redirection pipe pipe tee tee

77 Week 9 - Nov 7, 2005Week 9 - Nov 7, 2005

Page 8: Week 9 - Nov 7, 2005 1 Week 9 Agenda I/O redirection I/O redirection pipe pipe tee tee

88 Week 9 - Nov 7, 2005Week 9 - Nov 7, 2005

I/O Channel 0 - standard input (stdin)

I/O Channel 1 - standard output (stdout)

I/O Channel 2 - standard error (stderr)

These “channels” are called file descriptors

Page 9: Week 9 - Nov 7, 2005 1 Week 9 Agenda I/O redirection I/O redirection pipe pipe tee tee

99 Week 9 - Nov 7, 2005Week 9 - Nov 7, 2005

stdinstdout

stderr

Page 10: Week 9 - Nov 7, 2005 1 Week 9 Agenda I/O redirection I/O redirection pipe pipe tee tee

1010 Week 9 - Nov 7, 2005Week 9 - Nov 7, 2005

I/O Channel 0 – stdin -default is the terminal keyboard

I/O Channel 1- stdout - default is the terminal screen

I/O Channel 2- stderr - default is the terminal screen

These “channels” are called file descriptors

Let’s learn to redirect

”stdout” first

Page 11: Week 9 - Nov 7, 2005 1 Week 9 Agenda I/O redirection I/O redirection pipe pipe tee tee

1111 Week 9 - Nov 7, 2005Week 9 - Nov 7, 2005

Standard Input, Standard Input, Standard Output, Standard Output, Standard Error.....Standard Error.....

not a piece of not a piece of hardwarehardware

not a keyboard, a not a keyboard, a screen or a card in screen or a card in your computeryour computer

Actually “virtual Actually “virtual files”...opened by the files”...opened by the kernel for every kernel for every command command

RememberRemember

Page 12: Week 9 - Nov 7, 2005 1 Week 9 Agenda I/O redirection I/O redirection pipe pipe tee tee

1212 Week 9 - Nov 7, 2005Week 9 - Nov 7, 2005

Redirecting the output Redirecting the output of a command to a fileof a command to a file

Use the Use the greater thangreater than symbol symbol >>

this redirects the “standard output” or this redirects the “standard output” or “channel 1” of a command “channel 1” of a command

this is the same as this is the same as 1>1> but you don’t but you don’t need to type the “1” - it is need to type the “1” - it is “understood”.“understood”.

Page 13: Week 9 - Nov 7, 2005 1 Week 9 Agenda I/O redirection I/O redirection pipe pipe tee tee

1313 Week 9 - Nov 7, 2005Week 9 - Nov 7, 2005

Redirecting the output of a Redirecting the output of a command to a filecommand to a file

““The Rules”The Rules”

a command always comes before the > symbola command always comes before the > symbol

a filename always comes after the > symbola filename always comes after the > symbol

command > file

always a command before the >

always a file name after the >

You can think of “>” symbol as being an arrow You can think of “>” symbol as being an arrow pointing from a command to a filepointing from a command to a file

Page 14: Week 9 - Nov 7, 2005 1 Week 9 Agenda I/O redirection I/O redirection pipe pipe tee tee

1414 Week 9 - Nov 7, 2005Week 9 - Nov 7, 2005

Redirecting the output of a Redirecting the output of a command to a filecommand to a file

The output of this command is displayed on the screen by

default

Nothing is displayed on the

screen – the output of the date command is

redirected to the file “today”

Issue the command w >users

Page 15: Week 9 - Nov 7, 2005 1 Week 9 Agenda I/O redirection I/O redirection pipe pipe tee tee

1515 Week 9 - Nov 7, 2005Week 9 - Nov 7, 2005

Now, look at the contents of the file named users

Redirecting the output of a Redirecting the output of a command to a filecommand to a file

Page 16: Week 9 - Nov 7, 2005 1 Week 9 Agenda I/O redirection I/O redirection pipe pipe tee tee

1616 Week 9 - Nov 7, 2005Week 9 - Nov 7, 2005

Redirecting the output Redirecting the output of a command to a fileof a command to a file

Use the double Use the double greater thangreater than symbol symbol >>>>

this appends the “standard output” or this appends the “standard output” or “channel 1” of a command to a file“channel 1” of a command to a file

You can think of the symbol as a double You can think of the symbol as a double arrow from the command to the file, arrow from the command to the file, meaning 'add the output from the meaning 'add the output from the command to the END of the file'.command to the END of the file'.

Page 17: Week 9 - Nov 7, 2005 1 Week 9 Agenda I/O redirection I/O redirection pipe pipe tee tee

1717 Week 9 - Nov 7, 2005Week 9 - Nov 7, 2005

We can also redirect the We can also redirect the outputoutput

of one commandof one command to be to be inputinput

to another commandto another command

Redirection and PipingRedirection and Piping

Page 18: Week 9 - Nov 7, 2005 1 Week 9 Agenda I/O redirection I/O redirection pipe pipe tee tee

1818 Week 9 - Nov 7, 2005Week 9 - Nov 7, 2005

Piping - redirecting the output Piping - redirecting the output from a command to a commandfrom a command to a command

Use the pipe symbol to “connect” Use the pipe symbol to “connect” commandscommandsThe “pipe” character is a broken vertical line The “pipe” character is a broken vertical line on the keyboardon the keyboardMost fonts display it as a single line that Most fonts display it as a single line that looks like this: “ | ”looks like this: “ | ”Data goes in the start of a pipe and flows Data goes in the start of a pipe and flows out the endout the end

command1 | command2

Page 19: Week 9 - Nov 7, 2005 1 Week 9 Agenda I/O redirection I/O redirection pipe pipe tee tee

1919 Week 9 - Nov 7, 2005Week 9 - Nov 7, 2005

Using pipesUsing pipes

Q. How many files are in my current directory?

ls | wc -w

Page 20: Week 9 - Nov 7, 2005 1 Week 9 Agenda I/O redirection I/O redirection pipe pipe tee tee

2020 Week 9 - Nov 7, 2005Week 9 - Nov 7, 2005

Using pipesUsing pipes

ls | wc -w

The output of the ls

command is a list of file

names

The wc command takes the output of the ls command as

its input and displays a count of

the words

Page 21: Week 9 - Nov 7, 2005 1 Week 9 Agenda I/O redirection I/O redirection pipe pipe tee tee

2121 Week 9 - Nov 7, 2005Week 9 - Nov 7, 2005

Using PipesUsing Pipes

ls | wc –w > file_count

The wc command sends its output to a file called

file_count

The spaces before and after

a pipe are optional

(you will find your commands easier to read if you use them)

The spaces before and after a file redirection symbol (>, >>) are also optional

Page 22: Week 9 - Nov 7, 2005 1 Week 9 Agenda I/O redirection I/O redirection pipe pipe tee tee

2222 Week 9 - Nov 7, 2005Week 9 - Nov 7, 2005

Using PipesUsing Pipes

UNIX commands were designed to do UNIX commands were designed to do “one thing very well”“one thing very well”We use a series of pipes between We use a series of pipes between simple UNIX commands to create simple UNIX commands to create complex commands linescomplex commands linesMuch of the power and flexibility of Much of the power and flexibility of the UNIX command line is built upon the UNIX command line is built upon “pipelines” of commands! “pipelines” of commands!

Page 23: Week 9 - Nov 7, 2005 1 Week 9 Agenda I/O redirection I/O redirection pipe pipe tee tee

2323 Week 9 - Nov 7, 2005Week 9 - Nov 7, 2005

Using PipesUsing Pipes

Command aCommand a | | Command bCommand b | | Command cCommand c

The stdout of command ' The stdout of command ' Command aCommand a' is ' is connected to the stdin of 'connected to the stdin of ' Command Command b', b',

and the stdout of ' and the stdout of ' Command bCommand b' is ' is connected to the stdin of ' connected to the stdin of ' Command cCommand c'.'.

Page 24: Week 9 - Nov 7, 2005 1 Week 9 Agenda I/O redirection I/O redirection pipe pipe tee tee

2424 Week 9 - Nov 7, 2005Week 9 - Nov 7, 2005

“Always-Remember-and-Never-Forget”...

RULE #1 – Use file redirection symbols such

as > and >> before a RULE #2 – Use a pipe before a

filenamecommand

Page 25: Week 9 - Nov 7, 2005 1 Week 9 Agenda I/O redirection I/O redirection pipe pipe tee tee

2525 Week 9 - Nov 7, 2005Week 9 - Nov 7, 2005

“Always-Remember-and-Never-Forget”...

RULE #1 ...

RULE #2 ...

Page 26: Week 9 - Nov 7, 2005 1 Week 9 Agenda I/O redirection I/O redirection pipe pipe tee tee

2626 Week 9 - Nov 7, 2005Week 9 - Nov 7, 2005

“Always-Remember-and-Never-Forget”...

RULE #3

Don’t use pipes when you don’t need them!

example:

cat users |more

more users

WRONG!

CORRECT!

Page 27: Week 9 - Nov 7, 2005 1 Week 9 Agenda I/O redirection I/O redirection pipe pipe tee tee

2727 Week 9 - Nov 7, 2005Week 9 - Nov 7, 2005

“Always-Remember-and-Never-Forget”...

RULE #3

Don’t use pipes when you don’t need them!

example:

cat users |head -5

head -5 users

WRONG!

CORRECT!

Page 28: Week 9 - Nov 7, 2005 1 Week 9 Agenda I/O redirection I/O redirection pipe pipe tee tee

2828 Week 9 - Nov 7, 2005Week 9 - Nov 7, 2005

Skill Testing Question #1Skill Testing Question #1

On the command line what comes On the command line what comes AFTER a > or >> symbol?AFTER a > or >> symbol?

Page 29: Week 9 - Nov 7, 2005 1 Week 9 Agenda I/O redirection I/O redirection pipe pipe tee tee

2929 Week 9 - Nov 7, 2005Week 9 - Nov 7, 2005

Skill Testing Question #2Skill Testing Question #2

On the command line what comes AFTER a On the command line what comes AFTER a | symbol?| symbol?

Page 30: Week 9 - Nov 7, 2005 1 Week 9 Agenda I/O redirection I/O redirection pipe pipe tee tee

3030 Week 9 - Nov 7, 2005Week 9 - Nov 7, 2005

Skill Testing Question #3Skill Testing Question #3

When should you NOT use file redirection When should you NOT use file redirection OR piping?OR piping?

Page 31: Week 9 - Nov 7, 2005 1 Week 9 Agenda I/O redirection I/O redirection pipe pipe tee tee

3131 Week 9 - Nov 7, 2005Week 9 - Nov 7, 2005

I/O Channel 0 – stdin -default is the terminal keyboard

I/O Channel 1- stdout - default is the terminal screen

I/O Channel 2- stderr - default is the terminal screen

We’ve done this!

Now let’s do this!

Redirection and Piping

Page 32: Week 9 - Nov 7, 2005 1 Week 9 Agenda I/O redirection I/O redirection pipe pipe tee tee

3232 Week 9 - Nov 7, 2005Week 9 - Nov 7, 2005

Redirecting the input of a command Redirecting the input of a command

by default commands get their “input” by default commands get their “input” from the terminal keyboardfrom the terminal keyboard

you can redirect “stdin” so that it you can redirect “stdin” so that it comes from a file or from another comes from a file or from another commandcommand

Page 33: Week 9 - Nov 7, 2005 1 Week 9 Agenda I/O redirection I/O redirection pipe pipe tee tee

3333 Week 9 - Nov 7, 2005Week 9 - Nov 7, 2005

Redirecting the input of a command Redirecting the input of a command

Use the Use the less thanless than symbol symbol <<

this redirects the “standard input” or “channel 0” this redirects the “standard input” or “channel 0” of a command to come from a file instead of the of a command to come from a file instead of the keyboardkeyboard

this is the same as this is the same as 0<0< but you don’t need to type but you don’t need to type the “0” - it is “understood”.the “0” - it is “understood”.

You can also think of the 'You can also think of the '<<' symbol as being an ' symbol as being an arrow pointing from the file to the command, arrow pointing from the file to the command, meaning that the information will flow from the meaning that the information will flow from the file into the input of the command.file into the input of the command.

Page 34: Week 9 - Nov 7, 2005 1 Week 9 Agenda I/O redirection I/O redirection pipe pipe tee tee

3434 Week 9 - Nov 7, 2005Week 9 - Nov 7, 2005

Redirecting the input of a commandRedirecting the input of a command

Examples:Examples:

cat < tempcat < temp

cat < temp > temp2cat < temp > temp2

mail –s “week 9 Notes” mail –s “week 9 Notes” [email protected]@senecac.on.ca < week9.html < week9.html

Page 35: Week 9 - Nov 7, 2005 1 Week 9 Agenda I/O redirection I/O redirection pipe pipe tee tee

3535 Week 9 - Nov 7, 2005Week 9 - Nov 7, 2005

Redirecting the input of a commandRedirecting the input of a command

Are these the same?Are these the same?

cat < tempcat < tempcat tempcat temp

Are these the same?Are these the same?

cat < temp >temp2cat < temp >temp2 cp temp temp2cp temp temp2

and and

and and

Page 36: Week 9 - Nov 7, 2005 1 Week 9 Agenda I/O redirection I/O redirection pipe pipe tee tee

3636 Week 9 - Nov 7, 2005Week 9 - Nov 7, 2005

The < symbol redirects the input of The < symbol redirects the input of a command to come from a file a command to come from a file

Q. What if you want the input of a command Q. What if you want the input of a command to come from another command?to come from another command?

A. When you place a command after a pipe you are redirecting its input to come from a command instead of from the keyboard

Page 37: Week 9 - Nov 7, 2005 1 Week 9 Agenda I/O redirection I/O redirection pipe pipe tee tee

3737 Week 9 - Nov 7, 2005Week 9 - Nov 7, 2005

I/O Channel 0 – stdin -default is the terminal keyboard

I/O Channel 1- stdout - default is the terminal screen

I/O Channel 2- stderr - default is the terminal screen

We’ve done this!

We’ve done this!

Redirection and Piping

Let’s do this!

Page 38: Week 9 - Nov 7, 2005 1 Week 9 Agenda I/O redirection I/O redirection pipe pipe tee tee

3838 Week 9 - Nov 7, 2005Week 9 - Nov 7, 2005

Error RedirectionError RedirectionBy default, stderr goes to the terminal screenBy default, stderr goes to the terminal screen

The “standard error” of a command can be The “standard error” of a command can be redirected to a file using the redirected to a file using the 2>2> symbol symbol

Source: Ling ZhuSource: Ling Zhu

Page 39: Week 9 - Nov 7, 2005 1 Week 9 Agenda I/O redirection I/O redirection pipe pipe tee tee

3939 Week 9 - Nov 7, 2005Week 9 - Nov 7, 2005

Error RedirectionError Redirection

cp file1 file2 2cp file1 file2 2>> error.logerror.log

This would This would overwrite overwrite the file error.logthe file error.log

cp file1 file2 2cp file1 file2 2>>>>error.logerror.log

This would This would appendappend the error message of the cp the error message of the cp command to the file error.logcommand to the file error.log

Source: Ling ZhuSource: Ling Zhu

Warning:There is no space in between

Page 40: Week 9 - Nov 7, 2005 1 Week 9 Agenda I/O redirection I/O redirection pipe pipe tee tee

4040 Week 9 - Nov 7, 2005Week 9 - Nov 7, 2005

A Special Place of UNIX/LinuxA Special Place of UNIX/Linux

/dev/null/dev/null Can be called bit bucketCan be called bit bucket Can be called black holeCan be called black hole

Source: Ling ZhuSource: Ling Zhu

Page 41: Week 9 - Nov 7, 2005 1 Week 9 Agenda I/O redirection I/O redirection pipe pipe tee tee

4141 Week 9 - Nov 7, 2005Week 9 - Nov 7, 2005

Use > or >> to redirect output to a Use > or >> to redirect output to a filefile

Use a | to redirect output to a Use a | to redirect output to a commandcommand

Q. What if you want to do both?Q. What if you want to do both?(this is on the test!)(this is on the test!)

A. The tee command

Page 42: Week 9 - Nov 7, 2005 1 Week 9 Agenda I/O redirection I/O redirection pipe pipe tee tee

4242 Week 9 - Nov 7, 2005Week 9 - Nov 7, 2005

The tee command duplicates the The tee command duplicates the standard output of a command standard output of a command

you can then redirect one “copy” of the you can then redirect one “copy” of the output to a file and one “copy” of the output to a file and one “copy” of the output to a commandoutput to a command

example:example:

ls –l | tee listing | morels –l | tee listing | more

the filename you are sending one copy of the output of the ls –l

command to

the command you are sending one copy of the output of the ls –l

command to

Page 43: Week 9 - Nov 7, 2005 1 Week 9 Agenda I/O redirection I/O redirection pipe pipe tee tee

4343 Week 9 - Nov 7, 2005Week 9 - Nov 7, 2005

The tee command duplicates the The tee command duplicates the standard output of a command standard output of a command

Example:Example:

ls –l | tee listing | morels –l | tee listing | more

if this file exists it will be overwritten

To append to an existing fileuse tee –a filename

ls –l | tee –a listing | more

Page 44: Week 9 - Nov 7, 2005 1 Week 9 Agenda I/O redirection I/O redirection pipe pipe tee tee

4444 Week 9 - Nov 7, 2005Week 9 - Nov 7, 2005

Never use > within the tee Never use > within the tee command!command!

ls –l | tee > listings | morels –l | tee > listings | more

or or

ls –l | tee >> listings | morels –l | tee >> listings | moreWRONG!!!!

Page 45: Week 9 - Nov 7, 2005 1 Week 9 Agenda I/O redirection I/O redirection pipe pipe tee tee

4545 Week 9 - Nov 7, 2005Week 9 - Nov 7, 2005

Let’s review some commands then Let’s review some commands then practice “redirection” with them...practice “redirection” with them...

1.1. sortsort

2.2. grepgrep

Page 46: Week 9 - Nov 7, 2005 1 Week 9 Agenda I/O redirection I/O redirection pipe pipe tee tee

4646 Week 9 - Nov 7, 2005Week 9 - Nov 7, 2005

Some Special symbols when Some Special symbols when you you grepgrep a pattern a pattern

^̂ - beginning of a line - beginning of a line $$ - end of a line - end of a line

Page 47: Week 9 - Nov 7, 2005 1 Week 9 Agenda I/O redirection I/O redirection pipe pipe tee tee

4747 Week 9 - Nov 7, 2005Week 9 - Nov 7, 2005

sortsort and and grep grepbelong to a group of UNIX utilities belong to a group of UNIX utilities

called “filters”called “filters”

Filters are utilities that:Filters are utilities that:

1.1. read from stdinread from stdin

2.2. write to stdoutwrite to stdout

3.3. do not change the contents of the original do not change the contents of the original filefile

Page 48: Week 9 - Nov 7, 2005 1 Week 9 Agenda I/O redirection I/O redirection pipe pipe tee tee

4848 Week 9 - Nov 7, 2005Week 9 - Nov 7, 2005

How do you learn a new How do you learn a new command?command?

1.1. Learn its purposeLearn its purpose

2.2. Learn its “syntax” including common Learn its “syntax” including common optionsoptions

3.3. Learn where it gets input and where it Learn where it gets input and where it sends its outputsends its output

Page 49: Week 9 - Nov 7, 2005 1 Week 9 Agenda I/O redirection I/O redirection pipe pipe tee tee

4949 Week 9 - Nov 7, 2005Week 9 - Nov 7, 2005

Other UNIX utilities that are Other UNIX utilities that are “filters”“filters”

headhead

tailtail

wcwc

teetee

Page 50: Week 9 - Nov 7, 2005 1 Week 9 Agenda I/O redirection I/O redirection pipe pipe tee tee

5050 Week 9 - Nov 7, 2005Week 9 - Nov 7, 2005

Filters can be used between pipes Filters can be used between pipes in a complex command linein a complex command line

Example:Example:

grep happy diary >childhoodgrep happy diary >childhood

sort mymarks | tee sortedmarks | moresort mymarks | tee sortedmarks | more

Page 51: Week 9 - Nov 7, 2005 1 Week 9 Agenda I/O redirection I/O redirection pipe pipe tee tee

5151 Week 9 - Nov 7, 2005Week 9 - Nov 7, 2005

Commands that are Commands that are not not filters include:filters include:

cd cd

chmodchmod

cpcp

rmrm

datedate

echoecho

ls ls

mvmv

pwdpwd

who....who....

Warning!Warning!

You can not put these

commands between pipes!

Moral of the Story:

ALWAYS be careful about “what” you

put in a pipe!