DEV Community

Cover image for CLI tools you won't be able to live without 🔧

CLI tools you won't be able to live without 🔧

Alicia Sykes on January 19, 2023

As developers, we spend a lot of our time in the terminal. There's a lot of helpful CLI tools, which can make your life in the command line easier,...
Collapse
 
gbhorwood profile image
grant horwood

this is awesome and i fully plan to go over a bunch of these this weekend!

i would also suggest toilet for this list. figlet foo | toilet -f term --gay gives you a nice oh-my-zsh-style headline.

Collapse
 
mariamarsh profile image
Maria 🍦 Marshmallow

Very comprehensive list, thank you so much, Alicia! Here are a few more command line tools that you might find useful:

awscli: is a command line interface for Amazon Web Services. It provides commands for a variety of AWS services, including EC2, S3, and RDS.

mycli: is a command line interface for MySQL that provides auto-completion and syntax highlighting.

ncdu: a disk usage analyzer that can help you quickly identify which files and directories are taking up the most space on your file system.

Collapse
 
atinypixel profile image
Aziz Kaukawala • Edited

Awesome! 😍

Would like to add:

  • Micro: a modern and intuitive terminal-based text editor (better nano)! 😉
  • Forx: a command line tool for checking exchange rates between currencies, both crypto and fiat.
Collapse
 
lissy93 profile image
Alicia Sykes

Micro is awesome - thanks for sharing!! I've added it to the list :)
I'm usually a Neovim user, but I really enjoyed trying out Micro, and it looks like it'd be ideal for simple tasks.

Collapse
 
atinypixel profile image
Aziz Kaukawala

Indeed, micro makes editing config files in terminal a breeze. ✨

Thank you!

Collapse
 
moraym profile image
Moray Macdonald

Great list! Looks like I'm going to spend most of today installing things instead of working...

My contribution to the list would be autojump. It learns all the directories you frequently cd into so you can quickly jump to them later. e.g. j Doc will take me straight to /home/moray/Documents/ from wherever I was.

Collapse
 
proteusiq profile image
Prayson Wilfred Daniel

Nice. There is z on the list that does the same 😂

Collapse
 
raibtoffoletto profile image
Raí B. Toffoletto

Awesome list!! 🔥 There are many I didn't know about.

I'd just add tmux to the mix. I can't live without it.

Also for the fun, cmatrix is a nice effect to have in your terminal when you are afk... specially piped to lolcat 😅

Collapse
 
sgtnasty profile image
Ronaldo Nascimento

This list is actually useful, has most of the tools I use plus a few new ones. It explains about the tool, has screenshots and direct link to source. Very cool indeed, I would like to add the bitwarden command line clint with fzf are a great pair.

Collapse
 
cadnav profile image
</cadnav> • Edited

I literally just created this account so I could comment on on your munificence ; and I literally had to Google synonyms of generosity to find the word munificence. Seriously, this is mind blowing - more so because I avidly search for such tools but have never heard of several of these. Anyway, thank you SO VERY MUCH- I’ll see you guys around soon…we are all now pupils of the chosen one, Alicia

Collapse
 
lissy93 profile image
Alicia Sykes

Thank you so much @ ☺️☺️

Collapse
 
ahmed_onour profile image
Ahmed Onour

This list is the best list I ever found on tools 🔥

Collapse
 
cubiclesocial profile image
cubiclesocial

This is an interesting list. I'm not usually a fan of listicles (article + list = listicle) since they are rarely carefully curated and someone basically throws the list together to fulfill some quota. You obviously spent a great deal of time putting this together, including figuring out what tool they replace. Very nice.

Two observations/thoughts:

  1. speedtest-cli is fine as long as you understand that the results might not be realistic. Ookla, the organization behind speedtest.net, may have the largest selection of donated speed test servers globally, but ISPs are fully aware of their existence. Some ISPs even go out of their way to lie to their customers such as remove bandwidth caps for connections to the known, public list of Ookla speed test servers so that you get the advertised speeds you are paying for in just that one specific use-case. Ookla also sells cobranded versions of their speed testing widget to the ISPs that cater to each ISP's whims/desires, which I think is pretty sus. That said, something that does speed testing is better than nothing. Speed testing tools are also useful for the datacenter. For example, DigitalOcean advertises a minimum 1Gps link speed but I've seen burst rates up to 3Gps even for their cheapest VPS servers.

  2. From the current librsync GitHub repo:

