alias Command Cheat Sheet
The alias command creates shortcuts for frequently used commands. It allows you to define custom command names that expand to longer command sequences, making your shell experience more efficient and personalized.
Synopsis
alias [name[=value] ...]
unalias name ...
Description
alias is a shell built-in command that creates command shortcuts. When you type an alias name, the shell replaces it with the associated command before execution. Aliases are session-specific unless made persistent in shell configuration files.
Basic Usage
Create Alias
alias ll='ls -lah'
Creates ll as shortcut for ls -lah.
List All Aliases
alias
Shows all currently defined aliases.
List Specific Alias
alias ll
Shows definition of ll alias.
Remove Alias
unalias ll
Removes the ll alias.
Remove All Aliases
unalias -a
Common Aliases
File Operations
alias ll='ls -lah'
alias la='ls -A'
alias l='ls -CF'
alias lt='ls -ltr' # Sort by time, newest last
alias lsize='ls -lhS' # Sort by size
alias mkdir='mkdir -pv' # Create parent dirs, verbose
alias cp='cp -iv' # Interactive, verbose
alias mv='mv -iv' # Interactive, verbose
alias rm='rm -Iv' # Safer delete (prompt for 3+)
Navigation
alias ..='cd ..'
alias ...='cd ../..'
alias ....='cd ../../..'
alias ~='cd ~'
alias -- -='cd -' # Go to previous directory
alias home='cd ~'
alias dev='cd ~/dev'
alias downloads='cd ~/Downloads'
Git Shortcuts
alias g='git'
alias gs='git status'
alias ga='git add'
alias gc='git commit'
alias gp='git push'
alias gl='git log --oneline --graph --all'
alias gd='git diff'
alias gco='git checkout'
alias gb='git branch'
alias gpl='git pull'
alias gm='git merge'
System Commands
alias update='sudo apt update && sudo apt upgrade'
alias install='sudo apt install'
alias remove='sudo apt remove'
alias clean='sudo apt autoremove && sudo apt autoclean'
Productivity
alias c='clear'
alias h='history'
alias j='jobs -l'
alias path='echo -e ${PATH//:/\\n}'
alias now='date +"%T"'
alias nowdate='date +"%d-%m-%Y"'
Advanced Aliasing
Aliases with Arguments
Aliases don't support parameters directly. Use functions instead:
# This WON'T work as expected
alias grepsrc='grep -r $1 src/'
# Use a function instead
grepsrc() {
grep -r "$1" src/
}
Combining Commands
alias update-all='sudo apt update && sudo apt upgrade && sudo apt autoremove'
alias backup='tar -czf backup-$(date +%Y%m%d).tar.gz'
Command Chaining
alias web='cd ~/websites && ls -la'
alias dev-server='cd ~/project && npm run dev'
Conditional Aliases
# Use different ls on macOS vs Linux
if [[ "$OSTYPE" == "darwin"* ]]; then
alias ls='ls -G'
else
alias ls='ls --color=auto'
fi
Persistent Aliases
Bash Configuration
Add to ~/.bashrc:
# Edit file
nano ~/.bashrc
# Add aliases
alias ll='ls -lah'
alias gs='git status'
# Apply changes
source ~/.bashrc
Zsh Configuration
Add to ~/.zshrc:
# Edit file
nano ~/.zshrc
# Add aliases
alias ll='ls -lah'
# Apply changes
source ~/.zshrc
Separate Alias File
Create ~/.bash_aliases:
# In ~/.bashrc, add:
if [ -f ~/.bash_aliases ]; then
. ~/.bash_aliases
fi
Then put all aliases in ~/.bash_aliases:
# ~/.bash_aliases
alias ll='ls -lah'
alias gs='git status'
# ... more aliases
Safety Aliases
Prevent Accidental Deletion
alias rm='rm -i'
alias cp='cp -i'
alias mv='mv -i'
These prompt before overwriting or deleting.
Dry Run Aliases
alias rsync-dry='rsync -avzn'
alias rm-dry='echo rm' # Shows what would be deleted
Productivity Boosters
Quick Edits
alias bashrc='nano ~/.bashrc'
alias zshrc='nano ~/.zshrc'
alias hosts='sudo nano /etc/hosts'
alias sshconfig='nano ~/.ssh/config'
Quick Grep
alias grep='grep --color=auto'
alias fgrep='fgrep --color=auto'
alias egrep='egrep --color=auto'
alias h='history | grep'
Network
alias myip='curl ifconfig.me'
alias localip='hostname -I'
alias ports='netstat -tulanp'
alias ping='ping -c 5'
alias fastping='ping -c 100 -s.2'
System Monitoring
alias meminfo='free -m -l -t'
alias psmem='ps auxf | sort -nr -k 4'
alias pscpu='ps auxf | sort -nr -k 3'
alias cpuinfo='lscpu'
alias gpumeminfo='grep -i --color memory /var/log/Xorg.0.log'
File Serving
alias serve='python3 -m http.server 8000'
alias phpserve='php -S localhost:8000'
Practical Examples
Development Workflow
alias dev='cd ~/projects/myapp && code .'
alias build='npm run build'
alias test='npm test'
alias lint='npm run lint'
alias dev-server='npm run dev'
Docker Shortcuts
alias d='docker'
alias dc='docker-compose'
alias dps='docker ps'
alias dpa='docker ps -a'
alias di='docker images'
alias drm='docker rm'
alias drmi='docker rmi'
alias dstop='docker stop $(docker ps -q)'
Time Savers
alias week='date +%V'
alias timer='echo "Timer started. Press Ctrl+D to stop." && date && time cat && date'
alias path='echo $PATH | tr ":" "\n"'
Data Processing
alias csv='column -s, -t'
alias json='python -m json.tool'
alias urlencode='python -c "import sys, urllib.parse as ul; print(ul.quote_plus(sys.argv[1]))"'
alias urldecode='python -c "import sys, urllib.parse as ul; print(ul.unquote_plus(sys.argv[1]))"'
Tips and Best Practices
- Quote Properly - Use single quotes for literal strings, double quotes for variable expansion
- Avoid Spaces - No spaces around
=sign:alias ll='ls -la' - Use Functions for Parameters - Aliases can't handle arguments well
- Check Existing Aliases - Run
aliasbefore creating new ones to avoid conflicts - Don't Override Important Commands - Be careful aliasing
ls,rm, etc. - Make Descriptive Names - Use memorable, intuitive alias names
- Group Related Aliases - Organize by category in config files
- Comment Your Aliases - Add comments explaining complex aliases
- Test Before Making Persistent - Try aliases in current session first
- Use
\to Bypass Alias - Run original command with\lsinstead of aliasedls
Escaping Aliases
Run Original Command
# If you have alias rm='rm -i', run original with:
\rm file.txt
# Or use full path
/bin/rm file.txt
# Or use command
command rm file.txt
Alias vs Function
When to Use Alias
- Simple command substitution
- No arguments needed
- Short, one-line commands
When to Use Function
# Aliases can't handle arguments
# Use function instead:
extract() {
if [ -f "$1" ]; then
case "$1" in
*.tar.gz) tar xzf "$1" ;;
*.zip) unzip "$1" ;;
*.7z) 7z x "$1" ;;
*) echo "Unknown format" ;;
esac
fi
}
Common Patterns
Colorize Output
alias grep='grep --color=auto'
alias diff='diff --color=auto'
alias ls='ls --color=auto'
Add Default Options
alias df='df -h'
alias du='du -h'
alias free='free -m'
alias mkdir='mkdir -p'
Confirmation Prompts
alias rm='rm -I' # Prompt once before removing 3+ files
alias cp='cp -i' # Prompt before overwrite
alias mv='mv -i' # Prompt before overwrite
Debugging Aliases
Check If Command is Aliased
type ll
# Output: ll is aliased to `ls -lah'
Show All Aliases
alias | sort
Find Specific Alias
alias | grep git
Shell-Specific Features
Bash
# List aliases
alias
# Export alias to subshells (not common)
export -f alias_name
Zsh
# Global aliases (expand anywhere)
alias -g G='| grep'
alias -g L='| less'
alias -g H='| head'
alias -g T='| tail'
# Usage
ls G myfile # Expands to: ls | grep myfile
Exit Status
| Code | Meaning |
|---|---|
| 0 | Success |
| 1 | Invalid option or undefined alias |
Tips for Power Users
- Create Alias Hierarchy - Build complex workflows from simple aliases
- Use Conditional Aliases - Different aliases on different systems
- Combine with Functions - Use aliases to call functions
- Version Control Configs - Keep .bashrc and .bash_aliases in git
- Share Aliases - Create a team repository of useful aliases
- Document Complex Aliases - Add inline comments explaining logic
- Profile Performance - Some aliases can slow down shell startup
- Use Namespacing - Prefix related aliases (
git-,docker-, etc.)
Configuration Examples
Minimal Setup
# ~/.bash_aliases
alias ll='ls -lah'
alias la='ls -A'
alias l='ls -CF'
alias ..='cd ..'
alias ...='cd ../..'
Developer Setup
# ~/.bash_aliases
# Navigation
alias dev='cd ~/development'
alias proj='cd ~/projects'
# Git
alias gs='git status'
alias ga='git add'
alias gc='git commit -m'
alias gp='git push'
alias gl='git log --oneline --graph'
# Docker
alias d='docker'
alias dc='docker-compose'
alias dcup='docker-compose up -d'
alias dcdown='docker-compose down'
# Node/NPM
alias nr='npm run'
alias ni='npm install'
alias nt='npm test'
Advanced Techniques
Dynamic Aliases
# Today's date in alias
alias today='echo "Today is $(date +%A, %B %d, %Y)"'
# Note: This evaluates at definition time, not execution time
# Use a function for runtime evaluation
Temporary Aliases
# Set alias only for current session
alias temp_cmd='complex command here'
# It disappears when you close terminal
Alias Chaining
alias update='sudo apt update'
alias upgrade='sudo apt upgrade'
alias clean='sudo apt autoremove'
# Chain them
alias full-update='update && upgrade && clean'