Skip to content


Subversion checkout URL

You can clone with HTTPS or Subversion.

Download ZIP
Shell scripts for applying default settings to UNIX-based operating systems.
Shell Ruby



Shell scripts for applying default settings to UNIX-based operating systems.

By default, these are set to my preferences (namely for OSX) but you can change them to your liking by editing any of the *.tt template files in the home_files directory. Read on to learn more.


  • Configures the Bash .bashrc, .bash_profile, and .inputrc files.
  • Configures the .hushlogin file.
  • Configures the CTags .ctags file.
  • Configures the Vim .vimrc file.
  • Configures the Git .gitconfig, .gitignore, and hook (i.e. .git_template) files.
  • Configures the Silver Surfer .agignore file.
  • Configures the Ruby Gems .gemrc file.
  • Configures the Ruby .irbrc file.
  • Configures the Pry .pryrc file.
  • Configures the Ruby Debugger .rdebugrc file.
  • Configures the RSpec .rspec file.
  • Configures the Awesome Print .aprc file.
  • Configures the Mackup .mackup.cfg file.
  • Configures the Pow .powconfig file.
  • Configures the PostgreSQL .psqlrc file.
  • Configures the Xray .xrayconfig file.
  • Configures Sublime Text as the default editor.
  • Adds Bash Completion.
  • Adds Go Bash support.
  • Adds rbenv Bash support.
  • Adds rbenv-vars settings.
  • Adds NPM Bash support.
  • Adds Travis CI Bash support.
  • Adds Z Bash support.



Open a terminal window and execute the following commands:

Current Version (stable)

git clone git://
cd dotfiles
git checkout v15.1.0

Master Version (unstable)

git clone git://
cd dotfiles

