A large part of my day is spent on the command line and so I’m always looking for tools that help me be more productive on the command-line. Here are tools that I use almost everyday.
bat is a
cat clone written in Rust. It’s super fast and has support for syntax highlighting, git integration and also buffers large files so you can scroll and read easily (something that has annoyed my with
delta is another command line tool written in Rust that integrates with Git and provides nicer
git diff output with syntax highlighting. You can configure it to be the default tool for handling
git diff and that’s it!
If you use ZSH, this is a must have. This is one of those transformative tools that probably saved me a few hours in a year.
A common problem with ZSH is that it’s features like showing branches in git repo etc. can be slow. If you work in a large monorepo like me, it can take 10-20 seconds just to
cd into a repo.
Powerlevel10k makes all those fancy zsh features asynchronous and allows you to mess around with your directory without waiting for it.
fd is a blazing fast alternative to
find. It has a nicer API and is usually faster. No other reasons required!
ripgrep is a replacement for
grep (again written in Rust). Its main feature is its speed and API.
Here’s an example search in AutoDispose
As an Android developer, pidcat is a superb way to monitor device log without having to open up IntelliJ or Android Studio. The combination of Android Studio + Chrome can really pressurize your RAM. Instead a combination of Vim/Emacs + Pidcat works well for simple use-cases.
Starship is a customizable prompt written in Rust. I tinkered with it a bunch but sadly it really slows down my shell in bigger monorepos so I ended up using powerlevel10k.
Nostromo helps you create and manage workflows spanning multiple commands with one set of commands. For example, to build a project, you might have to
cd into a directory, execute a
build command and maybe deploy an artifact somewhere.
Nostromo lets you do that in a composable way by concatenating commands that would look something like:
project-name build deploy
At work, we use Phabricator and to navigate it better, I wrote a small CLI app in Rust that helps you glance at your work queue. I’ve found that staying in the command-line is much faster than switching to a browser and waiting for Chrome to load.
Those were some of the command line tools that make me productive. Each person has a different workflow so I’d be curious to hear command-line tools that make you productive. You can reach out to me on Twitter