Quantcast
Viewing latest article 42
Browse Latest Browse All 54

CLI tools you can't live without 🔧

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, faster and generally more fun.

This post outlines my top 50 must-have CLI tools, which I've come to rely on. If there's anything I'm missing - do let me know in the comments :)

At the end of the article, I've included some scripts to help you automate the installation and updating of these tools on various systems/ distros.

Utils

thefuck - Auto-correct miss-typed commands

thefuck is one of those utilities you won't be able to live without once you've tried it. Whenever you mis-type a command and get an error, just run fuck and it'll auto-correct it. Use up/down to choose a correction, or just run fuck --yeah to just execute the most likely immediately.

Image may be NSFW.
Clik here to view.
the-fuck-example-usage

Image may be NSFW.
Clik here to view.
View thefuck on GitHub
Image may be NSFW.
Clik here to view.
Author nvbn
Image may be NSFW.
Clik here to view.
Written in Python

Install ```bash # MacOS (via Homebrew) brew install thefuck # Arch Linux sudo pacman -S thefuck # FreeBSD pkg install thefuck ```

zoxide - Easy navigation (better cd)

z lets you jump to any directory without needing to remember or specify its full path. It remembers which directories you've visited, so you can jump around quickly - you don't even need to type the full folder name. It also has an interactive selection option, using fzf so you can live-filter directory results

Image may be NSFW.
Clik here to view.
zoxide-example-usage

Image may be NSFW.
Clik here to view.
View zoxide on GitHub
Image may be NSFW.
Clik here to view.
Author ajeetdsouza
Image may be NSFW.
Clik here to view.
Written in Rust

Install ```bash # MacOS (via Homebrew) brew install zoxide # Arch Linux sudo pacman -S zoxide # Debian / Ubuntu sudo apt install zoxide # FreeBSD pkg install zoxide # Other (via Rust Creates) cargo install zoxide --locked ```

tldr - Community-maintained docs (better man)

tldr is a huge collection of community-maintained man pages. Unlike traditional man pages, they're summarized, contain useful usage examples and nicely colourized for easy reading

Image may be NSFW.
Clik here to view.
tldr-example-usage

Image may be NSFW.
Clik here to view.
View tldr on GitHub
Image may be NSFW.
Clik here to view.
Author tldr-pages

Install ```bash # MacOS (via Homebrew) brew install tldr # Other (via NPM) npm install -g tldr ```

scc - Count lines of code (better cloc)

scc gives you a breakdown of number of lines of code written in each language for a specific directory. It also shows some fun stats, like estimated cost to develop and complexity info. It's incredibly fast, very accurate and has support for a wide range of languages

Image may be NSFW.
Clik here to view.
scc-example-usage

Image may be NSFW.
Clik here to view.
View scc on GitHub
Image may be NSFW.
Clik here to view.
Author boyter
Image may be NSFW.
Clik here to view.
Written in Go

Install ```bash # MacOS (via Homebrew) brew install scc # Other (via go) go install github.com/boyter/scc/v3@latest ```

exa - Listing Files (better ls)

exa is a modern Rust-based replacement for the ls command, for listing files. It can display file-type icons, colors, file/folder info and has several output formats - tree, grid or list

Image may be NSFW.
Clik here to view.
exa-example-usage

Image may be NSFW.
Clik here to view.
View exa on GitHub
Image may be NSFW.
Clik here to view.
Author ogham
Image may be NSFW.
Clik here to view.
Written in Rust

Install ```bash # MacOS (via Homebrew) brew install exa # Arch Linux sudo pacman -S exa # Debian / Ubuntu sudo apt install exa ```

duf - Disk Usage (better df)

duf is great for showing info about mounted disks and checking free space. It produces a clear and colorful output, and includes options for sorting and customizing results.

Image may be NSFW.
Clik here to view.
duf-example-usage

Image may be NSFW.
Clik here to view.
View duf on GitHub
Image may be NSFW.
Clik here to view.
Author muesli
Image may be NSFW.
Clik here to view.
Written in Go

