This 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 am confident that I have made the correct choices in selecting which of the many shell commands, system calls and options to discuss in this book and at what level they should be discussed. I hope you agree.