bashing - Smashing Bash into Pieces


bashing is a small tool that let's you create single-file Bash tools in a multi-file way.

Current stable Version: 0.2.2



bashing needs the GNU variant of sed to function properly. If you're on MacOS you can use e.g. Homebrew to install the package gnu-sed.


mkdir -p ~/.bin
curl -ko ~/.bin/bashing
chmod +x ~/.bin/bashing

Make sure ~/.bin is on your $PATH, e.g. by adding export PATH="$PATH:~/.bin" to your .bashrc.


Have a look at the wiki and the Quickstart Tutorial. And if you want to examine a full-fledged Bashing project, why not Bashing itself?

$ bashing new greet
Initializing ./greet ...
Successfully initialized './greet'.
$ cd greet

$ bashing new.task hi
Created Task 'hi'
$ bashing run hi
Hello from Task 'hi'
$ bashing uberbash
Creating /git/public/shell/greet/target/ ...
Uberbash created successfully.

$ ./target/
Usage: ./target/ <command> [<parameters> ...]

    hello    :  (no help available)
    help     :  display this help message
    hi       :  (no help available)
    version  :  display version

$ ./target/ hi
Hello from Task 'hi'

$ ./target/ version
greet 0.1.0-SNAPSHOT (bash 4.2.25(1)-release)

$ bashing install
Creating /git/public/shell/greet/target/ ...
Uberbash created successfully.
Deploying to /home/yannick/.bin/greet ...
Deployed successfully.

$ greet version
greet 0.1.0-SNAPSHOT (bash 4.2.25(1)-release)

Bashing Bashing

To build bashing, check out this repository and run:

$ ./bin/bashing uberbash
Creating /git/public/bashing/target/ ...
Uberbash created successfully.

This will create a standalone bashing script using bashing itself!


Copyright © 2013-2015 Yannick Scherer

Bashing is distributed under the MIT License.

Download Source Code

Download ZIP
Mar 6, 2022