introduction_to_command_line

tl;dr

Every chapter will introduce a bunch of comands and will point to its respective documentation for further learning. You should expect chapters describing from the grep command to GNU Octave which is a scientific programming language. The chapters are independent of each other. The book is must read if you are new to the GNU/Linux command line. If you are at the intermediate level, then too investing time in reading this book will unveil a few surprises for you.

Detailed review

The book is community driven and published under FLOSS Manual. It is a collaborative effort of the FSF community. The fun part is you can contribute to this book by adding new chapters or by improving an existing one. I fixed one typo in this book after reading. The best introduction is crafted comparing GUI based image editing tools with the most unknown command convert. It conveys the importance of command line well to the reader. Initial chapters will present the overview of various GNU/bash commands. From my personal experience, you have to use mentioned commands in this chapter daily. The chapter of Command history shortcuts depicts geeky shell patterns. I will advise not to skip that chapter and read through once. The advanced section was not much advance for me. It demonstrates ssh and related commands like scp and more. I appreciated the preference of using GNU Screen though I use tmux over it. If you are possessed by moving around on multiple directories simultaneously, then directory stacks under Moving Again section is worth scanning. This functionality is saving dozens of my keystrokes now. There is one entire division dedicated to various editors. That section is not limited to GNU Emacs or vim, but also briefs GNU NANO, Kedit and Gedit. This section does not compare the pros and cons of several editors, but describes basics of each which should be counted as a good part. I skipped this part because I am comfortable with vim editor at present and don’t want to invest much in others.

The scripting section turned out to be the most interesting division for me. Though I was aware about the tools like sed and language awk I was not using them often. Reading their chapters and implementing mentioned examples built little confidence in me. Now I am much comfortable in utilizing them. The irregular Regular expressions are everywhere. You should not pass over this section and pay careful attention to various examples. It is worth to invest your time in this segment.

This is not the ending. This book presents a glimpse of various scripting level programming languages like Perl, Python and Ruby. Because I am a python developer for a few years and I was not much interested in other languages, I skipped this section. A shallow introduction to GNU Octave is nice to study if you are interested in knowing a little about this scientific programming language.

How to read this book?

Do not read to read. This book contains nice shell examples. By merely reading, you will end up without bringing about anything meaningful. I will advise you to interpret the description first, observe the examples and then implement them on your own. If you have any confusions, read the example and description again or obtain help from man or info are the best options. To remember, I revised the important chapters more than once in a week. It helped me to refresh what I learned before. I will attempt to re-read the important sections once again after a few days to refresh my memory.

What is missing?

Considerably, the book is nicely written, equally distributed and largely acceptable, but I would prefer to have a small set exercises section at the end of each topic. Exercise might help the reader to identify their weak points early and refer on them again if they desire to.

Typo / Mistakes

I didn’t encounter any sever mistakes except one typo. The section of Userful customizations on page number 80 of my printed version, contains following example:

function manyargs {
  $arg=$1
  shift
  ...
}

Here, $arg is a misprint. A shell variable is never assigned with $. It should be args=$1. I myself has corrected the typographical error in the book. This change will be published maybe in the next release of this book.

If you are encountering any mistakes while reading, I request you to fix the change here. The interface for editing the book is beginner friendly. It took less than 5 minutes to drive the change.

Where to buy/download?

Proofreader: Dhavan Vaidya