Install ```bash # MacOS (via Homebrew) brew install duf # Arch Linux sudo pacman -S duf # Debian / Ubuntu sudo apt install duf # FreeBSD pkg install duf ```

aria2 - Download Utility (better wget)

aria2 is a lightweight, multi-protocol, resuming download utility for HTTP/HTTPS, FTP, SFTP, BitTorrent and Metalink, with support for controlling via an RPC interface. It's incredibly feature rich, and has tons of options. There's also ziahamza/webui-aria2 - a nice web interface companion.

Image may be NSFW.
Clik here to view.
aria2c-example-usage

Image may be NSFW.
Clik here to view.
View aria2 on GitHub
Image may be NSFW.
Clik here to view.
Author aria2
Image may be NSFW.
Clik here to view.
Written in C++

Install ```bash # MacOS (via Homebrew) brew install aria2 # Arch Linux sudo pacman -S aria2 # Debian / Ubuntu sudo apt install aria2 ```

bat - Reading Files (better cat)

bat is a clone of cat with syntax highlighting and git integration. Written in Rust, it's very performant, and has several options for customizing output and theming. There's support for automatic piping and file concatenation

Image may be NSFW.
Clik here to view.
bat-example-usage

Image may be NSFW.
Clik here to view.
View bat on GitHub
Image may be NSFW.
Clik here to view.
Author sharkdp
Image may be NSFW.
Clik here to view.
Written in Rust

Install ```bash # MacOS (via Homebrew) brew install bat # Arch Linux sudo pacman -S bat # Debian / Ubuntu sudo apt install bat ```

diff-so-fancy - File Comparisons (better diff)

diff-so-fancy gives you better looking diffs for comparing strings, files, directories and git changes. The change highlighting makes spotting changes much easier, and you can customize the output layout and colors

Image may be NSFW.
Clik here to view.
diff-so-fancy-example-usage

Image may be NSFW.
Clik here to view.
View diff-so-fancy on GitHub
Image may be NSFW.
Clik here to view.
Author so-fancy
Image may be NSFW.
Clik here to view.
Written in Perl

Install ```bash # MacOS (via Homebrew) brew install diff-so-fancy # Arch Linux sudo pacman -S diff-so-fancy # Debian / Ubuntu sudo apt install diff-so-fancy ```

entr - Watch for changes

entr lets you run an arbitrary command whenever file changes. You can pass a file, directory, symlink or regex to specify which files it should watch. It's really useful for automatically rebuilding projects, reacting to logs, automated testing, etc. Unlike similar projects, it uses kqueue(2) or inotify(7) to avoid polling, and improve performance

Image may be NSFW.
Clik here to view.
entr-example-usage

Image may be NSFW.
Clik here to view.
View entr on GitHub
Image may be NSFW.
Clik here to view.
Author eradman
Image may be NSFW.
Clik here to view.
Written in C

Install ```bash # MacOS (via Homebrew) brew install entr # Arch Linux sudo pacman -S entr # Debian / Ubuntu sudo apt install entr ```

exiftool - Reading + writing metadata

ExifTool is handy utility for reading, writing, stripping and creating meta information for a wide variety of file types. Never accidentally leak your location when sharing a photo again!

Image may be NSFW.
Clik here to view.
exiftool-example-usage

Image may be NSFW.
Clik here to view.
View exiftool on GitHub
Image may be NSFW.
Clik here to view.
Author exiftool
Image may be NSFW.
Clik here to view.
Written in Perl


fdupes - Duplicate file finder

jdupes is used for identifying and/or deleting duplicate files within specified directories. It's useful for freeing up disk space when you've got two or more identical files

Image may be NSFW.
Clik here to view.
fdupes-example-usage

Image may be NSFW.
Clik here to view.
View jdupes on GitHub
Image may be NSFW.
Clik here to view.
Author jbruchon
Image may be NSFW.
Clik here to view.
Written in C


fzf - Fuzzy file finder (better find)

fzf is an extremely powerful, and easy to use fuzzy file finder and filtering tool. It lets you search for a string or pattern across files. fzf also has plugins available for most shells and IDEs, for showing instant results while searching. This post by Alexey Samoshkin highlights some of it's use cases.

