CS 497C - Introduction to UNIX Lecture 21: - The Shell Chin-Chih Chang chang@cs.twsu.edu Redirection (Standard Output) * Using the symbols > and >>, you can redirect the output to a disk file. * For example, when we issue who > new-file, the shell opens the file new-file, writes the stream into it and the closes the file. * Using the > symbol will overwrite the existing file. To append to a file, use the >> symbols: who >> new-file Redirection (Standard Output) * Redirection also becomes a useful feature when concatenating the standard output of a number of files. cat chap?? > textbook * Two or more commands can be combined and their aggregate output can be redirected to a file. A pair of parentheses groups the commands, and a single > symbol can be used to redirect both of them: (ls -l ; who) > lsfile Redirection (Standard Output) * You can redirect a message to the terminal /dev/pts/6 provided the terminal is enabled accordingly. echo hello > /dev/pts/6 * There are three destinations of standard output: terminal (default), file, and pipe. * Some commands are designed to take their input as a stream. This stream represents the standard input to a command. Redirection (Standard Input) * The wc command expects input from the keyboard when the filename is omitted: $ wc This is a test of the wc comand. It reads the input from the standard input. [Ctrl-d] 2 16 77 Redirection (Standard Input) * The standard input stream has three sources: the keyboard (default), a file using redirection with <, and another program using a pipeline. * You can make calculations in a batch as shown in the following example: $ cat calc.lst 2^32 25*50 Redirection (Standard Input) $ bc < calc.lst > result.lst $ cat result.lst 4294967296 1250 * When a command takes input from multiple resources – say a file and standard input, the – symbol must be used to indicate the sequence of taking the input. Redirection (Standard Error) * For example. cat - foo indicates first reading from standard input and then from foo. * Each of three standard files has a number, called a file descriptor: - 0 - standard input: < or 0< - 1 - standard output: > or 1> - 2 - standard error: 2> * You need to use the descriptor 2> for the standard error: $ cat bar 2>errorfile Redirection (Combining Streams) * In C Shell, use >& for the standard error. * The following Stream combinations are equivalent: wc < infile > newfile wc > newfile < infile > newfile < infile wc * The standard output and error symbols can also used in the same command line: cat newfile nofile 2> errorfile > outfile