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

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.

Replace $ man git-checkout by $ 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'

wting/autojump

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!

github/hub:

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.

Python, Go and JavaScript are all good choices to write a CLI tool.

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 cd that feels like it can read your mind

This post is also available on DEV.