█████╗ ██╗    ██╗███████╗███████╗ ██████╗ ███╗   ███╗███████╗
██╔══██╗██║    ██║██╔════╝██╔════╝██╔═══██╗████╗ ████║██╔════╝
███████║██║ █╗ ██║█████╗  ███████╗██║   ██║██╔████╔██║█████╗
██╔══██║██║███╗██║██╔══╝  ╚════██║██║   ██║██║╚██╔╝██║██╔══╝
██║  ██║╚███╔███╔╝███████╗███████║╚██████╔╝██║ ╚═╝ ██║███████╗
╚═╝  ╚═╝ ╚══╝╚══╝ ╚══════╝╚══════╝ ╚═════╝ ╚═╝     ╚═╝╚══════╝
███████╗██╗  ██╗███████╗██╗     ██╗
██╔════╝██║  ██║██╔════╝██║     ██║
███████╗███████║█████╗  ██║     ██║
╚════██║██╔══██║██╔══╝  ██║     ██║
███████║██║  ██║███████╗███████╗███████╗
╚══════╝╚═╝  ╚═╝╚══════╝╚══════╝╚══════╝Awesome Shell
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.
Shells
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
 
Command-Line Productivity
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 - :cloud: 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 
--helpcommands - 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 - :bulb: 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.
 - has - 
hashelps you check presence of various command line tools and their versions on path - how2 - 
how2finds the simplest way to do something in a unix shell. It's likeman, 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 - 
<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 - :bug: 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.
 
Directory Navigation
- 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 - :rocket: 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
 
Customization
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 - :bullettrain_side: An oh-my-zsh shell theme based on the Powerline Vim plugin
 - emojify Emoji on the command line :scream:
 - 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
 
For Developers
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
 
System Utilities
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 
ls. - progress - Linux tool to show progress for 
cp,rm,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 
top - 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 (r)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.
 - fx - Command-line JSON processing tool by anononymus JavaScript functions
 - 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.
 
Applications
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 - :partly_sunny: The right way to check the weather (curl wttr.in)
 
Games
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
 - bpkg - JavaScript has npm, Ruby has Gems, Python has pip and now Shell has bpkg
 - 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
 
Guides
- 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
 
Other Awesome Lists
Other amazingly awesome lists can be found in awesome-awesome and awesome-awesomeness.
See also
- awesome-cli-apps
 - [awesome-fish][awesome-fish]
 - [awesome-zsh][awesome-zsh]
 - terminals-are-sexy