280 likes | 453 Views
CSC 140: Introduction to IT. I/O Redirection. Topics. Standard Files: stdin, stdout, stderr. Input Redirection Output Redirection Stderr Redirection Appending Pipes Combining Pipes and Redirection. Introduction. All commands perform at least one of the following: Input Output
E N D
CSC 140: Introduction to IT I/O Redirection CIT 140: Introduction to IT
Topics • Standard Files: stdin, stdout, stderr. • Input Redirection • Output Redirection • Stderr Redirection • Appending • Pipes • Combining Pipes and Redirection CIT 140: Introduction to IT
Introduction All commands perform at least one of the following: • Input • Output • Processing Standard files for commands • Standard Input (stdin) • Standard Output (stdout) • Standard Error (stderr) CIT 140: Introduction to IT
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
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
Input Redirection CIT 140: Introduction to IT
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
Output Redirection CIT 140: Introduction to IT
Output Redirection In 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
Combining I+O Redirection command < input-file > output-file command > output-file < input-file Input from input-file, output to output-file. Order of > and < operators does not matter. Example: cat < lab1 > lab2 cat takes input from lab1 and sends output to lab2. CIT 140: Introduction to IT
Redirection with File Descriptors File descriptor: a small integer that the UNIX kernel attaches with every open file standard input (sdin) — 0 standard 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
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
Redirecting Standard Error CIT 140: Introduction to IT
Redirecting stdout and stderr Redirect 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>&1 cat 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
Redirecting stdout and stderr CIT 140: Introduction to IT
Redirecting stdout and stderr CIT 140: Introduction to IT
Redirecting stdin, stdout, stderr command 0<input-file 1>output-file 2> error-file Command gets stdin from input-file sends stdout to output-file sends 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
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.log find / -name “*.h” >>files 2>>errors find / -name “*.h” >>find.output 2>&1 CIT 140: Introduction to IT
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
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
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
UNIX Pipes (‘|’) CIT 140: Introduction to IT
UNIX Pipes (‘|’) CIT 140: Introduction to IT
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
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
Redirection and Piping combined CIT 140: Introduction to IT
Redirection in the C Shell Input, output, and append operators(<, > ,>>) same in csh. The operator for error redirection is >& in the C Shell. command >& file Redirects 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
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 CIT 140: Introduction to IT