Skip to content
Shell scripting utility functions and a bash script boilerplate template
Branch: master
Clone or download
Type Name Latest commit message Commit time
Failed to load latest commit information.
bin updates Aug 29, 2016
etc Initial commit May 27, 2015
lib fixed function Dec 31, 2016
setupScripts now set home as dir for new finder windows Dec 31, 2016
syncScripts text changes May 27, 2015
tmp new scriptTemplate Jan 8, 2015 Point to new dotfiles repo Apr 25, 2019 updates Aug 29, 2016 added seek_confirmation Dec 31, 2016

As of 2017, this repository is in archival state. I refactored much of the code and am now using the scripts and utilities available publicly in this repository:

My Shell Scripts

This is the centralized repository of all the shell scripts which I use for a number of different purposes.

Important: I am a novice programmer and I bear no responsibility whatsoever if any of these scripts that I have written wipes your computer, destroys your data, crashes your car, or otherwise causes mayhem and destruction. USE AT YOUR OWN RISK.

What's here

  • etc/ - Many of my scripts and shared functions call for configuration files. These configs are saved here.
  • lib/ - Shared functions and libraries that are used throughout the scripts. Note all my scripts require these files and will break if they can not be found.
  • setupScripts/ - Scripts that configure new Mac computers from scratch. These scripts perform such tasks as:
    • Insalling Homebrew & associated packages
    • Installing mac applications using Homebrew Cask
    • Configuring OSX to my liking
    • Syncing user preferences and files using Mackup
    • Installing RVM and associated Gems
    • Pushing a new SSH key to Github
  • syncScripts/ - Scripts which use RSYNC and Unison to keep different directories and computers in sync.
  • - A bash script boilerplate template.


This project implements the Semantic Versioning guidelines.

Releases will be numbered with the following format:


And constructed with the following guidelines:

  • Breaking backward compatibility bumps the major (and resets the minor and patch)
  • New additions without breaking backward compatibility bumps the minor (and resets the patch)
  • Bug fixes and misc changes bumps the patch

Here's more information on semantic versioning.

A Note on Code Reuse

The scripts herein were created by me over many years without ever having the intention to make them public. As a novice programmer, I have Googled, GitHubbed, and StackExchanged a path to solve my own scripting needs. Quite often I would lift a function whole-cloth from a GitHub repo and not keep track of it's original location. I have done my best within the scripts to recreate my footsteps and give credit to the original creators of the code when possible. Unfortunately, I fear that I missed as many as I found. My goal of making these scripts public is not to take credit for the wonderful code written by others. If you recognize or wrote something here that I didn't credit, please let me know.

This is a bash script boilerplate template that I use to create all my scripts. It takes care of a number of items for you including:

  • Sourcing associated libraries and functions
  • Gracefully trapping exits
  • Creating and cleaning up temporary directories
  • Writing logs
  • Checking for dependecies (i.e. - ffmpeg or rsync)
  • Passing options from the command line
  • Printing usage information when -h is passed


To use the bash boilerplate for your own script follow these steps.

  1. Make a copy of
  2. Ensure that the new script can find the utilities located in lib/ by updating the path of variable utilsLocation near the top.
  3. Ensure your script is executable (i.e. - run chmod a+x scriptname)
  4. Add your script within the function titled mainScript
You can’t perform that action at this time.