Here is a list of tools, utilities, and learning resources for those command-line aficionados out there. I’ll add more to the list. If you have anything to share, just shoot me an email (me@volkan.io), and I’ll update the article.

Getting Comfortable With the Linux Terminal

Here are some articles you can read to get more intimate with the command line:

Commands That You’ll Use Frequently

The more terminal you know, the more power you’ll have. Yet, here is a list of common commands that you might want to start familiarizing yourself with:

awk, sed, grep, sort, uniq, cat, cut, echo, egrep, fgrep, wc, less, more, ps, top, htop, atop, nmon, iostat, vmstat, ifconfig, nmap, tcpdump, ping, traceroute

👆 These are the ones that you might use frequently. Obviously, there are more that you might want to look into.

Know Enough Shell Scripting to Be Dangerous

Here are a few guides on the topic:

Connecting to a Remote Server

Connecting a remote server via SSH is something you’ll have to do sooner or later.

Explore Community Docs
If you need more than connecting to a server. Like, for example, if you need to install and configure applications, services, proxies, firewalls, databases, containers, and the like, then DigitalOcean’s community tutorials is one of the best resources that you can have; closely followed by Linode’s helpful articles.

The only commands you need to master probably are ssh and ssh-copy-id.

Below, I’ll list some terminal emulators that you might want to try out too; however, most of the time, the default terminal emulator on your operating system will be sufficient for your needs.

Windows and Terminal
If you have a Windows development machine and you are planning to work on Linux-like environments, do yourself a favor and give Windows Subsystem for Linux a go. You’ll thank me later.

Cross-Platform Terminal Emulators

Alacritty

Alacritty is the fastest terminal emulator that you can find around. It’s fast, lightweight, based on OpenGL.

However, when I say lightweight, it truly is lightweight. You cannot find tabs, split windows, and other fancy add-ons that other terminal emulators provide.

To be productive with alacritty, you’ll have to learn tmux too, so that you’ll have an equivalent tabbed user interface experience that you might be used to from other terminal emulators.

💁‍♂️ Here’s a quick and easy guide to tmux.

Kitty

Kitty is another fast, GPU-based terminal. So what makes it different than, say alacritty? It is feature-rich, scriptable, and composable while still being fast and minimalistic.

Hyper

Hyper is an electron-based terminal emulator. It is built on HTML/CSS/JS. Fully extensible, absolutely hackable. If you want something customizable, with hyper sky is the limit.

Mosh

Mosh is especially useful when you are, say, using your terminal on a train, where connectivity is intermittent and unreliable.

It is a replacement for interactive SSH terminals. It works wonders, especially over Wi-Fi, cellular, and long-distance links.

Terminus

Terminus boast to be a customizable terminal for the modern age, and it does look pretty slick if you ask me.

Linux Terminal Emulators

For the Linux UI fans out there, here are a few terminal emulators that you can try.

  • Guake, is my preferred terminal on my Ubuntu, mostly because I’m so used to the Quake-style keyboard shortcuts to show and hide it. If you are a gamer, it becomes second nature to use it.
  • Terminator is really useful if you find yourself needing to split your window horizontally and vertically to see multiple terminal sessions simultaneously.
  • Konsole is another popular option to try out.
  • So is Tilda.

Mac Terminal Emulators

Mac Terminal emulators come and go all the time, yet there’s only a single one that stays and gets better year after year: iTerm2.

While the default Terminal app is more than enough for your programming needs, in case you want to spice things up a bit, you can try out iTerm2. It provides a split window view similar to terminator, so if you come from the Unix world and seek a similar experience, iTerm2 can be your ally.

Windows Terminal Emulators

To be honest, I don’t use Terminal on Windows too much; however, the following are the terminal emulators I’ve used and liked over time. Pick your own poison 🙂.

Shells

Picking a terminal emulator is the first step in the journey of making your terminal experience better. Next up is picking up a shell.

Z-shell is popular nowadays, and whoever uses Z-shell also installs Oh My Zsh as a sane starting point in customizing their shell.

There is a zsh Quickstart Kit that you might want to look at too.

Fish is another popular shell that is famous for its autocomplete support.

Ah, there is also oh my fish to set up your fish 🐠.

Terminal Utilities

Here I’m listing terminal tools and utilities I’ve found useful over the course of years.

Find; Search; Filter Files, Folders and Streams

  • ack (this is a must-learn, especially if you search source code a lot)
  • fzf (Fuzzy Finder: Another finder utility that you’d question how you lived without it)
  • grep (must be in your toolbox)
  • peco (peco is a simplistic, interactive filtering tool)
  • ripgrep (ripgrep recursively searches your directories)
  • The Silver Searcher (a code searching tool similar to ack)
  • fx (a utility to view JSON in terminal)
  • jq (so as this one)
  • sed (Stream Editor—another powerful tool to learn)
  • zoxide (alias cd zoxide)

Help

  • ExplainShell is a web app to explain the shell command you paste in.
  • fuck is a command-line utility that recovers you from your mistakes.
  • how2 finds the simplest way to do something in a Unix shell.
  • howdoi provides instant coding answers via the command line.
  • tldr-pages is for those who are tired of reading the full manual.
  • tldr.sh is the website for tldr-pages.

Terminal Multiplexing

File and Folder Management

  • exa (alias ls exa)
  • trash (moves files and directories to trash)
  • jump (jump helps you navigate faster by learning your habits)
  • autojump (similar to jump)
  • lazy-cd (path bookmarking for bash)
  • aliasme (a shell script to organize your aliases)
  • fkill-cli (fabulously kill processes with extreme prejudice)
  • direnv (unclutter your .profile)

Monitoring and System Info

  • htop (better top)
  • vtop (similar to htop, but graphical)
  • glances (better htop 🙂)
  • neofetch (a command-line system information tool)
  • progress (shows the progress of cp, mv, dd, etc.)

Getting $#!% Done

  • todo.txt (a future-proof task tracking tool)

Mac-Specific

  • mas (Mac AppStore command-line interface because why not 🤷‍♂️)
  • homebrew (the closest you can get to a package manager for Mac OS)
  • macports (similar to homebrew)

I Want to Suggest a New Resource

Feel free to shoot me an email (me@volkan.io) if you know other useful tools that you love to use.

I will update the list whenever I find new stuff.

Until next time… May the source be with you 🦄.