ZSH aliases that will change your life
The zsh
aliases that'll turn you into a "10x Engineer"
As a software engineer, spending time in the command line has become second nature to me. Doing any work related to git
? Command line. Running whois
against a domain to see which asshole took the domain name that I just came up with. Command line. Running a local project, ssh
-ing into a remote box, creating/moving/reading/deleting/renaming files, scraping data with a python script? All command line.
However, with nearly every developer using the command line, I only notice a small percentage of my peers customizing and tricking out their command line to maximize their efficiency. Often times I find myself running the same commands over and over, whether that's for debugging, checking the status of things, or simply my regular workflow. I feel like I can personally whiz my way around my instance of ITerm2 only because I've nailed down my aliases and keybinds.
Therefore, I wanted to share some of my favorite aliases and tricks that have boosted my efficiency over the years.
(First things first though -- I highly recommend using ohmyz.sh
and the robbyrussel
theme.)
Navigation aliases
alias gg="cd ~/code" # goes to my code directoryalias ggo="cd ~/go/src/github.com" # goes to go github source pathalias ggg="cd ~/go/src/github.com/GH_USERNAME/REPO" # goes to a specific project repo path
Simple Git shortcuts
# This is the one that I far an away use the most!# Go back to last branchalias back='git checkout @{-1}'# These are great as well# Git logalias log='git log'# Git statusalias gs='git status'# Git diffalias gd='git diff'# Go to staging branchalias staging='git checkout staging'# All git branchesalias allbranch='git branch -a'# Local git branchesalias branch='git branch'
More complex Git shortcuts
# Squashes most recent commit up to and including given commit hash# usage: FIRST: git lot -> find the oldest commit hash you want to include# squash COMMIT_HASHfunction squash {git reset --soft $1; git commit -a --amend --no-edit;}# Amend a commit message# usage: amend "some new commit message"function amend {git commit --amend -m $1;}# Typical workflow that I'd have would be on a feature branch to, once the branch# is ready to be committed to the main branch, I run `squash` and then `amend` with a message# like `amend "Feature Branch: Feature Name"`
Docker Shortcuts
# Get container processalias dps="docker ps"# Get process included stopped containersalias dpa="docker ps -a"# Get container logs# usage: dlogs my-containerfunction dlogs() { docker logs $1 }# Remove all containersfunction drmf() { docker rm -f $(docker ps -a -q); }
The meta stuff
# Open this file in VS Codealias oz='code ~/.zshrc'# Refreshes zsh profilealias ref='source ~/.zshrc'
Whenever I want to edit my .zshrc
, it's as easy as running oz
in the CLI and as soon as I save the file, running ref
will immediately apply the changes.
And.... Voilà! You now can pick and choose the ways that you can customize and trick out your CLI. Hopefully doing this over the years after making some changes you can cumulatively shave hours off of your development time 😄
Notes: I was inspired to write this after seeing this article and learning a few tricks!