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
  • WorkOS - The modern identity platform for B2B SaaS
  • InfluxDB - Power Real-Time Data Analytics at Scale
  • SaaSHub - Software Alternatives and Reviews

    https://lnav.org/2021/05/03/tailing-remote-files.html

    As for integrating with a “genders” host DB, there’s no direct support for it. But, lnav is scriptable, so I’m pretty sure it’s possible to write a script that does what you want. I can help with that if post in the github discussion: https://github.com/tstack/lnav/discussions

  • glow

    Render markdown on the CLI, with pizzazz! 💅🏻

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

    https://github.com/charmbracelet/glow

  • WorkOS

    The modern identity platform for B2B SaaS. The APIs are flexible and easy-to-use, supporting authentication, user identity, and complex enterprise features like SSO and SCIM provisioning.

    WorkOS logo
  • 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!

    https://github.com/sharkdp/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

  • InfluxDB

    Power Real-Time Data Analytics at Scale. Get real-time insights from all types of time series data with InfluxDB. Ingest, query, and analyze billions of data points in real-time with unbounded cardinality.

    InfluxDB logo
  • fx

    Discontinued 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)

    https://github.com/tobert/pcstat

  • 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.

    https://github.com/BurntSushi/ripgrep/issues/875

  • 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?

    https://github.com/jarun/nnn

  • 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

    :mag: 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:

    https://github.com/ayoisaiah/f2

  • pup

    Parsing HTML at the command line

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

    https://github.com/EricChiang/pup

  • eureka

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

  • dysk

    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 :)

    https://github.com/jhspetersson/fselect

  • 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 (by max-heller)

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

    https://github.com/max-heller/rags

  • jq

    Discontinued Command-line JSON processor [Moved to: https://github.com/jqlang/jq] (by stedolan)

  • 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:

    https://github.com/timvisee/ffsend

  • 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)

  • I have found https://github.com/denisidoro/navi very useful for remembering nifty one-liners.

    It's like a bookmark manager for commands.

    Also good for sharing them with the rest of your team, via a git repo.

  • 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.

  • SaaSHub

    SaaSHub - Software Alternatives and Reviews. SaaSHub helps you find the best software and product alternatives

    SaaSHub logo
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