|
| 1 | +--- |
| 2 | +layout: post |
| 3 | +categories: book review |
| 4 | +title: Book review 'Introduction to the Command Line' |
| 5 | +tag: books linux programming |
| 6 | +--- |
| 7 | + |
| 9 | + |
| 10 | + |
| 11 | +## tl;dr |
| 12 | + |
| 13 | + |
| 14 | +Every chapter will introduce a bunch of comands and will point to its |
| 15 | +respective documentation for further learning. You should expect chapters |
| 16 | +describing from the [grep](https://www.gnu.org/software/grep/manual/grep.html) |
| 17 | +command to [GNU Octave](https://www.gnu.org/software/octave/) which is a |
| 18 | +scientific programming language. The chapters are independent of each other. |
| 19 | +The book is must read if you are new to the |
| 20 | +[GNU/Linux](https://en.wikipedia.org/wiki/Linux) command line. If you are at |
| 21 | +the intermediate level, then too investing time in reading this book will |
| 22 | +unveil a few surprises for you. |
| 23 | + |
| 24 | + |
| 25 | +## Detailed review |
| 26 | + |
| 27 | +The book is community driven and published under [FLOSS |
| 28 | +Manual](http://flossmanuals.net). It is a collaborative effort of the |
| 29 | +[FSF](http://www.fsf.org/) community. The fun part is you can contribute to |
| 30 | +this book by adding new chapters or by improving an existing one. I fixed one |
| 31 | +typo in this book after reading. The best introduction is crafted comparing GUI |
| 32 | +based image editing tools with the most unknown command |
| 33 | +[convert](https://linux.die.net/man/1/convert). It conveys the importance of |
| 34 | +command line well to the reader. Initial chapters will present the overview of |
| 35 | +various [GNU/bash](https://www.gnu.org/software/bash/) commands. From my |
| 36 | +personal experience, you have to use mentioned commands in this chapter daily. |
| 37 | +The chapter of Command history shortcuts depicts geeky shell patterns. I will |
| 38 | +advise not to skip that chapter and read through once. The advanced section was |
| 39 | +not much advance for me. It demonstrates |
| 40 | +[ssh](https://linux.die.net/man/1/ssh) and related commands like |
| 41 | +[scp](https://linux.die.net/man/1/scp) and more. I appreciated the preference |
| 42 | +of using [GNU Screen](https://www.gnu.org/software/screen/) though I use |
| 43 | +[tmux](https://tmux.github.io/) over it. If you are possessed by moving around |
| 44 | +on multiple directories simultaneously, then **directory stacks** under |
| 45 | +**Moving Again** section is worth scanning. This functionality is saving |
| 46 | +dozens of my keystrokes now. There is one entire division dedicated to various |
| 47 | +editors. That section is not limited to [GNU |
| 48 | +Emacs](https://www.gnu.org/software/emacs/) or [vim][vim], but also briefs [GNU |
| 49 | +NANO](https://www.nano-editor.org/), [Kedit](http://www.kedit.com/) and |
| 50 | +[Gedit](https://wiki.gnome.org/Apps/Gedit). This section does not compare the |
| 51 | +pros and cons of several editors, but describes basics of each which should be |
| 52 | +counted as a good part. I skipped this part because I am comfortable with |
| 53 | +[vim][vim] editor at present and don’t want to invest much in others. |
| 54 | + |
| 55 | +The scripting section turned out to be the most interesting division for me. |
| 56 | +Though I was aware about the tools like |
| 57 | +[sed](https://www.gnu.org/software/sed/manual/sed.html) and language |
| 58 | +[awk](https://linux.die.net/man/1/awk) I was not using them often. Reading |
| 59 | +their chapters and implementing mentioned examples built little confidence in |
| 60 | +me. Now I am much comfortable in utilizing them. The irregular **Regular |
| 61 | +expressions** are everywhere. You should not pass over this section and pay |
| 62 | +careful attention to various examples. It is worth to invest your time in this |
| 63 | +segment. |
| 64 | + |
| 65 | +This is not the ending. This book presents a glimpse of various scripting level |
| 66 | +programming languages like [Perl](https://www.perl.org/), |
| 67 | +[Python](http://python.org) and [Ruby](https://www.ruby-lang.org/en/). Because I |
| 68 | +am a python developer for a few years and I was not much interested in other |
| 69 | +languages, I skipped this section. A shallow introduction to [GNU |
| 70 | +Octave](https://www.gnu.org/software/octave/) is nice to study if you are |
| 71 | +interested in knowing a little about this scientific programming language. |
| 72 | + |
| 73 | + |
| 74 | +### How to read this book? |
| 75 | + |
| 76 | +Do not read to read. This book contains nice shell examples. By merely |
| 77 | +reading, you will end up without bringing about anything meaningful. I will |
| 78 | +advise you to interpret the description first, observe the examples and then |
| 79 | +implement them on your own. If you have any confusions, read the example and |
| 80 | +description again or obtain help from `man` or `info` are the best options. To |
| 81 | +remember, I revised the important chapters more than once in a week. It helped |
| 82 | +me to refresh what I learned before. I will attempt to re-read the important |
| 83 | +sections once again after a few days to refresh my memory. |
| 84 | + |
| 85 | + |
| 86 | +### What is missing? |
| 87 | + |
| 88 | +Considerably, the book is nicely written, equally distributed |
| 89 | +and largely acceptable, but I would prefer to have a small set exercises section |
| 90 | +at the end of each topic. Exercise might help the reader to identify their weak |
| 91 | +points early and refer on them again if they desire to. |
| 92 | + |
| 93 | + |
| 94 | +### Typo / Mistakes |
| 95 | + |
| 96 | +I didn't encounter any sever mistakes except one typo. The section of **Userful |
| 97 | +customizations** on page number 80 of my printed version, contains following |
| 98 | +example: |
| 99 | + |
| 100 | +``` |
| 101 | +function manyargs { |
| 102 | + $arg=$1 |
| 103 | + shift |
| 104 | + ... |
| 105 | +} |
| 106 | +``` |
| 107 | + |
| 108 | +Here, **$arg** is a misprint. A shell variable is never assigned with **$**. It |
| 109 | +should be `args=$1`. I myself has corrected the typographical error in the |
| 110 | +book. This change will be published maybe in the next release of this book. |
| 111 | + |
| 112 | +If you are encountering any mistakes while reading, I request you to fix the |
| 113 | +change [here](http://write.flossmanuals.net/command-line/introduction/). The |
| 114 | +interface for editing the book is beginner friendly. It took less than 5 |
| 115 | +minutes to drive the change. |
| 116 | + |
| 117 | + |
| 118 | +### Where to buy/download? |
| 119 | + |
| 120 | +* [Buy printed |
| 121 | + version](https://shop.fsf.org/books-docs/introduction-command-line). |
| 122 | + |
| 123 | +* [Read Online](http://write.flossmanuals.net/command-line/introduction/). |
| 124 | + |
| 125 | +* [Download |
| 126 | + PDF](http://archive.flossmanuals.net/_booki/command-line/command-line.pdf) |
| 127 | + |
| 128 | + |
| 129 | +###### Proofreader: [Dhavan Vaidya](http://codingquark.com/) |
| 130 | + |
| 131 | + |
| 132 | +[vim]: http://vim.org/ |
0 commit comments