Edit any of the home_files/*.tt template files as you see fit. Then open a terminal window and execute the following command to install:

cd dotfiles

Executing the script will present the following options:

s: Show managed dotfiles.
i: Install dotfiles (existing files are skipped).
l: Link dotfiles to this project (interactive per file, excludes:, .gemrc, and .gitconfig).
c: Check for differences between $HOME files and this project's files.
d: Delete dotfiles (interactive per file, excludes:, .gemrc, and .gitconfig).
q: Quit/Exit.

The options prompt can be skipped by passing the desired option directly to the script. For example, executing ./ s will show all managed dotfiles by this project.

After install, the following files will require manual updating:

  • .bash/ - Add secret/machine-specific environment settings (if any).
  • .gemrc - Uncomment the "gemcutter_key" line and add your own RubyGems key for publishing gems.
  • .gitconfig - Uncomment the name, email, and token lines within the [user] and [github] sections to replace with your own details.


When upgrading to a new version, do the following to apply upgrades:

  1. Run: ./ l. This will link any new files. If not using linked files, run ./ d and ./ i instead.
  2. Run: ./ c. This will display file differences (if any -- usually, should only be excluded files).
  3. Run: bashs. This will apply updates to the shell.
  4. Change to the root directory where all projects are stored and run gia to re-initialize repositories with new Git Hook updates.



.. = "cd .."
... = "cd ../.."
cdb = "cd -"
c = "clear"
h = "history"
l = "ls -alh"
l1 = "ls -A1 | _copy_and_print 'n'"
p = 'pwd | tr -d "rn" | _copy_and_print'
o = "open"
home = "cd $HOME"
bashe = "$EDITOR .bash/"
bashs = "exec $SHELL"
pss = 'ps axu | grep --invert-match grep | grep "$@" --ignore-case --color=auto'
sshe = "$EDITOR $HOME/.ssh/config"
key = "open /Applications/Utilities/Keychain"
ipa = 'curl -s | grep -Eo "[0-9.]+" | _copy_and_print'
sniff = "sudo ngrep -W byline -d 'en0' -t '^(GET|POST) ' 'tcp and port 80'"
dnsf = "sudo discoveryutil mdnsflushcache && sudo discoveryutil udnsflushcaches && printf 'DNS cache cleared.n'"
dnss = "sudo discoveryutil mdnscachestats && sudo discoveryutil udnscachestats"
tsl = "tmux list-sessions"
tsa = "tmux attach-session -t"
tsk = "tmux kill-session -t"
tsr = "tmux rename-session -t"
hb = "brew"
hbi = "brew install"
hbin = "brew info"
hbu = "brew uninstall"
hbl = "brew list"
hbs = "brew search"
hbsw = "brew switch"
hbup = "brew update"
hbug = "brew upgrade"
hbp = "brew pin"
hbpu = "brew unpin"
hbd = "brew doctor"
hbc = "brew cleanup"
hbrb = "brew uninstall ruby-build && brew install --HEAD ruby-build"
gi = "git init"
gcle = "git config --local --edit"
gcge = "git config --global --edit"
gget = "git config"
gst = "git status --short --branch"
gl = 'git log --graph --pretty=format:"%C(yellow)%H%C(reset) %C(bold blue)%an%C(reset) %s%C(bold cyan)%d%C(reset) %C(green)(%cr)%C(reset)"'
gld = 'git log --stat --pretty=format:"%C(yellow)%H%C(reset) %C(bold blue)%an%C(reset) %s%C(bold cyan)%d%C(reset) %C(green)(%cr)%C(reset) %n%b"'
glh = 'git log --pretty=format:%H -1 | _copy_and_print'
glf = 'git fetch && git log --reverse --no-merges --pretty=format:"%C(yellow)%H%C(reset) %C(bold blue)%an%C(reset) %s%C(bold cyan)%d%C(reset) %C(green)(%cr)%C(reset)" ..@{upstream}'
glg = 'git log --pretty=format:"%C(yellow)%H%C(reset) %C(bold blue)%an%C(reset) %s%C(bold cyan)%d%C(reset) %C(green)(%cr)%C(reset)" --grep'
gls = 'git log --pretty=format:"%C(yellow)%H%C(reset) %C(bold blue)%an%C(reset) %s%C(bold cyan)%d%C(reset) %C(green)(%cr)%C(reset)" -S'
glt = 'git log --tags --simplify-by-decoration --reverse --pretty = "format:%d (%ad)" --date=short | sed -e "s/ (tag: //" -e "s/)//" -e "/^ /d"'
grl = "git reflog"
gg = "git grep"
glast = "git show --decorate --stat"
guthors = "git log --format = '%an' | sort | uniq -c | sort --reverse"
gd = "git diff"
gdc = "git diff --cached"
gdm = "git diff origin/master"
gdw = "git diff --color-words"
gdt = "git difftool"
gdtc = "git difftool --cached"
gdtm = "git difftool origin/master"
glame = "git blame"
gbi = "git bisect"
gbis = "git bisect start"
gbib = "git bisect bad"
gbig = "git bisect good"
gbir = "git bisect reset"
gbisk = "git bisect skip"
gbil = "git bisect log"
gbire = "git bisect replay"
gbiv = 'git bisect visualize --reverse --pretty=format:"%C(yellow)%H%C(reset) %C(bold blue)%an%C(reset) %s%C(bold cyan)%d%C(reset) %C(green)(%cr)%C(reset)"'
gbih = "git bisect help"
gb = "git branch --verbose"
gbt = "git show-branch --topics"
gba = "git branch --all"
gbn = "_git_branch_name | _copy_and_print"
gbr = "git branch --move"
gm = "git merge"
gms = "git merge --squash"
gma = "git merge --abort"
gcl = "git clone"
gch = "git checkout"
gchm = "git checkout master"
ga = "git add"
gau = "git add --update"
gap = "git add --patch"
gall = "git add --all ."
gco = "git commit"
gca = "git commit --all"
gcm = "git commit --message"
gcam = "git commit --all --message"
gamend = "git commit --amend"
gamendh = "git commit --all --amend --no-edit"
gcf = "git commit --fixup"
gcp = "git cherry-pick"
gcpa = "git cherry-pick --abort"
gash = "git stash save --include-untracked"
gashc = "git stash clear"
gf = "git fetch"
gfp = "git fetch --prune"
gpu = "git pull"
gpur = "git pull --rebase" # Rebase the current branch on top of the upstream branch.
gpuro = "gpur origin" # Rebase the current branch on top of the upstream origin branch.
gpurom = "gpuro master" # Rebase the current branch on top of the upstream origin master branch.
grc = "git rebase --continue"
gra = "git rebase --abort"
ger = "git rerere"
gp = "git push"
gpo = "git push --set-upstream origin"
gpr = "git push review master"
gps = "git push stage stage:master"
gpp = "git push production production:master"
gtag = "git tag"
gtags = "git push --tags"
gr = "git reset" # Unstage staged files for commit.
grs = "git reset --soft HEAD^" # Undo previous commit.
grh = "git reset --hard HEAD" # Reset to HEAD, destroying all staged/unstaged changes. UNRECOVERABLE!
gdis = "git reset --hard" # Reset to commit, destroying all previous commits. UNRECOVERABLE!
grm = "git reset --merge ORIG_HEAD" # Reset to original HEAD prior to merge.
grom = "git fetch --all && git reset --hard origin/master" # Reset local branch to origin/master branch. UNRECOVERABLE!
gel = "git rm"
gelc = "git rm --cached" # Removes previously tracked file from index after being added to gitignore.
grev = "git revert" # Revert a commit.
glatest = "git for-each-ref --sort=-committerdate refs/heads --format = '%(committerdate:short) %(refname:short)'"
grp = "git remote prune origin"
bzc = "tar --use-compress-program=pigz --create --preserve-permissions --bzip2 --verbose --file"
bzx = "tar --extract --bzip2 --verbose --file"
pgi = "initdb /usr/local/var/postgres"
pgst = "pg_ctl -D /usr/local/var/postgres -l /usr/local/var/postgres/server.log start &"
pgsp = "pg_ctl -D /usr/local/var/postgres stop -s -m fast"
reds = "redis-server /usr/local/etc/redis.conf &"
redc = "redis-cli"
rb = "rbenv"
rbg = "rbenv global"
rbl = "rbenv local"
rbs = "rbenv shell"
rbh = "rbenv rehash"
rbp = "rbenv which"
rbw = "rbenv whence"
rbv = "rbenv versions"
rbi = "rbenv install"
rbil = "rbenv install --list"
rbu = "rbenv uninstall"
rbvars = "rbenv vars"
rd = "rdoc -a -o _doc"
rdo = "open _doc/index.html"
rdd = "rm -rf _doc"
Ruby Gems
geml = "gem list"
gemi = "gem install"
gemup = "gem update"
gemu = "gem uninstall"
gemc = "gem cleanup"
gems = "gem server"
gemp = "gem pristine"
geme = "gem environment"
gemuc = "gem update --system && gem update && gem cleanup"
Ruby Gems Whois
gemw = "gem whois"
b = "bundle"
bi = "bundle install"
bu = "bundle update"
bo = "bundle outdated"
bcon = "bundle console"
be = "bundle exec"
bess = "bes spec"
bert = "ber test"
berts = "ber test | grep _test.rb"
bertv = "TESTOPTS=-v ber test"
bch = "rm -f Gemfile.lock; bundle check"
rebundle = "bch; bundle package"
gs = "gemsmith"
gse = "gemsmith edit"
gsr = "gemsmith read"
gso = "gemsmith open"
Ruby on Rails
scs = "sc --sandbox"
sgc = "sg controller"
sgm = "sg model"
sgh = "sg helper"
sgs = "sg scaffold"
rdbd = "ber db:drop"
rdbc = "ber db:create"
rdbm = "ber db:migrate"
rdbmt = "ber db:migrate && ber db:rollback && ber db:migrate"
rassp = "ber assets:precompile"
rassc = "ber assets:clean"
bernt = "ber notes:custom ANNOTATION=TODO"
bernf = "ber notes:custom ANNOTATION=FIX"
taild = "tail -f log/development.log"
tailt = "tail -f log/test.log"
res = "touch tmp/restart.txt"
rprofile = "ruby-prof --printer=graph_html ./script/rails runner > profile.html"
rpaths = "ber routes | sed -e "1d" -e "s,^[^/]*,,g" | awk '{print $1}' | sort | uniq"
erd = "mkdir -p doc/design && ber erd attributes=primary_keys,foreign_keys,timestamps,inheritance,content inheritance=true orientation=vertical filename=doc/design/models"
dmodels = "mkdir -p doc/design && railroady --label --inheritance --specify --all-columns --join --transitive --output doc/design/ --models"
dcontrollers = "mkdir -p doc/design && railroady --label --inheritance --output doc/design/ --controllers"
dstate = "mkdir -p doc/design && railroady --label --inheritance --output doc/design/ --aasm"
berj = "ber jasmine"
berjci = "ber jasmine:ci"
rcop = "rubocop --display-cop-names"
Rails Best Practices
rbest = "rails_best_practices"
fms = "foreman start"
caps = "bec stage deploy"
capp = "bec production deploy"
nodejs! = "brew unlink iojs && brew link node && printf 'Switched: IO.js -> Node.jsn'"
iojs! = "brew unlink node && brew link --force iojs && printf 'Switched: Node.js -> IO.jsn'"
swift = "/Applications/"
ios = "open /Applications/"
Silver Surfer
agf = "ag --hidden --files-with-matches --file-search-regex"
ez = "$EDITOR $HOME/.z"
Path Finder
pfo = 'open -a "Path" "$PWD"'
v = "vim"
Sublime Text
e = "sublime"
mo = "open -a Marked"


t2s = Tab to Space - Convert file from tab to space indendation.
lessi = Less Interactive - Inspect file, interactively.
sslc = SSL Certificate Creation - Create SSL certificate.
curli = Curl Inspect - Inspect remote file with default editor.
port = Port - List file activity on given port.
gia = Git Init (all) - Initialize/re-initialize repositories in current directory.
groot = Git Root - Change to repository root directory (regardless of current depth).
ginfo = Git Info - Print repository overview information.
ghurn = Git Churn - Answer commit churn for project files (sorted highest to lowest).
gount = Git Commit Count - Answer total number of commits for current project.
gistory = Git File History - Walk through file history revisions (with optional diff support).
glamel = Git Blame Log - Answer blame log (i.e. commit notes) for a specific file and lines (optional).
guthorsa = Git Authors (all) - Answer author commit activity per project (ranked highest to lowest).
gsta = Git Status (all) - Answer status of projects with uncommited/unpushed changes.
gup = Git Update - Fetch commits, prune untracked references, review each commit (optional, with diff), and rebase (optional).
gseta = Git Set Config Value (all) - Set key value for projects in current directory.
ggeta = Git Get Config Value (all) - Answer key value for projects in current directory.
gunseta = Git Unset (all) - Unset key value for projects in current directory.
gailsa = Git Email Set (all) - Sets user email for projects in current directory.
gail = Git Email Get - Answer user email for current project.
gaila = Git Email Get (all) - Answer user email for projects in current directory.
gince = Git Since - Answer summarized list of activity since date/time for projects in current directory.
gday = Git Day - Answer summarized list of current day activity for projects in current directory.
gweek = Git Week - Answer summarized list of current week activity for projects in current directory.
gmonth = Git Month - Answer summarized list of current month activity for projects in current directory.
gsup = Git Standup - Answer summarized list of activity since yesterday for projects in current directory.
gtail = Git Tail - Answer commit history since last tag for current project and copies results to clipboard.
gtaila = Git Tail (all) - Answer commit history count since last tag for projects in current directory.
gashl = Git Stash List - List stashes (if any).
gashs = Git Stash Show - Show stash or prompt for stash to show.
gashp = Git Stash Pop - Pop stash or prompt for stash to pop.
gashd = Git Stash Drop - Drop stash or prompt for stash to drop.
gasha = Git Stash (all) - Answer stash count for projects in current directory.
gucca = Git Upstream Commit Count (all) - Answer upstream commit count (if any) since last pull for projects in current directory.
gpua = Git Pull (all) - Pull new changes (if any) from remote branch for projects in current directory.
gpa = Git Push (all) - Push changes for projects in current directory.
galla = Git Add (all) - Apply file changes (including new files) for projects in current directory.
gcama = Git Commit and Message (all) - Commit changes (modified and new), with message, for projects in current directory.
gcap = Git Commit and Push (all) - Commit and push changes for projects in current directory.
gri = Git Rebase (interactive) - Rebase commits, interactively (i.e. reword, fix, squash, etc.).
gbl = Git Branch List - List local and remote branch details.
gbc = Git Branch Create - Create and switch to branch.
gbs = Git Branch Switch - Switch between branches.
gbd = Git Branch Delete - Delete local and/or remote branch (if found).
gbdm = Git Branch Delete Merged - Delete locally merged branches (if any).
gbna = Git Branch Name (all) - Lists current branch for projects in current directory.
gtagd = Git Tag Delete - Delete local and remote tag (if found).
ghd = Git Hook Delete - Delete hooks for current project.
ghda = Git Hook Delete (all) - Delete hooks for projects in current directory.
gvac = Git Verify and Clean - Verify and clean objects for current project.
gvaca = Git Verify and Clean (all) - Verify and clean objects for projects in current directory.
gh = GitHub - View current GitHub project commits, branches, tags, etc. in default browser.
pguc = PostgreSQL User Create - Create PostgreSQL user.
pgud = PostgreSQL User Drop - Drop PostgreSQL user.
pgt = PostgreSQL Template - Edit PostgreSQL template.
bj = Bundler Jobs - Answer maximum Bundler job limit for current machine or automatically set it if otherwise.
boa = Bundle Outdated (all) - Answer outdated gems for projects in current directory.
bua = Bundle Update (all) - Update gems for projects in current directory.
bca = Bundle Clean (all) - Clean projects of gem artifacts (i.e. pkg folder).
ber = Bundle Execute Rake - Run Rake via binstub or Bundler.
bertt = Bundle Execute Rake Test - Run single Test::Unit test via binstub or Bundler.
bes = Bundle Execute RSpec - Run RSpec via binstub or Bundler.
bessa = Bundle Execute RSpec (all) - Run RSpec via binstub or Bundler for projects in current directory.
beg = Bundle Execute Guard - Run Guard via binstub or Bundler.
bec = Bundle Execute Capistrano - Run Capistrano via binstub or Bundler.
rua = Ruby Upgrade (all) - Upgrade Ruby projects in current directory with new Ruby version information.
rserv = Ruby Server - Serve web content from current directory via WEBrick.
Ruby on Rails
rew = Rails New - Create rails application from selected template.
sc = Rails Script Console - Run Rails console.
ss = Rails Script Server - Run Rails server.
sg = Rails Script Generator - Run Rails generator.
sdb = Rails Script Database Console - Run Rails database console.
Travis CI
tcie = Travis CI Encrypt (all) - Encrypt string for Travis CI-enabled (.travis.yml) projects in current directory.
Site Validator
sv = Site Validator - Generate site validation report using W3C Validator.
Image Magick
sketch = Sketch - Convert photo into a sketch. Inspired by [Whiteboard Cleaner Gist](
gifize = Gifize - Convert video to animated GIF.
dots = Dotfiles - Learn about dotfile aliases, functions, etc.

Git Hooks

bundler_gemfile_path = Bundler Gemfile Path - Detects gem path statements.
capybara_save_and_open_page = Capybara Save And Open Page - Detects save_and_open_page statements.
ctags_rebuild = CTags Rebuild - Rebuilds project .tags file.
git_commit_message_prefix = Git Commit Message Prefix - Detects commit message invalid prefixes.
git_commit_message_words = Git Commit Message Words - Detects commit message words to avoid.
git_commit_message_length = Git Commit Message Length - Detects commit message long line lengths.
jasmine_focus = Jasmine Focus - Detects Jasmine focus statements.
java_script_debugger = JavaScript Debugger - Detects JavaScript debug statements.
java_script_console = JavaScript Console - Detects JavaScript console statements.
java_script_alert = JavaScript Alert - Detects JavaScript alert statements.
pry_binding = Pry Binding - Detects Pry debug statements.
rspec_focus = RSpec Focus - Detects RSpec focus metadata.

IRB, Pry, and Rails consoles

ConsoleKit.copy - Copies data to the MacOS clipboard.
ConsoleKit.paste - Pastes data from the MacOS clipboard.
ConsoleKit.http_codes - Prints Rails HTTP codes.
ConsoleKit.http_symbols - Prints Rails HTTP symbols.

Pry Aliases

'w' = "whereami"
'c' = "continue"
's' = "step"
'n' = "next"
'f' = "finish"
"bp" = "break"
"bpe" = "break --enable"
"bpd" = "break --disable"
"bpD" = "break --delete"
"bpc" = "break --disable-all"
"bpC" = "break --delete-all"
"bph" = "break --help"


Read Semantic Versioning for details. Briefly, it means:

  • Patch (x.y.Z) - Incremented for small, backwards compatible bug fixes.
  • Minor (x.Y.z) - Incremented for new, backwards compatible public API enhancements and/or bug fixes.
  • Major (X.y.z) - Incremented for any backwards incompatible public API changes.

Code of Conduct

Please note that this project is released with a CODE OF CONDUCT. By participating in this project you agree to abide by its terms.


Read CONTRIBUTING for details.


Copyright (c) 2010 Alchemists. Read the LICENSE for details.


Read the CHANGELOG for details.


Developed by Brooke Kuhlmann at Alchemists.

Something went wrong with that request. Please try again.