Image may be NSFW.
Clik here to view.
fzf-example-usage

Image may be NSFW.
Clik here to view.
View fzf on GitHub
Image may be NSFW.
Clik here to view.
Author junegunn
Image may be NSFW.
Clik here to view.
Written in Go

Install ```bash # MacOS (via Homebrew) brew install fzf # Arch Linux sudo pacman -S fzf # Debian / Ubuntu sudo apt install fzf ```

hyperfine - Command benchmarking

hyperfine makes it easy to accurately benchmark and compare arbitrary commands or scripts. It takes care of warm-up runs, clearing the cache for accurate results and preventing interference from other programs. It can also export results as raw data and generate charts.

Image may be NSFW.
Clik here to view.
hyperfine-example-usage

Image may be NSFW.
Clik here to view.
View hyperfine on GitHub
Image may be NSFW.
Clik here to view.
Author sharkdp
Image may be NSFW.
Clik here to view.
Written in Rust

Install ```bash # MacOS (via Homebrew) brew install hyperfine # Arch Linux sudo pacman -S hyperfine # Debian / Ubuntu sudo apt install hyperfine ```

just - Modern command runner (better make)

just is similar to make but with some nice additions. It let's you group your projects commands together into recopies, which can be easily listed and run. Supports aliases, positional arguments, different shells, dot env integration, string interprulation, and pretty much everything else you could need

Image may be NSFW.
Clik here to view.
View just on GitHub
Image may be NSFW.
Clik here to view.
Author casey
Image may be NSFW.
Clik here to view.
Written in Rust

Install ```bash # MacOS (via Homebrew) brew install just # Arch Linux sudo pacman -S just # Debian / Ubuntu sudo apt install just ```

jq - JSON processor

jq is like sed, but for JSON - you can use it to slice and filter and map and transform structured data with ease. It can be used to write complex queries to extract or manipulate JSON data. There's also a jq playground that you can use to try it out, or formulate queries with live feedback

Image may be NSFW.
Clik here to view.
View jq on GitHub
Image may be NSFW.
Clik here to view.
Author stedolan
Image may be NSFW.
Clik here to view.
Written in C


most - Multi-window scroll pager (better less)

most is a pager, for reading through long files or command outputs. most supports multi-windows and has the option to not wrap text

Image may be NSFW.
Clik here to view.
Author Jed
Image may be NSFW.
Clik here to view.
Written in S-Lang


procs - Process viewer (better ps)

procs is an easy to navigate process viewer, it has colored highlighting, makes sorting and searching for processes easy, has tree view and updates in real-time

Image may be NSFW.
Clik here to view.
procs-example-usage

Image may be NSFW.
Clik here to view.
View procs on GitHub
Image may be NSFW.
Clik here to view.
Author dalance
Image may be NSFW.
Clik here to view.
Written in Rust


rip - Deletion tool (better rm)

rip is a safe, ergonomic and performant deletion tool. It let's you intuitively remove files and directories, and easily restore deleted files

Image may be NSFW.
Clik here to view.
rip-example-usage

Image may be NSFW.
Clik here to view.
View rip on GitHub
Image may be NSFW.
Clik here to view.
Author nivekuil
Image may be NSFW.
Clik here to view.
Written in Rust


ripgrep - Search within files (better grep)

ripgrep is a line-oriented search tool that recursively searches the current directory for a regex pattern. It can ignore the contents of .gitignore and skip binary files. It's able to search within compressed archives, or only search specific extension, and understands files using various encoding methods

Image may be NSFW.
Clik here to view.
ripgrep-example-usage

Image may be NSFW.
Clik here to view.
View ripgrep on GitHub
Image may be NSFW.
Clik here to view.
Author BurntSushi
Image may be NSFW.
Clik here to view.
Written in Rust


rsync - Fast, incremental file transfer

rsync lets you copy large files locally or to or from remote hosts or external drives. It can be used to keep files across multiple locations synced, and is perfect for creating, updating and restoring backups

