A list of new(ish) command line tools – Julia Evans

This page summarizes the projects mentioned and recommended in the original post on news.ycombinator.com

Our great sponsors
  • Scout APM - Less time debugging, more time building
  • JetBrains - Developer Ecosystem Survey 2022
  • SonarLint - Deliver Cleaner and Safer Code - Right in Your IDE of Choice!
  • glow

    Render markdown on the CLI, with pizzazz! 💅🏻

    A new fave I recently discovered - render markdown in the terminal for easy reading (and proofing):


  • Scout APM

    Less time debugging, more time building. Scout APM allows you to find and fix performance issues with no hassle. Now with error monitoring and external services monitoring, Scout is a developer's best friend when it comes to application development.

  • mdp

    A command-line based markdown presentation tool.

    > I recently found out about mdp too, a way to display markdown in the terminal as slides.

    > https://github.com/visit1985/mdp

    I use pandoc to convert markdown to powerpoint decks, it's a great workflow as you can preview and tweak the content and then apply the firm theme before the presentation.

  • up

    Ultimate Plumber is a tool for writing Linux pipes with instant live preview (by akavel)

    As an alternative allowing the use of any shell command/pipeline on the results interactively, see also: https://github.com/akavel/up

  • dive

    A tool for exploring each layer in a docker image

    Awesome, thanks for that! It has a bunch of useful stuff merged, but it's still missing the export tree view feature (https://github.com/wagoodman/dive/pull/324), which can be handy.

  • hexyl

    A command-line hex viewer

    No such list is complete without hexyl!


  • jo

    JSON output from a shell

    I'm a big fan of jo[1] for making generating JSON from the shell not terrible.

    [1] https://github.com/jpmens/jo

  • JetBrains

    Developer Ecosystem Survey 2022. Take part in the Developer Ecosystem Survey 2022 by JetBrains and get a chance to win a Macbook, a Nvidia graphics card, or other prizes. We’ll create an infographic full of stats, and you’ll get personalized results so you can compare yourself with other developers.

  • fx

    fx is a workspace tool manager. It allows you to create consistent, discoverable, language-neutral and developer friendly command line tools. (by jathu)

    Shameless plug for my own tool, fx: a simple CLI tool for making consistent CLI tools in large repositories: https://github.com/jathu/fx

  • pcstat

    Page Cache stat: get page cache stats for files on Linux

    pcstat and vmtouch (page cache statistics and control)


  • vmtouch

    Portable file system cache diagnostics and control

  • git-crypt

    Transparent file encryption in git

    Combine that with git-crypt[0] (obviously, don't commit secrets in plaintext to your repo!) for example and you have some really nice ergonomics.

    Not enough people know about direnv.

    [0]: https://www.agwa.name/projects/git-crypt/

  • Spruce

    A BOSH template merge tool (by geofffranks)

    I use spruce for many thing but it's ability to merge y'all files smartly is very useful. Think global yaml merged with one of [prod, staging, dev].yaml, merged with override.yaml creating a deployment yaml. https://github.com/geofffranks/spruce

  • ripgrep

    ripgrep recursively searches directories for a regex pattern while respecting your gitignore

    There's a ripgrep ticket for multiple patterns. No one seems to have come up with a good specification for exactly how it ought to work, so no development has started.


  • nnn

    n³ The unorthodox terminal file manager

    I’m a fan of nnn for a terminal file manager, so I’m keen to try out broot. Does anyone have other recommendations I should try?


  • pwru

    Packet, where are you? -- eBPF-based Linux kernel networking debugger

    [pwru](https://github.com/cilium/pwru) is a fun new tool from the Cilium folks for tracing network packets in the kernel. Like tcpdump but it shows you the full path including kernel syscalls. Lets you debug much deeper than "when the packet gets to this port it gets dropped".

  • ranger

    A VIM-inspired filemanager for the console

  • xplr

    A hackable, minimal, fast TUI file explorer

    Another nnn fan here, great tool!

    Been meaning to try out xplr[1] which I came across the other day.

    1 https://github.com/sayanarijit/xplr

  • angle-grinder

    Slice and dice logs on the command line

  • Postwoman

    👽 Open source API development ecosystem - https://hoppscotch.io

    I found https://github.com/hoppscotch/hoppscotch recently and it's quite nice. There's also a VSCode extension that doesn't look like it's actively developed any more: https://marketplace.visualstudio.com/items?itemName=rangav.v...

  • consult

    consult.el - Consulting completing-read

    I do things like that inside Emacs with the consult-grep command from the Consult package, combined with the Orderless matching style.

    1. Consult: https://github.com/minad/consult/

  • orderless

    Emacs completion style that matches multiple regexps in any order

  • htmlq

    Like jq, but for HTML.

  • Newman

    Newman is a command-line collection runner for Postman

    There is a cli tool to run postman collections: https://github.com/postmanlabs/newman

    You still have to create the collections in Postman, however.

  • lf

    Terminal file manager

    Related to ranger, nowadays I use lf[0], which is a clone of ranger written in Go. There's also pistol[1] which is a replacement for ranger's rifle file viewer

    [0] https://github.com/gokcehan/lf

  • pistol

    General purpose file previewer designed for Ranger, Lf to make scope.sh redundant

  • f2

    F2 is a cross-platform command-line tool for batch renaming files and directories quickly and safely. Written in Go!

    Missing from this list is f2 (golang), one of my happiest finds of recent memory:


  • pup

    Parsing HTML at the command line

    I use pup for this. People who tried both, any difference?


  • eureka

    Need to encrypt a file before sending it to someone? This is it. (by mimoo)

  • lfs

    A linux utility to get information on filesystems, like df but better

  • hurl

    Hurl, run and test HTTP requests with plain text.

  • skim

    Fuzzy Finder in rust!

    I use skim / `sk` for this kind of task: https://github.com/lotabout/skim . For example, for iterating on jq incantations, I have in my shell rc file:

      function jqsk {

  • pipe-rename

    Rename your files using your favorite text editor

    I really like the approach of pipe-rename (https://github.com/marcusbuffett/pipe-rename) for renaming many files. It's especially convenient for people who can efficiently edit many files in their favorite text editor (so everybody here, I guess).

    Main problem: you maybe don't do this kind of operation frequently enough to remember how it's called or how you aliased it.

  • fselect

    Find files with SQL-like queries

    Shameless plug: a tool I wrote to manage downloads directory :)


  • runiq

    An efficient way to filter duplicate lines from input, à la uniq.

    A-ha! I knew I had one more.

    How many times have you wanted to dedup a (text) file, but definitely didn't have enough memory to perform the task? I found this one day when I had to dedup a set of .ndjson.gz files which totaled a cumulative 312 GBs. Utilizing the bloomfilter option, I was able to dedup the records without any large investment on my part.

    Anyways, runiq[1], "[an] efficient way to filter duplicate lines from input, à la uniq".

    It provides several ways to filter of which I almost always default to utilizing the bloomfilter implementation (`-f bloom`).


    [1] https://github.com/whitfin/runiq

    [2] https://whitfin.io/filtering-unique-logs-using-rust/

  • tig

    Text-mode interface for git

    Another entry in such a list might be tig (https://jonas.github.io/tig/), which is an adjunct to various git commands.

  • wat

    Which Alias To...? (by nmaggioni)

    Some time ago I have in fact written a small utility based on fzf that solves this problem by letting you comment aliases in your shell config file and fuzzy-search through them:

    https://github.com/nmaggioni/wat - Which Alias To...?

    The tag system is especially useful to me when I know the general concept I'm after but don't remember the exact wording of the command.

  • rags

    Rust Alias Generator for Shells

    Doesn't recommend tools, but rags[0] will look through your history to recommend aliases.


  • jq

    Command-line JSON processor

  • ffsend

    :mailbox_with_mail: Easily and securely share files from the command line. A fully featured Firefox Send client.

    Some might find `ffsend` useful to securely share files from your command line:


  • AdventOfCode

    Oh, don’t worry, I am familiar[1] with it! It doesn’t quite do this one thing as well as jo, so I like using both.

    [1] https://github.com/flurie/AdventOfCode/blob/main/2021/jq/d14... - unfortunately, this is the point at which I realized the stdlib was a little too anemic for general purpose solving and gave up

  • less

    Less - text pager

    Oh wow, that's a pretty new feature! It was added in v569, 2020[1].

    [1]: https://github.com/gwsw/less/commit/6a070fc53799fb86e0fe3880...

  • Simplest-File-Renamer

    Simplest file renamer - rename your files quickly and easily

    OMG! I created a GUI tool for this: Simplest File Renamer (Win, Mac, Linux).

    In my app, you can rename using your favorite code editor, so you have access to all your keyboard shortcuts.

    https://github.com/whyboris/Simplest-File-Renamer - MIT open source

  • dyff

    /ˈdʏf/ - diff tool for YAML files, and sometimes JSON

  • mitmproxy

    An interactive TLS-capable intercepting HTTP proxy for penetration testers and software developers.

  • dive

    A tool for exploring each layer in a docker image (by jauderho)

  • dateutils

    nifty command line date and time utilities; fast date calculations and conversion in the shell

    A little late to the party, but if you ever need to do basily anything with dates, check out dateutils (https://github.com/hroptatyr/dateutils).

  • detox

    Tames problematic filenames (by dharple)

    I'd like to mention two tools that I love and use:

    1. detox -- for sanitising filenames, https://github.com/dharple/detox

  • mtm

    Perhaps the smallest useful terminal multiplexer in the world.

NOTE: The number of mentions on this list indicates mentions on common posts plus user suggested alternatives. Hence, a higher number means a more popular project.

Suggest a related project

Related posts