## Bibliography

Many books have been written about Unix and related topics. It would be impossible to list them all, nor would that be very helpful. In this chapter, we present the “classics”—those books that the true Unix wizard has on his or her shelf. (Alas, some of these are now out-of-print; thus only the older Unix wizard has them.)

Because Unix has affected many aspects of computing over its history, you will find books listed here on things besides just the Unix operating system itself.

This chapter presents:

- Unix descriptions and programmer's manuals
- Unix internals
- Programming with the Unix mindset
- Programming languages
- TCP/IP networking
- Typesetting
- Emacs
- Standards
- O'Reilly books

## Unix Descriptions and Programmer's Manuals

1. The Bell System Technical Journal, Volume 57 Number 6, Part 2, July-August 1978. AT&T Bell Laboratories, Murray Hill, NJ, USA. ISSN 0005-8580. A special issue devoted to Unix, by the creators of the system.
2. AT&T Bell Laboratories Technical Journal, Volume 63 Number 8, Part 2, October 1984. AT&T Bell Laboratories, Murray Hill, NJ, USA. Another special issue devoted to Unix.

   These two volumes were republished as:

3. UNIX System Readings and Applications, Volume 1, Prentice-Hall, Englewood Cliffs, NJ, USA, 1987. ISBN 0-13-938532-0.
4. UNIX System Readings and Applications, Volume 2, Prentice-Hall, Englewood Cliffs, NJ, USA, 1987. ISBN 0-13-939845-7.
5. UNIX Time-sharing System: UNIX Programmers Manual, Seventh Edition, Volumes 1, 2A, 2B. Bell Telephone Laboratories, Inc., January 1979.

   These are the reference manuals (Volume 1), and descriptive papers (Volumes 2A and 2B) for the landmark Seventh Edition Unix system, the direct ancestor of all current commercial Unix systems.

   They were reprinted by Holt Rinehart & Winston, but are now long out-of-print. However, they are available online from Bell Labs in troff source, PDF, and PostScript formats. See http://plan9.bell-labs.com/7thEdMan.

6. UNIX Research System: Programmer's Manual, Tenth Edition, Volume 1, AT&T Bell Laboratories, M.D. McIlroy and A.G. Hume editors, Holt Rinehart & Winston, New York, NY, USA, 1990. ISBN 0-03-047532-5.
7. UNIX Research System: Papers, Tenth Edition, Volume 2, AT&T Bell Laboratories, M.D. McIlroy and A.G. Hume editors, Holt Rinehart & Winston, New York, NY, USA, 1990. ISBN 0-03-047529-5.

   These are the manuals and papers for the Tenth Edition Unix system. Although this system was not used much outside of Bell Labs, many of the ideas from it and its predecessors were incorporated into various versions of System V. And the manuals make interesting reading, in any case.

8. 4.4BSD Manuals, Computing Systems Research Group, University of California at Berkeley. O'Reilly & Associates, Sebastopol, CA, USA, 1994. ISBN: 1-56592-082-1. Out of print.

   The manuals for 4.4BSD.

9. Your Unix programmer's manual. One of the most instructive things you can do is read your manual from front to back.

   One summer, while working as a contract programmer, I spent my lunchtimes reading the manual for System III (yes, that long ago), from cover to cover. I don't know that I ever learned so much in so little time.

   (This is harder than it used to be, as Unix systems have grown.) It is easier to do if your Unix vendor makes printed copies of their documentation available. Otherwise, start with the Seventh Edition manual, and then read your local documentation as needed.
10. A Quarter Century of Unix, Peter H. Salus, Addison Wesley, Reading, MA, USA, 1994. ISBN: 0-201-54777-5.

    A delightful book that tells the history of Unix, from its inception up to the time the book was written. It reads like a good novel, except that it's all true!

11. The Unix Philosophy, Mike Gancarz, Digital Equipment Corp, USA, 1996. ISBN: 1-55558-123-4.
12. Plan 9: The Manuals, The Documents, The System, AT&T Bell Laboratories, Harcourt Brace and Company, Boston, MA, USA, 1995. ISBN: 0-03-017143-1 for the full set. ISBN: 0-03-01742-3 for just the manuals. See http://plan9.bell-labs.com/plan9/distrib.html.

    These volumes document and provide the system and source code for “Plan 9 From Bell Labs,” the next-generation system done by the same people at Bell Labs who created Unix. It contains many interesting and exciting ideas. The set comes with a CD-ROM including full source code, or you can purchase just the manuals.

## Unix Internals

The dedicated Unix wizard knows not only how to use his or her system, but how it works.

