{"action":"created","comment":{"url":"https://api.github.com/repos/ultimatecoder/ultimatecoder.github.io/pulls/comments/103903047","pull_request_review_id":24705100,"id":103903047,"diff_hunk":"@@ -0,0 +1,127 @@\n+---\n+layout: post\n+categories: book review\n+title: Book review 'Introduction to the Command Line'\n+tag: books linux programming\n+---\n+![introduction_to_command_line]({{ site.url\n+}}/assets/images/book_image_introduction_to_the_commandline.jpg)\n+\n+\n+## tl;dr\n+\n+\n+Every chapter will introduce a bunch of comandline utilities and will point to\n+its respective documentation for further learning. You should expect chapters\n+describing from the [grep](https://www.gnu.org/software/grep/manual/grep.html)\n+command to [GNU Octave](https://www.gnu.org/software/octave/) which is a\n+scientific programming language. The chapters are independent from each other.\n+The book is must read if you new to the\n+[GNU/Linux](https://en.wikipedia.org/wiki/Linux) command line. If you new are at\n+the intermediate level, then too investing time in reading this book will unveil\n+a few surprises for you.\n+\n+\n+## Detailed review\n+\n+The book is community driven and published under [FLOSS\n+Manual](http://flossmanuals.net). It is a collaborative effort of the\n+[FSF](http://www.fsf.org/) community. The fun part is you can contribute to this\n+book by adding new chapters or improve an existing one. I fixed one typo to this\n+book after reading. The best introduction is crafted comparing GUI based image\n+editing tools with the most unknown command\n+[convert](https://linux.die.net/man/1/convert). It conveys the importance of\n+command line well to the reader. Initial chapters will present the overview of\n+various [GNU/bash](https://www.gnu.org/software/bash/) commands. From my\n+personal experience, you have to encounter them daily. The chapter of Command\n+history shortcuts depicts geeky shell patterns. I will advise to not skip that\n+chapter and read through once. The advanced session was not much advance for me.\n+It demonstrates [ssh](https://linux.die.net/man/1/ssh) and related commands like\n+[scp](https://linux.die.net/man/1/scp) and more. I appreciated the preference of\n+using [GNU Screen](https://www.gnu.org/software/screen/) though I use\n+[tmux](https://tmux.github.io/) over it. If you are possessed by moving around\n+on multiple directories simultaneously, then **directory stacks** under **Moving\n+Again** section is worth scanning for you.  This functionality is saving dozens\n+of my keystrokes now.  There is one entire division dedicated to various\n+editors. That section is not limited to [GNU\n+Emacs](https://www.gnu.org/software/emacs/) or [vim][vim], but also briefs with\n+[GNU NANO](https://www.nano-editor.org/), [Kedit](http://www.kedit.com/) and\n+[Gedit](https://wiki.gnome.org/Apps/Gedit). This section does not compare the\n+pros and cons of several editors, but describes basics of each which should be\n+counted as a good part.  I skipped this part because I am comfortable with\n+[vim][vim] editor at present and don’t want to invest much on others.\n+\n+The scripting section turned to most interesting division for me. Though I was\n+aware about the tools like\n+[sed](https://www.gnu.org/software/sed/manual/sed.html) and language\n+[awk](https://linux.die.net/man/1/awk) I was very less often using them. Reading\n+their chapters and implementing mentioned examples built little confidence on\n+me. Now I myself much comfortable in utilizing them. The irregular **Regular\n+expressions** are everywhere.  You should not pass over this section and pay\n+careful attention to various examples.  It will worth to invest your time in\n+this segment.\n+\n+This is not the ending.  This book presents a glimpse of various scripting level\n+programming languages like [Perl](https://www.perl.org/),\n+[Python](http://python.org) and [Ruby](https://www.ruby-lang.org/en/). Because I\n+am a python developer for a few years and I was not much interested in other\n+languages, I skipped this section.  A shallow introduction to [GNU\n+Octave](https://www.gnu.org/software/octave/) is nice to study if you are\n+interested to know a little about this scientific programming language.\n+\n+\n+### How to read this book?\n+\n+Do not read to read. This book contains nice shell examples.  By merely just\n+reading you will end up without bringing about anything meaningful.  I will\n+advise you to interpret the description first, observe the examples second and\n+then implement them with your own.  If you have any confusions, read the example","path":"_posts/2017-02-28-book-review-introduction-to-the-commandline.md","position":78,"original_position":78,"commit_id":"22ebf68d30e55ce565985dca8cfeb85db985bc3d","original_commit_id":"22ebf68d30e55ce565985dca8cfeb85db985bc3d","user":{"login":"codingquark","id":456712,"avatar_url":"https://avatars1.githubusercontent.com/u/456712?v=3","gravatar_id":"","url":"https://api.github.com/users/codingquark","html_url":"https://github.com/codingquark","followers_url":"https://api.github.com/users/codingquark/followers","following_url":"https://api.github.com/users/codingquark/following{/other_user}","gists_url":"https://api.github.com/users/codingquark/gists{/gist_id}","starred_url":"https://api.github.com/users/codingquark/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/codingquark/subscriptions","organizations_url":"https://api.github.com/users/codingquark/orgs","repos_url":"https://api.github.com/users/codingquark/repos","events_url":"https://api.github.com/users/codingquark/events{/privacy}","received_events_url":"https://api.github.com/users/codingquark/received_events","type":"User","site_admin":false},"body":"on your own.","created_at":"2017-03-02T11:27:19Z","updated_at":"2017-03-02T11:34:35Z","html_url":"https://github.com/ultimatecoder/ultimatecoder.github.io/pull/4#discussion_r103903047","pull_request_url":"https://api.github.com/repos/ultimatecoder/ultimatecoder.github.io/pulls/4","_links":{"self":{"href":"https://api.github.com/repos/ultimatecoder/ultimatecoder.github.io/pulls/comments/103903047"},"html":{"href":"https://github.com/ultimatecoder/ultimatecoder.github.io/pull/4#discussion_r103903047"},"pull_request":{"href":"https://api.github.com/repos/ultimatecoder/ultimatecoder.github.io/pulls/4"}}},"pull_request":{"url":"https://api.github.com/repos/ultimatecoder/ultimatecoder.github.io/pulls/4","id":108544823,"html_url":"https://github.com/ultimatecoder/ultimatecoder.github.io/pull/4","diff_url":"https://github.com/ultimatecoder/ultimatecoder.github.io/pull/4.diff","patch_url":"https://github.com/ultimatecoder/ultimatecoder.github.io/pull/4.patch","issue_url":"https://api.github.com/repos/ultimatecoder/ultimatecoder.github.io/issues/4","number":4,"state":"open","locked":false,"title":"[ADD] Adding a blog post describing the review of \"Introduction to the command line\"","user":{"login":"ultimatecoder","id":3719122,"avatar_url":"https://avatars3.githubusercontent.com/u/3719122?v=3","gravatar_id":"","url":"https://api.github.com/users/ultimatecoder","html_url":"https://github.com/ultimatecoder","followers_url":"https://api.github.com/users/ultimatecoder/followers","following_url":"https://api.github.com/users/ultimatecoder/following{/other_user}","gists_url":"https://api.github.com/users/ultimatecoder/gists{/gist_id}","starred_url":"https://api.github.com/users/ultimatecoder/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/ultimatecoder/subscriptions","organizations_url":"https://api.github.com/users/ultimatecoder/orgs","repos_url":"https://api.github.com/users/ultimatecoder/repos","events_url":"https://api.github.com/users/ultimatecoder/events{/privacy}","received_events_url":"https://api.github.com/users/ultimatecoder/received_events","type":"User","site_admin":false},"body":"* **Description:** Writing blog post reviewing book [Introduction to the Command Line](https://shop.fsf.org/books-docs/introduction-command-line).\r\n\r\n* **How to review this post?**\r\n\r\n    * Write your review directly to this pull request.\r\n\r\n    * Review grammatical or spelling mistakes.\r\n\r\n    * Suggest better sentence construction if you think any.\r\n\r\n    * Write your review regarding the image linked with the blog post.","created_at":"2017-03-01T14:09:18Z","updated_at":"2017-03-02T11:34:35Z","closed_at":null,"merged_at":null,"merge_commit_sha":"4ea402f782ccaa0149ea57056948ffe99b9c8f86","assignee":null,"assignees":[],"milestone":null,"commits_url":"https://api.github.com/repos/ultimatecoder/ultimatecoder.github.io/pulls/4/commits","review_comments_url":"https://api.github.com/repos/ultimatecoder/ultimatecoder.github.io/pulls/4/comments","review_comment_url":"https://api.github.com/repos/ultimatecoder/ultimatecoder.github.io/pulls/comments{/number}","comments_url":"https://api.github.com/repos/ultimatecoder/ultimatecoder.github.io/issues/4/comments","statuses_url":"https://api.github.com/repos/ultimatecoder/ultimatecoder.github.io/statuses/22ebf68d30e55ce565985dca8cfeb85db985bc3d","head":{"label":"ultimatecoder:master-bookreview-introduction-to-gnulinux-commandline","ref":"master-bookreview-introduction-to-gnulinux-commandline","sha":"22ebf68d30e55ce565985dca8cfeb85db985bc3d","user":{"login":"ultimatecoder","id":3719122,"avatar_url":"https://avatars3.githubusercontent.com/u/3719122?v=3","gravatar_id":"","url":"https://api.github.com/users/ultimatecoder","html_url":"https://github.com/ultimatecoder","followers_url":"https://api.github.com/users/ultimatecoder/followers","following_url":"https://api.github.com/users/ultimatecoder/following{/other_user}","gists_url":"https://api.github.com/users/ultimatecoder/gists{/gist_id}","starred_url":"https://api.github.com/users/ultimatecoder/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/ultimatecoder/subscriptions","organizations_url":"https://api.github.com/users/ultimatecoder/orgs","repos_url":"https://api.github.com/users/ultimatecoder/repos","events_url":"https://api.github.com/users/ultimatecoder/events{/privacy}","received_events_url":"https://api.github.com/users/ultimatecoder/received_events","type":"User","site_admin":false},"repo":{"id":77687152,"name":"ultimatecoder.github.io","full_name":"ultimatecoder/ultimatecoder.github.io","owner":{"login":"ultimatecoder","id":3719122,"avatar_url":"https://avatars3.githubusercontent.com/u/3719122?v=3","gravatar_id":"","url":"https://api.github.com/users/ultimatecoder","html_url":"https://github.com/ultimatecoder","followers_url":"https://api.github.com/users/ultimatecoder/followers","following_url":"https://api.github.com/users/ultimatecoder/following{/other_user}","gists_url":"https://api.github.com/users/ultimatecoder/gists{/gist_id}","starred_url":"https://api.github.com/users/ultimatecoder/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/ultimatecoder/subscriptions","organizations_url":"https://api.github.com/users/ultimatecoder/orgs","repos_url":"https://api.github.com/users/ultimatecoder/repos","events_url":"https://api.github.com/users/ultimatecoder/events{/privacy}","received_events_url":"https://api.github.com/users/ultimatecoder/received_events","type":"User","site_admin":false},"private":false,"html_url":"https://github.com/ultimatecoder/ultimatecoder.github.io","description":"Jaysinh's own heed","fork":false,"url":"https://api.github.com/repos/ultimatecoder/ultimatecoder.github.io","forks_url":"https://api.github.com/repos/ultimatecoder/ultimatecoder.github.io/forks","keys_url":"https://api.github.com/repos/ultimatecoder/ultimatecoder.github.io/keys{/key_id}","collaborators_url":"https://api.github.com/repos/ultimatecoder/ultimatecoder.github.io/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/ultimatecoder/ultimatecoder.github.io/teams","hooks_url":"https://api.github.com/repos/ultimatecoder/ultimatecoder.github.io/hooks","issue_events_url":"https://api.github.com/repos/ultimatecoder/ultimatecoder.github.io/issues/events{/number}","events_url":"https://api.github.com/repos/ultimatecoder/ultimatecoder.github.io/events","assignees_url":"https://api.github.com/repos/ultimatecoder/ultimatecoder.github.io/assignees{/user}","branches_url":"https://api.github.com/repos/ultimatecoder/ultimatecoder.github.io/branches{/branch}","tags_url":"https://api.github.com/repos/ultimatecoder/ultimatecoder.github.io/tags","blobs_url":"https://api.github.com/repos/ultimatecoder/ultimatecoder.github.io/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/ultimatecoder/ultimatecoder.github.io/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/ultimatecoder/ultimatecoder.github.io/git/refs{/sha}","trees_url":"https://api.github.com/repos/ultimatecoder/ultimatecoder.github.io/git/trees{/sha}","statuses_url":"https://api.github.com/repos/ultimatecoder/ultimatecoder.github.io/statuses/{sha}","languages_url":"https://api.github.com/repos/ultimatecoder/ultimatecoder.github.io/languages","stargazers_url":"https://api.github.com/repos/ultimatecoder/ultimatecoder.github.io/stargazers","contributors_url":"https://api.github.com/repos/ultimatecoder/ultimatecoder.github.io/contributors","subscribers_url":"https://api.github.com/repos/ultimatecoder/ultimatecoder.github.io/subscribers","subscription_url":"https://api.github.com/repos/ultimatecoder/ultimatecoder.github.io/subscription","commits_url":"https://api.github.com/repos/ultimatecoder/ultimatecoder.github.io/commits{/sha}","git_commits_url":"https://api.github.com/repos/ultimatecoder/ultimatecoder.github.io/git/commits{/sha}","comments_url":"https://api.github.com/repos/ultimatecoder/ultimatecoder.github.io/comments{/number}","issue_comment_url":"https://api.github.com/repos/ultimatecoder/ultimatecoder.github.io/issues/comments{/number}","contents_url":"https://api.github.com/repos/ultimatecoder/ultimatecoder.github.io/contents/{+path}","compare_url":"https://api.github.com/repos/ultimatecoder/ultimatecoder.github.io/compare/{base}...{head}","merges_url":"https://api.github.com/repos/ultimatecoder/ultimatecoder.github.io/merges","archive_url":"https://api.github.com/repos/ultimatecoder/ultimatecoder.github.io/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/ultimatecoder/ultimatecoder.github.io/downloads","issues_url":"https://api.github.com/repos/ultimatecoder/ultimatecoder.github.io/issues{/number}","pulls_url":"https://api.github.com/repos/ultimatecoder/ultimatecoder.github.io/pulls{/number}","milestones_url":"https://api.github.com/repos/ultimatecoder/ultimatecoder.github.io/milestones{/number}","notifications_url":"https://api.github.com/repos/ultimatecoder/ultimatecoder.github.io/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/ultimatecoder/ultimatecoder.github.io/labels{/name}","releases_url":"https://api.github.com/repos/ultimatecoder/ultimatecoder.github.io/releases{/id}","deployments_url":"https://api.github.com/repos/ultimatecoder/ultimatecoder.github.io/deployments","created_at":"2016-12-30T13:15:03Z","updated_at":"2016-12-30T15:41:36Z","pushed_at":"2017-03-01T14:09:18Z","git_url":"git://github.com/ultimatecoder/ultimatecoder.github.io.git","ssh_url":"git@github.com:ultimatecoder/ultimatecoder.github.io.git","clone_url":"https://github.com/ultimatecoder/ultimatecoder.github.io.git","svn_url":"https://github.com/ultimatecoder/ultimatecoder.github.io","homepage":null,"size":4949,"stargazers_count":0,"watchers_count":0,"language":"Ruby","has_issues":true,"has_downloads":true,"has_wiki":true,"has_pages":true,"forks_count":0,"mirror_url":null,"open_issues_count":1,"forks":0,"open_issues":1,"watchers":0,"default_branch":"master"}},"base":{"label":"ultimatecoder:master","ref":"master","sha":"0e90e13f293a82d0bdece8bf1d58ced10cdb81e9","user":{"login":"ultimatecoder","id":3719122,"avatar_url":"https://avatars3.githubusercontent.com/u/3719122?v=3","gravatar_id":"","url":"https://api.github.com/users/ultimatecoder","html_url":"https://github.com/ultimatecoder","followers_url":"https://api.github.com/users/ultimatecoder/followers","following_url":"https://api.github.com/users/ultimatecoder/following{/other_user}","gists_url":"https://api.github.com/users/ultimatecoder/gists{/gist_id}","starred_url":"https://api.github.com/users/ultimatecoder/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/ultimatecoder/subscriptions","organizations_url":"https://api.github.com/users/ultimatecoder/orgs","repos_url":"https://api.github.com/users/ultimatecoder/repos","events_url":"https://api.github.com/users/ultimatecoder/events{/privacy}","received_events_url":"https://api.github.com/users/ultimatecoder/received_events","type":"User","site_admin":false},"repo":{"id":77687152,"name":"ultimatecoder.github.io","full_name":"ultimatecoder/ultimatecoder.github.io","owner":{"login":"ultimatecoder","id":3719122,"avatar_url":"https://avatars3.githubusercontent.com/u/3719122?v=3","gravatar_id":"","url":"https://api.github.com/users/ultimatecoder","html_url":"https://github.com/ultimatecoder","followers_url":"https://api.github.com/users/ultimatecoder/followers","following_url":"https://api.github.com/users/ultimatecoder/following{/other_user}","gists_url":"https://api.github.com/users/ultimatecoder/gists{/gist_id}","starred_url":"https://api.github.com/users/ultimatecoder/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/ultimatecoder/subscriptions","organizations_url":"https://api.github.com/users/ultimatecoder/orgs","repos_url":"https://api.github.com/users/ultimatecoder/repos","events_url":"https://api.github.com/users/ultimatecoder/events{/privacy}","received_events_url":"https://api.github.com/users/ultimatecoder/received_events","type":"User","site_admin":false},"private":false,"html_url":"https://github.com/ultimatecoder/ultimatecoder.github.io","description":"Jaysinh's own heed","fork":false,"url":"https://api.github.com/repos/ultimatecoder/ultimatecoder.github.io","forks_url":"https://api.github.com/repos/ultimatecoder/ultimatecoder.github.io/forks","keys_url":"https://api.github.com/repos/ultimatecoder/ultimatecoder.github.io/keys{/key_id}","collaborators_url":"https://api.github.com/repos/ultimatecoder/ultimatecoder.github.io/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/ultimatecoder/ultimatecoder.github.io/teams","hooks_url":"https://api.github.com/repos/ultimatecoder/ultimatecoder.github.io/hooks","issue_events_url":"https://api.github.com/repos/ultimatecoder/ultimatecoder.github.io/issues/events{/number}","events_url":"https://api.github.com/repos/ultimatecoder/ultimatecoder.github.io/events","assignees_url":"https://api.github.com/repos/ultimatecoder/ultimatecoder.github.io/assignees{/user}","branches_url":"https://api.github.com/repos/ultimatecoder/ultimatecoder.github.io/branches{/branch}","tags_url":"https://api.github.com/repos/ultimatecoder/ultimatecoder.github.io/tags","blobs_url":"https://api.github.com/repos/ultimatecoder/ultimatecoder.github.io/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/ultimatecoder/ultimatecoder.github.io/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/ultimatecoder/ultimatecoder.github.io/git/refs{/sha}","trees_url":"https://api.github.com/repos/ultimatecoder/ultimatecoder.github.io/git/trees{/sha}","statuses_url":"https://api.github.com/repos/ultimatecoder/ultimatecoder.github.io/statuses/{sha}","languages_url":"https://api.github.com/repos/ultimatecoder/ultimatecoder.github.io/languages","stargazers_url":"https://api.github.com/repos/ultimatecoder/ultimatecoder.github.io/stargazers","contributors_url":"https://api.github.com/repos/ultimatecoder/ultimatecoder.github.io/contributors","subscribers_url":"https://api.github.com/repos/ultimatecoder/ultimatecoder.github.io/subscribers","subscription_url":"https://api.github.com/repos/ultimatecoder/ultimatecoder.github.io/subscription","commits_url":"https://api.github.com/repos/ultimatecoder/ultimatecoder.github.io/commits{/sha}","git_commits_url":"https://api.github.com/repos/ultimatecoder/ultimatecoder.github.io/git/commits{/sha}","comments_url":"https://api.github.com/repos/ultimatecoder/ultimatecoder.github.io/comments{/number}","issue_comment_url":"https://api.github.com/repos/ultimatecoder/ultimatecoder.github.io/issues/comments{/number}","contents_url":"https://api.github.com/repos/ultimatecoder/ultimatecoder.github.io/contents/{+path}","compare_url":"https://api.github.com/repos/ultimatecoder/ultimatecoder.github.io/compare/{base}...{head}","merges_url":"https://api.github.com/repos/ultimatecoder/ultimatecoder.github.io/merges","archive_url":"https://api.github.com/repos/ultimatecoder/ultimatecoder.github.io/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/ultimatecoder/ultimatecoder.github.io/downloads","issues_url":"https://api.github.com/repos/ultimatecoder/ultimatecoder.github.io/issues{/number}","pulls_url":"https://api.github.com/repos/ultimatecoder/ultimatecoder.github.io/pulls{/number}","milestones_url":"https://api.github.com/repos/ultimatecoder/ultimatecoder.github.io/milestones{/number}","notifications_url":"https://api.github.com/repos/ultimatecoder/ultimatecoder.github.io/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/ultimatecoder/ultimatecoder.github.io/labels{/name}","releases_url":"https://api.github.com/repos/ultimatecoder/ultimatecoder.github.io/releases{/id}","deployments_url":"https://api.github.com/repos/ultimatecoder/ultimatecoder.github.io/deployments","created_at":"2016-12-30T13:15:03Z","updated_at":"2016-12-30T15:41:36Z","pushed_at":"2017-03-01T14:09:18Z","git_url":"git://github.com/ultimatecoder/ultimatecoder.github.io.git","ssh_url":"git@github.com:ultimatecoder/ultimatecoder.github.io.git","clone_url":"https://github.com/ultimatecoder/ultimatecoder.github.io.git","svn_url":"https://github.com/ultimatecoder/ultimatecoder.github.io","homepage":null,"size":4949,"stargazers_count":0,"watchers_count":0,"language":"Ruby","has_issues":true,"has_downloads":true,"has_wiki":true,"has_pages":true,"forks_count":0,"mirror_url":null,"open_issues_count":1,"forks":0,"open_issues":1,"watchers":0,"default_branch":"master"}},"_links":{"self":{"href":"https://api.github.com/repos/ultimatecoder/ultimatecoder.github.io/pulls/4"},"html":{"href":"https://github.com/ultimatecoder/ultimatecoder.github.io/pull/4"},"issue":{"href":"https://api.github.com/repos/ultimatecoder/ultimatecoder.github.io/issues/4"},"comments":{"href":"https://api.github.com/repos/ultimatecoder/ultimatecoder.github.io/issues/4/comments"},"review_comments":{"href":"https://api.github.com/repos/ultimatecoder/ultimatecoder.github.io/pulls/4/comments"},"review_comment":{"href":"https://api.github.com/repos/ultimatecoder/ultimatecoder.github.io/pulls/comments{/number}"},"commits":{"href":"https://api.github.com/repos/ultimatecoder/ultimatecoder.github.io/pulls/4/commits"},"statuses":{"href":"https://api.github.com/repos/ultimatecoder/ultimatecoder.github.io/statuses/22ebf68d30e55ce565985dca8cfeb85db985bc3d"}}}}
{"actor":{"display_login":"codingquark"}}