The rsync algorithm is different from most differencing algorithms because it does not require the presence of the two files to calculate the delta. Instead, it requires a set of checksums of each block of one file, which together form a signature for that file. Blocks at any position in the other file which have the same checksum are likely to be identical, and whatever remains is the difference.

The bolded portion is the important phrase that makes both librsync and anything built on it likely to introduce data corruption over time. There is no guarantee that the same checksum of a portion of a file means that the stored data is actually identical. I have personally witnessed significant data corruption due to the underlying algorithm used in librsync. rsync and librsync are, in my experience, unsuitable for the purposes that they claim to be suitable for.

Collapse
 
lissy93 profile image
Alicia Sykes

Thanks @cubiclesocial - I wasn't actually aware of that librsync issue, I've not experienced corruption myself, but it's very good to be aware of. On the topic, is there anything similar that you recommend for incremental file transfers?
I have tried unison in the past, but since it works in a similar way, I'd imagine it would also be susceptible to this issue, especially when dealing with large data sets. For backups specifically, possibly restic could be an option?

Collapse
 
cubiclesocial profile image
cubiclesocial

Possibly. For backups, I use my own 3rd generation software called Cloud Backup. I backup my servers via a Remoted API Server + Cloud Storage Server instance. Been running that combo for years with only the occasional hiccup with network connectivity that usually clears itself up by re-running the backup automatically until it succeeds. Whenever I've needed to retrieve something, it's there and ready for use and can be pulled back onto the system within a few seconds from the backup. The setup handles multiple GB of transfers daily across multiple systems. I even use Cloud Backup when I need to migrate between *NIX systems because it faithfully preserves timestamps, owner, group, privileges, symlinks, etc.

Cloud Backup, Cloud Storage Server, and Remoted API Server were written before I came up with "question-answer" CLI interfaces. As a result, initial setup is really awkward and overly complex. So I can't really recommend using what I use for that reason. I'll eventually get around to fixing that problem.

I also have a very large drive attached to a cheap-o mini PC that is firewalled onto its own VLAN that I pay for a single user license of Backblaze (approx $7/mo). I push backup data to the Cloud Storage Server instance running on that system a couple of different ways. The Backblaze client software then picks up everything on the drive and puts it in the cloud. Basically, this setup gives me unlimited online backup storage for all my computer systems (instead of paying for cloud storage for each system). The key to saving money with Backblaze is to dump everything onto one system with at least one large external attached drive over USB. In my case, by using Cloud Backup, Backblaze just gets compressed, encrypted data blobs but someone could go a lot simpler than my setup and just dump straight files onto a similar setup for cheap, "unlimited" cloud storage (unlimited = as much locally attached storage as can be afforded). I'm a penny pinching fiend. I wish Backblaze had a Linux client but I suspect they don't because they don't want people to abuse their system any more than it currently gets abused.

The DIY alternative to paying for online cloud storage is to setup a backup system with Cloud Storage Server at a friend's house and use Remoted API Server on any public facing VPS to allow their home IP to freely roam and also to not have to worry about router/firewall rules. Then point Cloud Backup at the running Remoted API Server. Once setup, the bonus with this approach is that restoring everything from the backup takes a fraction of the time it would take over the Internet (especially when restoring multi-TB of data): Drive to the friend's house, pick up the equipment, drive home, adjust the configs to point at the local network, restore everything locally, revert the configs, drive back, put the equipment back in place. Fully restored in mere hours instead of days or weeks. Buy the friend a pizza or coffee to celebrate.

Collapse
 
billcosta profile image
Bill Costa • Edited

Lots of great tools. Thanks!

There were a few apps on your list that I had already discovered, installed, tried a few times, and forgot about. It was good to be reminded so I can look at them again. It can take a bit of effort to make a new tool part of your muscle memory, no matter how useful.

For me one indispensable tool, that now finally flows off my finger tips, is ack -- a grep-like source code search tool. Most of the time I can just type in a snippet of what I'm looking for, and it quickly finds that bit of code I wrote for some other project, but I just can't remember which one. The defaults settings are so well chosen, I rarely need to provide any options.

