Designed for first-time and experienced users, this book describes the UNIX® programming environment and philosophy in detail. Readers will gain an understanding not only of how to use the system, its components, and the programs, but also how these fit into the total environment.
In introducing you to the Unix system, from simple shell commands, to shell scripts, to awk and sed programming, and to Unix applications programming, not to mention the best introduction to lex and yacc, the authors develop real applications and teach you how to THINK in Unix terms: develop small components that fit and interact with each other to build larger and larger and more complex applications.
But it's more than just thinking in Unix terms: it's how to structure and approach programs and scripts no matter what environment you are in.
Stevenson's _Advanced Programming In the Unix Environment_ is an excellent book for coverage. I have it too. But _The Unix Programming Environment_ is a book for developing your software mentality in a way that no other book that I've read even approaches.
After 20 years as a Unix programmer, including kernel development of several Unix operating systems, this book still remains on my shelf.
Brian Kernighan has co-authored three books almost essential to learning our craft, this volume, "Software Tools" and "The Unix Programming Environment". "Elements of Programming Style" spells out the fundamental rules, "Software Tools" shows you how to apply them to a number of simple projects and extends the rules to software design and finally "The Unix Programming Environment" shows you how to use them in an operating system designed to reward you for your effort.
This volume starts with a short, excellent preface detailing some of the early history of Unix and explaining the structure of the book and the philosophy behind it . The preface states "Our goal in this book is to communicate the UNIX programming philosophy ... throughout runs the themes of combining programs and of using programs to build programs." It delivers on that goal.
The book then follows with a series of chapters that start with basic shell commands and then pipes before branching out into shell programming and going on to explore useful Unix tools such as grep, sed, awk, C, the standard libraries, make, yacc and lex through a series of small useful programs culminating in a small calculator language called `hoc' - a useful calculator and easily extensible.
While most might feel that grep, sed, awk and shell programming have been replaced by tools such as Perl and Python these early chapters provide a good grounding in Unix programming and remind newer users of the power and usefulness of these simple Unix tools.
Briefly covered in a final chapter are some of the document preparation tools based on troff - the macro packages ms, mm and of course the man package used for Unix man pages along with tbl and eqn for tables and mathematical equations respectively.
In totality it provides an excellent grounding in writing good, workable software for Unix. The writing is clear and concise, the volume well laid out, the examples are in the main useful, though a few rely on multiple users of the one machine, not as common now that Linux and Sun have made a Unix computer more of a desktop machine than a minicomputer.
This is a classic book and I would recommend it to all starting out Unix programming, regardless of your experience with other operating systems. Ignore it's age, computer books are rarely this good and almost never this timeless.