1. 55
  1.  

  2. 12

    Most of these are written in rust, is that a coincidence?

    Personally I dislike the style that CLI tools tend to have when they’re written in rust. They tend to be too colourful, using too many Unicode characters, etc (for my taste).But then again, I’m also the kind of person who avoids curses UIs.

    1. 7

      There’s also a consistent refusal to write man pages.

      1. 6

        A very sad trend. I hate having to go open a web browser to read some markdown documentation on some website that requires javascript to function when I want to know how to use some command line application :(

      2. 6

        Most of these are written in rust, is that a coincidence?

        It’s not a coincidence. I’m a fan of Rust and will prefer tools written in it because they are typically fast, reliable and have a UI I like – that is of course a personal preference.

        1. 2

          It might be a “modern” thing. Rust isn’t that old so the tools written with it are not old either. It might be trendy now to use emojis, font-awesome, Nerd Font…

          1. 6

            Rust also has more consistent Unicode support than C does, especially if you want the same app to run on Linux (which uses UTF-8 for everything) and Windows (where you have to dip into UCS-2, or mess with the very buggy codepage 65001).

            1. 1

              I agree. I have thought of it as a Node.JS thing – CLI tools written in ECMAScript tend to look like that. What they have in common with Rust implementations is age.

              1. 2

                I’m not sure I’d bundle the average Rust CLI tool with Node.js—the latter seem to sacrifice functionality and performance for looks to a much greater degree. I can handle color and Unicode (where they’re appropriate), but animations that are so slow that the process takes half as long without them are ridiculous (looking at you, npm i)….

            2. 1

              I’m happy to report that watchexec’s codebase has no emoji that I know of; and doesn’t even support colors.

              To further join you on your lawn, I dislike that a lot of bug reports for it involve rather insane Docker use cases.

            3. 5

              tig is a complete must-have for me, it’s one of the first things I introduce other devs to when working with them.

              1. 6

                tig is fantastic, and I used to use it all the time. Then I found magit, and that became one fewer thing I needed to leave emacs for.

                1. 4

                  Yeah I think tig is one of my most used commands. Great tool.

                  1. 1

                    I used tig for about a week until I discovered lazygit, which (for me) is the right amount of UI that is easy to navigate for those times when I’m too lazy to use git from the command line.

                  2. 4

                    fd

                    This is a good one. Hidden files were fixed for Windows last month [1], so this is a daily use for me.

                    1. https://github.com/sharkdp/fd/issues/379

                    jq

                    You have JQ listed as “Go”. Its C. Here are some others that I use:

                    1. 2

                      Yep I did jq from memory. Post is now fixed to list it as C.

                    2. 3

                      Thanks for the article, I updated my list of interesting cli tools

                      1. 1

                        I think it’s unfair to say ls doesn’t have sane defaults or a tree view, it has both

                        1. 1

                          I think it’s unfair to say ls doesn’t have sane defaults

                          Almost all the time I want to use -l and/or -a with ls, so for me ls does not have good default behavior.

                          (Yes I can, and do, have aliases in my shell for running ls with sane [for me] defaults..)

                          1. 1

                            You might be assuming GNU ls. I routinely use systems that don’t provide an experience equivalent to exa out of the box, such as Alpine Linux, macOS, and FreeBSD.

                            1. 1

                              No, I was thinking of ls -R, which I believe is POSIX

                              1. 1

                                I sometimes use ls -R, but it feels very different from a true tree view. It runs ls on each subdirectory in the tree, but doesn’t display the tree. Even parent-child nesting is not visually obvious, let alone grandparents, or common grand parents, or what have you.

                                tree displays its results in a tree, and lets you skim the indentation. tree -if prints the full (relative) path of each file on its own line, and lets you skim the prefixes. It’s a big difference.

                                1. 1

                                  What system are you on?

                          2. 1

                            Homepage for pass leads to mdcat’s homepage

                            1. 2

                              Thanks, fixed.

                            2. 1

                              Nice list.

                              pazi is a nice Rust alternative to ‘z’ and starship is a nice prompt written in Rust.

                              1. 1

                                I like to think of myself as a CLI tool connoisseur—but I’ve hardly heard of any of these before. Great job!

                                1. 2

                                  Most of them are not that old. You are still hip.

                                  1. 1

                                    Thanks! :)