Collapse
 
afolarin profile image
Amos Folarin

You should definitely add fd (i.e. fd-find, fdfind on Ubuntu) to the list -- a nicer syntaxed find command with some nifty extras.
github.com/sharkdp/fd

Collapse
 
tamirazrab profile image
Tamir

List made me to go back to linux on my main machine ditching windows and all the games. I'd surely enjoy the perks I get in return. TY! 😄

Collapse
 
lissy93 profile image
Alicia Sykes

If you do prefer Windows, then all these utils should work in WSL :)

A few weeks ago I used yuk7/ArchWSL on Terminal, and the experience was surprisingly pleasant. With the Ubuntu image, you can also run GUI apps, which is pretty neat.

Collapse
 
tamirazrab profile image
Tamir

Thanks I was planning to dual boot, but WSL might save me some time surely.

Collapse
 
elias89 profile image
Elias • Edited

If some task is annoying to do it from some GUI there is always a way to do it from the cmd and that list shows it. Great post!
Thanks for sharing

Collapse
 
praful profile image
Praful

Thank you for writing this. You may have done something unique on the internet: written an article that more than lives up to its title!

More power to your elbow :)

Collapse
 
urbanisierung profile image
Adam

Thanks for this list! fzf is great!

Collapse
 
wadecodez profile image
Wade Zimmerman

jq is super underrated

Collapse
 
kbilleter profile image
kbilleter

gron is pretty useful too -- especially if you don't want to work through the structure (eg. gron json | grep 'thing' | gron -u)

Collapse
 
bosodo profile image
bosodo

One of the best articles I've seen here.

Collapse
 
realmecoy profile image
Brendon Mecoy

Thanks for this, definitely checking out thefuck and easy navigation...

Collapse
 
haxnet profile image
HaxNet

Thanks. Even though, I am not a developer I love working inside a terminal as much as possible.

Collapse
 
star_trooper profile image
Atharva Shirdhankar

Thanks @lissy93 for curating such an amazing CLI tools list✨.
I'm Ubuntu OS user so the tools mentioned many of them will be super useful to me🚀.

Collapse
 
milmike profile image
MilMike

nice list! I am already using some of these. I also can recommend silversearcher (finds files by content, kinda a grep alternative but cooler imo) and fd (better find)

Collapse
 
gudata profile image
gudata

You just broke my schedule for the rest of the night.

Collapse
 
prernaweb profile image
Andrew

Wow this list just blew my mind, I'll have to bookmark and try and process all of this over more than a few days.

Collapse
 
psycry_9 profile image
psychedelic crisis

Great article. Lived without most of these using command flags over the years but I've been in the field quite a while and haven't come across some of these.

