docs/unix-phil

diff unix-phil.ms @ 4:c707b0c5c849

new text about pipes
author meillo@marmaro.de
date Fri, 12 Feb 2010 19:30:13 +0100
parents aebbe3e76f5e
children 48f1f3465550
line diff
     1.1 --- a/unix-phil.ms	Wed Feb 10 13:19:04 2010 +0100
     1.2 +++ b/unix-phil.ms	Fri Feb 12 19:30:13 2010 +0100
     1.3 @@ -166,15 +166,82 @@
     1.4  
     1.5  .NH 1
     1.6  The Unix Philosophy
     1.7 +.LP
     1.8 +The origins of the Unix Philosophy were already introduced.
     1.9 +This chapter explains the philosophy and shows concrete examples of its application.
    1.10 +.NH 2
    1.11 +Examples
    1.12 +.LP
    1.13 +Following are some examples to demonstrate how applied Unix Philosophy feels like.
    1.14 +Knowledge of using the Unix shell is assumed.
    1.15 +.PP
    1.16 +Counting the number of files in the current directory:
    1.17 +.DS
    1.18 +.CW
    1.19 +ls | wc -l
    1.20 +.DE
    1.21 +The
    1.22 +.CW ls
    1.23 +command lists all files in the current directory, one per line,
    1.24 +and
    1.25 +.CW "wc -l
    1.26 +counts how many lines they are.
    1.27 +.PP
    1.28 +Counting all files that do not contain ``foo'' in their name:
    1.29 +.DS
    1.30 +.CW
    1.31 +ls | grep -v foo | wc -l
    1.32 +.DE
    1.33 +Here, the list of files is filtered by
    1.34 +.CW grep
    1.35 +to remove all that contain ``foo''.
    1.36 +The rest is the same as in the previous example.
    1.37 +.PP
    1.38 +Finding the five largest entries in the current directory.
    1.39 +.DS
    1.40 +.CW
    1.41 +du -s * | sort -nr | sed 5q
    1.42 +.DE
    1.43 +.CW "du -s *
    1.44 +returns the recursively summed sizes of all files
    1.45 +-- no matter if they are regular files or directories.
    1.46 +.CW "sort -nr
    1.47 +sorts the list numerically in reverse order.
    1.48 +Finally,
    1.49 +.CW "sed 5q
    1.50 +quits after it has printed the fifth line.
    1.51 +.PP
    1.52 +The presented command lines are examples of what Unix people would use
    1.53 +to get the desired output.
    1.54 +There are also other ways to get the same output.
    1.55 +It's a user's decision which way to go.
    1.56 +.NH 2
    1.57 +Pipes
    1.58 +.LP
    1.59 +The examples show that a lot of tasks on a Unix system
    1.60 +are accomplished by combining several small programs.
    1.61 +The connection between the single programs is denoted by the pipe operator `|'.
    1.62 +.PP
    1.63 +Pipes, and their extensive and easy use, are one of the great
    1.64 +achievements of the Unix system.
    1.65 +Pipes between programs have been possible in earlier operating systems,
    1.66 +but it has never been a so central part of the concept.
    1.67 +When, in the early seventies, Doug McIlroy introduced pipes for the
    1.68 +Unix system,
    1.69 +``it was this concept and notation for linking several programs together
    1.70 +that transformed Unix from a basic file-sharing system to an entirely new way of computing.''
    1.71 +.[
    1.72 +%T Unix: An Oral History
    1.73 +%O http://www.princeton.edu/~hos/frs122/unixhist/finalhis.htm
    1.74 +.] 
    1.75 +.PP
    1.76 +Being able to specify pipelines in an easy way is,
    1.77 +however, not enough by itself.
    1.78 +It is only one part.
    1.79 +The other is the design of the programs that are used in the pipeline.
    1.80 +They have to be of an external shape that allows them to be be used in a pipeline.
    1.81  
    1.82 -.NH 2
    1.83 -what it is
    1.84 -.LP
    1.85 -definitions by McIlroy, Gancarz, ESR (maybe already in the intro)
    1.86 -.LP
    1.87 -cf. unix tool chain
    1.88 -.LP
    1.89 -enabler pipe
    1.90 +
    1.91  
    1.92  .NH 2
    1.93  Architecture