1. Lions' Commentary on UNIX 6th Edition, with Source Code, John Lions, Peer-to-Peer Communications, San Jose, CA, USA, 1996. ISBN: 1-57398-013-7. See http://www.peer-to-peer.com/catalog/opsrc/lions.html.

   This classic work provides a look at the internals of the Sixth Edition Unix system.

2. The Design of the UNIX Operating System, Maurice J. Bach, Prentice-Hall, Englewood Cliffs, NJ, USA, 1986. ISBN: 0-13-201799-7.

   This book very lucidly describes the design of System V Release 2, with some discussion of important features in System V Release 3, such as STREAMS and the filesystem switch.

3. The Magic Garden Explained: The Internals of Unix System V Release 4: An Open Systems Design, Berny Goodheart, James Cox, John R. Mashey, Prentice-Hall, Englewood Cliffs, NJ, USA, 1994. ISBN: 0-13-098138-9.
4. Unix Internals: The New Frontiers, Uresh Vahalia, Prentice-Hall, Englewood Cliffs, NJ, USA, 1996. ISBN: 0-13-101908-2.
5. Unix Internals: A Practical Approach, Steve D. Pate, Addison Wesley, Reading, MA, USA, 1996. ISBN: 0-201-87721-X.
6. The Design and Implementation of the 4.3BSD UNIX Operating System, Samuel J. Leffler, Marshall Kirk McKusick, Michael J. Karels and John S. Quarterman, Addison Wesley, Reading, MA, USA, 1989. ISBN: 0-201-06196-1.

   This book describes the 4.3BSD version of Unix. Many important features found in commercial Unix systems first originated in the BSD Unix systems, such as long filenames, job control, and networking.

7. The Design and Implementation of the 4.4 BSD Operating System, Marshall Kirk McKusick, Keith Bostic, Michael J. Karels, John S. Quarterman, Addison Wesley Longman, Reading, MA, USA, 1996. ISBN 0-201-54979-4.

   This book is an update of the previous one, for 4.4BSD, the last Unix system released from UCB. To quote from the publisher's description, the book “details the major changes in process and memory management, describes the new extensible and stackable filesystem interface, includes an invaluable chapter on the new network filesystem, and updates information on networking and interprocess communication.”

## Programming with the Unix Mindset

Any book written by Brian Kernighan deserves careful reading, usually several times. The first two books present the Unix “toolbox” programming methodology. They will help you learn how to “think Unix.” The third book continues the process, with a more explicit Unix focus. The fourth and fifth are about programming in general, and also very worthwhile.

1. Software Tools, Brian W. Kernighan and P. J. Plauger, Addison Wesley, Reading, MA, USA, 1976. ISBN: 0-201-03669-X.

   A wonderful bookOne that changed my life forever.

   that presents the design and code for programs equivalent to Unix's grep, sort, ed, and others. The programs use RATFOR (Rational FORTRAN), a preprocessor for FORTRAN with C-like control structures.
2. Software Tools in Pascal, Brian W. Kernighan and P. J. Plauger, Addison Wesley, Reading, MA, USA, 1981. ISBN: 0-201-10342-7.

   A translation of the previous book into Pascal. Still worth reading; Pascal provides many things that FORTRAN does not.

3. The Unix Programming Environment, Brian W. Kernighan and Rob Pike, Prentice-Hall, Englewood Cliffs, NJ, USA, 1984. ISBN:0-13-937699-2 (hardcover), 0-13-937681-X (paperback).

   This books focuses explicitly on Unix, using the tools in that environment. In particular, it adds important material on the shell, awk, and the use of lex and yacc. See http://cm.bell-labs.com/cm/cs/upe.

4. The Elements of Programming Style, Second Edition. Brian W. Kernighan and P. J. Plauger, McGraw-Hill, New York, NY, USA, 1978. ISBN: 0-07-034207-5.

   Modeled after Strunk & White's famous The Elements of Style, this book describes good programming practices that can be used in any environment.

5. The Practice of Programming, Brian W. Kernighan and Rob Pike, Addison Wesley Longman, Reading, MA, USA, 1999. ISBN: 0-201-61586-X.

   Similar to the previous book, with a somewhat stronger technical focus. See http://cm.bell-labs.com/cm/cs/tpop.

6. Writing Efficient Programs, Jon Louis Bentley, Prentice-Hall, Englewood Cliffs, NJ, USA, 1982. ISBN: 0-13-970251-2 (hardcover), 0-13-970244-X (paperback).

   Although not related to Unix, this is an excellent book for anyone interested in programming efficiently.