Nice to see someone younger (I'm assuming looking at your bio pic) actually takes note of these things over the pond, the states are getting rather incompetent for people under 30+ years old

Collapse
 
drkvogel profile image
Chris Bird

How do you mean "the states are getting rather incompetent for people under 30+ years old"?

Collapse
 
lissy93 profile image
Alicia Sykes

The generation which grew up with low-level programming, and doing everything with native tools on the command line, are in an entirely different league. They (usually) have a deep understanding of what's actually going on under the hood, rather than just pasting commands and expecting an output. Which in turn makes them much better programmers.

I have huge respect, and am trying to learn more about these things.

But maybe in a few decades, when all the new devs are using AI generation tools, and low-code platforms, we'll be like the C developers of the 1980s!

Collapse
 
yaroslaff profile image
Yaroslav Polyakov

Very good list!

self-advertise here my hobby project: showcert - human-friendly openssl alternative to read/validate certificates

OpenSSL hates you. Do you know if google smtp server cert is fresh?

echo | openssl s_client -connect smtp.gmail.com:25 -starttls smtp 2>&1 | openssl x509 -noout -dates
Enter fullscreen mode Exit fullscreen mode

I love linux pipes too, but three command to show one very simple thing... (And I always have google for these commands, it's hard to remember). Isn't it easier:

$ showcert smtp.gmail.com:smtp
IP: 142.251.31.109
Names: smtp.gmail.com
notBefore: 2022-12-12 08:19:11 (38 days old)
notAfter: 2023-03-06 08:19:10 (45 days left)
Issuer: C=US O=Google Trust Services LLC CN=GTS CA 1C3
Enter fullscreen mode Exit fullscreen mode

Same for:

$ showcert dev.to
...
$ showcert dev.to -o pem --chain > /tmp/devto.pem
$ showcert /tmp/devto.pem 
Names: dev.to
notBefore: 2022-08-30 21:45:08 (141 days old)
notAfter: 2023-10-01 21:45:07 (255 days left)
Issuer: C=BE O=GlobalSign nv-sa CN=GlobalSign Atlas R3 DV TLS CA 2022 Q3
Enter fullscreen mode Exit fullscreen mode

Check all your LetsEncrypt and panic is anything will expire soon in 100 days (surely it will!):

showcert -q :le -w 100 || echo panic
Enter fullscreen mode Exit fullscreen mode

dev.to/yaroslaff/showcert-explore-...
github.com/yaroslaff/showcert

Collapse
 
lissy93 profile image
Alicia Sykes

That's pretty neat - thanks for sharing, I'm definitely going to try your tool out when I get home :)

Collapse
 
drsensor profile image
૮༼⚆︿⚆༽つ

Note that bpytop is rewritten into C++ and renamed as btop (news)

Collapse
 
kylereeman profile image
KyleReemaN

great list love the docker cli tools like <3

Collapse
 
parthprajapati profile image
Parth

Great Article it its really informative and innovative keep us posted with new updates. its was really valuable. thanks a lot

Collapse
 
serpent7776 profile image
Serpent7776

tldr isn't a better man, it's just shorter.
Not sure why would anyone need better cat. bat is just a really nice file previewer. But it's not even a better pager, since it still relies on one. Still useful, because I often launch vim only to have syntax highlighting.
fzf is awesome, but it's not better than find, it can only search by name. It's only better for interactive usage.
ripgrep is indeed better, use it all the time. It's awesome.
Instead of bpytop I would recommend btop. Looks like the same thing, but written in C++. github.com/aristocratos/btop
Since there's taskwarrior, I'd recommend timewarrior too. github.com/GothenburgBitFactory/ti...
For visual git usage I'd recommend tig github.com/jonas/tig
What I would really like is to have a better ranger (native binary, without python dependency)

Collapse
 
proteusiq profile image
Prayson Wilfred Daniel • Edited

👑 What a collection. It is by far the list I will camp for a long time.

  • watchexec is missing 😊It is a tool that allows us to execute command with changes in files we are watching

I also did not see ncdu which not only list disk storage but also allows deleting:) So for me ncdu > duf > df

Collapse
 
moopet profile image
Ben Sinclair

I did something similar with toilet/figlet:

Some of these tools seem like just a bit of fun but they can be a real productivity helper if you use them that way!

Collapse
 
julioolvr profile image
Julio Olivera

Love this list! I see many of my favorites. The one I'd suggest is xh as a replacement for HTTPie github.com/ducaale/xh. It's pretty much but so much faster - the almost negligible startup time is very noticeable.

Collapse
 
zinokader profile image
Zino Kader

Great list, Alicia!

I would like to suggest Portal as a quite different alternative to the file transfer utilities listed. You can read more about it here: dev.to/zinokader/portal-a-modern-f....

Or jump directly to the Portal GitHub.

:)

Collapse
 
themightywolfie profile image
Samaksh Khatri

Awesome post Alicia! These tools are quality of life upgrades ilto my workflow

I just wanted to know, what is the shell that you used to show examples of these tools? I really love it and I would like to use it as well

Collapse
 
lissy93 profile image
Alicia Sykes

Thanks Samaksh :)
It's a ZSH setup, and the prompt is forked from romkatv/powerlevel10k - I've put my config for it in lissy93/dotfiles :)

Collapse
 
chenyang_feng_a8852ac651b profile image
chenyang feng

Hello Alicia, this is awesome work, I have a quick question hope you could help. do you know how to acheive this like you do: every time the path and command line are seperate? and how do you get that full path feature?

Collapse
 
chenquan profile image
chenquan

Recommend a tool.

GitHub logo chenquan / diskusage

