a collection of useful Bash scripts

All sub-projects are under the BSD licence and are free for anyone to use and modify. DONATIONS would be much appreciated.


You may use all or all or some of the sub-projects. There isn't a single "installer" script, that you may find in, say, my other project Dock, but you won't need it.

For some of the projects there isn't yet an HTML page, so links on the right will lead to their respective repositories, which may or may not contain README files. HTML pages will be added gradually.

Every BashJazz sub-project's repository can be cloned independently and placed anywhere on your system.However, "anywhere" means that you will need to create bashjazz directory anywhere and place all the BashJazz sub-projects you want to have on your machine there. A good place for this directory would probably be /usr/local/share/bashjazz, but you can pick another place. The important thing is that you add the following line into your shell's rc file (.bashrc, zshrc, etc.):

export BASHJAZZ_PATH=/usr/local/share/bashjazz

As a matter of fact, THIS IS A REQUIREMENT - to have the $BASHJAZZ_PATH variable exported into your environment, because scripts - even from the same sub-project - may rely on it to source files from other sub-projects or they may source files from the same repository, but they may still need this variable. Therefor, please don't forget to add the line presented above into one of your shells rc file and then download all BashJazz's sub-projects into that directory.


Dependencies will be mentioned on the sub-project's page and it would usually be only one other subproject, namely utils.

You too can benefit from using the $BASHJAZZ_PATH variable when writing your own scripts. To source files from any BashJazz sub-project then becomes rather easy:

source $BASHJAZZ_PATH/utils/


EXTERNAL dependencies

That's easy, you probably won't have to install anything as it's already installed on your system: bash >= v4.2, awk, sed, grep. All code is written in a POSIX-compatible way such that these scripts should work on any POSIX operating system.

NOTE to MacOSX users:

Default bash that comes with MacOSX is v3 - for some licensing reason or whatnot. Install the newer bash version with brew install bash and make sure it's the main version used by your system with which -a bash.

NOTE to FreeBSD users:

FreeBSD doesn't ship with Bash, but can be easily installed with pkg install bash.

INTERNAL dependencies

Each sub-project may or may not have dependencies. But you will not see submodules in their respective repositories - that would be quite an overkill. Instead, whether the dependency is external or "internal" - it will be mentioned on the project's page (see links on the right). Your job is to simply pull the necessary "internal" dependencies (that is to say - BashJazz sub-projects) and place them inside your $BASHJAZZ_PATH directory.

But don't be alarmed, it isn't tedious. Most BashJazz sub-projects would only have one "internal" dependency - utils. But even that dependency is sometimes unnecessary, as is the case with the utest - a unit testing library for Bash scripts and functions, so it would be fair to say, it is completely autonomous.




  • DOCK (pain free containers)