
Essential terminal packages in 2020
This is the start of a new series about maximising your terminal experience. I will write about what I think are essential packages for the CLI, a simple but super effective Vim setup and setting some sane Tmux defaults.
In this first article, I am going to list some of what I think are essential CLI packages. These are ones I use every day and could not live without. I am leaving Vim and Tmux off this list as they will get there own articles.
I spend all my time in a terminal. This is where I do all my development, hacking and note-taking. Spending so much time there I want it to work for me, providing a buttery smooth experience.
Here is a list of my top CLI packages.
1. ZSH and oh-my-zsh:
This is my chosen shell. It has way too many features to list here but here are a choice few:
- automatic cd: Just type the name of the directory
- recursive path expansion: For example “/u/lo/b” expands to “/usr/local/bin”. This is not one I use much because I lead on the tools mentioned below.
- spelling correction and approximate completion: If you make a small mistake typing a directory name, ZSH will fix it for you
- plugin and theme support: ZSH includes many different plugin frameworks. This is where
oh-my-zsh
comings in. Its a community drive framework for managing your ZSH configuration.
2. FZF
FZF is a command-line fuzzy finder. It is super fast, light and works so well with all my other tools.
3. RipGrep (rg)
RipGrep is a stupid fast replacement for grep. It does away with lots of the hard to remember flags that grep requires. By default, it respects your.gitignore
, and skips hidden files.
4. Autojump
Autojump is a super-fast way to navigate your filesystem. It learns the directories you visit most and remembers them for next time.
5. HTTPie
HTTPie is a user-friendly command line HTTP client. It has JSON support, syntax highlighting and lots more.
6. Bat
Bat is a drop-in replacement forcat
but with superpowers. It's highly configurable and supports syntax highlighting.
7. exa
exa is a modern replacement forls
. It is highly configurable, provides better defaults.
8. twf
twf is a tree view explorer inspired by fzf.
You can find my dotfileshere. This is how I use them, how will you?
Thanks for reading 🙏
If there is anything I have missed, or if there is a better way to do something then please let me know.
Check out our software focused podcast -Salted Bytes
Top comments(2)

- LocationScotland
- EducationSomething something cybernetics
- PronounsThey/them
- WorkGeneral-purpose software person
- Joined
This is always going to be opinionated, especially when people use words like, "essential"...
I usezsh
on Macs, but only because of Apple's bundling it to get around the GPL on bash. I thinkoh-my-zsh
is a waste of time, because I haven't found any features in it that I want and that I can't do, easily, without it. As far as I'm concerned, it's bloat.
fzf
is great. I'm not sure it'sessential but I do use it a lot, wrapped in something so it's not a hard dependency:
ifcommand-v fzf>/dev/null;then# progressive enhancement herefi
ripgrep
is great. I've used ack and the-silver-searcher too, and they're all good, butrg
is the winner as far as I'm concerned. It's worth it to learngrep
though :)
I'm sureautojump
is cool, and I know people use some things that are similar, likez
or the oldCDPATH
, but they're not how my brain works and I don't like using them.
httpie
looks alright, maybe the curl version of the grep -> ripgrep progressive enhancement. I don't use it, personally, but I can see the appeal.
I usebat
quite a lot, but I have a problem with it being used as a drop-in replacement forcat
. It's more a drop-in replacement forless -F
, otherwise it's one of them Useless Uses of Cat, but with wings.
exa
doesn't offer me more thanls
except maybe for colourising the file permissions. I don't need another full program for that!
twf
looks cool. I'll check it out, because I make my own mashups of commands withfzf
quite frequently.

- LocationBristol Uk
- WorkFull stack developer at Candide
- Joined
Thanks for your feedback. Maybe Essential is loaded. They are essential to me as they are part of my everyday toolkit.
For further actions, you may consider blocking this person and/orreporting abuse