How to Create and Manage Bash Aliases in Linux to Speed Up Workflows

Working efficiently in the Linux terminal often means typing the same lengthy command sequences dozens of times a day. Repetitive tasks—such as updating system packages, navigating deep directory structures, listing files with detailed human-readable attributes, or executing multi-stage Docker commands—lead to unnecessary keystrokes and typing mistakes. Linux shells like Bash offer an indispensable productivity mechanism called aliases. By defining concise abbreviations for complex shell syntax, Bash aliases let you streamline your daily workflow, create safety nets against accidental file deletions, and customize your terminal experience.

What Are Bash Aliases and How Do They Work?

A Bash alias is a user-defined shortcut that expands into a longer shell command. When you type an alias and press Enter, the shell intercepts the string before execution, substitutes your defined replacement command, and executes the expanded syntax seamlessly.

Bash aliases serve three primary purposes:

  • Workflow Acceleration: Compressing lengthy commands into short abbreviations (e.g., turning git status -s into gs).
  • Safety Guards: Adding interactive safety prompts to destructive commands (e.g., modifying rm to always prompt before unlinking files).
  • Output Modernisation: Pre-configuring default flags on common utilities (e.g., ensuring ls always displays colours and human-readable byte sizes).

Creating Temporary vs. Permanent Aliases

Understanding the difference between ephemeral session aliases and persistent definitions is essential:

Temporary Aliases (Active Session Only)

To create an alias for the duration of your current terminal session, type the alias command directly in your prompt:

alias ll='ls -lah --color=auto'

This shortcut works immediately in your open terminal window, but will disappear the moment you close the window or log out.

Permanent Aliases (Preserved Across Reboots)

To make aliases permanent, write them into your shell configuration files. The standard and cleanest practice on modern Linux distributions is to maintain a dedicated ~/.bash_aliases file.

  1. Open or create your aliases file using your preferred text editor:
nano ~/.bash_aliases
  1. Add your desired alias definitions, following the format alias name='command' (ensure there are no spaces around the equals sign):
# Navigation shortcuts
alias ..='cd ..'
alias ...='cd ../..'
alias home='cd ~'

# Safety checks
alias rm='rm -i'
alias cp='cp -i'
alias mv='mv -i'

# System maintenance (Ubuntu/Debian)
alias update='sudo apt update && sudo apt upgrade -y'

# Quick monitoring
alias ports='sudo ss -tulpn'
alias myip='curl -s ifconfig.me && echo'
  1. Save the file (press Ctrl + O, then Enter in nano) and exit (Ctrl + X).
  2. Verify that your ~/.bashrc file loads ~/.bash_aliases. Most Ubuntu and Debian installations include this block automatically:
if [ -f ~/.bash_aliases ]; then
    . ~/.bash_aliases
fi
  1. Reload your shell configuration immediately without logging out:
source ~/.bashrc

Handling Arguments with Bash Functions

Standard Bash aliases cannot accept arguments positioned in the middle of a command. For instance, an alias cannot take an IP address or directory name and inject it between flags. For parameterized commands, use lightweight Bash functions instead of aliases:

Add this function to ~/.bash_aliases to create a directory and immediately navigate into it:

mkcd() {
    mkdir -p "$1" && cd "$1"
}

Now running mkcd my_project will create the folder and change into it in one swift motion.

Essential Everyday Bash Aliases Reference

Alias Command Expansion Productivity Benefit
ll ls -lah --color=auto Detailed file list with permissions, sizes, and colors
.. cd .. Quickly jumps up one parent directory
rm rm -i Prompts for confirmation before deleting files
update sudo apt update && sudo apt upgrade -y Runs full system package update in one command
ports sudo ss -tulpn Audits all listening TCP/UDP ports and daemons
grep grep --color=auto Highlights matching search patterns in color
meminfo free -m -l -t Displays memory consumption in megabytes

Listing, Bypassing, and Removing Aliases

Managing active aliases during troubleshooting:

  • List All Active Aliases: Simply run alias with no arguments to print every registered alias in your current environment.
  • Bypass an Alias Temporarily: If you have alias rm='rm -i' active but need to delete multiple files without typing ‘yes’ each time, prepend a backslash to bypass the alias and run the raw system binary:
    \rm file*.tmp
  • Remove an Alias: Use the unalias command to drop an alias from your active session:
    unalias ll

Frequently Asked Questions

Do Bash aliases work inside automated shell scripts?

By default, Bash disables alias expansion in non-interactive scripts to prevent unexpected behaviour. In scripts, use full command paths or shell functions instead, or explicitly enable aliases with shopt -s expand_aliases.

How do I create aliases if I use Zsh (Oh My Zsh) instead of Bash?

The syntax for defining aliases in Zsh is identical. Place your alias declarations inside ~/.zshrc instead of ~/.bashrc, and reload with source ~/.zshrc.

Can an alias call another alias?

Yes. If the replacement string ends with a space, Bash checks the next word to see if it also matches an active alias, enabling chained alias expansions.

Get the best tech tips delivered straight to your inbox.

Join thousands of readers mastering Apple, Google, Microsoft, and Linux.