Image may be NSFW.
Clik here to view.
View rsync on GitHub
Image may be NSFW.
Clik here to view.
Author WayneD
Image may be NSFW.
Clik here to view.
Written in C


sd - Find and replace (better sed)

sd is an easy, fast and intuitive find and replace tool, based on string literals. It can be executed on a file, an entire directory, or any piped text

Image may be NSFW.
Clik here to view.
sd-example-usage

Image may be NSFW.
Clik here to view.
View sd on GitHub
Image may be NSFW.
Clik here to view.
Author chmln
Image may be NSFW.
Clik here to view.
Written in Rust


tre - Directory hierarchy (better tree)

tre outputs a tree stye list of files for your current or a specified directory, with colors. When running with the -e option, it numbers each item, and creates a temporary alias that you can use to quickly jump to that location

Image may be NSFW.
Clik here to view.
tre-example-usage

Image may be NSFW.
Clik here to view.
View tre on GitHub
Image may be NSFW.
Clik here to view.
Author dduan
Image may be NSFW.
Clik here to view.
Written in Rust


xsel - Access the clipboard

xsel let's you read and write to the X Selection clipboard via the command line. It's useful for piping command output to the clipboard, or a copied data into a command

Image may be NSFW.
Clik here to view.
View xsel on GitHub
Image may be NSFW.
Clik here to view.
Author kfish
Image may be NSFW.
Clik here to view.
Written in C



CLI Monitoring and Performance Apps

bandwhich - Bandwidth utilization monitor

Show bandwidth usage, connection information, outgoing hosts and DNS queries in real-time

Image may be NSFW.
Clik here to view.
bandwhich-example-usage

Image may be NSFW.
Clik here to view.
View bandwhich on GitHub
Image may be NSFW.
Clik here to view.
Author imsnif
Image may be NSFW.
Clik here to view.
Written in Rust


ctop - Container metrics and monitoring

Like top, but for monitoring resource usage for running (Docker and runC) containers. It shows real-time CPU, memory and network bandwidth as well as the name, status and ID of each container. There's also a built-in log viewer, and options to manage (stop, start, exec, etc) containers

Image may be NSFW.
Clik here to view.
ctop-example-usage

Image may be NSFW.
Clik here to view.
View ctop on GitHub
Image may be NSFW.
Clik here to view.
Author bcicen
Image may be NSFW.
Clik here to view.
Written in Go


bpytop - Resource monitoring (better htop)

bpytop is a fast, interactive, visual resource monitor. It shows top running processes, recent CPU, mem, disk and network history. From the interface you can navigate, sort and search - there's also support for custom color themes

Image may be NSFW.
Clik here to view.
bpytop-example-usage

Image may be NSFW.
Clik here to view.
View bpytop on GitHub
Image may be NSFW.
Clik here to view.
Author aristocratos
Image may be NSFW.
Clik here to view.
Written in Python


glances - Resource monitor + web and API

glances is another resource monitor, but with a different feature set. It includes a fully responsive web view, a REST API and historical monitoring. It's easily extendable, and can be integrated with other services

Image may be NSFW.
Clik here to view.
glances-example-usage

Image may be NSFW.
Clik here to view.
View glances on GitHub
Image may be NSFW.
Clik here to view.
Author nicolargo
Image may be NSFW.
Clik here to view.
Written in Python


gping - Interactive ping tool (better ping)

gping can run ping tests on multiple hosts, while showing results in real-time graph. It can also be used to monitor execution time, when used with the --cmd flag

Image may be NSFW.
Clik here to view.
gping-example-usage

Image may be NSFW.
Clik here to view.
View gping on GitHub
Image may be NSFW.
Clik here to view.
Author orf
Image may be NSFW.
Clik here to view.
Written in Rust


dua-cli - Disk usage analyzer and monitor (better du)

dua-cli let's you interactively view used and available disk space for each mounted drive, and makes freeing up storage easy

Image may be NSFW.
Clik here to view.
dua-cli-usage-example

Image may be NSFW.
Clik here to view.
View dua-cli on GitHub
Image may be NSFW.
Clik here to view.
Author Byron
Image may be NSFW.
Clik here to view.
Written in Rust


