Library for embedding inline assembly directly inside bash. This is sheer madness - it injects machine code (assembled assembly language) directly into /proc/$$/mem
for execution. Currently only supports x86-64.
A super-tiny Activitypub semi compliant microblogging platform, written entirely in bash. Requires netcat to provide network connectivity, openssl, jq, and curl. No front-end, no client-to-server. Everything is manual.
I'm not sure what you'd call this; there's no actual server, there's no API...
This is an open-source introduction to Bash scripting guide/ebook that will help you learn the basics of Bash scripting and start writing awesome Bash scripts that will help you automate your daily SysOps, DevOps, and Dev tasks. No matter if you are a DevOps/SysOps engineer, developer, or just a Linux enthusiast, you can use Bash scripts to combine different Linux commands and automate boring and repetitive daily tasks, so that you can focus on more productive and fun things.
The guide is suitable for anyone working as a developer, system administrator, or a DevOps engineer and wants to learn the basics of Bash scripting.
You can read the book as Markdown files, or download the PDFs (probably easier).
Multiple languages: German, English, Spanish, French, Hindi, Portuguese
A curated list of delightful Bash scripts and resources.
In addition to this list, you should read the list awesome-shell. It is a curated list of awesome command-line frameworks, toolkits, guides and gizmos. You may also want to check awesome-zsh or awesome-fish. If you are looking for more lists, check sindresorhus/awesome.
A collection of handy Bash One-Liners, hotkeys, and terminal tricks for data processing and Linux system maintenance.
Resty provides a simple, concise shell interface for interacting with REST services. Since it is implemented as functions in your shell and not in its own separate command environment you have access to all the usual shell tools. Cookies are supported automatically and stored in a file locally. Most of the arguments are remembered from one call to the next to save typing. It has pretty good defaults for most purposes. Additionally, resty allows you to easily provide your own options to be passed directly to curl, so even the most complex requests can be accomplished with the minimum amount of command line pain.
Implemented as a shell script that you source: . /path/to/resty
Basically, Resty lets you treat HTTP requests to a REST API like a series of CLI commands.
Somebody wrote an entire Minecraft server as a bunch of shell scripts.
Requires busybox 1.35.0 or later (crashes on 1.34, for some reason), bash, gnu grep, gnu sed and nmap-ncat. Grep was actually only used once, so maybe I could make it work with the bb one?
How to add support for configuration files to your shell scripts.
Associative arrays (hash tables) in bash.
A set of shell scripts and aliases that improve your shell usage. Automatically prints system status reports when a shell boots up, does basic monitoring, sets useful aliases, can even print an ASCIIfied logo when you log in. Tries to be configurable; you can pick only the stuff you want when you install it and has its own configuration files. Called from your ~/.bashrc file. Easy to uninstall, too:
rm -rf ~/.config/synth-shell/
Does not work so well on OSX. Seems to be Linux-specific, regardless of the fact that it uses bash.
A collection of pure POSIX sh alternatives to external processes.
Orc is a post-exploitation framework for Linux written in Bash.
A wiki that documents many tips and tricks for writing shell scripts in Bash.
A drag-and-drop .bashrc config file generator. Even does prompts and color changes. Here's mine:
# {hh:mm:ss @ day-of-week mon day}
# [user @ host:$(WINDOW) dir]$
export PS1="\[\033[38;5;220m\]{\[$(tput sgr0)\]\[\033[38;5;214m\]\t\[$(tput sgr0)\]\[\033[38;5;15m\] \[$(tput sgr0)\]\[\033[38;5;75m\]@\[$(tput sgr0)\]\[\033[38;5;15m\] \[$(tput sgr0)\]\[\033[38;5;220m\]\d}\[$(tput sgr0)\]\[\033[38;5;15m\]\n\[$(tput sgr0)\]\[\033[38;5;40m\][\u\[$(tput sgr0)\]\[\033[38;5;15m\] \[$(tput sgr0)\]\[\033[38;5;75m\]@\[$(tput sgr0)\]\[\033[38;5;15m\] \[$(tput sgr0)\]\[\033[38;5;40m\]\h:($WINDOW)\[$(tput sgr0)\]\[\033[38;5;15m\] \[$(tput sgr0)\]\[\033[38;5;40m\]\W]\[$(tput sgr0)\]\[\033[38;5;10m\]\\$\[$(tput sgr0)\]\[\033[38;5;15m\] \[$(tput sgr0)\]"