💥A tool for showing disk usage. (Linux, MacOS and Windows)

diskusage

Release Download GitHub

English | 简体中文

💥A tool for showing disk usage. (Linux, MacOS and Windows)

😜installation

go install github.com/chenquan/diskusage@latest
Enter fullscreen mode Exit fullscreen mode

or download.

👏how to use

$ diskusage -h
A tool for showing disk usage
GitHub: https://github.com/chenquan/diskusage
Issues: https://github.com/chenquan/diskusage/issues

Usage:
  diskusage [flags]

Examples:
1.The maximum display unit is GB: diskusage -u G
2.Only files named doc or docx are counted:
  a.diskusage -t doc,docx
  b.diskusage -f ".+\.(doc|docx)$"
3.Supports color output to pipeline:
  a.diskusage -c always | less -R
  b.diskusage -c always | more
4.Displays a 2-level tree structure: diskusage -d 2
5.Specify the directory /usr: diskusage --dir /usr
6.Export disk usage to file: diskusage > diskusage.txt

Flags:
  -a, --all             display all directories, otherwise only display folders whose usage size is not 0
  -c, --color string    set color output mode. optional: auto, always, ignore (default "auto")
  -d, --depth int       shows the depth of the tree directory structure (default 1)
      --dir string
Collapse
 
lissy93 profile image
Alicia Sykes

Oh this is super nice, thanks @chenquan 😊

Collapse
 
chenquan profile image
chenquan

🤝 You're welcome. You can have a star if you like. @lissy93

Collapse
 
thnery profile image
Tacio Nery

that's a huge list. i knew some tools and already use them, but you really presented awesome tools. thefuck is now my favourite tool of all times.

Collapse
 
denisrasulev profile image
Denis Rasulev

Great collection! Sad news - exa stopped being maintained, but supporters forked the project and created maintained version called EZA. Read more: denshub.com/en/best-ls-command-alt...

Collapse
 
dsaghliani profile image
verified_tinker

Great list, thank you! But not gonna lie, when I scanned the title image (or whatever it's called), I read "clitoris".

Collapse
 
lissy93 profile image
Alicia Sykes

😳 I hadn't noticed, but now I can't un-see it!

Collapse
 
mshirlaw profile image
Matt Shirlaw

Great list

Collapse
 
avh4 profile image
Aaron VonderHaar

Great resource!

I'd recommend github.com/extrawurst/gitui which I so far prefer over lazygit (though I've only tried the latter briefly).

Collapse
 
kissu profile image
Konstantin BIFERT

Really nice article, as always! 💪🏻
Reminds me of what DistroTube shared in some of his videos. Always nice to get a fresh reminder! 👌🏻

Collapse
 
yaronuliel profile image
Yaron Uliel

Great Stuff!

My two cents: The silver searcher - a super fast tool for searching in files contents (oriented for code search)

Collapse
 
mroeling profile image
Mark Roeling

very good alternative indeed, used it for a long time. ripgrep might even be better, imho. though ag is shorter ;)

Collapse
 
itsvinayak profile image
vinayak

Nice article 😁

Collapse
 
sachajw profile image
Sacha Wharton

Definitely one of the best post of tools I have seen!!! Thank you so much for sharing! I can recommend Topgrade github.com/topgrade-rs/topgrade to keep absolutely everything up to date.

Collapse
 
csmshah profile image
cs-mshah
Collapse
 
midnqp profile image
Muhammad Bin Zafar • Edited

I am the 2000th person to save this post!
This post was an insightful one!

Collapse
 
devpbrilius profile image
Povilas Brilius

Standing high-scholie...

Collapse
 
acrolink profile image
Acrolink

Thank you so much, Alicia!

Collapse
 
jdxlabs profile image
jdxlabs

I would also recommend Fasd with the "z" command to go quickly to the most often used directories, it saved me so much time

Collapse
 
cavo789 profile image
Christophe Avonture

Nice post, thanks !

Collapse
 
moofoo profile image
Nathan Cook

What a wonderful resource! Thank you!

Collapse
 
roman_m profile image
RomanMizulin

Really nice one 💕

Collapse
 
rosesese profile image
Rosesese

That’s an amazing list! Thanks for sharing!

Collapse
 
