The shell's job, then, is to translate the user 's command lines into operating system instructions. For example, consider this command line:
sort -n phonelist > phonelist.sorted
This means, "Sort lines in the file phonelist in numerical order, and put the result in the file phonelist.sorted ." Here's what the shell does with this command:
1. Breaks up the line into the pieces sort , -n , phone list , > , and phone list.sorted . These pieces are called words.
2. Determines the purpose of the words: sort is a command, -n and phone list are arguments, and > and phonelist.sorted , taken together, are I/O instructions.
3. Sets up the I/O according to > phonelist.sorted (output to the file phone list.sorted ) and some standard, implicit instructions.
4. Finds the command sort in a file and runs it with the option -n (numerical order) and the argument phonelist (input filename).
Of course, each of these steps really involves several substeps , each of which includes a particular instruction to the underlying operating system.
Remember that the shell itself is not UNIX ”just the user interface to it. UNIX is one of the first operating systems to make the user interface independent of the operating system.