speedtest-cli - Command line speed test utility

speedtest-cli just runs an internet speed test, via speedtest.net - but straight from the terminal :)

Image may be NSFW.
Clik here to view.
speedtest-cli-example-usage

Image may be NSFW.
Clik here to view.
View speedtest-cli on GitHub
Image may be NSFW.
Clik here to view.
Author sivel
Image may be NSFW.
Clik here to view.
Written in Python


dog - DNS lookup client (better dig)

dog is an easy-to-use DNS lookup client, with support for DoT and DoH, nicely coloured outputs and the option to emit JSON

Image may be NSFW.
Clik here to view.
dog-example-usage

Image may be NSFW.
Clik here to view.
View dog on GitHub
Image may be NSFW.
Clik here to view.
Author ogham
Image may be NSFW.
Clik here to view.
Written in Rust



CLI Productivity Apps

Surf the web, play music, check emails, manage calendars, read the news and more, all without leaving the terminal!

browsh - CLI web browser

browsh is a fully interactive, real-time, and modern text-based browser rendered to TTYs and browsers. It supports both mouse and keyboard navigation, and is surprisingly feature rich for a purely terminal based application. It also mitigates battery drain issues that plague modern browsers, and with support for MoSH, you can experience faster load times due to reduced bandwidth

Image may be NSFW.
Clik here to view.
browsh-example-usage

Image may be NSFW.
Clik here to view.
View browsh on GitHub
Image may be NSFW.
Clik here to view.
Author browsh-org
Image may be NSFW.
Clik here to view.
Written in JavaScript


buku - Bookmark manager

buku is a terminal-based bookmark manager, with tons of configuration, storage and usage options. There's also an optional web UI and browser plugin, for accessing your bookmarks outside of the terminal

Image may be NSFW.
Clik here to view.
buku-example-usage

Image may be NSFW.
Clik here to view.
View buku on GitHub
Image may be NSFW.
Clik here to view.
Author jarun
Image may be NSFW.
Clik here to view.
Written in Python


cmus - Music browser / player

cmus is terminal music player, controlled with keyboard shortcuts. It has support for a wide range of audio formats and codecs, and allows organising tracks into playlists and applying playback settings

Image may be NSFW.
Clik here to view.
cmus-example-usage

Image may be NSFW.
Clik here to view.
View cmus on GitHub
Image may be NSFW.
Clik here to view.
Author cmus
Image may be NSFW.
Clik here to view.
Written in C


cointop - Track crypto prices

cointop show current crypto prices, and track the price history of your portfolio. Supports price alerts, historical charts, currency conversion, fuzzy searching, and much more. You can try the demo via the web at cointop.sh, or by running ssh cointop.sh

Image may be NSFW.
Clik here to view.
cointop-example-usage

Image may be NSFW.
Clik here to view.
View cointop on GitHub
Image may be NSFW.
Clik here to view.
Author cointop-sh
Image may be NSFW.
Clik here to view.
Written in Go


ddgr - Search the web from the terminal

ddgr is like googler, but for DuckDuckGo. It's fast, clean and easy, with support for instant answers, search completion, search bangs, and advanced search. It respects your privacy by default, and also has HTTPS proxy support, and works with Tor

Image may be NSFW.
Clik here to view.
dggr-example-usage

Image may be NSFW.
Clik here to view.
View ddgr on GitHub
Image may be NSFW.
Clik here to view.
Author jarun
Image may be NSFW.
Clik here to view.
Written in Python


khal - Calendar client

khal is a terminal calendar app, which shows upcoming events, month and agenda views. You can sync it with any CalDAV calendar, and add, edit and remove events directly

Image may be NSFW.
Clik here to view.
khal-example-usage

Image may be NSFW.
Clik here to view.
View khal on GitHub
Image may be NSFW.
Clik here to view.
Author pimutils
Image may be NSFW.
Clik here to view.
Written in Python


mutt - Email client

mut is a classic, a terminal based mail client for sending, reading and managing emails. It supports all mainstream email protocols and mailbox formats, allows for attachments, BCC/CC, threads, mailing lists and delivery status notifications

