UNIX Programmer's Manual

Volume 2 -- Supplementary Documents

Seventh Edition
January 10, 1979

      This volume contains documents which supplement the information contained in Volume 1 of The UNIXProgrammer's Manual. The documents here are grouped roughly into the areas of basics, editing, language tools, document preparation, and system maintenance. Further general information may be found in the Bell System Technical Journal special issue on UNIXJuly-August, 1978.

      Many of the documents cited within this volume as Bell Laboratories internal memoranda or Computing Science Technical Reports (CSTR) are also contained here.

      These documents contain occasional localisms, typically references to other operating systems like GCOS and IBM. In all cases, such references may be safely ignored by UNIX users.

General Works

1.
7th Edition UNIX -- Summary.
A concise summary of the facilities available on UNIX
2.
The UNIX Time-Sharing System. D. M. Ritchie and K. Thompson.
The original UNIXpaper, reprinted from CACM.

Getting Started

3.
UNIX for Beginners -- Second Edition. B. W. Kernighan.
An introduction to the most basic use of the system.
4.
A Tutorial Introduction to the UNIX Text Editor. B. W. Kernighan.
An easy way to get started with the editor.
5.
Advanced Editing on UNIX. B. W. Kernighan.
The next step.
6.
An Introduction to the UNIX Shell. S. R. Bourne.
An introduction to the capabilities of the command interpreter, the shell.
7.
Learn -- Computer Aided Instruction on UNIX. M. E. Lesk and B. W. Kernighan.
Describes a computer-aided instruction program that walks new users through the basics of files, the editor, and document preparation software.

Document Preparation

8.
Typing Documents on the UNIX System. M. E. Lesk.
Describes the basic use of the formatting tools. Also describes ``-ms'', a standardized package of formatting requests that can be used to lay out most documents (including those in this volume).
9.
A System for Typesetting Mathematics. B. W. Kernighan and L. L. Cherry.
Describes EQN. an easy-to-learn language for doing high-quality mathematical typesetting,
10.
TBL -- A Program to Format Tables. M. E. Lesk.
A program to permit easy specification of tabular material for typesetting. Again, easy to learn and use.
11.
Some Applications of Inverted Indexes on the UNIX System. M. E. Lesk.
Describes, among other things, the program REFER which fills in bibliographic citations from a data base automatically.
12.
NROFF/TROFF User's Manual. J. F. Ossanna.
The basic formatting program.
13.
A TROFF Tutorial. B. W. Kernighan.
An introduction to TROFF for those who really want to know such things.

Programming

14.
The C Programming Language -- Reference Manual. D. M. Ritchie.
Official statement of the syntax and semantics of C. Should be supplemented by The C Programming Language, B. W. Kernighan and D. M. Ritchie, Prentice-Hall, 1978, which contains a tutorial introduction and many examples.
15.
Lint, A C Program Checker. S. C. Johnson.
Checks C programs for syntax errors, type violations, portability problems, and a variety of probable errors.
16.
Make -- A Program for Maintaining Computer Programs. S. I. Feldman.
Indispensable tool for making sure that large programs are properly compiled with minimal effort.
17.
UNIX Programming. B. W. Kernighan and D. M. Ritchie.
Describes the programming interface to the operating system and the standard I/O library.
18.
A Tutorial Introduction to ADB. J. F. Maranzano and S. R. Bourne.
How to use the ADB debugger.

Supporting Tools and Languages

19.
YACC: Yet Another Compiler-Compiler. S. C. Johnson.
Converts a BNF specification of a language and semantic actions written in C into a compiler for the language.
20.
LEX -- A Lexical Analyzer Generator. M. E. Lesk and E. Schmidt.
Creates a recognizer for a set of regular expressions; each regular expression can be followed by arbitrary C code which will be executed when the regular expression is found.
21.
A Portable Fortran 77 Compiler. S. I. Feldman and P. J. Weinberger.
The first Fortran 77 compiler, and still one of the best.
22.
Ratfor -- A Preprocessor for a Rational Fortran. B. W. Kernighan.
Converts a Fortran with C-like control structures and cosmetics into real, ugly Fortran.
23.
The M4 Macro Processor. B. W. Kernighan and D. M. Ritchie.
M4 is a macro processor useful as a front end for C, Ratfor, Cobol, and in its own right.
24.
SED -- A Non-interactive Text Editor. L. E. McMahon.
A variant of the editor for processing large inputs.
25.
AWK -- A Pattern Scanning and Processing Language. A. V. Aho, B. W. Kernighan and
P. J. Weinberger.
Makes it easy to specify many data transformation and selection operations.
26.
DC -- An Interactive Desk Calculator. R. H. Morris and L. L. Cherry.
A super HP calculator, if you don't need floating point.
27.
BC -- An Arbitrary Precision Desk-Calculator Language. L. L. Cherry and R. H. Morris.
A front end for DC that provides infix notation, control flow, and built-in functions.
28.
UNIX Assembler Reference Manual. D. M. Ritchie.
The ultimate dead language.

Implementation, Maintenance, and Miscellaneous

29.
Setting Up UNIX -- Seventh Edition. C. B. Haley and D. M. Ritchie.
How to configure and get your system running.
30.
Regenerating System Software. C. B. Haley and D. M. Ritchie.
What do do when you have to change things.
31.
UNIX Implementation. K. Thompson.
How the system actually works inside.
32.
The UNIX I/O System. D. M. Ritchie.
How the I/O system really works.
33.
A Tour Through the UNIX C Compiler. D. M. Ritchie.
How the PDP-11 compiler works inside.
34.
A Tour Through the Portable C Compiler. S. C. Johnson.
How the portable C compiler works inside.
35.
A Dial-Up Network of UNIX Systems. D. A. Nowitz and M. E. Lesk.
Describes UUCP, a program for communicating files between UNIX systems.
36.
UUCP Implementation Description. D. A. Nowitz.
How UUCP works, and how to administer it.
37.
On the Security of UNIX. D. M. Ritchie.
Hints on how to break UNIX, and how to avoid doing so.
38.
Password Security: A Case History. R. H. Morris and K. Thompson.
How the bad guys used to be able to break the password algorithm, and why they can't now, at least not so easily.