Unix Shell
A Unix shell is a command-line interpreter or shell that provides a command line user interface for Unix-like operating systems. The shell is both an interactive command language and a scripting language, and is used by the operating system to control the execution of the system using shell scripts. Users typically interact with a Unix shell using a terminal emulator; however, direct operation via serial hardware connections or Secure Shell are common for server systems. All Unix shells provide filename wildcarding, piping, here documents, command substitution, variables and control structures for condition-testing and iteration.
Shells
- bash - GNU Project's shell (Bourne Again SHell)
- elvish - Friendly, expressive shell features like anonymous functions and data structures
- fish - Smart and user-friendly command line shell
- osh - Bash compatible, with new/modern Unix shell language called Oil
- shenv - Simple shell version management
- xiki - Makes the shell console more friendly and powerful
- zsh - Powerful shell with scripting language
Command-Line Productivity
- 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
- aliasme - alias helper to change directory quickly
- autoenv - Directory-based environments
- autojump - A cd command that learns - easily navigate directories from the command line
- bashhub - ☁️ Bash history in the cloud. Indexed and searchable.
- bashmarks - Directory bookmarks for the shell
- bd - Quickly go back to a parent directory
- boilr - A blazingly fast CLI tool for creating projects from boilerplate templates.
- boom - Store links and snippets in the commandline
- borg - A terminal based search engine for bash commands
- Buku - Powerful command-line bookmark manager
- byobu - Text-based window manager and terminal multiplexer
- commacd - A faster way to move around in Bash
- 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
- enhancd - 🚀 A next-generation cd command with an interactive filter
- 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.
- fz - Seamless fuzzy tab completion for z
- fzf - A command-line fuzzy finder
- googler - Google Search, Google Site Search, Google News from the terminal
- googlr - Command line tool that lets you search Google from your terminal.
- goto - A shell utility for navigation to aliased directories supporting auto-completion
- has -
has
helps you check presence of various command line tools and their versions on path - how2 -
how2
finds the simplest way to do something in a unix shell. It's likeman
, but you can query it in natural language. - 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
- jump - Jump helps you navigate your file system faster by learning your habits.
- 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
- lazy-cd - Simple bash commands for bookmarked navigation of the file system, complete with bash-completion.
- 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)
- 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
- 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 - your shell
- shark - Sparkline Generator
- sheet - Text snippets for the command line
- spot - Tiny file search utility
- snips - Commandline tool to manage snippets of code.
- 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.
- 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
- up - Ascend directories by name or count; for bash, zsh, and fish.
- v - z for vim.
- wemux - Multi-User Tmux Made Easy
- xsv - a fast CSV command line toolkit written in Rust
Customization
- 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
- 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
- sexy-bash-prompt - Bash prompt with colors, Git statuses, and Git branches
For Developers
- add-gitignore - Interactive CLI that generates a .gitignore for your project based on your needs.
- bcal - Byte CALculator for storage conversions and calculations
- 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.
- fish-getopts - CLI parser for fish
- 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.
- 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.
Downloading and Serving
- 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
- 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
- youtube-dl - Small command-line program to download videos from YouTube.com and other video sites
Multimedia and File Formats
- 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
- 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)
- 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.
- fx - Command-line JSON processing tool by anononymus JavaScript functions
Applications
- 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
- 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
- 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.
- 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
- 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
- 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
- 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
- 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
- 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
- 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
Audio
- mpd - A flexible, powerful, server-side application for playing music.
- mpc - A solid, lightweight, simple mpd client, written in C.
- ncmpc - ncmpc is a fully featured MPD client.
- switchaudio - Change the audio source for macOS.
Automation
- Capistrano - Remote multi-server automation tool.
- Molecule - Automated testing for Ansible roles.
- Posixcube - Shell script-based server automation framework.
Backups
- Rclone - A command line program to sync files and directories to the cloud.
- Rsync Time - Time Machine style backup with rsync.
- restic - Backups done right!
- s3cmd - Command Line S3 Client Software and S3 Backup.
Communication
- mastodon - Self-hosted, globally interconnected microblogging community.
- RaspChat - A chat server that can run on Raspberry Pi.
- The Lounge - Self-hosted web IRC client.
- tg - Command Line Telegram.
Compression
- p7zip - A port of 7za.exe for POSIX systems.
Databases
- mycli - A Terminal Client for MySQL.
- Pex - Light-weight package manager for PostgreSQL.
- pgcli - Postgres CLI with autocompletion.
- Postgrest - REST API for any Postgres database.
- RethinkDB - The open-source database for the realtime web.
DevOps
File Managers
- nnn - The missing terminal file browser.
- Ranger - A console file manager with VI key bindings.
- modd - A flexible tool for responding to filesystem changes.
- ncdu - A disk usage analyzer with an ncurses interface.
Graphics
- imgp - Multi-core batch image resizer and rotator.
Networking
- Armor - Uncomplicated, modern HTTP server.
- caddy - Caddy is the HTTP/2 web server with automatic HTTPS.
- Duck - Cyberduck for the command line interface (CLI).
- Hget - Rocket fast download accelerator.
- hippo - Host configuration file management based on git.
- homebridge - HomeKit support for the impatient.
- hss - An interactive parallel ssh client.
- MacOS VPN - Create macOS VPNs programmatically.
- manssh - Manage your ssh alias configs easily.
- Storm - Manage your SSH hosts like a boss.
- Transfer - Easy file sharing from the command line.
- You-Get - Tiny download utility.
- youtube-dl - Download videos from YouTube.com and other video sites.
Password Managers
- 1pass - A command line interface for 1Password.
- Ironclad - A command line password manager.
- pass - The standard unix password manager.
- pass-tomb - Store password encrypted inside a tomb.
- pick - Minimal password manager for OS X and Linux.
- onepw - A command line tool for managing passwords.
- Tomb - The Crypto Undertaker.
Programming
- devd - A local webserver for developers.
- Echo - High performance, minimalist Go web framework.
- Go - The Go programming language.
- Glide - Package Management for Golang.
- Gripp - Preview GitHub Markdown files locally before committing them.
- Grumpy - A Python to Go source code transcompiler and runtime.
- Kitura - A Swift web framework and HTTP server.
- Legit - Legit is a complementary command-line interface for Git.
- Marathon - Run and manage your Swift scripts.
- Paket - A dependency manager for .NET and mono projects.
- Refined - Browser extension that simplifies the GitHub interface.
- Perfect - Modern web framework for Swift.
- rbenv - Groom your app’s Ruby environment.
- Stencil - A simple and powerful template language for Swift.
- Sup - Super simple deployment tool.
- Swift - The Swift Programming Language.
- swiftenv - Swift Version Manager.
- SwiftLint - A tool to enforce Swift style and conventions.
- Tailor - Cross-platform static analyzer and linter for Swift.
- Vapor - A web framework and server for Swift that works on macOS and Ubuntu.
Searching
- fzy - A better fuzzy finder.
- Peco - Simplistic interactive filtering tool.
- ripgrep - Combines the usability of The Silver Searcher with the raw speed of grep.
Shell Utilities
- alacritty - A cross-platform, GPU-accelerated terminal emulator.
- bat - OSS cat replacement.
- colorls - Beautify the terminal
ls
command. - dat - Distributed data sharing tool.
- dvm - Install and switch between Docker clients.
- exa - exa is a modern replacement for ls.
- fd - Simple, fast and user-friendly alternative to find.
- pv - Monitor the progress of data through a pipeline.
- Terminal Velocity - A fast note-taking app for the UNIX terminal.
- tldr - Simplified and community-driven man pages.
- tmate - Instant terminal sharing.
- upterm - A terminal emulator for the 21st century.
- Watchman - A file watching service.
- Wiki - Self-hosted wiki engine.
Security
- Knox - A secret management service.
- MacOS Auditor - A free MacOS computer forensics tool.
- Safe - A CLI front-end for the Vault app.
- SeKey - Authenticate to UNIX/Linux SSH servers using the Secure Enclave.
- Spoof - Change your MAC address for debugging.
- Vault - A tool for managing secrets.
- Vaulted - Spawning and storage of secure environments.
- vuls - Go-based, agentless vulnerability scanner.
System
- CollectD - System statistics collection daemon.
- Conky - Light-weight system monitor for X.
- Email Archiver Pro - Archiving made simple.
- fDupes - Identifying and/or deleting duplicate files.
- fzf - A command-line fuzzy finder written in Go.
- mas-cli - Mac App Store command line interface.
- Nix - Nix package manager for MacOS.
- progress - Tool to show progress for cp, mv, dd.
- rmlint - Remove duplicates and other lint from your filesystem.
- shiori - Shiori is a simple bookmarks manager written in Go.
- statik - Static web site generator.
- stow - A symlink farm manager.
- zazu - An open source app launcher.
Text Editors
- Micro - A modern and intuitive terminal-based text editor.
Unix Shells
- Elvish - A friendly and expressive Unix shell.
- Fish - The user-friendly command line shell.
- zsh - A shell designed for interactive use.
Version Control
- Gitless - A simple version control system built on top of Git.
Video
- Annie - a fast, simple and clean video downloader.
Virtualization
- Kimchi - An HTML5 management interface for KVM.
- Mech - Easy command-line virtual machines.
- vagrant-veertu - Vagrant plugin for veertu.
- xhyve - Lightweight OS X virtualization solution.
Books and Resources
- The Bash-Hackers Wiki - Human-readable documentation of any kind about GNU Bash
- Bash beginner's mistakes (by the Bash-Hackers Wiki)
- Bash Guide - A bash guide for beginners. (by Lhunath)
- Bash FAQ - Answers most of your questions (by Lhunath)
- Bash manual - Bourne-Again SHell manual
- Bash FAQ (by Chet Ramey)
- Advanced Bash-Scripting Guide - An in-depth exploration of the art of shell scripting
- Bash Guide for Beginners (by Machtelt Garrels)
- bash-handbook - A handbook for those who want to learn Bash without diving in too deeply
- Google's Shell Style Guide - Reasonable advice about code style
- Sobell's Book - A practical guide to commands, editors, and shell programming
- learnyoubash - An interactive workshopper which will learn you how to use the terminal and write your the first Bash script.
- Defensive BASH Programming - Methods to defend your programs from breaking as well as keeping the code tidy and clean.
- Pure Bash Bible - A collection of pure bash alternatives to external processes.
Websites
- Bash One-Liners - A collection of practical or just pure awesome bash one-liners (repos by @janosgyerik)
- commandlinefu - A repository for the most elegant and useful UNIX commands
Community
- Stack Overflow - Bash tag on Stack Overflow
- /r/Bash - A subreddit dedicated to bash scripting
- /r/CommandLine - for anything regarding the command line, in any operating system
- #bash - IRC channel on freenode. The main contributors of the BashGuide, BashFAQ, BashPitfalls and ShellCheck hang around there