Skip to content

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+)
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

  1. Quote Properly - Use single quotes for literal strings, double quotes for variable expansion
  2. Avoid Spaces - No spaces around = sign: alias ll='ls -la'
  3. Use Functions for Parameters - Aliases can't handle arguments well
  4. Check Existing Aliases - Run alias before creating new ones to avoid conflicts
  5. Don't Override Important Commands - Be careful aliasing ls, rm, etc.
  6. Make Descriptive Names - Use memorable, intuitive alias names
  7. Group Related Aliases - Organize by category in config files
  8. Comment Your Aliases - Add comments explaining complex aliases
  9. Test Before Making Persistent - Try aliases in current session first
  10. Use \ to Bypass Alias - Run original command with \ls instead of aliased ls

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

  1. Create Alias Hierarchy - Build complex workflows from simple aliases
  2. Use Conditional Aliases - Different aliases on different systems
  3. Combine with Functions - Use aliases to call functions
  4. Version Control Configs - Keep .bashrc and .bash_aliases in git
  5. Share Aliases - Create a team repository of useful aliases
  6. Document Complex Aliases - Add inline comments explaining logic
  7. Profile Performance - Some aliases can slow down shell startup
  8. 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'