cit 140: introduction to itslide #1 csc 140: introduction to it i/o redirection
TRANSCRIPT
CIT 140: Introduction to IT Slide #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
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)
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
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
CIT 140: Introduction to IT Slide #6
Input 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
CIT 140: Introduction to IT Slide #8
Output 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
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.
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
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
CIT 140: Introduction to IT Slide #13
Redirecting Standard Error
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
CIT 140: Introduction to IT Slide #15
Redirecting stdout and stderr
CIT 140: Introduction to IT Slide #16
Redirecting stdout and stderr
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
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
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
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
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.
CIT 140: Introduction to IT Slide #22
UNIX Pipes (‘|’)
CIT 140: Introduction to IT Slide #23
UNIX Pipes (‘|’)
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
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
CIT 140: Introduction to IT Slide #26
Redirection and Piping combined
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.
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