[HN Gopher] Show HN: I wrote a modern Command Line Handbook
       ___________________________________________________________________
        
       Show HN: I wrote a modern Command Line Handbook
        
       TLDR: I wrote a handbook for the Linux command line. 120 pages in
       PDF. Updated for 2025. Pay what you want.  A few years back I wrote
       an ebook about the Linux command line. Instead of focusing on a
       specific shell, paraphrasing manual pages, or providing long
       repetitive explanations, the idea was to create a modern guide that
       would help readers to understand the command line in the practical
       sense, cover the most common things people use the command line
       for, and do so without wasting the readers' time.  The book
       contains material on terminals, shells (compatible with both Bash
       and Zsh), configuration, command line programs for typical use
       cases, shell scripting, and many tips and tricks to make working on
       the command line more convenient. I still consider it "an
       introduction" and it is not necessarily a book for the HN crowd
       that lives in the terminal, but I believe that the book will easily
       cover 80 % of the things most people want or need to do in the
       terminal.  I made a couple of updates to the book over the years
       and just finished a significant one for 2025. The book is not
       perfect. I still see a lot of room for improvement, but I think it
       is good enough and I truly want to share it with everyone. Hence,
       pay what you want.  EXAMPLE PAGES:
       https://drive.google.com/file/d/1PkUcLv83Ib6nKYF88n3OBqeeVff...
       https://commandline.stribny.name/
        
       Author : petr25102018
       Score  : 227 points
       Date   : 2025-05-29 14:44 UTC (8 hours ago)
        
 (HTM) web link (commandline.stribny.name)
 (TXT) w3m dump (commandline.stribny.name)
        
       | charlie-83 wrote:
       | Cool, couple of comments. The website it a bit broken on mobile
       | (at least for me) since text goes off the screen. Second, it
       | would be good to have some sample pages or at least a page of
       | contents so people can see the level of detail the book is aimed
       | at. I know I could just get the book for free and then pay later
       | but that kind of a faff and I feel bad choosing $0 for these
       | kinds of things.
        
         | petr25102018 wrote:
         | Thanks for the feedback. I was trying to make it work on mobile
         | but maybe I didn't test it well in the end.
         | 
         | As for a sample, I will go and try to make something now.
         | Thanks.
         | 
         | Edit: Example pages here:
         | https://drive.google.com/file/d/1PkUcLv83Ib6nKYF88n3OBqeeVff...
        
           | PeterWhittaker wrote:
           | One nit: ^D only exits if the cursor is at the beginning of a
           | line. Enter <space>^D and the session remains.
           | 
           | Otherwise, looks good! Use of "env" and proper quoting are
           | strong signals!
        
         | pipes wrote:
         | I agree with all this. I'm on Firefox android, pixel, lose part
         | of the screen too.
         | 
         | I'd love to read a table of contents. I don't want to rip you
         | off with zero dollars!
         | 
         | Anyway, sounds like a great book. Congratulations on completing
         | and "shipping"!
        
         | jaredhallen wrote:
         | I am also seeing text off the screen using Brave on Android.
        
       | JLO64 wrote:
       | Honestly I would've liked to fork over cash for a book like this
       | but the deal breaker for me is that it's in PDF format. I like to
       | read all of my books on a Kindle (with koreader installed) so
       | epub files that can be resized to fit its weird dimensions are a
       | must.
        
         | petr25102018 wrote:
         | Noted. I will try to provide alternative formats. Not sure how
         | it will go with the code examples, but I shall try.
         | 
         | Edit: One reason why I picked PDF is that I expect the readers
         | to actually follow the examples in their own terminal while
         | going through the book. So in that sense I was thinking about
         | reading it on the desktop.
        
         | InsideOutSanta wrote:
         | Yeah, same. On a phone or smaller e-reader, regular PDFs
         | designed for normal book size are often unreadable.
        
         | username223 wrote:
         | That's a big ask. I've written a couple of books, and PDF/print
         | vs. ePub/webpage is a decision I had to make up front. For
         | anything with more than the most basic formatting (e.g. a
         | novel), the design and layout are different enough that one of
         | them will turn out looking like crap. Given the audience, I
         | probably would have chosen ePub for this one, but the book's
         | done now.
         | 
         | Also, a TOC and sample chapter would be great. A lot more
         | people will be likely to pay if they know what they're getting.
        
           | petr25102018 wrote:
           | Honestly I haven't tried yet. Maybe Asciidoctor (Which I
           | used) has it figured out. It would at least need to have good
           | enough output for the code examples, otherwise it would
           | probably be a non-starter.
           | 
           | I added links to example pages (which include TOC) to the
           | Gumroad page and here, but yeah I should have put it on the
           | homepage.
        
         | rmahan wrote:
         | Have you tried pdf reflow with koreader? I find it works pretty
         | well
        
         | reaperducer wrote:
         | _Honestly I would've liked to fork over cash for a book like
         | this but the deal breaker for me is that it's in PDF format. I
         | like to read all of my books on a Kindle_
         | 
         | When I made my purchase, the options were Download and Send to
         | Kindle. It's not ePub, but it's something.
        
       | petr25102018 wrote:
       | Example pages here:
       | https://drive.google.com/file/d/1PkUcLv83Ib6nKYF88n3OBqeeVff...
        
         | justusthane wrote:
         | I consider myself reasonably proficient in the shell, but I
         | learned something just from your sample pages (process
         | substitution). Purchased!
        
           | petr25102018 wrote:
           | Thanks!
        
           | teddyh wrote:
           | If you have not skimmed through the _manual_ of bash1 enough
           | to learn about process substitutions, what makes you think
           | you would read a _book_?
           | 
           | 1. <https://www.gnu.org/software/bash/manual/bash.html>
        
             | cortesoft wrote:
             | Maybe because they didn't think to?
        
             | mtlynch wrote:
             | Different people prefer different formats for information.
             | Some people prefer to read the manual from start to finish
             | while others learn better seeing the same concepts in a
             | hands-on tutorial.
             | 
             | From reading the sample of OP's book, it seems far more
             | practical and accessible than the bash manual, so I'm not
             | surprised that a lot of people would read OP's book that
             | have no interest in reading the bash manual cover to cover.
        
             | justusthane wrote:
             | Because generally a manual is "here is every single detail
             | of this thing", while a book like this is "here's an
             | overview of the particularly useful stuff."
             | 
             | I'll go to the manual if I'm trying to understand how a
             | particular thing works, or how to do a particular thing,
             | but it's not as useful to me for feature discovery.
        
         | jcynix wrote:
         | Hmm, the example page doesn't convince me, for example
         | 
         | > The diff utility can compare files and print their
         | differences. If we pass it the result of ls commands, we can
         | compare the contents of directories.
         | 
         | No, if you pass the output of ls commands, you might get an
         | error because you'll pass a bunch of files to diff.
         | 
         | And last but not least there's                   diff -r
         | directory-a directory-b
         | 
         | to compare two directories file by file.
        
           | petr25102018 wrote:
           | I wanted to demonstrate the use of the substitution, not the
           | best way to diff directories. Often I tried to create
           | examples that demonstrate multiple concepts or tools at once
           | to save space. But I see your point.
        
       | mtlynch wrote:
       | Cool book!
       | 
       | Humble suggestion: Give more specific examples of what the reader
       | will learn on the landing page. From the landing page, I don't
       | know if this is for total command line beginners or has helpful
       | tips for people familiar with bash already. I had to hunt around
       | to find sample pages, and they provided much better sense of
       | what's in the book.
       | 
       | Also, spotted some small issues in the copy:
       | 
       | "Fresh out of press" - The more common expression is "hot off the
       | press." "Out of press" sounds similar to "out of print" (i.e., no
       | longer sold)
       | 
       | "Grok the Linux command line on only 120 pages" - should be "in
       | only 120 pages"
        
         | petr25102018 wrote:
         | True, the landing page could be more detailed. I didn't want to
         | repeat much the info on Gumroad page, but maybe I should
         | rethink it.
         | 
         | And thanks for the copy suggestions. I am not a native speaker
         | :)
        
       | dedicate wrote:
       | It makes me wonder - what's that one command or concept you CLI
       | vets wish you'd learned way earlier that totally changed your
       | game, something that might be in that 'next 20%'? Curious about
       | those 'aha!' moments!
        
         | justusthane wrote:
         | Get really comfortable with find and grep. They're incredibly
         | powerful. perl -pe is way easier than awk.
        
           | jcynix wrote:
           | I'll second that. And would like to add that find plus xargs
           | is important to know, as it often works much better than the
           | clumsy "exec in find itself.
           | 
           | Oh, and thus of course                   find ... | xargs
           | perl -lne "fancy stuff"
           | 
           | to do some fancy stuff with found files ;-)
        
         | petr25102018 wrote:
         | One of my favorites from the book is to alias "xdg-open" to
         | "open" because I never remember the command. So now I can just
         | type "open X" to open a file system location or file in a
         | normal GUI program when needed. It is a small thing but I use
         | it a lot.
         | 
         | Something that I didn't put in the book because I learned it
         | only recently is the use of "notify-send", aka you can send
         | yourself a system notification from the command line or script
         | (at least it workd for me in Gnome). For instance once a task
         | is finished:
         | 
         | > echo "when finished send notification" && notify-send "system
         | notification"
         | 
         | Pretty cool if you ask me!
        
           | litoE wrote:
           | In my Linux install (Debian 12/Bookworm) /usr/bin/open is a
           | symlink to /usr/bin/xdg-open so I was always using xdg-open
           | without even knowing it.
        
         | calvinmorrison wrote:
         | the basics of awk and perl, these days jq as well.
        
         | smw wrote:
         | bat     # cat with syntax highlighting       zoxide  # keeps
         | track of directories        tig     # ncurses git viewer
         | atuin   # shell history across machines       choose  # easier
         | cut or "awk '{print $1}'"       direnv  # set environment vars
         | when you enter a directory       fd      # better find
         | fzf     # fuzzy find anything, total game changer       gh
         | # GitHub client       rg      # really fast recursive grep
        
       | catoc wrote:
       | Interested, but going to the website told me nothing other than a
       | book about the command line. Would be nice be able to get a
       | preview of a some pages/chapters.
        
         | petr25102018 wrote:
         | Noted. For now I put links here, in the comments, and in the
         | Gumroad page to sample pages. I will need to change the
         | homepage later. Thanks for the input!
        
       | nickjj wrote:
       | How has the "pay what you want" model worked out if you don't
       | mind me asking? It's something I've thought about in the past for
       | selling courses.
        
         | petr25102018 wrote:
         | I just changed the payment model before posting it here, so
         | there is no past data on this. I don't expect it to generate
         | revenue compared to normal sales (it will most likely be a
         | small fraction). But for normal sales you need to be able to
         | promote it.
         | 
         | My primary motivation is to share the work that I spent a lot
         | of time on because I want to move on and work on other things
         | (I don't want it to just sit on my disk when it can be useful
         | to others before getting outdated etc.). It never was meant to
         | be some primary source of income. In that case I would be
         | writing a book about AI :)
         | 
         | Maybe I will write a blog post with some reflections about
         | making the book at some point :)
        
           | ctippett wrote:
           | I admire your mindset (and humility). Thanks for making this
           | available.
        
       | bprater wrote:
       | Any alternatives to Gumroad in buying this?
        
         | petr25102018 wrote:
         | Not for now. But I am happy to send you the PDF by email and
         | receive a donation via PayPal if the reason is not to fund
         | Gumroad. Just contact me on petr@stribny.name or @stribny on X.
        
         | meonkeys wrote:
         | Why?
        
       | sillyboi wrote:
       | Sorry, but it would be great to adapt it for the mobile layout.
        
         | petr25102018 wrote:
         | Do you mean the website or are you talking about the book PDF?
        
       | KasianFranks wrote:
       | Ahh yes, the lost art of UNiX sys admin always comes back.
        
       | MikeTheGreat wrote:
       | This is excellent! Thank you for posting and best wishes for your
       | success with this!
       | 
       | I'm teaching a class next year that'll have college-level
       | students learning to use the command line and this looks perfect.
       | Nowadays most 'learn the shell' resources online seem to focus on
       | how to write scripts, without explaining how to use it
       | interactively. Given this will be (for many) their first
       | experience with a command line stuff like "type your command,
       | then press enter", or "Up arrow to go back through your history"
       | are a necessary foundation for them. Not to mention stuff like
       | Job Control and using AI to help you create the more complicated
       | commands that folks need to do - nicely done!
       | 
       | Plus, the book is inexpensive enough that they can still afford
       | other resources too :)
       | 
       | Definitely gonna recommend this next year :)
        
         | petr25102018 wrote:
         | Thank you for the nice words :)
        
       | dkarl wrote:
       | Is your focus on older tools that tend to be on most machines and
       | used in older shell scripts (e.g., find and grep), or on newer
       | and upgraded tools (fd, fzf, rg) that developers install on their
       | own machines, or both?
        
         | petr25102018 wrote:
         | The older standard tools, because they can be easily put in CI
         | pipelines and shared as scripts with coworkers.
         | 
         | For example, in my personal and professional life I use Make
         | everywhere. The book mentions alternatives, but the examples
         | are built on the time-tested tools.
         | 
         | I focused on things that don't require install (if given the
         | option) or the ones that you are more likely to encounter at
         | work. It is a tradeoff and I can see how the reverse would be
         | appealing too.
        
           | cerved wrote:
           | <3 GNU Make
        
             | ontouchstart wrote:
             | Make is a powerful self-documentable tool. It can hide tons
             | of complicated dependencies implementation details behind a
             | simple and universal CLI.
        
               | subjectsigma wrote:
               | If you want to use make, power to you, it's definitely a
               | useful tool. (What I'm trying to say is I'm bashing make,
               | not you.)
               | 
               | That being said, I absolutely hate make, there are so
               | many footguns and weird quirks and implicit behavior that
               | always end up biting me.
               | 
               | I find that 90% of the time what I actually want is a
               | command runner like Just (https://github.com/casey/just)
               | and have the make file contain the absolute sheer minimum
               | required to build code.
               | 
               | While we're at it, CMake is another build tool with the
               | same problems as make - powerful, with an ugly syntax,
               | unintuitive semantics, hidden dragons, and a manual
               | that's torturous to read.
        
       | JulianWasTaken wrote:
       | Looks very nice!
       | 
       | I have an interactive tutorial I wrote and teach with which is
       | here: https://github.com/JulianEducation/CommandLineBasics in
       | case it's useful as well. I only have 90 minutes in my case so
       | it's a constant battle to tweak what I can get to with my
       | audience, so there's still lots of things I want to change.
       | 
       | But I think it's very important to have lots of resources here so
       | I'm excited to look at yours.
        
       | rochak wrote:
       | Good resource to couple this resource with:
       | https://linuxjourney.com.
        
       | _joel wrote:
       | Nice work, I've been using linux 20+ years and learnt something
       | from the example pages. (edit, just realised it's closer to 30
       | now, jesus)
        
       | briandoll wrote:
       | Folks interested in this will also appreciate The Shell Haters
       | Handbook: https://shellhaters.org/deck/
        
       ___________________________________________________________________
       (page generated 2025-05-29 23:00 UTC)