schalkneethling profile image
Schalk Neethling

Wow!! Thank you for taking the time to put this list together.

Collapse
 
avsthiago profile image
Thiago da Silva Alves

Nice list!

Personality, I would replace by kdash by k9s, as it has more features including CRUD resources.

Collapse
 
nerro profile image
Nerro

My question is, are there a list of commands separate from the cli commands that we have to master in order to use these tools again?

Collapse
 
th0j profile image
Tho Vo

Can you share me how to create icon apple in promt in your terminal. Look interesting!

Collapse
 
lissy93 profile image
Alicia Sykes

Sure, it's based off of PowerLevel10k :)

I've added the config to my dotfiles, in case that's helpful

GitHub logo Lissy93 / dotfiles

🧰 ~ • My Đotfiles

~/.Dotfiles

My dotfiles for configuring literally everything (automatically!)

$HOME, sweet $HOME

Contents



Intro

What are dotfiles?

One of the beautiful things about Linux, is how easily customizable everything is. Usually these custom configurations are stored in files that start with a dot (hence dotfiles!), and typically located in your users home ~, or better yet ~/.config (even this can be customized, for apps that respect the XDG Base Directory spec). Some examples of dotfiles that you're likely already familiar with include .gitconfig, .zshrc or .vimrc.

You will often find yourself tweaking your configs over time, so that your system perfectly matches your needs…




Collapse
 
zerolife profile image
Andrew Abraham

This is awesome. Thank you!

Collapse
 
enmachs profile image
Enmanuel Chirinos

Darn! Can’t decide which try first 😂

Collapse
 
vigo profile image
Uğur "vigo" Özyılmazel

good selection, thank you Alicia!

Collapse
 
k1lgor profile image
k1lgor

Nice article 👏👏 Currently using maybe 1/4 of the above mentioned tools.

Collapse
 
saeedvaziry profile image
Saeed Vaziry

This is truly a GEM box! Thanks for sharing

Collapse
 
pzelnip profile image
Adam Parkin

Awesome list, even as someone who's been living in the terminal for a very long time I still found some gems in here I'd never heard of before. Thanks for sharing!

Collapse
 
neumatic_78 profile image
neu-ma-tic

"can't live without"

have used almost none of this bloat

Collapse
 
crinklywrappr profile image
Daniel Fitzpatrick

Awesome list! You should also check out tdfgo

Collapse
 
ajmalj profile image
Mohammed Ajmal

Thank you

Collapse
 
cgatian profile image
Chaz Gatian

Thank you

Collapse
 
sionta profile image
Andre Attamimi

thanks 🤗

Collapse
 
rokometek profile image
Matija Perhoč

Very good list. Definitely i add this post to my favorites.
I will add
BTOP - one more resource manager

Collapse
 
guibleme profile image
Guilherme Barbosa Leme

this list is🔥

Collapse
 
poetaman profile image
poetaman

arttime is a must for both art and productivity.

Collapse
 
junaidp7 profile image
junaidP7

Thanks for the awesome tools :D

Collapse
 
gopher65 profile image
Divya A

Great list, I would also recommend Savvy CLI
It records your CLI commands and generates runbooks automatically for you. Great for debugging during oncall or sharing knowledge.

Collapse
 
leesinnnn profile image
leesin

thefuck is awesome great

Collapse
 
rishikeshk07 profile image
RISHIKESHk07

An epic set of tools !!! , is there place where we could download multiple of them at the sametime ?

Collapse
 
pavanrajesh profile image
Pavan-Rajesh • Edited

forgot starship

Collapse
 
alfakes profile image
alfa beta • Edited

it's awsome information
Asuransi Allianz

Collapse
 
devfranpr profile image
DevFranPR

Daaaamn that's a lot of good cli tools thx.

Collapse
 
Sloan, the sloth mascot
Comment deleted
Collapse
 
acrolink profile image
Acrolink

Thank you so much, Alicia.

Collapse
 
joto profile image
Jiri Otoupal

You forgot BME which lets you bookmark commands and sequences with custom placeholder arguments.

Collapse
 
hetal_patel profile image
Hetal Patel

Fantastic article! Appreciate the share; this list is truly impressive, and there are several gems here I was unaware of. 🔥