7. Programming Pearls, Jon Louis Bentley, Addison Wesley, Reading, MA, USA, 1986. ISBN: 0-201-10331-1.
8. More Programming Pearls: Confessions of a Coder, Jon Louis Bentley, Addison Wesley, Reading, MA, USA, 1988. ISBN: 0-201-11889-0.

   These two excellent books, to quote Nelson H. F. Beebe, “epitomize the Unix mindset, and are wonderful examples of little languages, algorithm design, and much more.” These should be on every serious programmer's bookshelf.

9. Advanced Programming in the Unix Environment, W. Richard Stevens, Addison Wesley, Reading, MA, USA, 1992. ISBN: 0-201-56317-7.

   A thick but excellent work on how to use the wealth of system calls in modern Unix systems.

## Programming Languages

A number of important programming languages were first developed under Unix. Note again the books written by Brian Kernighan.

1. The C Programming Language, Brian W. Kernighan and Dennis M. Ritchie, Prentice-Hall, Englewood Cliffs, NJ, USA, 1978. ISBN: 0-13-110163-3.

   The original “bible” on C. Dennis Ritchie invented C and is one of the two “fathers” of Unix. This edition is out-of-print.

2. The C Programming Language, Second Edition. Brian W. Kernighan and Dennis M. Ritchie, Prentice-Hall, Englewood Cliffs, NJ, USA, 1988. ISBN: 0-13-110362-8.

   This revision of the original covers ANSI C. It retains and improves upon the high qualities of the first edition. See http://cm.bell-labs.com/cm/cs/cbook.

3. C: A Reference Manual, Fourth Edition, Samuel P. Harbison and Guy L. Steele, Prentice-Hall, Englewood Cliffs, NJ, USA, 1994. ISBN: 0-13-326224-3.

   An excellent discussion of the details for those who need to know.

4. The C++ Programming Language, Third Edition, Bjarne Stroustrup, Addison Wesley, Reading, MA, USA, 1997. ISBN: 0-201-88954-4.

   The definitive statement on C++ by the language's inventor and the ANSI C++ committee chair. See http://www.awl.com/cseng/titles/0-201-88954-4/.

5. C++ Primer, Third Edition, Stanley B. Lippman and Josée Lajoie. Addison Wesley Longman, Reading, MA, USA, 1998. ISBN: 0-201-82470-1.

   An excellent introduction to C++. See http://www.awl.com/cseng/titles/0-201-82470-1/.

6. The Java Programming Language, Ken Arnold and James Gosling. Addison Wesley, Reading, MA, USA, 1997. ISBN: 0-201-31006-6.

   This book is intended for learning Java, by two of the designers of the language.

7. The Java Language Specification, James Gosling, Bill Joy, Guy L. Steele Jr. Addison Wesley, Reading, MA, USA, 1996. ISBN: 0-201-63451-1.
8. The AWK Programming Language, Alfred V. Aho and Brian W. Kernighan and Peter J. Weinberger, Addison Wesley, Reading, MA, USA, 1987. ISBN: 0-201-07981-X.

   The original definition for the awk programming language. Extremely worthwhile. See http://cm.bell-labs.com/cm/cs/awkbook.

9. Effective AWK Programming, Arnold Robbins, Specialized Systems Consultants, Seattle, WA, USA, 1997. ISBN: 1-57831-000-8.

   A more tutorial treatment of awk that covers the POSIX standard for awk. It also serves as the user's guide for gawk. See http://www.ssc.com/ssc/eap/.

10. Tcl and the Tk Toolkit, John K. Ousterhout. Addison Wesley, Reading, MA, USA, 1994. ISBN: 0-201-63337-X.
11. Practical Programming in Tcl & Tk, Brent B. Welch. Prentice-Hall, Englewood Cliffs, NJ, USA, 1997. ISBN: 0-13-616830-2.
12. Effective Tcl/Tk Programming: Writing Better Programs in Tcl and Tk, Mark Harrison and Michael J. McLennan. Addison Wesley, Reading, MA, USA, 1997. ISBN: 0-201-63474-0.
13. The New Kornshell Command and Programming Language, Morris I. Bolsky and David G. Korn, Prentice-Hall, Englewood Cliffs, NJ, USA, 1995. ISBN: 0-13-182700-6.

    The definitive work on the Korn shell, by its author.

