28
CIT 140: Introduction to IT Slide #1 CSC 140: Introduction to IT I/O Redirection

CIT 140: Introduction to ITSlide #1 CSC 140: Introduction to IT I/O Redirection

Embed Size (px)

Citation preview

Page 1: CIT 140: Introduction to ITSlide #1 CSC 140: Introduction to IT I/O Redirection

CIT 140: Introduction to IT Slide #1

CSC 140: Introduction to IT

I/O Redirection

Page 2: CIT 140: Introduction to ITSlide #1 CSC 140: Introduction to IT I/O Redirection

CIT 140: Introduction to IT Slide #2

Topics

1. Standard Files: stdin, stdout, stderr.

2. Input Redirection

3. Output Redirection

4. Stderr Redirection

5. Appending

6. Pipes

7. Combining Pipes and Redirection

Page 3: CIT 140: Introduction to ITSlide #1 CSC 140: Introduction to IT I/O Redirection

CIT 140: Introduction to IT Slide #3

Introduction

All commands perform at least one of the following:1. Input2. Output3. Processing

Standard files for commands1. Standard Input (stdin)2. Standard Output (stdout)3. Standard Error (stderr)

Page 4: CIT 140: Introduction to ITSlide #1 CSC 140: Introduction to IT I/O Redirection

CIT 140: Introduction to IT Slide #4

Standard Files and File Descriptors

By default– stdin is associated with keyboard– stdout is associated with display screen– stderr is associated with display screen

Page 5: CIT 140: Introduction to ITSlide #1 CSC 140: Introduction to IT I/O Redirection

CIT 140: Introduction to IT Slide #5

Input Redirection

Use ‘<‘ for input redirection

command < input-file

Input comes from input-file instead of keyboard.

Examples:

cat < tempfile

mail waldenj < .bashrc

Page 6: CIT 140: Introduction to ITSlide #1 CSC 140: Introduction to IT I/O Redirection

CIT 140: Introduction to IT Slide #6

Input Redirection

Page 7: CIT 140: Introduction to ITSlide #1 CSC 140: Introduction to IT I/O Redirection

CIT 140: Introduction to IT Slide #7

Output Redirection

Use ‘>‘ for output redirection

command > output-file

Output sent to output-file instead of screen.

Examples:

cat file1 file2 > mergefile

find / -name “*.h” >headerfiles

Page 8: CIT 140: Introduction to ITSlide #1 CSC 140: Introduction to IT I/O Redirection

CIT 140: Introduction to IT Slide #8

Output Redirection

Page 9: CIT 140: Introduction to ITSlide #1 CSC 140: Introduction to IT I/O Redirection

CIT 140: Introduction to IT Slide #9

Output RedirectionIn a network environment, use the following command to sort on the server machine the file called datafile residing on your machine:

ssh server sort < datafile

Page 10: CIT 140: Introduction to ITSlide #1 CSC 140: Introduction to IT I/O Redirection

CIT 140: Introduction to IT Slide #10

Combining I+O Redirectioncommand < input-file > output-filecommand > output-file < input-file

Input from input-file, output to output-file.Order of > and < operators does not matter.

Example: cat < lab1 > lab2cat takes input from lab1 and sends output to lab2.

Page 11: CIT 140: Introduction to ITSlide #1 CSC 140: Introduction to IT I/O Redirection

CIT 140: Introduction to IT Slide #11

Redirection with File Descriptors

File descriptor: a small integer that the UNIX kernel attaches with every open file

standard input (sdin) — 0standard output (stout) — 1 standard error (sderr) — 2

By making use of file descriptors, standard output and standard input can be redirected, using, 0< and 1> respectively.

Example: $ grep “John” 0< tempfile

Page 12: CIT 140: Introduction to ITSlide #1 CSC 140: Introduction to IT I/O Redirection

CIT 140: Introduction to IT Slide #12

Redirecting Standard Error

command 2> error-file

Errors sent to error-file instead of screen.

Example:ls –l foo 2> error.log

find / -name “*.h” 2>error.log

Page 13: CIT 140: Introduction to ITSlide #1 CSC 140: Introduction to IT I/O Redirection

CIT 140: Introduction to IT Slide #13

Redirecting Standard Error

Page 14: CIT 140: Introduction to ITSlide #1 CSC 140: Introduction to IT I/O Redirection

CIT 140: Introduction to IT Slide #14

Redirecting stdout and stderrRedirect stdout + stderr to same file using descriptors

cat lab1 lab2 1> cat.output 2>cat.errors

Send file descriptor 2 to fd 1 with 2>&1 cat lab1 lab2 lab3 1>cat.output.errors

2>&1cat lab1 lab2 lab3 >cat.output.errors 2>&1

Send file descriptor 1 to fd 2 with 1>&2 cat lab1 lab2 lab3 2>cat.output.errors

1>&2

Page 15: CIT 140: Introduction to ITSlide #1 CSC 140: Introduction to IT I/O Redirection

CIT 140: Introduction to IT Slide #15