Image may be NSFW.
Clik here to view.
mutt-example-usage

Image may be NSFW.
Clik here to view.
View mutt on GitHub
Image may be NSFW.
Clik here to view.
Author muttmua
Image may be NSFW.
Clik here to view.
Written in C


newsboat - RSS / ATOM news reader

newsboat is an RSS feed reader and aggregator, for reading the news, blogs and following updates directly from the terminal

Image may be NSFW.
Clik here to view.
newsboat-example-usage

Image may be NSFW.
Clik here to view.
View newsboat on GitHub
Image may be NSFW.
Clik here to view.
Author newsboat
Image may be NSFW.
Clik here to view.
Written in C++


rclone - Manage cloud storage

rclone is a handy utility for syncing files and folders to various cloud storage providers. It can be either invoked directly from the command line, or easily integrated into a script as a replacement for heavy desktop sync apps

Image may be NSFW.
Clik here to view.
View rclone on GitHub
Image may be NSFW.
Clik here to view.
Author rclone
Image may be NSFW.
Clik here to view.
Written in Go


taskwarrior - Todo + task management

task is a CLI task management/ todo app. It's both simple and unobtrusive, but also incredibly powerful and scalable, with advanced organisation and query features built in. There's also a lot (700+!) of extra plugins for extending it's functionality and integrating with third-party services

Image may be NSFW.
Clik here to view.
task-warrior-example-usage

Image may be NSFW.
Clik here to view.
View taskwarrior on GitHub
Image may be NSFW.
Clik here to view.
Author GothenburgBitFactory
Image may be NSFW.
Clik here to view.
Written in C++


tuir - Terminal UI for Reddit

tuir is a great one if you want to look like you're working, while actually browsing Reddit! It's got intuitive keybindings, custom themes, and can render images and multi-media content too. There's also haxor for hacker news

Image may be NSFW.
Clik here to view.
tuir-example-usage

Image may be NSFW.
Clik here to view.
View tuir on GitLab
Image may be NSFW.
Clik here to view.
Author ajak
Image may be NSFW.
Clik here to view.
Written in Python



CLI Dev Suits

httpie - HTTP / API testing testing client

httpie is a HTTP client, for testing, debugging and using APIs. It supports everything you'd expect - HTTPS, proxies, authentication, custom headers, persistent sessions, JSON parsing. Usage is simple with an expressive syntax and colourized output. Like other HTTP clients (Postman, Hopscotch, Insomnia, etc) HTTPie also includes a web UI

Image may be NSFW.
Clik here to view.
httpie-example-usage

Image may be NSFW.
Clik here to view.
View httpie on GitHub
Image may be NSFW.
Clik here to view.
Author httpie
Image may be NSFW.
Clik here to view.
Written in Python


lazydocker - Full Docker management app

lazydocker is a Docker management app, that lets you view all containers and images, manage their state, read logs, check resource usage, restart/ rebuild, analyse layers, prune unused containers, images and volumes, and so much more. It saves you from needing remember, type and chain multiple Docker commands.

Image may be NSFW.
Clik here to view.
lazy-docker-example-usage

Image may be NSFW.
Clik here to view.
View lazydocker on GitHub
Image may be NSFW.
Clik here to view.
Author jesseduffield
Image may be NSFW.
Clik here to view.
Written in Go


lazygit - Full Git management app

lazygit is a visual git client, on the command line. Easily add, commit and puch files, resolve conflicts, compare diffs, manage logs, and do complex operations like squashes and rewinds. There's keybindings for everything, colors, and it's easily configurable and extenable

Image may be NSFW.
Clik here to view.
lazy-git-example-usage

Image may be NSFW.
Clik here to view.
View lazygit on GitHub
Image may be NSFW.
Clik here to view.
Author jesseduffield
Image may be NSFW.
Clik here to view.
Written in Go


kdash - Kubernetes dashboard app

kdash is an all-in-one Kubernetes management tool. View node metrics, watch resources, stream container logs, analyse contexts and manage nodes, pods and namespaces