14. Hands-On KornShell 93 Programming, Barry Rosenberg, Addison Wesley Longman, Reading, MA, USA, 1998. ISBN: 0-201-31018-X.
15. Compilers—Principles, Techniques, and Tools, Alfred V. Aho and Ravi Sethi and Jeffrey D. Ullman, Addison Wesley Longman, Reading, MA, USA, 1986. ISBN: 0-201-10088-6.

    This is the famous “dragon book” on compiler construction. It provides much of the theory behind the operation of lex and yacc.

## TCP/IP Networking

The books by Comer are well-written; they are the standard descriptions of the TCP/IP protocols. The books by Stevens are also very highly regarded.

1. Internetworking with TCP/IP: Principles, Protocols, and Architecture, Third Edition, Douglas E. Comer, Prentice-Hall, Englewood Cliffs, NJ, USA, 1995. ISBN: 0-13-216987-8.
2. Internetworking With TCP/IP: Design, Implementation, and Internals, Third Edition, Douglas E. Comer and David L. Stevens, Prentice-Hall, Englewood Cliffs, NJ, USA, 1998. ISBN: 0-13-973843-6.
3. Internetworking With TCP/IP: Client-Server Programming and Applications: BSD Socket Version, Second Edition, Douglas E. Comer and David L. Stevens, Prentice-Hall, Englewood Cliffs, NJ, USA, 1996. ISBN: 0-13-260969-X.
4. Internetworking With TCP/IP: Client-Server Programming and Applications: AT&T TLI Version, Douglas E. Comer and David L. Stevens, Prentice-Hall, Englewood Cliffs, NJ, USA, 1993. ISBN: 0-13-474230-3.
5. TCP/IP Illustrated, Volume 1: The Protocols, W. Richard Stevens, Addison Wesley Longman, Reading, MA, USA, 1994. ISBN: 0-201-63346-9.
6. TCP/IP Illustrated, Volume 2: The Implementation, W. Richard Stevens and Gary R. Wright, Addison Wesley Longman, Reading, MA, USA, 1995. ISBN: 0-201-63354-X.
7. TCP/IP Illustrated, Volume 3: TCP for Transactions, HTTP, NNTP, and the Unix Domain Protocols, W. Richard Stevens, Addison Wesley Longman, Reading, MA, USA, 1996. ISBN: 0-201-63495-3.
8. Unix Network Programming, Volume 1: Networking APIs: Sockets and XTI, W. Richard Stevens, Prentice-Hall, Englewood Cliffs, NJ, USA, 1997. ISBN: 0-13-490012-X.
9. Unix Network Programming, Volume 2: Interprocess Communications, W. Richard Stevens, Prentice-Hall, Englewood Cliffs, NJ, USA, 1998. ISBN: 0-13-081081-9.

   This volume and the previous one are revisions of the first edition that was the standard book on Unix network programming for many years.

10. Unix System V Network Programming, Steven A. Rago, Addison Wesley Longman, Reading, MA, USA, 1993. ISBN: 0-201-56318-5.

## Typesetting

1. Document Formatting and Typesetting on the Unix System, Second Edition, Narain Gehani, Silicon Press, Summit, NJ, USA, 1987. ISBN: 0-13-938325-5.
2. Typesetting Tables on the Unix System, Henry McGilton and Mary McNabb, Trilithon Press, Los Altos, CA, USA, 1990. ISBN: 0-9626289-0-5.

   This book tells you everything you might ever want to know, and then some, about using tbl to format tables.

## Emacs

1. GNU Emacs Manual, for Version 20.1, Thirteenth Edition, The Free Software Foundation, Cambridge, MA, USA, 1998. ISBN: 1882114 06X.
2. GNU Emacs Lisp Reference Manual, for Emacs Version 20, Edition 2.4, The Free Software Foundation, Cambridge, MA, USA, 1998. ISBN: 1882114 728.
3. Writing GNU Emacs Extensions, Bob Glickstein, O'Reilly & Associates, Sebastopol, CA, USA, 1997. ISBN: 1-56592-261-1.

See also the reference to Learning GNU Emacs in the O'Reilly section.

## Standards

There are a number of “official” standards for the behavior of portable applications among Unix and Unix-like systems. The first two entries are the standards themselves, the next one is a guide for using the first standard. The final two entries are the formal standards for the C and C++ programming languages.

1. ISO/IEC Standard 9945-1: 1996 [IEEE/ANSI Std 1003.1, 1996 Edition] Information Technology—Portable Operating System Interface (POSIX)—Part 1: System Application: Program Interface (API) [C Language]. IEEE, 1996. ISBN: 1-55937-573-6.

   This edition incorporates extensions for real-time applications (1003.1b-1993, 1003.1i-1995) and threads (1003.1c-1995). Electronic versions are available via subscription, see http://www.standards.ieee.org. POSIX 1003.2 standards

   This book describes the interface to the operating system as seen by the C or C++ programmer.

