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:
- An introduction to the Linux Terminal
- Using the Terminal
- tldr Pages (easier to scan than man pages, more practical)
- Explain Shell (paste your command, and let explain shell… well… explain it)
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:
- Bash Guide for Beginners
- Bash Scripting Tutorial
- Bash One-Liners
- Advanced Bash Scripting Guide
- Bash Cookbook
- Bash Guide
- Bash Pocket Reference
- Bash Programming Intro
- Bash Reference Manual
- Bash Scripting Cheatsheet
- Bash Shell Scripting
- Bash Wiki
- Learn Shell
- Learn X in Y Minutes Where X is Bash
- Shell Guide
- The Art of Command Line
- The Art of Command Line
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 🙂.
- Windows Terminal
- Conemu
- Fluent Terminal
- Powershell (it’s a shell, not a terminal, but still very useful)
- PuTTY
- ZOC Terminal
- Cmder
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 🦄.