Courses & TutorialsOperating System

Awesome Shell – Massive Collection of Resources

 █████╗ ██╗    ██╗███████╗███████╗ ██████╗ ███╗   ███╗███████╗
██╔══██╗██║    ██║██╔════╝██╔════╝██╔═══██╗████╗ ████║██╔════╝
███████║██║ █╗ ██║█████╗  ███████╗██║   ██║██╔████╔██║█████╗
██╔══██║██║███╗██║██╔══╝  ╚════██║██║   ██║██║╚██╔╝██║██╔══╝
██║  ██║╚███╔███╔╝███████╗███████║╚██████╔╝██║ ╚═╝ ██║███████╗
╚═╝  ╚═╝ ╚══╝╚══╝ ╚══════╝╚══════╝ ╚═════╝ ╚═╝     ╚═╝╚══════╝
███████╗██╗  ██╗███████╗██╗     ██╗
██╔════╝██║  ██║██╔════╝██║     ██║
███████╗███████║█████╗  ██║     ██║
╚════██║██╔══██║██╔══╝  ██║     ██║
███████║██║  ██║███████╗███████╗███████╗
╚══════╝╚═╝  ╚═╝╚══════╝╚══════╝╚══════╝

A curated list of awesome command-line frameworks, toolkits, guides and gizmos.

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 – ☁️ 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 --help commands
  • 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.
  • hashas helps you check presence of various command line tools and their versions on path
  • how2how2 finds 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<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.

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 – 🚀 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 – 🚄 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

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 git taking 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 open to 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 cat clone 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 – ⛅ 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-serverLSP-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

Other Awesome Lists

Other amazingly awesome lists can be found in awesome-awesome

Related Articles

Leave a Reply

Your email address will not be published. Required fields are marked *

Back to top button