Every time you type git commit -m, docker-compose up, or cd ~/Projects/my-app, you're wasting keystrokes. Terminal aliases let you create shortcuts for any command, turning gcm into a full git commit or dcu into docker-compose up.
Power users stack 20+ aliases and save hours per week. Here's how to build your own alias library.
Setting Up Aliases
Find Your Shell Config File
- Bash (Linux default):
~/.bashrc - Zsh (Mac default since Catalina):
~/.zshrc - Fish:
~/.config/fish/config.fish
Add Your First Alias
-
Open Config File
nano ~/.zshrcornano ~/.bashrc -
Add Alias Line
Add:
alias ll="ls -la" -
Save and Reload
Save (Ctrl+X, Y, Enter in nano), then run:
source ~/.zshrc -
Test It
Type
lland watch the magic.
Essential Git Aliases
# Git shortcuts
alias g="git"
alias gs="git status"
alias ga="git add"
alias gaa="git add --all"
alias gc="git commit"
alias gcm="git commit -m"
alias gca="git commit --amend"
alias gp="git push"
alias gpf="git push --force-with-lease"
alias gl="git pull"
alias gco="git checkout"
alias gcb="git checkout -b"
alias gb="git branch"
alias gbd="git branch -d"
alias gm="git merge"
alias gr="git rebase"
alias gri="git rebase -i"
alias glog="git log --oneline --graph --decorate"
alias gd="git diff"
alias gds="git diff --staged"
alias gst="git stash"
alias gstp="git stash pop"
💡 Pro Tip: Git Has Built-in Aliases
You can also configure aliases in git itself: git config --global alias.co checkout. These work as git co rather than just gco.
System & Navigation Aliases
# Navigation
alias ..="cd .."
alias ...="cd ../.."
alias ....="cd ../../.."
alias ~="cd ~"
alias -- -="cd -" # Go to previous directory
# Listing
alias ll="ls -la"
alias la="ls -A"
alias l="ls -CF"
alias lt="ls -ltr" # Sort by time, newest last
# System
alias update="sudo apt update && sudo apt upgrade" # Debian/Ubuntu
alias update="brew update && brew upgrade" # Mac with Homebrew
alias cls="clear"
alias h="history"
alias hg="history | grep" # Search history
# Disk usage
alias df="df -h"
alias du="du -h"
alias duf="du -sh *" # Size of items in current dir
# Process management
alias psg="ps aux | grep"
alias kill9="kill -9"
Development Aliases
# Node/NPM
alias ni="npm install"
alias nid="npm install --save-dev"
alias nr="npm run"
alias nrs="npm run start"
alias nrd="npm run dev"
alias nrb="npm run build"
alias nrt="npm run test"
# Yarn
alias yi="yarn install"
alias ya="yarn add"
alias yad="yarn add --dev"
alias yr="yarn run"
# Python
alias py="python3"
alias pip="pip3"
alias venv="python3 -m venv venv"
alias activate="source venv/bin/activate"
alias pipr="pip install -r requirements.txt"
# Docker
alias d="docker"
alias dc="docker-compose"
alias dcu="docker-compose up"
alias dcud="docker-compose up -d"
alias dcd="docker-compose down"
alias dcl="docker-compose logs"
alias dps="docker ps"
alias dpsa="docker ps -a"
alias dimg="docker images"
alias drm="docker rm"
alias drmi="docker rmi"
Project Navigation Aliases
# Quick project access
alias proj="cd ~/Projects"
alias work="cd ~/Projects/work"
alias personal="cd ~/Projects/personal"
# Specific project shortcuts
alias myapp="cd ~/Projects/my-app && code ."
alias api="cd ~/Projects/api-server && code ."
alias docs="cd ~/Projects/documentation"
# Open in editor
alias c="code ." # VS Code
alias v="vim"
alias n="nvim"
Alias Functions (For Complex Commands)
When you need arguments or complex logic, use functions instead of aliases:
# Make directory and cd into it
mkcd() {
mkdir -p "$1" && cd "$1"
}
# Git commit with message
gcmsg() {
git commit -m "$*"
}
# Find file by name
ff() {
find . -name "*$1*"
}
# Create and activate Python venv
mkvenv() {
python3 -m venv "${1:-venv}" && source "${1:-venv}/bin/activate"
}
# Kill process by port
killport() {
lsof -i :"$1" | awk 'NR!=1 {print $2}' | xargs kill -9
}
# Git clone and cd
gclone() {
git clone "$1" && cd "$(basename "$1" .git)"
}
Organization Tips
-
Create a Separate Aliases File
Keep aliases in
~/.aliasesand source it from your shell config:source ~/.aliases. This keeps your config clean. -
Group by Category
Use comments to organize:
# Git aliases,# Docker aliases, etc. -
Use Consistent Naming
Start git aliases with 'g', docker with 'd', npm with 'n'. This makes them memorable.
-
Document Complex Aliases
Add comments explaining what non-obvious aliases do.
⚠️ Avoid Overriding System Commands
Don't alias common command names like ls, cd, or rm to something completely different. It causes confusion when working on other systems.
Starter Alias Kit
Copy this to your ~/.aliases file to get started:
# Essential aliases - copy to ~/.aliases
# Then add "source ~/.aliases" to your ~/.zshrc or ~/.bashrc
# Navigation
alias ..="cd .."
alias ...="cd ../.."
alias ll="ls -la"
alias proj="cd ~/Projects"
# Git
alias gs="git status"
alias gaa="git add --all"
alias gcm="git commit -m"
alias gp="git push"
alias gl="git pull"
alias gco="git checkout"
alias gcb="git checkout -b"
alias glog="git log --oneline --graph"
# Development
alias nr="npm run"
alias nrd="npm run dev"
alias c="code ."
# System
alias update="sudo apt update && sudo apt upgrade"
alias cls="clear"
alias hg="history | grep"
Conclusion
Start with 5-10 aliases for commands you use daily, then add more as you notice repetitive typing. Within a month, you'll have a personalized command toolkit that makes your terminal feel like a superpower.
The best aliases are the ones you'll actually remember and use. Keep them short, intuitive, and relevant to your workflow.