Last Updated on July 8, 2023
With the bamboozling quantity of open source software available to download, it’s really difficult to keep up with the cream of the cream. That’s where this compilation aims to help.
This article selects 100 awesome command-line interface (CLI) apps. The compilation mostly reflects software our volunteers use as their daily drivers. We try to select as wide a mix as possible, avoiding duplication wherever possible.
All the CLI apps here run on Linux. Many run under macOS. Some run natively on Windows. Note, we only indicate that macOS / Windows are supported if it’s clear the app runs on them natively. The vast majority of the apps will run under the Windows Subsystem for Linux (WSL) and/or Cygwin.
Without further ado, let’s get the ball rolling.
Whisper is an automatic speech recognition (ASR) system trained on 680,000 hours of multilingual and multitask supervised data collected from the web. Powered by deep learning and neural networks, Whisper is a natural language processing system that’s built on PyTorch.
If you’re not amazed by the accuracy of Whisper, we’ll be shocked!
git is a distributed version control system designed to handle everything from small to very large projects with speed and efficiency.
git is easy to learn and has a tiny footprint with lightning fast performance.
make is a tool which controls the generation of executables and other non-source files of a program from the program’s source files.
dust gives an instant overview of which directories are using disk space. Its name derives from the du command and that dust is written in Rust. dust is intended to be more intuitive than du.
There are quite a few other command-line utilities that offer a replacement for du. On balance, we consider dust to be the best (duf is great too).
aria2 is a lightweight multi-protocol and multi-source command-line download utility.
It supports HTTP/HTTPS, FTP, SFTP, BitTorrent and Metalink. aria2 can be manipulated via built-in JSON-RPC and XML-RPC interfaces.
zoxide is a smarter cd command, inspired by z and autojump.
It remembers which directories you use most frequently, so you can “jump” to them in just a few keystrokes.
zoxide works on all major shells.
asciinema lets you record terminal sessions and share them on the web.
LZ4 is lossless compression algorithm, providing compression speed > 500 MB/s per core (>0.15 Bytes/cycle). It features an extremely fast decoder, with speed in multiple GB/s per core (~1 Byte/cycle). A high compression derivative, called LZ4_HC, is available, trading customizable CPU time for compression ratio.
FFmpeg consists of a suite of libraries and programs for handling video, audio, and other multimedia files and streams. At its core is the command-line ffmpeg tool itself, designed for processing of video and audio files.
The GNU Compiler Collection (GCC) is an optimizing compiler supporting various programming languages, hardware architectures and operating systems. It includes front ends for C, C++, Objective-C, Fortran, Ada, Go, and D, as well as libraries for these languages.
bat is billed as a cat clone on wings.
bat receives our strongest recommendation. It’s such a useful utility that you’ll wonder how you managed without it.
Play any internet radio station around the globe right from the terminal.
If you like terminal apps and listening to radio stations, you’ll love radio-active.
If you need help from the Linux community, inxi is an essential utility that lets others help you debug issues. By providing concise information about a system, while filtering out sensitive data, it’s a time-saver for all participants.
mpv is a media player for the command line. It supports a wide variety of media file formats, audio and video codecs, and subtitle types.
Pandoc is a universal markup converter. The range of supported formats is truly breathtaking.
OpenSSH is a suite of secure networking utilities based on the Secure Shell protocol, which provides a secure channel over an unsecured network in a client–server architecture. It includes a client ssh and server sshd, file transfer utilities scp and sftp as well as tools for key generation (ssh-keygen), run-time key storage (ssh-agent) and a number of supporting programs.
cheat.sh is software for community driven cheat sheets repositories of the world.
onefetch is a command-line Git information tool written in Rust that displays project information and code statistics for a local Git repository directly to your terminal. The tool is completely offline – no network access is required. onefetch supports more than 100 different programming languages.
ClamAV is an antivirus engine for detecting trojans, viruses, malware and other malicious threats.
Coreutils are basic file, shell and text manipulation utilities. These are the core utilities which are expected to exist on every operating system.
ps_mem is a wonderfully useful utility. It interrogates the kernel to obtain the memory information, outputting the information in a clean and uncluttered way. It’s awesome software.
TLP is a feature-rich command line utility, saving laptop battery power without the need to delve deeper into technical details.
TLP’s default settings are already optimized for battery life and implement Powertop’s recommendations out of the box. So you may just install and forget it.
+++ Configured Settings (only differences to defaults): /etc/tlp.conf L0088: CPU_SCALING_GOVERNOR_ON_BAT="powersave" /etc/tlp.conf L0501: START_CHARGE_THRESH_BAT0="75" /etc/tlp.conf L0502: STOP_CHARGE_THRESH_BAT0="80" /etc/tlp.conf L0508: START_CHARGE_THRESH_BAT1="75" /etc/tlp.conf L0509: STOP_CHARGE_THRESH_BAT1="80"
Website // GNU General Public License v2.0 // Written in Shell
ddrescue is an ever so useful data recovery tool. It copies data from one file or block device to another, trying to rescue the good parts first in case of read errors.
Rclone manages files on cloud storage. It is a feature-rich alternative to cloud vendors’ web storage interfaces. Over 40 cloud storage products support rclone including S3 object stores, business and consumer file storage services, as well as standard transfer protocols.
Restic is a modern, fast, and secure backup program that can back up your files. It supports many different storage types, including self-hosted and online services.
just is a handy way to save and run project-specific commands.
ripgrep recursively searches directories for a regex pattern while respecting your gitignore.
ripgrep is an excellent utility. It’s built on top of Rust’s regex engine. Rust’s regex engine uses finite automata, SIMD and aggressive literal optimizations to make searching extremely quick.
The tool is not going to replace grep. For example it doesn’t conform to any standard such as POSIX. But it’s an incredibly useful utility that offers the features of most similar tools.
Firejail is a SUID program that reduces the risk of security breaches by restricting the running environment of untrusted applications using Linux namespaces and seccomp-bpf. It allows a process and all its descendants to have their own private view of the globally shared kernel resources, such as the network stack, process table, mount table.
McFly replaces your default ctrl-r shell history search with an intelligent search engine that takes into account your working directory and the context of recently executed commands. McFly’s suggestions are prioritized in real time with a small neural network.
localtunnel exposes your localhost to the world for easy testing and sharing! No need to mess with DNS or deploy just to have others test out your changes.
Nmap (“Network Mapper”) is a utility for network discovery and security auditing. Many systems and network administrators also find it useful for tasks such as network inventory, managing service upgrade schedules, and monitoring host or service uptime.
GoTTY is a simple command line tool that turns your CLI tools into web applications.
tar (short for Tape ARchiver) command is the most widely used archiving utility in Linux systems. The tar command helps create, extract, and list archive contents.
HTTPie is an HTTP client. Its goal is to make CLI interaction with web services as human-friendly as possible. HTTPie is designed for testing, debugging, and generally interacting with APIs & HTTP servers.
mitmproxy is your swiss-army knife for debugging, testing, privacy measurements, and penetration testing. It can be used to intercept, inspect, modify and replay web traffic such as HTTP/1, HTTP/2, WebSockets, or any other SSL/TLS-protected protocols.
GnuPG allows you to encrypt and sign your data and communications; it features a versatile key management system, along with access modules for all kinds of public key directories. GnuPG, also known as GPG, is a command line tool with features for easy integration with other applications.
$ gpg -K --with-subkey-fingerprint B21DEAB4F875FB3DA42F1D1D139563682A020D0A
sec ed25519 2016-06-22 [SC]
uid [ultimate] firstname.lastname@example.org
ssb cv25519 2016-06-22 [E]
ssb# brainpoolP384r1 2021-06-28 [R] [expires: 2027-01-10]
ssb# cv25519 2016-02-14 [R]
howdoi offers instant coding answers via the command line.
$ howdoi print hello in Rust
Beets gets your music collection right once and for all. It catalogs your collection, automatically improving its metadata as it goes using the MusicBrainz database. Then it provides a bouquet of tools for manipulating and accessing your music.
ImageMagick is an awesome software suite for displaying, creating, converting, modifying, and editing raster images.
diff-so-fancy aims to make your diffs human readable instead of machine readable. This helps improve code quality and helps you spot defects faster.
Parted manipulates partition tables. This is useful for creating space for new operating systems, reorganizing disk usage, copying data on hard disks and disk imaging. The package contains a library, libparted, as well as a command-line frontend, parted, which can also be used in scripts.
exa is a genuine alternative to ls. You don’t lose any speed, and gain a number of useful advantages that makes for a compelling usage case.
rsync is a fast and extraordinarily versatile file copying tool. It can copy locally, to/from another host over any remote shell, or to/from a remote rsync daemon.
Unison is a bidirectional file synchronization tool. It allows two replicas of a collection of files and directories to be stored on different hosts (or different disks on the same host), modified separately, and then brought up to date by propagating the changes in each replica to the other.
pet is a simple command-line snippet manager.
We often forget useful commands, particularly ones with lots of flags. We could create aliases or use the history command combined with grep to alleviate this issue. But pet arguably offers a slicker way, as it lets us search the snippets to quickly find what we need.
The tldr pages are a community effort to simplify the beloved man pages with practical examples.
Qalculate! is a multi-purpose cross-platform desktop calculator. It is simple to use but provides power and versatility normally reserved for complicated math packages, as well as useful tools for everyday needs (such as currency conversion and percent calculation).
Features include a large library of customizable functions, unit calculations and conversion, physical constants, symbolic calculations (including integrals and equations), arbitrary precision, uncertainty propagation, interval arithmetic, plotting, and a user-friendly interface (GTK, Qt, and CLI).
scrot is a simple command line screen capture utility, it uses imlib2 to grab and save images.
One of the many advantages of open source software compared to its proprietary counterparts is that open source projects can be resurrected if the original developer(s) abandons a project. scrot is one such project that has been resurrected.
Sloc Cloc and Code (scc) is a tool similar to cloc, sloccount and tokei. It’s for counting physical the lines of code, blank lines, comment lines, and physical lines of source code in many programming languages.
MyCLI is an interface for MySQL, MariaDB, and Percona with auto-completion and syntax highlighting.
Streamlink is a utility which pipes video streams from various services into a video player, such as VLC. The main purpose of Streamlink is to avoid resource-heavy and unoptimized websites, while still allowing the user to enjoy various streamed content.
ddgr is a utility to search DuckDuckGo from the terminal.
trash-cli trashes files recording the original path, deletion date, and permissions. It uses the same trashcan used by KDE, GNOME, and XFCE, but you can invoke it from the command line (and scripts).
ttygif converts a ttyrec file into gif files. It’s a stripped down version of ttyplay that screenshots every frame.
yank reads input from stdin and display a selection interface that allows a field to be selected and copied to the clipboard.
SoX is a utility that converts various formats of computer audio files in to other formats. It can also apply various effects to these sound files, and, as an added bonus, SoX can play and record audio files on most platforms.
Zsh) is a shell that can be used as an interactive login shell and as a command interpreter for shell scripting. Zsh is an extended Bourne shell with many improvements, including some features of Bash, ksh, and tcsh.
Fig pops up subcommands, options, and contextually relevant arguments in your existing terminal.
hexyl is a simple hex viewer for the terminal. It uses a colored output to distinguish different categories of bytes (NULL bytes, printable ASCII characters, ASCII whitespace characters, other ASCII characters and non-ASCII).
insect is a high precision scientific calculator with full support for physical units.
Taskwarrior manages your TODO list from the command line. It is flexible, fast, and unobtrusive.
yt-dlp is software that lets you easily download videos and audio from more than a thousand websites.
NcFTP is a set of programs implementing the File Transfer Protocol (FTP).
SVG Optimizer is a Node.js-based tool for optimizing SVG vector graphics files.
Watson is a tool to track your time. You want to know how much time you are spending on your projects? You want to generate a nice report for your client? Watson is here for you.
dog is a command-line DNS client. It has colourful output, understands normal command-line argument syntax, supports the DNS-over-TLS and DNS-over-HTTPS protocols, and can emit JSON.
Fail2ban is an intrusion prevention software framework which is designed to prevent against brute-force attacks.
Pgcli is a command line interface for Postgres with auto-completion and syntax highlighting.
fd is a program to find entries in your filesystem. It’s a simple, fast and user-friendly alternative to find.
Toot is a command-line interface and terminal user interface tool for interacting with Mastodon instances.
Persistence of Vision Raytracer (POV-Ray) is a high-quality tool for creating stunning three-dimensional graphics.
fdupes is software for identifying or deleting duplicate files residing within specified directories. It compares file sizes, partial MD5 signatures, full MD5 signatures, and then performs a byte-by-byte comparison for verification.
croc is a tool that allows any two computers to simply and securely transfer files and folders. End-to-end encryption (using PAKE) is provided.
Himalaya is a tool based on the himalaya-lib that allows you to manipulate your emails using commands in your console.
gnuplot is a command-line and GUI program that can generate two- and three-dimensional plots of functions, data, and data fits.
NetHogs is a small ‘net top’ tool. Instead of breaking the traffic down per protocol or per subnet, like most tools do, it groups bandwidth by process.
f3 is a set of 5 utilities that detect and repair counterfeit flash storage. It achieves this by testing the media’s capacity and performance. It tests the real size and compares it to what the drive says.
Glow is a machine learning compiler and execution engine for hardware accelerators. It is designed to be used as a backend for high-level machine learning frameworks. The compiler is designed to allow state of the art compiler optimizations and code generation of neural network graphs.
entr is a tool for running arbitrary commands when files change. It was written to make rapid feedback and automated testing natural and completely ordinary.
Gifsicle manipulates GIF image files. Depending on command line options, it can merge several GIFs into a GIF animation; explode an animation into its component frames; change individual frames in an animation; turn interlacing on and off; add transparency; add delays, disposals, and looping to animations; add and remove comments; flip and rotate; optimize animations for space; change images’ colormaps; and other things.
Cookiecutter is a useful utility that creates projects from cookiecutters (project templates), e.g. creating a Python package project from a Python package project template.
Advanced package tool (APT) is a user interface that works with core libraries to handle the installation and removal of software on Debian, and Debian-based Linux distributions. It provides command-line tools for searching, managing and querying information about packages, as well as low-level access to all features provided by the libapt-pkg and libapt-inst libraries which higher-level package managers can depend upon.
APT is included only as an example of a package manager. You’ll need to use a suitable package manager for the distro you’re running.
abcde lets you grab an entire CD and compress it to Ogg/Vorbis, MP3, FLAC, AAC, Ogg/Speex and/or MPP/MP+(Musepack) format.
abcde can also grab a CD and turn it into a single FLAC file with an embedded cuesheet which can be user later on as a source for other formats.
jq is like sed for JSON data – you can use it to slice and filter and map and transform structured data with the same ease that sed, awk, grep and friends let you play with text.
ExifTool is a customizable set of Perl modules plus a full-featured command-line application for reading and writing meta information in a wide variety of files, including the maker note information of many digital cameras by various manufacturers such as Canon, Casio, DJI, FLIR, FujiFilm, GE, HP, JVC/Victor, Kodak, Leaf, Minolta/Konica-Minolta, Nikon, Nintendo, Olympus/Epson, Panasonic/Leica, Pentax/Asahi, Phase One, Reconyx, Ricoh, Samsung, Sanyo, Sigma/Foveon and Sony.
jrnl is a simple journal application for the command line.
You can use it to easily create, search, and view journal entries. Journals are stored as human-readable plain text, and can also be encrypted using AES encryption.
progress is a neat tool to show progress for cp, mv, dd, … (formerly known as cv).
hyperfine is an easy to use tool for benchmarking. The output is easily readable and understandable. All benchmark runs are performed sequentially.
hledger is a lightweight, multi-currency, double-entry accounting software. It lets you track money, investments, cryptocurrencies, invoices, time, inventory and more, in a safe, future-proof plain text data format with full version control and privacy.
s is a web search utility which runs from the terminal. Just opens in your browser.
SpamAssassin is an anti-spam platform giving system administrators a filter to classify email and block spam (unsolicited bulk email). It uses a robust scoring framework and plug-ins to integrate a wide range of advanced heuristic and statistical analysis tests on email headers and body text including text analysis, Bayesian filtering, DNS blocklists, and collaborative filtering databases.
Jupyter Console is a terminal-based console frontend for Jupyter kernels.
gh is an interface to GitHub for use in your terminal or your scripts.
difftastic is a structural diff tool that compares files based on their syntax.
Miller is like awk, sed, cut, join, and sort for data formats such as CSV, TSV, JSON, JSON Lines, and positionally-indexed.
Chafa is a utility that converts image data, including animated GIFs, into graphics formats or ANSI/Unicode character art suitable for display in a terminal. It has broad feature support, allowing it to be used on devices ranging from historical teleprinters to modern terminal emulators and everything in between.
DocToc generates table of contents for markdown files inside local git repository. Links are compatible with anchors generated by github or other sites via a command line flag.
transfer.sh offers easy and fast file sharing from the command-line. This code contains the server with everything you need to create your own instance.
buku is a powerful bookmark manager and a personal textual mini-web.
usql is a universal command-line interface for PostgreSQL, MySQL, Oracle Database, SQLite3, Microsoft SQL Server, and many other databases including NoSQL and non-relational databases.