awesome-shell
A curated list of awesome command-line frameworks, toolkits, guides and gizmos. Inspired by awesome-php.
https://github.com/alebcay/awesome-shell
Last synced: 3 days ago
JSON representation
-
Shell Script Development
-
See also
-
Directory Navigation
- WikiBooks: Bash Shell Scripting
- Google's Shell Style Guide
- Bash Hackers Wiki
- The Linux Documentation Project: Advanced Bash Scripting Guide
- Use the Unofficial Bash Strict Mode (Unless You Looove Debugging)
- Bash Official Reference Manual
- The Linux Documentation Project: Bash Programming - Intro/How-to
- bashly - Bash command line framework and CLI generator
- dispatch - A command line argument parser in 50 lines of portable shell script.
- Greg Wooledge's (aka "greycat") wiki
- Bash Guide
- Learn Enough Command Line to Be Dangerous
- Shell Field Guide
- shellcheck - Static analysis tool for shell scripts
- The Art of Command Line
- A guide to learn bash
- shfmt - A shell parser, formatter, and interpreter with bash support; includes shfmt
- awesome-awesome - awesomeness](https://github.com/bayandin/awesome-awesomeness).
- composure - Compose, document, version and organize your shell functions
- optparse - A BASH wrapper for getopts, for simple command line arguments.
- bats - Bash Automated Testing System
- bash-language-server - [LSP](https://microsoft.github.io/language-server-protocol/)-based Bash language server
- shellspec - A full-featured BDD unit testing framework for dash, bash, ksh, zsh and all POSIX shells
- assert.sh - Bash unit testing framework
- shunit2 - A unit test framework for Bash scripts with a flavour of JUnit/PyUnit.
- getoptions - An elegant option parser for shell scripts (sh, bash and all POSIX shells)
- getopts.fish - CLI parser for fish
- Fishtape - TAP producer and test harness for fish
- zunit - A powerful unit testing framework for ZSH
- mo - Mustache templates in pure bash
- ansi - ANSI escape codes in pure bash - change text color, position the cursor, much more
- semver_bash - Semantic Versioning in Bash
- bashful - A collection of libraries to simplify writing Bash scripts
- bash-modules - functions for developing with [unofficial strict mode](http://redsymbol.net/articles/unofficial-bash-strict-mode/) enabled.
- shellfire - A repository of namespaced, composable shell (bash, sh and dash) function libraries
- esh - A simple templating engine based on shell, implemented in ~290 lines of POSIX shell and awk.
- critic.sh - Dead simple testing framework for Bash with coverage reporting
- bashew - bash script creator - from small stand-alone script to complex projects with CI/CD and testing
- revolver - A reusable progress spinner for shell scripts
- is.sh - An alternative for builtin test command, it will make your "if" statements pretty
- sh-semver - Semver tool for bash - finds versions matching to specified rules
- lumberjack - A logging interface for shell scripts
- crash - Proper error handling, exceptions and try/catch for ZSH
- powscript - bash transpiler written in bash (coffeescript for bash)
- shpec - A shell testing framework
- urchin - An idiomatic shell testing framework that uses only shell commands
- shutit - Automation framework based on bash and pexpect
- bashmanager - mini bash framework for creating command line tools
- bashwithnails - a Bash framework written just for fun with testing, dependency management & packaging
- rerun - A modular shell automation framework to organize your keeper scripts
- phases - Minimally invasive bash preprocessor, select sections of your script to run
- ts - A shell test script
- rebash - Scripting library/framework. Features: imports, exceptions, doc-tests ...
- Use the Unofficial Bash Strict Mode (Unless You Looove Debugging)
- Bashlets - A modular extensible toolbox for Bash
- bashly - Bash command line framework and CLI generator
- sub - A delicious way to organize programs
-
-
Customization
-
Directory Navigation
- starship - Fast, customisable, cross-shell prompt written in rust
- flatui-terminal-theme - Nicer colors for terminal
- powerlevel10k - Super flexible awesome powerline ZSH theme
- bash-git-prompt - An informative and fancy Bash prompt for Git users
- bullet-train-oh-my-zsh-theme - :bullettrain_side: An oh-my-zsh shell theme based on the Powerline Vim plugin
- bash-powerline - Powerline-style Bash prompt in pure Bash script
- oh-my-git - An opinionated git prompt for bash and zsh
- bashstrap - A quick way to spruce up OSX terminal
- git-prompt - Bash prompt with Git, SVN and HG modules
- gittify - A colorful Bash prompt + customized Git aliases
- sexy-bash-prompt - Bash prompt with colors, Git statuses, and Git branches
- emojify
- bash-full-of-colors - Powerful prompt with screen, tmux, git support and many more
- synth-shell - Greeter with a customizable status report and a fancy bash prompt
- aphrodite-terminal-theme
- geometry - A minimal ZSH theme where any function can be added to the left prompt or (async) right prompt on the fly.
- base16-builder - Base16-Builder
- mysql-colorize - Colorization for mysql comand-line client
- polyglot - An informative Git prompt that works in bash, zsh, ksh, mksh, pdksh, oksh, dash, yash, busybox sh, and osh
- liquidprompt - A full-featured & carefully designed adaptive prompt for Bash & Zsh
-
-
Multimedia and File Formats
-
Directory Navigation
- mpv - Lets you play most audio and video formats (using ASCII characters) in the shell as well as in a GUI.
- xmlstarlet - Old but powerful tool for command-line XML formatting, filtering, and manipulation.
- fx - Command-line JSON processing tool by anononymus JavaScript functions
- visidata - A terminal spreadsheet multitool for exploring and arranging data (csv/json/xml/xls/yaml/etc)
- Beets - Music library manager and MusicBrainz tagger
- dasel - Query and update data structures using selectors from the command line. Comparable to [jq](https://github.com/stedolan/jq) / [yq](https://github.com/kislyuk/yq) but supports JSON, YAML, TOML and XML with zero runtime dependencies.
- jc - Convert command output, file-types, and common strings to JSON or YAML for easier use in scripts.
- yq - yq is a portable command-line YAML processor
- imgp - Blazing fast batch image resizer and rotator
- cmus - Cross-platform cli audio player.
- jo - A small utility to create JSON objects from command-line arguments.
- image-scraper - A cool command line image scraper with a lot of features.
- korkut - Quick and simple image processing at the command line.
- adb-export - Export Android content providers to CSV format
- gifgen - Simple high quality GIF encoding
- dzr - Cross-platform Deezer.com audio player.
- PiCAST - PiCAST turns your $35 Raspberry Pi in to a Chromecast like Device
- library - Create SQLITE databases for folders of music, video, images, or online media. Play and track media like Plex but a CLI-only interface with many sorting options.
- nehm - Console tool, which downloads, sets IDv3 tags and adds to your iTunes (if you use it) your SoundCloud likes in convenient way
- Android-Kitchen - A text-based kitchen for Android ROM customization. Uses shell scripts and works with Cygwin/OS X/Linux
- jq - Sed for json data. You can use it to slice and filter and map and transform structured data
- sejda - Command line manipulation of PDF documents (split, merge, rotate, convert to jpg, extract text, etc)
- xidel - Cli tool to filter, map and create HTML/XML/JSON data with (Turing-complete) XPath and XQuery.
-
-
Shells
- bash - GNU Project's shell (Bourne Again SHell)
- pdksh - Public domain Korn shell
- tcsh - C shell with file name completion and command line editing
- yash - A POSIX-compliant command line shell with built-in support for completion and prediction based on command history
- elvish - Friendly, expressive shell features like anonymous functions and data structures
- osh - Bash compatible, with new/modern Unix shell language called Oil
- powershell - platform task automation and configuration management framework, consisting of a command-line shell and scripting language
- nushell - A modern shell written in Rust
- ion - A modern system shell that features a simple, yet powerful, syntax. It is written entirely in Rust.
- ngs - Fully featured scripting language created specifically for Ops. REPL is being developed.
- murex - A smarter shell and scripting environment with advanced features designed for usability, safety and productivity (eg smarter DevOps tooling)
- es - The extensible shell, based on Plan 9's [rc](https://github.com/rakitzis/rc) shell
- ksh93 - Korn Shell
- mksh - MirBSD Korn Shell
- oksh - Portable OpenBSD ksh
- shell++ - Friendly and modern functional and object oriented shell script language
- shenv - Simple shell version management
- yash - A POSIX-compliant command line shell with built-in support for completion and prediction based on command history
- powershell - platform task automation and configuration management framework, consisting of a command-line shell and scripting language
- zsh - Powerful shell with scripting language
- osh - Bash compatible, with new/modern Unix shell language called Oil
- powershell - platform task automation and configuration management framework, consisting of a command-line shell and scripting language
- xonsh - Python-ish, BASHwards-looking shell language and command prompt
-
Command-Line Productivity
-
- Lmod - Lua-based Environment Modules that enhances Tcl-based modules while being backward compatible (compare to modules)
- pass - Manage passwords from the command line with GPG encryption and optional git integration.
- screen - GNU terminal multiplexer
- byobu - Text-based window manager and terminal multiplexer
- modules - Classical Tcl-based Environment Modules managing the shell environment (compare to Lmod, direnv, and autoenv)
- tmux - Amazing terminal multiplexer
- parallel - Build and execute shell command lines from standard input in parallel
- Buku - Powerful command-line bookmark manager
- ag - Super fast string search through a directory hierarchy
- direnv - An environment switcher for the shell, compare with autoenv
- lf - Terminal file manager written in Go, inspired by ranger
- dnote - A simple command line notebook with multi-device sync and web interface
- fzf - A command-line fuzzy finder
- autoenv - Directory-based environments.
- rg - ripgrep is a line oriented search tool that combines the usability of The Silver Searcher with the raw speed of GNU grep
- fd - A simple, fast and user-friendly alternative to find.
- browsh - The modern text-based browser
- funky - Extends functionality of shell functions making them more powerful and flexible.
- googler - Google Search, Google Site Search, Google News from the terminal
- mcfly - Fly through your shell history. Great Scot!
- xxh - Bring your favorite shell wherever you go through the SSH.
- broot - A better way to navigate directories
- fselect - Find files with SQL-like queries.
- hstr - Bash History Suggest Box
- bashhub - :cloud: Bash history in the cloud. Indexed and searchable.
- percol - Adds flavor of interactive filtering to the traditional pipe concept of UNIX shell
- marker - Bookmark your shell commands
- 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.
- thefuck - Fix common shell mistakes by using an easy to remember command
- nnn - File browser and disk usage analyzer with excellent desktop integration
- spark - ▁▂▃▅▂▇ in your shell
- sshfs - A tool for mounting remote file systems over SSH
- xsv - a fast CSV command line toolkit written in Rust
- pdd - Tiny date, time diff calculator with timers
- k - k is a Zsh script to make directory listings more readable, adding Git status, fileweight colors and rotting dates
- boilr - A blazingly fast CLI tool for creating projects from boilerplate templates.
- usql - Universal command-line interface for SQL databases.
- fasd - Command-line productivity booster, offers quick access to files and directories
- how2 - `how2` finds the simplest way to do something in a unix shell. It's like `man`, but you can query it in natural language.
- hss - An interactive parallel ssh client featuring autocomplete and asynchronous execution
- navi - An interactive cheatsheet tool for the command-line
- slugify - Command that converts filenames and directories to a web friendly format
- AdvancedNewFile - Fast creation of files and directories in a recursive way. Inspired by the Vim plugin.
- hr - `<hr />` for your terminal
- aliases - Contextual, dynamic, organized aliases for bash
- loop - Write and control complex loops with as one-liners
- hhighlighter - Colorize words in a command output
- k alias - get kool aliases (and more) working with a simple one-liner
- spot - Tiny file search utility
- tldr - A fully-functional bash client for tldr, simplified and community-driven man pages
- xplr - A hackable, minimal, fast TUI file explorer
- undollar - undollar bites the dollar sign off the tip of the command you just pasted into your terminal
- wemux - Multi-User Tmux Made Easy
- borg - A terminal based search engine for bash commands
- bartib - A simple timetracker for the command line. It saves a log of all tracked activities as a plaintext file and allows you to create flexible reports.
- tere - A faster alternative to cd + ls
- resh - Contextual shell history for Zsh and Bash
- v - z for vim.
- ddgr - DuckDuckGo from the terminal
- spark.fish - ▁▂▃▅ Sparkline Generator
- arttime - Beauty of text art meets functionality of clock, timer, pomodoro++ time manager
- await - single binary that run list of commands in parallel and waits for their termination
- boom - Store links and snippets in the command line
- cod - -help` commands
- CloudClip - Your own clipboard in the cloud, copy and paste text with gist between different systems
- desk - A lightweight workspace manager for the shell
- foxy - Plain text bookmarks for Firefox and surf browsers.
- gitmux - Show Git status in Tmux status bar
- googlr - Command line tool that lets you search Google from your terminal.
- has - `has` helps you check presence of various command line tools and their versions on path
- sqlline - Shell for issuing SQL to relational databases via JDBC (multiline, completion, highlighting, dialect support)
- lf.sh - Quickly search files with fewer typings and do many more (grepping, copying path to clipboard, etc)
- lowcharts - Draw low-resolution graphs in terminal
- td-cli - A todo command line manager to organize and manage your todos across multiple projects.
- xiki - Makes the shell console more friendly and powerful
- sman - :bug: A command-line snippet manager
- shell-history - Visualize your shell usage with Highcharts
- snips - Command line tool to manage snippets of code.
- surfraw - browse specific site and search the web from your terminal without browser.
- sheet - Text snippets for the command line
- qfc - File-completion widget for Bash and Zsh
- SHML - Style framework for the terminal (Shell Markup Language)
- q - Vim like macro registers for your Bash and Zsh Shell
- modules - Classical Tcl-based Environment Modules managing the shell environment (compare to Lmod, direnv, and autoenv)
- ok-sh - Do you work on many different projects? And in each project, are there commands you use that are specific to that project? You need a .ok file.
- sudocabulary - Learn English Vocabulary from your terminal
- task-manager - Execute all your scripts with just two or three keystrokes.
- byobu - Text-based window manager and terminal multiplexer
- eureka - :bulb: CLI tool to input and store your ideas without leaving the terminal
- mackup - Keep your application settings in sync (OS X/Linux)
- modules - Classical Tcl-based Environment Modules managing the shell environment (compare to Lmod, direnv, and autoenv)
-
Directory Navigation
- z.lua - A new cd command that helps you navigate faster by learning your habits
- autojump - A cd command that learns - easily navigate directories from the command line
- zoxide - A faster way to navigate your filesystem, written in Rust
- z - z is the new j, yo
- aliasme - alias helper to change directory quickly
- bashmarks - Directory bookmarks for the shell
- jump - Jump helps you navigate your file system faster by learning your habits.
- commacd - A faster way to move around in Bash
- up - Ascend directories by name or count; for bash, zsh, and fish.
- goto - A shell utility for navigation to aliased directories supporting auto-completion
- bd - Quickly go back to a parent directory
- zpyi - Python in Zsh - Easy python scripting in shell
- lazy-cd - Simple bash commands for bookmarked navigation of the file system, complete with bash-completion.
-
-
System Utilities
-
Directory Navigation
- ncdu - NCurses Disk Usage
- bat - A `cat` clone with wings
- maza - Local ad blocker. Like Pi-hole but local and using your operating system.
- exa - A modern version of `ls`.
- btop - Linux/OSX/FreeBSD resource monitor
- 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.
- htop - A ncurses based interactive process viewer which aims to be a better `top`
- progress - Linux tool to show progress for `cp`, `rm`, `dd`, and more...
- bmon - Real-time network bandwidth monitor and rate estimator with human-friendly visual output
- powertop - Battery/Power usage and device stats monitoring command-line tool, with tune-up options.
- rng - Copy range of lines from file or stdin to stdout.
- ccat - ccat is the colorizing cat. It works similar to cat but displays content with syntax highlighting.
- lsp - An improved `ls`, with file descriptions in plain language and intelligent file grouping
- ls++ - Colorized ls on steroids
- catcli - The command line catalog tool for your offline data
- logdissect - CLI utility and Python API for analyzing log files and other data.
- hblock - Hosts-file based adblocker
- mtr - The functionality of the 'traceroute' and 'ping' programs in a single network diagnostic tool.
- tiptop - Graphical command-line system monitor.
- prettyping - Making the output of `ping` prettier, more colorful, more compact, and easier to read.
- stronghold - Easily configure MacOS security settings from the terminal.
- xiringuito - SSH-based "VPN for poors"
- quick-secure - Quickly secure and harden UNIX/Linux systems
- nmtui - Text User Interface for controlling NetworkManager
- histstat - History for netstat
- wifi-wand - a Ruby command line application for managing WiFi on MacOS (install by `gem install wifi-wand`)
- procdog - Lightweight command-line control of long-lived processes like servers
- lsd - LSDeluxe, rewrite of GNU ls with lot of added features like colors, icons, tree-view and more formatting options.
- atop - ASCII full-screen performance monitor that is capable of reporting the activity of all processes
- lnav - An advanced log file viewer for the small-scale
-
-
Games
-
Directory Navigation
- minesweeper - Bash implementation of minesweeper
- SHTAP - Reusable text adventure engine for Bash 4
- nudoku - ncurses based sudoku game written in C
- piu-piu - Horizontal scroller game in bash with multiplayer mode!
- tty-solitaire - Play solitaire in your terminal!
- sedtris - Tetris in sed
- bash2048 - Bash implementation of 2048 game
- sed-scripts - Arkanoid and Sokoban written using sed
-
-
Applications
-
Directory Navigation
- taskwarrior - A command-line TODO list manager
- wego - Weather app for the terminal
- ticker
- editly - Command line video editor
- jrnl - A simple command line journal application that stores your journal in a plain text file
- wttr.in - :partly_sunny: The right way to check the weather (curl wttr.in)
- carbon-now-cli - 🎨 Beautiful images of your code — from right inside your terminal.
- pcalc - Calculator made for programmers working with multiple number representations, sizes, and overall close to the bits.
- dstask - Single binary terminal-based TODO manager with git-based sync + markdown notes per task
- whales - A tool to automatically dockerize your applications
- Reddit Terminal Viewer - Browse Reddit from your terminal
- ranger - A console file manager with VI key bindings.
- terjira - Command line power tool for Jira
- ledger - Command line accounting
- gcalcli - Google Calendar command line interface
- pockyt - Read, Manage, and Automate your [Pocket](https://getpocket.com) collection.
- fanyi - Translate English to Chinese in terminal
- bashblog - A Bash script that handles blog posting
- SAWS - A Supercharged AWS CLI
- vl - URL link checker on text documents
- nomino - Batch rename utility using regex, sort and map file options.
- haxor-news - Browse Hacker News like a haxor
- awless - A powerful, innovative and small surface CLI to manage AWS.
- facebook-cli - Facebook command line tool
- moviemon - Everything about your movies within the command line.
- iponmap - Draw point on world map using ip address
- ansiweather - Weather in your terminal, with ANSI colors and Unicode symbols
- md2png - Convert markdown to PNG image
- hn-cli - Browse Hacker News from the comfort of your Terminal
- kanban.bash - commandline asciii kanban board for minimalist productivity bash hackers (csv-based)
- pushblast - Get PushBullet notifications when a shell program exits
- whereami - Get your geolocation information from the CLI
- geeknote - Command line evernote client
- taskbook - Tasks, boards & notes for the command-line habitat
- choosealicense-cli - Choose an OSS license from the comfort of your terminal
- isitup - Check whether a website is up or down
- licen - Generate your license. Yet another lice, but implement with Jinja2 and docopt
- pushbullet-bash - Bash interface to the PushBullet API
- cointop - The fastest and most interactive terminal based UI application for tracking cryptocurrencies
-
-
For Developers
-
Directory Navigation
- 1Password SSH Agent - Authenticate Git and SSH workflows with biometric unlock using 1Password
- ack - A grep-like search tool optimized for source code.
- trunk - Blazingly fast meta code checker and formatter
- cloc - Count Lines of Code
- forgit - Utility tool for `git` taking advantage of fuzzy finder fzf.
- git-open - Type `git open` to open the GitHub page or website for a repository in your browser
- nve - Run any command on specific Node.js versions.
- repren - Command-line search-and-replace and file-renaming swiss army knife
- bcal - Byte CALculator for storage conversions and calculations
- bitwise - Terminal based interactive bit manipulator in curses.
- git-extras - Git utilities -- repo summary, repl, changelog population, author commit percentages and more
- just - Task runner for saving and running project-specific commands.
- bocker - Docker implemented in 100 lines of bash
- dokku - Docker powered mini-Heroku. The smallest PaaS implementation you've ever seen.
- slap - Sublime-like terminal-based text editor that runs on Node.js
- doclt - A command line interface to Digital Ocean
- wipe-modules - A little agent that removes the node_modules folder of non-active projects
- rebound - Instantly browse Stack Overflow results in your terminal when you get a compiler error
- overcommit - A fully configurable and extendable Git hook manager
- gita - A command-line tool to manage multiple git repos.
- git-extra-commands - Many Git extra utilities. Churn, cut-branch, improved-merge and many more.
- git-sh - A customized Bash environment suitable for Git work
- add-gitignore - Interactive CLI that generates a .gitignore for your project based on your needs.
- mkdkr - Makefile + Docker = CI Pipeline
- shipit - Minimalistic SSH deployment
- tag - Instantly jump to your ag matches.
- git-semver - Git plugin for easing semantic versioning and changelog validation
- starring - Automatically star the npm-packages that you are using on GitHub.
- licins - Insert commented software licenses into source code.
- git-quick-stats - Git quick statistics is a simple and efficient way to access various statistics in git repository.
- vmn - git-based automatic versioning and state recovery solution agnostic to language or architecture
- hub - hub helps you win at git.
- mr - Multiple Repository management tool
- vmn - git-based automatic versioning and state recovery solution agnostic to language or architecture
-
-
Shell Package Management
-
Directory Navigation
- bpkg - JavaScript has npm, Ruby has Gems, Python has pip and now Shell has bpkg
- yadm - Git-based dotfiles manager supporting encryption, alternates, and bootstrapping
- bash-it - A community Bash framework
- fresh - Keep your dotfiles fresh
- shallow-backup - Easily create lightweight documentation of installed packages, dotfiles, and more
- homeshick - Git dotfile synchronizer written in Bash
- dotdrop - Save your dotfiles once, deploy them everywhere
- vcsh - Config manager based on Git
- dotfiler
- basher - A package manager for shell scripts
- bashing - Smashing Bash into Pieces
- shundle - Plugin manager for shell scripts
- bpkg - JavaScript has npm, Ruby has Gems, Python has pip and now Shell has bpkg
-
-
Downloading and Serving
-
Directory Navigation
- shell2http - HTTP-server to execute shell commands. Designed for development, prototyping or remote control
- yt-dlp - Command-line program to download videos from YouTube.com and other video sites
- 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
- resty - Little command line REST client that you can use in pipelines
- xh - Friendly and fast tool for sending HTTP requests
- bashttpd - A web server written in Bash
- balls - Bash on Balls
- Dropbox-Uploader - Dropbox Uploader is a Bash script which can be used to upload, download, list or delete files from Dropbox
- ngincat - Tiny Bash HTTP server using netcat
- bashhub-server - Private cloud shell history. Open source server for bashhub
- Kapow! - If you can script it, you can HTTP it.
- tshare - File sharing from commandline.
- vesper - 🍸Vesper is a HTTP framework for Bash/Unix Shell
- 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.
- bitpocket - "DIY Dropbox" or "2-way directory (r)sync with proper deletion"
-
Programming Languages
Categories
Sub Categories
Keywords
cli
65
bash
58
shell
54
terminal
46
command-line
44
zsh
37
linux
24
command-line-tool
21
python
19
rust
17
fish
16
developer-tools
14
macos
12
git
12
console
11
c
11
productivity
10
golang
9
go
9
json
8
tui
8
tool
7
unix
7
shell-script
7
utility
7
search
7
devops
7
ksh
6
nodejs
6
posix
6
history
6
filesystem
6
http
6
devops-tools
5
csv
5
testing
5
standalone
5
vim
5
security
5
docker
4
posix-sh
4
files
4
dotfiles
4
ls
4
cloud
4
monitoring
4
bash-script
4
development
4
ssh
4
ncurses
4