I have been sharing programming books in this blog from a long time, starting with core Java, I moved to other related technology e.g. Spring, Design patterns, Data Structure and Algorithms etc. Today, I am going to share some of the best UNIX and Linux programming books. The list contains some of the must read UNIX books from great writers like Sir Richard. Stevens, Sir Brain Kernighan, who has contributed so much to the development of UNIX operating system. Most of the books in this list are timeless, classics and don’t age with time, much like UNIX, which is around from last 40 years and I am sure will be around for next 40 years, or maybe forever.
If you don’t know, I love books, both reading, and collecting. I have a strong passion for finding high-quality books and already having 100s of titles in my bookshelf. I am reading books from my childhood when I started reading pocket books, comics, magazines, story books and then slowly moved on to Physics, Maths, Logic and Computer Science books.
New technical inventions like Tablets e.g. iPad and Smartphones like iPhone have provided a new boost to my passion. Earlier, I think twice before buying a book but now I can store hundreds of e-Books on my tablet and read them wherever I go. I mostly read books while traveling and that’s why I am able to read lots of interesting books in the last couple of years.
10 UNIX and Linux Books for Programmers
Here is my curated list of some of the best books to learn UNIX and Linux operating system. These books will not only teach you basics of Linux and UNIX but also principles on which they are built. These books contain tons of code examples for advanced programming in the UNIX environment as well.
This list contains book from different areas of UNIX and Linux e.g. it contains books to explain the design philosophy of UNIX environment, it contains books to teach you how to do network programming in UNIX environment, then some books to explains how things works in Linux and a book to explain you about essential Linux commands. I have tried to make it one of the complete list of UNIX and Linux book, but if you have any book which you think should be in this list then just post them in comments.
1. The Linux Programming Interface: A Linux and UNIX System Programming
Unlike many UNIX books which are older, this is a relatively newer Linux book. This book is written by Michael Kerrisk, one of the maintainers of Linux man pages. Like many writers, he has been doing UNIX since 1987 and focused on Linux from the late 1990s. If I have to recommend just one book, I will recommend this one even over “Advanced Programming in the UNIX Environment” by Richard Stevens because of its more thorough, more comprehensive and just as well written as the Stevens book. It’s now should be the standard book to learn UNIX/Linux system programming.
2. Advanced Programming in the UNIX Environment
This is one of the best books to learn UNIX, a timeless classic written by Sir Richard W. Stevens. UNIX is one of the best software ever created, it’s been more than 30 years and still going strong and this book will be relevant as long as UNIX will remain(forever). The good part of the book is that there are thousands of code examples with clear explanations. It is also full of hundreds of illustrations and graphics that show how different UNIX concepts work. In short, one of the must read UNIX books for anyone who wants to learn UNIX and understand it better. I haven’t read it fully but I often consult this book to understand a new concept of refresh the old ones.
3. How Linux Works: What Every Superuser Should Know
As a programmer I am curious, I want to know how things work under the hood e.g. how HashMap works? This book tells you what happens under the hood of your Linux machine. Most of the programmer invest their time learning Java, C++, and other programming language but they spent very little on the operating system like Linux which is much more valuable and knowledge they gain will probably serve them more years. This is an excellent book for any programmer who works in Linux, must read.
4. Advanced UNIX Programming – Rochkind
The 2nd Edition of Advanced UNIX programming by Marc J. Rochkind is another more up-to-date book to learn UNIX/Linux system programming. This book provides the most comprehensive coverage of UNIX system calls and can be used as both reference and workbook. Until the “The Linux Programming Interface” came into the picture, most of the programmers either read Steven’s book or this one to understand UNIX programming environment. This is just exceptional in teaching UNIX. It covers a brief history of UNIX and other UNIX standards e.g POSIX, SUS etc. It also covers sockets, signals, threads etc. This is slightly better than Stevens book in terms of readability but Stevens book provides a more detailed reference.
5. The Linux Command Line: A Complete Introduction
If you ask me, Linux is all about commands, if you don’t know commands you cannot survive in Linux, but if you know commands and you are creative with their usage then you are king. You can accomplish things which require a whole new programmer or tool in other operating systems e.g. Windows or Mac OS X. Every new programmer who is going to work in Linux should have a copy of this book. It is both your reference and workbook for amazing and powerful Linux commands.
6. UNIX and Linux System Administration Handbook, 4th Edition
This is another good book to learn Linux, but it’s a little bit different than others. It’s a true practical UNIX book. If you’re just starting with Unix and Linux, then get this book to learn both concept and commands. The book is divided into several different administrator areas e.g. basic administration presents a broad overview of Unix and Linux from a system administrator’s perspective. Then you have network administration and so on.
7. Unix Network Programming, Volume 1: The Sockets Networking API
Sir W. Richard Stevens is not a new name in the UNIX world. The very first book in this list is authored by him, but he has written a couple of more books like this one which is truly a gem. It’s an in-depth book, covering a great deal of network protocols used in Linux and the internet e.g. IPv6, POSIX 1003.1-2001. This is a two part book, where first part focusing on socket programming. Clearly, a must-read book if you want to understand true network programming. The 3rd edition of this book is the latest one, but even if you get the older editions, they are worth reading.
8. UNIX Network Programming, Volume 2: Interprocess Communications
This is the second book by Stevens on UNIX Network programming. In this first part, he explained about socket-based network programming and in this book the focus is on “inter-process communications”. The good thing is all of the Stevens book compliment each other really well and both of these books along with Advanced Programming in the UNIX Environment is must read for any serious UNIX programmers.
9. The Art of Unix Programming
This is another good book to learn UNIX philosophy.I have a hard copy of this book on my bookshelf. There are lots of good nuggets in there. The book will explain “why” more than “what” and “how”. So, if you like to learn why certain things in UNIX are done this way and not the other way, this is the book you should read.
10. The Unix Programming Environment – Kernighan, Pike
The Unix Programming Environment by Brian W. Kernighan and Rob Pike is one of the best books to learn UNIX. This book truly captures the Unix philosophy and teaches you the idioms. It’s also an authority on the subject because it comes from the original Bell Labs Computing Sciences Research Center and the both authors are extraordinary technical writers.
11. The Design of the Unix Operating System – Bach
This book was first published in 1987, so it’s already 29 years old but like UNIX, it’s a still a great source of information to many software developers and engineers. UNIX is the best example of the simplistic design which has stood the test of time and even used heavily in all mission critical software. This is the great book to learn the UNIX architecture and UNIX design philosophy.
That’s all about top 10 UNIX and Linux Programming books. This list is solely based upon my opinion but they sure contained high-quality books which a geek would love to read. There is one thing I could add to my list of becoming a better programmer is to learn UNIX. It’s one of the best software ever built and it teaches you a lot in terms of system programming, networking, inter-process communication and operating system in general.