Justin Garrison

Mastering ZSH

Posted on April 1, 2019  •  2 minutes  • 306 words

Final Description

An engineer’s $SHELL is likely one of their most used tools. However, it is rarely mastered because it’s invisible in nature. Knowing how to use aliases, variables, and functions is an important start, but there are many more features that can be used to boost your productivity and help you be better at your job.

In this training Justin will cover some of the more advanced topics of zsh and how you can use them. This will help you save time at a prompt and be a better shell user for fun and profit.

if [[ "$SHELL" =~ "zsh" ]]; then
  attendees=$((attendees + 1))
  chsh -s /usr/bin/zsh
  exec /usr/bin/zsh
  attendees=$((attendees + 1))

Final Bio

Justin is a co-author of Cloud Native Infrastructure and loves open source software and participating in healthy communities. Currently he makes developers more productive at Disney Streaming Services.


It is assumed attendees know about aliases, functions, and variables. We will look at why someone should use zsh over other shells (also mention it’ll be the default shell for macOS) and how to configure zsh without a framework like oh-my-zsh. We show advanced zsh topics and practical usage including global aliases, parameter expansion, custom widgets and key bindings. We’ll also talk about command line movement, quickly editing history, and ide-like functionality in your terminal.


Why zsh (10m) prompts (10m) Files, navigation, and completion (15m) Advanced aliases, functions, variables usage (20m) History and replacements (10m) Widgets, hooks and key bindings (20m)

Audience Take-Aways

Mastering your shell is a high leverage skill. The more time you can save on small repetitive tasks the more time you’ll save to do things that matter. This training will teach you practical zsh skills for every day terminal usage and teach you how it works without relying on a zsh framework.



Follow me

Here's where I hang out in social media