Redirecting stdout and stderr

Page 16: CIT 140: Introduction to ITSlide #1 CSC 140: Introduction to IT I/O Redirection

CIT 140: Introduction to IT Slide #16

Redirecting stdout and stderr

Page 17: CIT 140: Introduction to ITSlide #1 CSC 140: Introduction to IT I/O Redirection

CIT 140: Introduction to IT Slide #17

Redirecting stdin, stdout, stderrcommand 0<input-file 1>output-file 2> error-fileCommand

gets stdin from input-filesends stdout to output-filesends stderr to error-file

File descriptors 0 and 1 not required as they are default values sort 0<students 1>students.sorted 2>sort.error sort 2>sort.error 0<students 1>students.sorted

Page 18: CIT 140: Introduction to ITSlide #1 CSC 140: Introduction to IT I/O Redirection

CIT 140: Introduction to IT Slide #18

Appending Output

By default, output and error messages overwrite the contents of the destination file.

Append by using >> instead of using >

Examples:cat memo letter >>stuff 2>error.logfind / -name “*.h” >>files 2>>errorsfind / -name “*.h” >>find.output 2>&1

Page 19: CIT 140: Introduction to ITSlide #1 CSC 140: Introduction to IT I/O Redirection

CIT 140: Introduction to IT Slide #19

Noclobber Options

> set -o noclobber

> touch a

> cat smallFile >a

bash: a: cannot overwrite existing file

> set +o noclobber

> cat smallFile >a

Page 20: CIT 140: Introduction to ITSlide #1 CSC 140: Introduction to IT I/O Redirection

CIT 140: Introduction to IT Slide #20

The null device> ls -l /dev/null

crw-rw-rw- 1 root root 1, 3 Oct 15 10:11 /dev/null

> cat /dev/null

> cat smallFile >/dev/null

> cat /dev/null

> find / -name “*.h” 2>/dev/null

/usr/include/zconf.h

> ls –l smallFile

-rw-r--r-- 1 waldenj 1100 Oct 19 14:13 smallFile

> cat /dev/null >smallFile

> ls -l smallFile

-rw-r--r-- 1 waldenj 0 Oct 29 20:29 smallFile

Page 21: CIT 140: Introduction to ITSlide #1 CSC 140: Introduction to IT I/O Redirection

CIT 140: Introduction to IT Slide #21

UNIX Pipes (‘|’)Connects the stdout of one command to the stdin of another.

command1 | command2 | … | commandN

Standard output of command1 is connected to stdin of command2,…, stdout of command N-1 is connected to stdin of command N.

Filters: a special class of UNIX commands that take input from stdin process it and send it to stdout .

I/O redirection and pipes can be used in a single command.

Page 22: CIT 140: Introduction to ITSlide #1 CSC 140: Introduction to IT I/O Redirection

CIT 140: Introduction to IT Slide #22

UNIX Pipes (‘|’)

Page 23: CIT 140: Introduction to ITSlide #1 CSC 140: Introduction to IT I/O Redirection

CIT 140: Introduction to IT Slide #23

UNIX Pipes (‘|’)

Page 24: CIT 140: Introduction to ITSlide #1 CSC 140: Introduction to IT I/O Redirection

CIT 140: Introduction to IT Slide #24

Sending stdout+stderr to a pipe.

1. Send file descriptor 2 to fd 1.

2. Use pipe as usual.

Example:find / -name "*.h" 2>&1 | less

Page 25: CIT 140: Introduction to ITSlide #1 CSC 140: Introduction to IT I/O Redirection

CIT 140: Introduction to IT Slide #25

Redirection and Piping combined

command1| tee file1…fileN|command2

Standard output of ‘command1’ is connected to ‘stdin’ of tee, and tee sends its input to files ‘file1’ through ‘fileN’ and as stdin on ‘command2’

Example:cat names stuents | grep “John Doe” | tee file1 file2 | wc –l

Page 26: CIT 140: Introduction to ITSlide #1 CSC 140: Introduction to IT I/O Redirection

CIT 140: Introduction to IT Slide #26

Redirection and Piping combined

Page 27: CIT 140: Introduction to ITSlide #1 CSC 140: Introduction to IT I/O Redirection

CIT 140: Introduction to IT Slide #27

Redirection in the C Shell

Input, output, and append operators(<, > ,>>) same in csh.

The operator for error redirection is >& in the C Shell.

command >& fileRedirects the stdout and stderr of command to file.

Examples:ls –l foo >& error.log

Csh does not have an operator for redirecting stderr alone.Use >>& operator to redirect and append stdout + stderr.

Page 28: CIT 140: Introduction to ITSlide #1 CSC 140: Introduction to IT I/O Redirection

CIT 140: Introduction to IT Slide #28

Redirection in the C Shell

Allows stdout and stderr of a command to be attached to stdin of another command with |& operator.

command1 |& command2

Send stdout + stderr of command1 to command2.

Examples:cat file1 file2 |& grep “John Doe”

grep “John Doe” file* |& wc –l