A curated list of awesome command-line frameworks, toolkits, guides and gizmos. Inspired by awesome-php. This awesome collection is also available on Unix-Shell.ZEEF.com.
- Command-Line Productivity
- For Developers
- System Utilities
- Downloading and Serving
- Multimedia and File Formats
- Shell Package Management
- Shell Script Development
Choose your base shell.
- bash - GNU Project’s shell (Bourne Again SHell)
- elvish - Friendly, expressive shell features like anonymous functions and data structures
- es - The extensible shell, based on Plan 9’s rc shell
- fish - Smart and user-friendly command line shell
- ion - A modern system shell that features a simple, yet powerful, syntax. It is written entirely in Rust.
- ksh93 - Korn Shell
- mksh - MirBSD Korn Shell
- nushell - A modern shell written in Rust
- oksh - Portable OpenBSD ksh
- osh - Bash compatible, with new/modern Unix shell language called Oil
- pdksh - Public domain Korn shell
- shell++ - Friendly and modern functional and object oriented shell script language
- shenv - Simple shell version management
- tcsh - C shell with file name completion and command line editing
- xonsh - Python-ish, BASHwards-looking shell language and command prompt
- yash - A POSIX-compliant command line shell with built-in support for completion and prediction based on command history
- zsh - Powerful shell with scripting language
Search, bookmarks, multiplexing, and other tools that make your terminal experience more productive.
AdvancedNewFile - Fast creation of files and directories in a recursive way. Inspired by the Vim plugin.
ag - Super fast string search through a directory hierarchy
aliases - Contextual, dynamic, organized aliases for bash
autoenv - Directory-based environments
bashhub - Bash history in the cloud. Indexed and searchable.
boilr - A blazingly fast CLI tool for creating projects from boilerplate templates.
boom - Store links and snippets in the command line
borg - A terminal based search engine for bash commands
browsh - The modern text-based browser
Buku - Powerful command-line bookmark manager
byobu - Text-based window manager and terminal multiplexer
cod — A completion daemon for shell that learns when you invoke
CloudClip - Your own clipboard in the cloud, copy and paste text with gist between different systems
ddgr - DuckDuckGo from the terminal
desk - A lightweight workspace manager for the shell
direnv - An environment switcher for the shell, compare with autoenv
dnote - A simple command line notebook with multi-device sync and web interface
eureka - CLI tool to input and store your ideas without leaving the terminal
fasd - Command-line productivity booster, offers quick access to files and directories
fd - A simple, fast and user-friendly alternative to find.
foxy - Plain text bookmarks for Firefox and surf browsers.
fselect - Find files with SQL-like queries.
funky - Extends functionality of shell functions making them more powerful and flexible.
fz - Seamless fuzzy tab completion for z
fzf - A command-line fuzzy finder
gitmux - Show Git status in Tmux status bar
googler - Google Search, Google Site Search, Google News from the terminal
googlr - Command line tool that lets you search Google from your terminal.
hashelps you check presence of various command line tools and their versions on path
how2finds the simplest way to do something in a unix shell. It’s like
man, but you can query it in natural language.
navi - An interactive cheatsheet tool for the command-line
hhighlighter - Colorize words in a command output
<hr />for your terminal
hss - An interactive parallel ssh client featuring autocomplete and asynchronous execution
hstr - Bash History Suggest Box
k - k is a Zsh script to make directory listings more readable, adding Git status, fileweight colors and rotting dates
k alias - get kool aliases (and more) working with a simple one-liner
lf.sh - Quickly search files with fewer typings and do many more (grepping, copying path to clipboard, etc)
Lmod - Lua-based Environment Modules that enhances Tcl-based modules while being backward compatible (compare to modules)
loop - Write and control complex loops with as one-liners
marker - Bookmark your shell commands
mackup - Keep your application settings in sync (OS X/Linux)
mcfly - Fly through your shell history. Great Scot!
modules - Classical Tcl-based Environment Modules managing the shell environment (compare to Lmod, direnv, and autoenv)
nnn - File browser and disk usage analyzer with excellent desktop integration
parallel - Build and execute shell command lines from standard input in parallel
pathpicker - Accepts inputs like grep, searches, git etc; allows selecting files from the result of the input, which you can then open or provide as argument to a command.
pdd - Tiny date, time diff calculator with timers
percol - Adds flavor of interactive filtering to the traditional pipe concept of UNIX shell
q - Vim like macro registers for your Bash and Zsh Shell
qfc - File-completion widget for Bash and Zsh
resh - Contextual shell history for Zsh and Bash
rg - ripgrep is a line oriented search tool that combines the usability of The Silver Searcher with the raw speed of GNU grep
screen - GNU terminal multiplexer
shell-history - Visualize your shell usage with Highcharts
SHML - Style framework for the terminal (Shell Markup Language)
slugify - Command that converts filenames and directories to a web friendly format
sman - A command-line snippet manager
spark - ▁▂▃▅▂▇ in your shell
spark.fish - ▁▂▃▅ Sparkline Generator
sheet - Text snippets for the command line
spot - Tiny file search utility
snips - Command line tool to manage snippets of code.
sqlline - Shell for issuing SQL to relational databases via JDBC (multiline, completion, highlighting, dialect support)
sshfs - A tool for mounting remote file systems over SSH
sudocabulary - Learn English Vocabulary from your terminal
surfraw - browse specific site and search the web from your terminal without browser.
task-manager - Execute all your scripts with just two or three keystrokes.
td-cli - A todo command line manager to organize and manage your todos across multiple projects.
thefuck - Fix common shell mistakes by using an easy to remember command
tldr - A fully-functional bash client for tldr, simplified and community-driven man pages
tmux - Amazing terminal multiplexer
undollar - undollar bites the dollar sign off the tip of the command you just pasted into your terminal
v - z for vim.
wemux - Multi-User Tmux Made Easy
xiki - Makes the shell console more friendly and powerful
xsv - a fast CSV command line toolkit written in Rust
xxh - Bring your favorite shell wherever you go through the SSH.
- aliasme - alias helper to change directory quickly
- autojump - A cd command that learns - easily navigate directories from the command line
- bashmarks - Directory bookmarks for the shell
- bd - Quickly go back to a parent directory
- commacd - A faster way to move around in Bash
- enhancd - A next-generation cd command with an interactive filter
- goto - A shell utility for navigation to aliased directories supporting auto-completion
- jump - Jump helps you navigate your file system faster by learning your habits.
- lazy-cd - Simple bash commands for bookmarked navigation of the file system, complete with bash-completion.
- up - Ascend directories by name or count; for bash, zsh, and fish.
- z - z is the new j, yo
- z.lua - A new cd command that helps you navigate faster by learning your habits
- zoxide - A faster way to navigate your filesystem, written in Rust
- zpyi - Python in Zsh - Easy python scripting in shell
Custom prompts, color themes, etc.
- base16-builder - Base16-Builder
- bash-full-of-colors - Powerful prompt with screen, tmux, git support and many more
- bash-git-prompt - An informative and fancy Bash prompt for Git users
- bash-powerline - Powerline-style Bash prompt in pure Bash script
- bashstrap - A quick way to spruce up OSX terminal
- bullet-train-oh-my-zsh-theme - An oh-my-zsh shell theme based on the Powerline Vim plugin
- emojify Emoji on the command line
- flatui-terminal-theme - Nicer colors for terminal
- geometry - A minimal ZSH theme where any function can be added to the left prompt or (async) right prompt on the fly.
- git-prompt - Bash prompt with Git, SVN and HG modules
- gittify - A colorful Bash prompt + customized Git aliases
- Gogh - Color Scheme - Color Scheme for Gnome Terminal
- liquidprompt - A full-featured & carefully designed adaptive prompt for Bash & Zsh
- mysql-colorize - Colorization for mysql comand-line client
- oh-my-git - An opinionated git prompt for bash and zsh
- polyglot - An informative Git prompt that works in bash, zsh, ksh, mksh, pdksh, dash, and busybox sh
- powerlevel10k - Super flexible awesome powerline ZSH theme
- sexy-bash-prompt - Bash prompt with colors, Git statuses, and Git branches
- synth-shell - Greeter with a customizable status report and a fancy bash prompt
Command-line development, version control, and deployment.
- ack - A grep-like search tool optimized for source code.
- add-gitignore - Interactive CLI that generates a .gitignore for your project based on your needs.
- bcal - Byte CALculator for storage conversions and calculations
- bitwise - Terminal based interactive bit manipulator in curses.
- bocker - Docker implemented in 100 lines of bash
- cloc - Count Lines of Code
- doclt - A command line interface to Digital Ocean
- dokku - Docker powered mini-Heroku. The smallest PaaS implementation you’ve ever seen.
- getopts.fish - CLI parser for fish
forgit - Utility tool for
gittaking advantage of fuzzy finder fzf.
- git-extra-commands - Many Git extra utilities. Churn, cut-branch, improved-merge and many more.
- git-extras - Git utilities – repo summary, repl, changelog population, author commit percentages and more
git-open - Type
git opento open the GitHub page or website for a repository in your browser
- git-quick-stats - Git quick statistics is a simple and efficient way to access various statistics in git repository.
- git-semver - Git plugin for easing semantic versioning and changelog validation
- git-sh - A customized Bash environment suitable for Git work
- hub - hub helps you win at git.
- licins - Insert commented software licenses into source code.
- mkdkr - Makefile + Docker = CI Pipeline
- mr - Multiple Repository management tool
- overcommit - A fully configurable and extendable Git hook manager
- pre-commit - A framework for managing and maintaining multi-language pre-commit hooks
- rebound - Instantly browse Stack Overflow results in your terminal when you get a compiler error
- repren - Command-line search-and-replace and file-renaming swiss army knife
- slap - Sublime-like terminal-based text editor that runs on Node.js
- shipit - Minimalistic SSH deployment
- starring - Automatically star the npm-packages that you are using on GitHub.
- tag - Instantly jump to your ag matches.
- wipe-modules - A little agent that removes the node_modules folder of non-active projects
OS-related tools, including system administration, system debugging, and file and process management.
- atop - ASCII full-screen performance monitor that is capable of reporting the activity of all processes
bat - A
catclone with wings
- bmon - Real-time network bandwidth monitor and rate estimator with human-friendly visual output
- catcli - The command line catalog tool for your offline data
- ccat - ccat is the colorizing cat. It works similar to cat but displays content with syntax highlighting.
exa - A modern version of
progress - Linux tool to show progress for
dd, and more…
- stronghold - Easily configure MacOS security settings from the terminal.
- glances - Glances an Eye on your system
- goaccess - GoAccess is a real-time web log analyzer and interactive viewer that runs in a terminal in *nix systems.
- hblock - Hosts-file based adblocker
- histstat - History for netstat
htop - A ncurses based interactive process viewer which aims to be a better
- lnav - An advanced log file viewer for the small-scale
- logdissect - CLI utility and Python API for analyzing log files and other data.
- ls++ - Colorized ls on steroids
lsp - An improved
ls, with file descriptions in plain language and intelligent file grouping
- maza - Local ad blocker. Like Pi-hole but local and using your operating system.
- mtr - The functionality of the ‘traceroute’ and ‘ping’ programs in a single network diagnostic tool.
- ncdu - NCurses Disk Usage
- nmtui - Text User Interface for controlling NetworkManager
- powertop - Battery/Power usage and device stats monitoring command-line tool, with tune-up options.
- procdog - Lightweight command-line control of long-lived processes like servers
- quick-secure - Quickly secure and harden UNIX/Linux systems
- rng - Copy range of lines from file or stdin to stdout.
wifi-wand - a Ruby command line application for managing WiFi on MacOS (install by
gem install wifi-wand)
- xiringuito - SSH-based “VPN for poors”
Downloading and Serving
Self-hosted, lightweight servers and networking tools written in shell scripts.
- aria2 - aria2 is a lightweight multi-protocol & multi-source, cross platform download utility operated in command-line. It supports HTTP/HTTPS, FTP, BitTorrent and Metalink
- balls - Bash on Balls
- bashttpd - A web server written in Bash
- bashhub-server - Private cloud shell history. Open source server for bashhub
- bitpocket - “DIY Dropbox” or “2-way directory ®sync with proper deletion”
- Dropbox-Uploader - Dropbox Uploader is a Bash script which can be used to upload, download, list or delete files from Dropbox
- httpie - HTTPie is a command line HTTP client, a user-friendly cURL replacement
- HTTPLab - The interactive web server, let you inspect HTTP requests and forge responses.
- ngincat - Tiny Bash HTTP server using netcat
- resty - Little command line REST client that you can use in pipelines
- shell2http - HTTP-server to execute shell commands. Designed for development, prototyping or remote control
- vesper - Vesper is a HTTP framework for Bash/Unix Shell
- youtube-dl - Small command-line program to download videos from YouTube.com and other video sites
Multimedia and File Formats
Tools for handling video and audio files.
- adb-export - Export Android content providers to CSV format
- Android-Kitchen - A text-based kitchen for Android ROM customization. Uses shell scripts and works with Cygwin/OS X/Linux
- Beets - Music library manager and MusicBrainz tagger
- cmus - Cross-platform cli audio player.
- gifgen - Simple high quality GIF encoding
- image-scraper - A cool command line image scraper with a lot of features.
- imgp - Blazing fast batch image resizer and rotator
- jo - A small utility to create JSON objects from command-line arguments.
- jq - Sed for json data. You can use it to slice and filter and map and transform structured data
- korkut - Quick and simple image processing at the command line.
- mpv - Lets you play most audio and video formats (using ASCII characters) in the shell as well as in a GUI.
- nehm - Console tool, which downloads, sets IDv3 tags and adds to your iTunes (if you use it) your SoundCloud likes in convenient way
- PiCAST - PiCAST turns your $35 Raspberry Pi in to a Chromecast like Device
- sejda - Command line manipulation of PDF documents (split, merge, rotate, convert to jpg, extract text, etc)
- visidata - A terminal spreadsheet multitool for exploring and arranging data (csv/json/xml/xls/yaml/etc)
- xidel - Cli tool to filter, map and create HTML/XML/JSON data with (Turing-complete) XPath and XQuery.
- xmlstarlet - Old but powerful tool for command-line XML formatting, filtering, and manipulation.
Command line-based applications or command line access to existing services.
- ansiweather - Weather in your terminal, with ANSI colors and Unicode symbols
- awless - A powerful, innovative and small surface CLI to manage AWS.
- bashblog - A Bash script that handles blog posting
- carbon-now-cli - Beautiful images of your code — from right inside your terminal.
- choosealicense-cli - Choose an OSS license from the comfort of your terminal
- cointop - The fastest and most interactive terminal based UI application for tracking cryptocurrencies
- dstask - Single binary terminal-based TODO manager with git-based sync + markdown notes per task
- facebook-cli - Facebook command line tool
- fanyi - Translate English to Chinese in terminal
- gcalcli - Google Calendar command line interface
- geeknote - Command line evernote client
- haxor-news - Browse Hacker News like a haxor
- hn-cli - Browse Hacker News from the comfort of your Terminal
- iponmap - Draw point on world map using ip address
- isitup - Check whether a website is up or down
- jrnl - A simple command line journal application that stores your journal in a plain text file
- kanban.bash - commandline asciii kanban board for minimalist productivity bash hackers (csv-based)
- ledger - Command line accounting
- licen - Generate your license. Yet another lice, but implement with Jinja2 and docopt
- md2png - Convert markdown to PNG image
- moviemon - Everything about your movies within the command line.
- nomino - Batch rename utility using regex, sort and map file options.
- pockyt - Read, Manage, and Automate your Pocket collection.
- pushblast - Get PushBullet notifications when a shell program exits
- pushbullet-bash - Bash interface to the PushBullet API
- ranger - A console file manager with VI key bindings.
- Reddit Terminal Viewer - Browse Reddit from your terminal
- SAWS - A Supercharged AWS CLI
- taskbook - Tasks, boards & notes for the command-line habitat
- taskwarrior - A command-line TODO list manager
- terjira - Command line power tool for Jira
- transfer.sh — Quickly upload and share files from your shell
- vl - URL link checker on text documents
- wego - Weather app for the terminal
- whales - A tool to automatically dockerize your applications
- whereami - Get your geolocation information from the CLI
- wttr.in - The right way to check the weather (curl wttr.in)
All work and no play is a cruddy way to spend your day.
- bash2048 - Bash implementation of 2048 game
- minesweeper - Bash implementation of minesweeper
- nudoku - ncurses based sudoku game written in C
- piu-piu - Horizontal scroller game in bash with multiplayer mode!
- sedtris - Tetris in sed
- sed-scripts - Arkanoid and Sokoban written using sed
- SHTAP - Reusable text adventure engine for Bash 4
- tty-solitaire - Play solitaire in your terminal!
Shell Package Management
Tools for managing multiple shell configurations. For zsh-specific tools, see the Zsh section.
- bash-it - A community Bash framework
- basher - A package manager for shell scripts
- bashing - Smashing Bash into Pieces
- dotdrop - Save your dotfiles once, deploy them everywhere
- dotfiler – Shell agnostic git based dotfiles package manager, written in Python.
- fresh - Keep your dotfiles fresh
- homeshick - Git dotfile synchronizer written in Bash
- shallow-backup - Easily create lightweight documentation of installed packages, dotfiles, and more
- shundle - Plugin manager for shell scripts
- vcsh - Config manager based on Git
- yadm - Git-based dotfiles manager supporting encryption, alternates, and bootstrapping
Shell Script Development
Tools for writing, improving, or organizing Bash or other shell scripts
- ansi - ANSI escape codes in pure bash - change text color, position the cursor, much more
- assert.sh - Bash unit testing framework
- bashful - A collection of libraries to simplify writing Bash scripts
- Bashlets - A modular extensible toolbox for Bash
- bashmanager - mini bash framework for creating command line tools
- bashwithnails - a Bash framework written just for fun with testing, dependency management & packaging
- bash-language-server - LSP-based Bash language server
- bats - Bash Automated Testing System
- crash - Proper error handling, exceptions and try/catch for ZSH
- critic.sh - Dead simple testing framework for Bash with coverage reporting
- esh - A simple templating engine based on shell, implemented in ~290 lines of POSIX shell and awk.
- Fishtape - TAP producer and test harness for fish
- composure - Compose, document, version and organize your shell functions
- dispatch - A command line argument parser in 50 lines of portable shell script.
- is.sh - An alternative for builtin test command, it will make your “if” statements pretty
- lumberjack - A logging interface for shell scripts
- mo - Mustache templates in pure bash
- optparse - A BASH wrapper for getopts, for simple command line arguments.
- rerun - A modular shell automation framework to organize your keeper scripts
- revolver - A reusable progress spinner for shell scripts
- phases - Minimally invasive bash preprocessor, select sections of your script to run
- powscript - bash transpiler written in bash (coffeescript for bash)
- semver_bash - Semantic Versioning in Bash
- sh-semver - Semver tool for bash - finds versions matching to specified rules
- shellcheck - Static analysis tool for shell scripts
- shellfire - A repository of namespaced, composable shell (bash, sh and dash) function libraries
- shellspec - A full-featured BDD unit testing framework for dash, bash, ksh, zsh and all POSIX shells
- shpec - A shell testing framework
- shutit - Automation framework based on bash and pexpect
- sub - A delicious way to organize programs
- ts - A shell test script
- urchin - An idiomatic shell testing framework that uses only shell commands
- shunit2 - A unit test framework for Bash scripts with a flavour of JUnit/PyUnit.
- rebash - Scripting library/framework. Features: imports, exceptions, doc-tests …
- zunit - A powerful unit testing framework for ZSH
- Bash Official Reference Manual
- Bash Hackers Wiki
- Greg Wooledge’s (aka “greycat”) wiki. Specifically Bash Guide, Bash FAQ and Bash Pitfalls
- Google’s Shell Style Guide
- The Linux Documentation Project: Bash Programming - Intro/How-to
- The Linux Documentation Project: Advanced Bash Scripting Guide
- WikiBooks: Bash Shell Scripting
- Use the Unofficial Bash Strict Mode (Unless You Looove Debugging)
- The Art of Command Line
- Learn Enough Command Line to Be Dangerous
- A guide to learn bash