Shell Aliases
Typing docker-compose up -d fifty times a day? Create an alias. Aliases are shortcuts that save keystrokes and prevent typos.
Create an Alias
This only lasts for the current session.
List All Aliases
Remove an Alias
Make Aliases Permanent
Add to ~/.bashrc (or ~/.zshrc for zsh):
# ~/.bashrc
# Navigation
alias ..='cd ..'
alias ...='cd ../..'
alias ~='cd ~'
# List files
alias ll='ls -la'
alias la='ls -A'
alias l='ls -CF'
# Safety
alias rm='rm -i'
alias cp='cp -i'
alias mv='mv -i'
# Git
alias gs='git status'
alias ga='git add'
alias gc='git commit'
alias gp='git push'
alias gl='git log --oneline'
# Docker
alias dc='docker-compose'
alias dcu='docker-compose up -d'
alias dcd='docker-compose down'
alias dps='docker ps'
# System
alias update='sudo apt update && sudo apt upgrade'
alias ports='ss -tulpn'
alias myip='curl -s ifconfig.me'
Then reload:
Useful Aliases
Quick Editing
alias bashrc='nano ~/.bashrc'
alias hosts='sudo nano /etc/hosts'
alias reload='source ~/.bashrc'
Directory Shortcuts
alias projects='cd ~/projects'
alias www='cd /var/www'
alias logs='cd /var/log'
Command Improvements
alias grep='grep --color=auto'
alias df='df -h'
alias du='du -h'
alias free='free -h'
Safety Net
# Ask before overwriting
alias cp='cp -i'
alias mv='mv -i'
alias rm='rm -i'
# Prevent accidental recursion
alias rm='rm -I --preserve-root'
alias chmod='chmod --preserve-root'
alias chown='chown --preserve-root'
Alias vs Function
Aliases can't take arguments in the middle. Use functions for that:
# Alias - arguments go at the end
alias greet='echo Hello'
greet World # "Hello World"
# Function - arguments anywhere
mkcd() {
mkdir -p "$1" && cd "$1"
}
mkcd new-project # creates and enters directory
Check What an Alias Does
Bypass an Alias
Don't Over-Alias
Too many aliases make you dependent on your config. Keep them for truly frequent commands. You should still know the real commands.
Complete Setup Example
# ~/.bashrc additions
# ============= ALIASES =============
# Navigation
alias ..='cd ..'
alias ...='cd ../..'
alias ~='cd ~'
alias -- -='cd -'
# Listing
alias ls='ls --color=auto'
alias ll='ls -alF'
alias la='ls -A'
alias l='ls -CF'
# Safety
alias rm='rm -i'
alias cp='cp -i'
alias mv='mv -i'
# Convenience
alias c='clear'
alias h='history'
alias j='jobs -l'
# Network
alias ports='ss -tulpn'
alias myip='curl -s ifconfig.me'
alias ping='ping -c 5'
# Git shortcuts
alias g='git'
alias gs='git status'
alias ga='git add'
alias gc='git commit -m'
alias gp='git push'
alias gpl='git pull'
alias gd='git diff'
alias gl='git log --oneline -10'
# Docker shortcuts
alias d='docker'
alias dc='docker-compose'
alias dps='docker ps --format "table {{.Names}}\t{{.Status}}\t{{.Ports}}"'
# ============= FUNCTIONS =============
# Create and enter directory
mkcd() { mkdir -p "$1" && cd "$1"; }
# Extract various archive types
extract() {
case "$1" in
*.tar.gz) tar xzf "$1" ;;
*.tar.bz2) tar xjf "$1" ;;
*.zip) unzip "$1" ;;
*.gz) gunzip "$1" ;;
*) echo "Unknown format" ;;
esac
}
Where should you add aliases to make them permanent?
Quick Reference
| Command | Purpose |
|---|---|
alias name='cmd' | Create alias |
alias | List all aliases |
unalias name | Remove alias |
type name | Check what name does |
\command | Bypass alias |
source ~/.bashrc | Reload config |
Key Takeaways
- Aliases are shortcuts for commands
- Add to
~/.bashrcfor persistence - Use functions when arguments need flexibility
type commandshows what runs\commandbypasses aliases- Don't over-alias - know the real commands
Congratulations! You've completed Chapter 14: Sysadmin Essentials.
Next chapter: Real-World Linux - putting it all together.