C and Linux/UNIX Commands: Two Books This volume contains the complete text of two books: Using C in Software Design, Second Edition, and The 101 Most Important UNIX and Linux Commands.
USING C IN SOFTWARE DESIGN, 2E
As with the first published in 1993, this book provides a creative approach to learning C by emphasizing software engineering in C.
1. All material has been class-tested.
2. The book avoids most implementation-specific language features.
3. A software project is introduced early in the book and appears throughout as new features of C are covered.
4. A separate chapter on larger programming using the “make” facility or the Visual Studio “project” for separate compilation is included.
5. A few programs are deliberately seeded with errors to help create programs that work correctly.
6. Special emphasis is placed on the design and implementation of user-defined libraries.
A brief introduction to C++ is included.
THE 101 MOST IMPORTANT UNIX AND LINIX COMMANDS
The second book delivers what the title states: It describes the 101 most important UNIX and Linux commands and system calls. The book bridges the gap between on-line tutorials and manual pages on one hand, and books of 1,000 pages or more that explore the nuances of many shell commands in exhaustive detail. While most of these sources provide excellent information, they do not really solve the plight of the novice user, nor do they fully answer the questions that more experienced, and even expert, users often have. Much of the complexity of UNIX and Linux, and much of the difficulty faced by users is caused by the extremely large and rich set of shell commands, many of which have a very large set of allowable options that, while useful in certain circumstances, often provide more frustration than help because of their complexity. Many UNIX and Linux system calls are also complex, and have interactions that can be rather difficult for many programmers.
The many variants of UNIX cause additional difficulties. Even Linux has multiple variants: there are often subtle differences in the Linux implementations by Red Hat (Fedora), Ubuntu, SUSE, and Debian. For example, one of my recent senior students had a major project that required using a particular “Linux” software application containing a particular language’s character set and grammar. The software would not work (indeed, it would not even install properly) on three of the most common Linux implementations!
Our approach is to focus on a smaller set of commands and system calls – the ones that are most important. For each of these, only the most useful of the many options are described.
As a professor, I taught operating systems in general, and UNIX in particular, for over twenty-five years. As the author of the book Advanced Topics in UNIX, which was selected as a main selection on UNIX by the Newbridge Book Club, and Advanced Topics in UNIX, Second Edition (available electronically on this ebook platform), I had to make choices in what I presented and how I presented it. Finally, as an analyst/consultant on many different applications in multiple UNIX and Linux systems, I had to make choices based on the quality of the source code, and on its performance and maintainability. I hope you agree with my choices.