2. ISO/IEC Standard 9945-2: 1993 [IEEE/ANSI Std 1003.2-1992 & IEEE/ANSI 1003.2a-1992] Information Technology—Portable Operating System Interface (POSIX)—Part 2: Shell and Utilities IEEE, 1996. ISBN: 1-55937-406-3. Includes and shipped with 1003.2d-1994.

   This standard is more relevant for readers of this book: it describes the operating system at the level of the shell and utilities.

3. Posix Programmer's Guide: Writing Portable Unix Programs, Donald A. Lewine. O'Reilly & Associates, Sebastopol, CA, USA, 1991. ISBN: 0-937175-73-0.
4. X3 Secretariat: Standard—The C Language. X3J11/90-013. ISO Standard ISO/IEC 9899. Computer and Business Equipment Manufacturers Association. Washington DC, USA, 1990.
5. X3 Secretariat: International Standard—The C++ Language. X3J16-14882. Information Technology Council (NSITC). Washington DC, USA, 1998.

## O'Reilly Books

Here is a list of O'Reilly & Associates books cited throughout this book. There are, of course, many other O'Reilly books relating to Unix. See http://www.oreilly.com/catalog.

1. Advanced Perl Programming, Sriram Srinivasan, O'Reilly & Associates, Sebastopol, CA, USA, 1997. ISBN: 1-56592-220-4.
2. Applying RCS and SCCS. Don Bolinger and Tan Bronson, O'Reilly & Associates, Sebastopol, CA, USA, 1995. ISBN: 1-56592-117-8.
3. Checking C Programs with lint. Ian F. Darwin, O'Reilly & Associates, Sebastopol, CA, USA, 1988. ISBN: 0-937175-30-7.
4. Learning GNU Emacs, Second Edition, Debra Cameron, Bill Rosenblatt, and Eric Raymond, O'Reilly & Associates, Sebastopol, CA, USA, 1996. ISBN: 1-56592-152-6.
5. Learning Perl, Second Edition, Randal L. Schwartz and Tom Christiansen, O'Reilly & Associates, Sebastopol, CA, USA, 1997. ISBN: 1-56592-284-0.
6. Learning the Korn Shell, Bill Rosenblatt, O'Reilly & Associates, Sebastopol, CA, USA, 1993. ISBN: 1-56592-054-6.
7. Learning the Unix Operating System, Fourth Edition, Jerry Peek, Grace Todino, and John Strang, O'Reilly & Associates, Sebastopol, CA, USA, 1997. ISBN: 1-56592-390-1.
8. Learning the vi Editor, Sixth Edition, Linda Lamb and Arnold Robbins, O'Reilly & Associates, Sebastopol, CA, USA, 1998. ISBN: 1-56592-426-6.
9. lex & yacc, Second Edition, John Levine, Tony Mason, and Doug Brown, O'Reilly & Associates, Sebastopol, CA, USA, 1992. ISBN: 1-56592-000-7.
10. Managing Projects with make, Second Edition, Andrew Oram and Steve Talbott, O'Reilly & Associates, Sebastopol, CA, USA, 1991. ISBN: 0-937175-90-0.
11. Mastering Regular Expressions, Jeffrey E. F. Friedl, O'Reilly & Associates, Sebastopol, CA, USA, 1997. ISBN: 1-56592-257-3.
12. PGP: Pretty Good Privacy, Simson Garfinkel, O'Reilly & Associates, Sebastopol, CA, USA, 1994. ISBN: 1-56592-098-8.
13. Programming Perl, Second Edition, Larry Wall, Tom Christiansen, and Randal L. Schwartz, O'Reilly & Associates, Sebastopol, CA, USA, 1996. ISBN: 1-56592-149-6.
14. sed & awk, Second Edition, Dale Dougherty and Arnold Robbins, O'Reilly & Associates, Sebastopol, CA, USA, 1997. ISBN: 1-56592-225-5.
15. termcap & terminfo. Third Edition, John Strang, Linda Mui, and Tim O'Reilly, O'Reilly & Associates, Sebastopol, CA, USA, 1988. ISBN: 0-937175-22-6.
16. Using csh & tcsh, Paul DuBois, O'Reilly & Associates, Sebastopol, CA, USA, 1995. ISBN: 1-56592-132-1.

Copyright © 2003 O'Reilly & Associates. All rights reserved.