Image may be NSFW.
Clik here to view.
View kdash on GitHub
Image may be NSFW.
Clik here to view.
Author kdash-rs
Image may be NSFW.
Clik here to view.
Written in Rust


gdp-dashboard - Visual GDP debugger

gdp-dashboard adds a visual element to the GNU Debugger, for debugging C and C++ programs. Easily analyse memory, step through breakpoints, and view registers

Image may be NSFW.
Clik here to view.
gdp-dashboard-example-usage

Image may be NSFW.
Clik here to view.
View gdb-dashboard on GitHub
Image may be NSFW.
Clik here to view.
Author cyrus-and
Image may be NSFW.
Clik here to view.
Written in Python



CLI External Sercvices

ngrok - Reverse proxy for sharing localhost

ngrok safely* exposes your localhost to the internet behind a unique URL. This lets you share what you're working on with you're remote colleagues, in real-time. Usage is very simple, but it's also got a lot of advanced features for things like authentication, webhooks, firewalls, traffic inspection, custom/ wildcard domains and much more

Image may be NSFW.
Clik here to view.
ngrok-example-usage

Image may be NSFW.
Clik here to view.
View ngrok on GitHub
Image may be NSFW.
Clik here to view.
Author inconshreveable
Image may be NSFW.
Clik here to view.
Written in Go


tmate - Share a terminal session via internet

tmate let's you instantly share a live terminal session with someone elsewhere in the world. It works across different systems, supports access control/ auth, can be self-hosted, and has all the features of Tmux

Image may be NSFW.
Clik here to view.
View tmate on GitHub
Image may be NSFW.
Clik here to view.
Author tmate-io
Image may be NSFW.
Clik here to view.
Written in C


asciinema - Recording + sharing terminal sessions

asciinema is very useful for easily recording, sharing and embedding a terminal session. Great to showcase something you've built, or to show the command-line steps for a tutorial. Unlike screenrecording videos, the user can copy-paste the content, change the theme on the fly and control playback

