Put joy and productivity inside your Terminal with those cool command line tools.
But before we start, let's cover how you can install and uninstall them.
Table of contents
- Quick install
- Put in .bash_profile or .zshrc
- Try, adopt or uninstall
- The 15 Command Line Tools which Spark Joy in Your Terminal
- *tldr-pages/tldr: 📚 Collaborative cheatsheets for console commands
- stedolan/jq: Command-line JSON processor
- direnv/direnv: unclutter your .profile
- jonas/tig: Text-mode interface for git
- tmux/tmux: terminal multiplexer
- santinic/how2: stackoverflow from the terminal
- BurntSushi/ripgrep : like grep, but better
- sharkdp/bat: A cat(1) clone with wings.
- junegunn/fzf: A command-line fuzzy finder
- sharkdp/fd: like find, but better
- inconshreveable/ngrok: Introspected tunnels to localhost
- Any cool tool that I'm missing?
I don't know about you, but I don't enjoy spending lots of time installing stuff.
So here is my executive summary
PROGRAMS="hub httpie ripgrep bat fzf fd fd-find jq autojump direnv tig tmux neovim exa just lazygit jump" NPM="how-2 tldr" export INSTALLER="sudo apt-get" # on Debian/Ubuntu export INSTALLER="something else" # on another Linux export INSTALLER="brew" # on macOS for program in $PROGRAMS ; do $INSTALLER install $program ; done for program in $NPM ; do npm install -g $program ; done
You may want to configure your .profile
## Put in .bash_profile or .zshrc alias ls=exa alias cat=bat
Try, adopt or uninstall
Try out the CLI tools. If you don't like them, uninstall them the same way
PROGRAMS="neovim exa" export INSTALLER="brew" # on macOS for program in $PROGRAMS ; do $INSTALLER uninstall $program ; done
This being done, let's move on to the tools!
The 15 Command Line Tools which Spark Joy in Your Terminal
*tldr-pages/tldr: 📚 Collaborative cheatsheets for console commands
A must have
The man page is too long, didn't read.
$ man git-checkout
$ tldr git-checkout
You will find what you need in 5s or less, 80% of the time or more
stedolan/jq: Command-line JSON processor
Unix scripts are based on the idea that you have a stdout with lines of outputs.
How do you autoamte things if you have JSON instead? (and JSON is everywhere)
jq is the answer
direnv/direnv: unclutter your .profile
My .profile is horrible so I'm looking forward to try this one
jonas/tig: Text-mode interface for git
tmux/tmux: terminal multiplexer
tmux is a terminal multiplexer: it enables a number of terminals to be created, accessed, and controlled from a single screen. tmux may be detached from a screen and continue running in the background, then later reattached.
santinic/how2: stackoverflow from the terminal
StackOverflow being such a massive part of a developer workflow, why not automating it?
BurntSushi/ripgrep : like grep, but better
ripgrep recursively searches directories for a regex pattern while respecting your gitignore
sharkdp/bat: A cat(1) clone with wings.
Syntax highlighting for a large number of programming and markup languages, because why not?
You can alias it
$ alias cat=bat
junegunn/fzf: A command-line fuzzy finder
Makes looking for a file as easy as in Visutal Studio Code or IntelliJ
sharkdp/fd: like find, but better
A simple, fast and user-friendly alternative to 'find'
A cd command that learns - easily navigate directories from the command line
inconshreveable/ngrok: Introspected tunnels to localhost
You have your web app working on localhost, the CI is broken and you can't share your work with your colleagues.
Except that with ngrok, you can!
A command-line tool that makes git easier to use with GitHub.
Build your own CLI tools, but maybe not in Bash
Command-line tools are great to automate and simplify your developer workflow.
Tools written by others are good, but why would you not write your own tools?
I have a strong opinion weakly held on this topic:
After 15 years of trying to program in Bash and being stuck at trials and errors, I think it's time to retire Bash.
Why not using your favorite programming language instead?
I found they are 10x time better than Bash.
Now my favorite language being Kotlin, I wanted to write a starter project for my own CLI tools using Kotlin multiplatform.
So if you allow me this shameless plug, have a look at the kotlin-cli-starter GitHub template
Any cool tool that I'm missing?
No such list would be ever complete, so please add your recommandation in the comments.
Updates from my readers
jesseduffield/lazygit simple terminal UI for git commands
lazygit is a very cool git client
See the demo
casey/just: 🤖 Just a command runner
Inspired by make
gsamokovarov/jump: Jump helps you navigate faster by learning your habits. ✌️
An alternative to
that feels like it can read your mind