{% embed https://asciinema.org/a/335480?speed=3 %}

Image may be NSFW.
Clik here to view.
View asciinema on GitHub
Image may be NSFW.
Clik here to view.
Author asciinema
Image may be NSFW.
Clik here to view.
Written in Python


navi - Interactive cheat sheet

navi allows you to browse through cheatsheets and execute commands. Suggested values for arguments are dynamically displayed in a list. Type less, reduce mistakes and save yourself from having to memorise thousands of commands. It integrates with tldr and cheat.sh to get content, but you can also import other cheatsheets, or even write your own

{% embed https://asciinema.org/a/406461?speed=2 %}

Image may be NSFW.
Clik here to view.
View navi on GitHub
Image may be NSFW.
Clik here to view.
Author denisidoro
Image may be NSFW.
Clik here to view.
Written in Rust


transfer.sh - Fast file sharing

transfer makes uploading and sharing files really easy, directly from the command line. It's free, supports encryption, gives you a unique URL, and can also be self-hosted.
I've written a Bash helper function to make usage a bit easier, you can find it here or try it out by running bash <(curl -L -s https://alicia.url.lol/transfer)

Image may be NSFW.
Clik here to view.
transfer-sh-example-usage

Image may be NSFW.
Clik here to view.
View transfer.sh on GitHub
Image may be NSFW.
Clik here to view.
Author dutchcoders
Image may be NSFW.
Clik here to view.
Written in Go


surge - Deploy a site in seconds

surge is a free static hosting provider, that you can deploy to directly from the terminal in a single command, just run surge from within your dist directory! It supports custom domains, auto SSL certs, pushState support, cross-origin resource support - and it's free!

Image may be NSFW.
Clik here to view.
surge-sh-example-usage


wttr.in - Check the weather

wttr.in is a service that displays the weather in a format that's digestible in the command line. Just run curl wttr.in or curl wttr.in/London to try it out. There's URL parameters to customise what data is returned, as well as the format

Image may be NSFW.
Clik here to view.
wrrt-in-example-usage

Image may be NSFW.
Clik here to view.
View wttr.in on GitHub
Image may be NSFW.
Clik here to view.
Author chubin
Image may be NSFW.
Clik here to view.
Written in Python



CLI Fun

cowsay - Have an ASCII cow say your message

cowsay is a configurable talking cow. It's based off the original by Tony Monroe

Image may be NSFW.
Clik here to view.
cowsay-example-usage

Image may be NSFW.
Clik here to view.
View cowsay on GitHub
Image may be NSFW.
Clik here to view.
Author piuccio
Image may be NSFW.
Clik here to view.
Written in JavaScript


figlet - Output text as big ASCII art text

figlet outputs text as ASCII art

Image may be NSFW.
Clik here to view.
figlet-example-usage

Image may be NSFW.
Clik here to view.
View figlet on GitHub
Image may be NSFW.
Clik here to view.
Author cmatsuoka
Image may be NSFW.
Clik here to view.
Written in C


lolcat - Make console output raibow colored

lolcat makes any text passed to it rainbow coloured

Image may be NSFW.
Clik here to view.
lolcat-example-usage

Image may be NSFW.
Clik here to view.
View lolcat on GitHub
Image may be NSFW.
Clik here to view.
Author busyloop
Image may be NSFW.
Clik here to view.
Written in Ruby


neofetch - Show system data and ditstro info

neofetch prints distro and system info (so you can flex that you use Arch btw on r/unixporn)

Image may be NSFW.
Clik here to view.
neofetch-example-usage

Image may be NSFW.
Clik here to view.
View neofetch on GitHub
Image may be NSFW.
Clik here to view.
Author dylanaraps
Image may be NSFW.
Clik here to view.
Written in Bash

As an example, I'm using cowsay, figlet, lolcat and neofetch to create a custom time-based MOTD shown to the user when they first log in. It greets them by their name, shows server info and time, date, weather and IP. Here's the source code.

Image may be NSFW.
Clik here to view.
welcome



Installations and Management

Most of us have a core set of CLI apps and utils that we rely upon. Setting up a new machine, and individually installing each program would get tiresome very quickly. So the task of installing and updating your terminal apps is the perfect candidate for automation. Here are some example scripts I've written, which can be easily dropped into your dotfiles or just run independently to ensure you're never missing an app.

For MacOS users, the easiest method is using Homebrew. Just create a Brewfile (with touch ~/.Brewfile), then list each of your apps, and run brew bundle. You can keep your package list backed up, by putting it in a Git repo. Here's an example one, to get you started: https://github.com/Lissy93/Brewfile

On Linux, you usually want to use the native package manager (e.g. pacman, apt). As an example, here's a script to install the above apps on Arch Linux systems

Desktop apps on Linux can be managed in a similar way, via Flatpak. Again, here's an example script :)


Conclusion

... So that's it - a list of handy CLI apps, and a method for installing and keeping them up-to-date across your systems.

Hopefully some of these will be useful to some of you :)

What wasn't included

  • This list doesn't include the basics, like Vim, Tmux, Ranger, ZSH, Git, etc - which you're likely already using
  • I've also not included anything too niche, or only specific to a small number of users
  • Nothing system-specific, or that isn't cross-platform (Linux/ Unix, MacOS) is included
  • And I've not included apps which relate to the terminal, but are not CLI apps (like terminal emulators)
  • For most of the projects listed, there's a plethora of alternatives that achieve similar things, for brevity those also weren't included

Credit

Huge kudos to the authors, and communities behind each of these apps. Without them and their hard work, our life in the command line would be much less awesome. Where possible, I've tried to credit the authors, but if I've missed any - let me know below, and I'll push an update

Find More

If you were enjoying this, I recommend also checking out:

If you're new to the command line, then The Art of Command Line by Joshua Levy is an excellent resource, as is the Bash Guide by Adnan Ahmed.

And if you are looking for inspiration, you'll love r/unixporn

If you like this kind of stuff,
consider following for more :)
Image may be NSFW.
Clik here to view.
Follow Lissy93 on GitHub
Image may be NSFW.
Clik here to view.
Follow Lissy_Sykes on Twitter

Viewing latest article 42
Browse Latest Browse All 54

Trending Articles