cli-tools
📋 Copy All exa Commands
📄 Generate exa PDF Guide
exa Cheatsheet
Installation
Platform
Command
Ubuntu 20.10+
sudo apt update && sudo apt install exa
Debian/Ubuntu (older)
cargo install exa
Arch Linux
sudo pacman -S exa
Fedora
sudo dnf install exa
RHEL/CentOS
sudo dnf install epel-release && sudo dnf install exa
openSUSE
sudo zypper install exa
macOS (Homebrew)
brew install exa
macOS (MacPorts)
sudo port install exa
Windows (Scoop)
scoop install exa
Universal (Cargo)
cargo install exa
Verify Installation:
Basic Commands
Command
Description
exa
List files in current directory (replaces ls)
exa -l
Long format with permissions, size, and timestamps
exa -a
Show all files including hidden (. files)
exa -la
Long format with all files including hidden
exa -lh
Long format with human-readable sizes (KiB, MiB, GiB)
exa -lH
Long format with decimal sizes (KB, MB, GB)
exa -1
One file per line (useful for scripting)
exa -R
Recursive listing of directories
exa -F
Add file type indicators (/, @, |, =, >)
exa --grid
Grid layout (default terminal view)
exa --across
Horizontal flow layout
exa -D
List only directories
exa -f
List only files (exclude directories)
exa --color=always
Force color output
exa --color=never
Disable color output
Advanced Usage
Command
Description
exa --tree
Display directory structure as tree (replaces tree)
exa --tree --level=2
Tree view limited to 2 levels deep
exa -l --git
Show Git status for files (tracked, modified, untracked)
exa --git-ignore
Respect .gitignore and show only tracked files
exa -l --sort=modified
Sort by modification time (newest first)
exa -l --sort=size
Sort by file size (largest first)
exa -l --sort=extension
Sort by file extension
exa -l --reverse
Reverse sort order
exa -l --icons
Display file type icons (requires Nerd Fonts)
exa -l --extended
Show extended attributes (SELinux, ACLs)
exa -l@
Short form for extended attributes
exa -li
Show inode numbers
exa -ls
Show block sizes
exa -l --octal-permissions
Display permissions in octal format (755)
exa -l --numeric
Show numeric user/group IDs instead of names
exa -l --time-style=iso
ISO format timestamps
exa -l --time-style=relative
Relative time (e.g., "2 hours ago")
exa -l --modified
Show modification time (default)
exa -l --accessed
Show last access time
exa -l --created
Show creation time
exa --ignore-glob="*.tmp"
Ignore files matching pattern
exa -lZ
Show SELinux security context
exa --tree --git --icons
Tree view with Git status and icons
exa -R --level=3
Recursive listing limited to 3 levels
Configuration
Shell Aliases
Add these to your ~/.bashrc, ~/.zshrc, or ~/.config/fish/config.fish:
# Basic replacements
alias ls = 'exa'
alias l = 'exa -l'
alias la = 'exa -la'
alias ll = 'exa -l'
alias lt = 'exa --tree'
# Advanced aliases
alias lg = 'exa -l --git'
alias lgi = 'exa -l --git --git-ignore'
alias lt2 = 'exa --tree --level=2'
alias lta = 'exa -la --tree'
# Comprehensive view
alias lx = 'exa -lah --git --icons --group --time-style=long-iso'
# Sorting shortcuts
alias lm = 'exa -l --sort=modified --reverse' # Most recent first
alias lz = 'exa -l --sort=size --reverse' # Largest first
# Tree with Git
alias ltg = 'exa --tree --git --level=3'
Color Customization
Set custom colors using the EXA_COLORS environment variable:
# Add to ~/.bashrc or ~/.zshrc
export EXA_COLORS = "da=38;5;245:sb=38;5;204:sn=38;5;43:uu=38;5;245:un=38;5;241"
# Color codes:
# da = date
# sb = file size
# sn = size number
# uu = user (you)
# un = user (other)
# gu = group (you)
# gn = group (other)
Default Options
Create a function wrapper for default options:
# Add to shell configuration
exa() {
command exa --icons --group-directories-first " $@ "
}
Common Use Cases
Use Case: Inspecting Git Repository
# Show all files with Git status and icons
exa -la --git --icons
# Tree view of repository with Git status (ignore node_modules)
exa --tree --git --ignore-glob= "node_modules|.git" --level= 3
# Only show modified files
exa -l --git | grep -E "M|A|D"
Use Case: Finding Large Files
# List files by size, largest first
exa -l --sort= size --reverse
# Recursive search for large files with human-readable sizes
exa -lRh --sort= size --reverse | head -20
# Show only files (no directories) sorted by size
exa -lf --sort= size --reverse
Use Case: Auditing File Permissions
# Show permissions in octal format with extended attributes
exa -l@ --octal-permissions
# Show all permission details with numeric IDs
exa -la --numeric --octal-permissions
# Check SELinux contexts
exa -lZ /var/www/html
Use Case: Analyzing Directory Structure
# Tree view with file sizes and modification times
exa -l --tree --level= 3 --time-style= iso
# Show directory structure with Git awareness
exa --tree --git --icons --level= 4 --ignore-glob= ".git"
# List only directories in tree format
exa -D --tree --level= 2
Use Case: Quick File Browsing
# Grid view with icons for visual scanning
exa --icons --grid
# Long format with all metadata
exa -lah --icons --git --time-style= relative
# Show recent changes (last 24 hours)
exa -l --sort= modified --reverse --time-style= relative | head -20
Best Practices
Use aliases : Set up shell aliases to replace ls with exa for consistent experience across your workflow
Install Nerd Fonts : For full icon support, install a Nerd Font (e.g., FiraCode Nerd Font, Hack Nerd Font) in your terminal
Combine with Git : Always use --git flag in repositories to see file status at a glance without running git status
Leverage tree view : Use exa --tree instead of installing separate tree command, especially with --level to control depth
Configure colors : Customize EXA_COLORS to match your terminal theme for better readability
Use time-style options : Choose --time-style=relative for recent files or --time-style=iso for precise timestamps
Script-friendly output : Use -1 (one per line) and --color=never when piping to other commands or scripts
Respect gitignore : In large repositories, use --git-ignore to avoid listing thousands of build artifacts or dependencies
Combine sorting options : Chain --sort with --reverse to get exactly the order you need (newest, largest, etc.)
Performance in large directories : For directories with thousands of files, basic exa is faster than exa -l --git --icons
Troubleshooting
Issue
Solution
Icons not displaying correctly
Install a Nerd Font and configure your terminal to use it. Download from nerdfonts.com
exa: command not found
Ensure installation completed successfully. Check $PATH includes /usr/local/bin or ~/.cargo/bin
Git status not showing
Verify you're in a Git repository (git status). Use exa -l --git explicitly
Colors not working in pipes
Use exa --color=always when piping to less or other commands: exa --color=always \| less -R
Slow performance on network drives
Disable Git integration (--no-git) and avoid extended attributes (--no-extended) on slow filesystems
Permission denied errors
Some extended attributes require elevated privileges. Use sudo exa -l@ or skip with regular exa -l
Tree view truncated
Increase depth with --level=N or remove limit with no level flag (caution: may be slow on large trees)
Alias conflicts with system ls
Use \ls to call original ls, or unalias ls temporarily. Check aliases with alias \| grep ls
Icons showing as boxes/squares
Terminal doesn't support Unicode properly. Update terminal emulator or disable icons with --no-icons
Different output than ls
exa sorts and displays differently by default. Use --sort=name and adjust flags to match ls behavior
Quick Reference: Time Options
Flag
Description
Example Output
--modified or -m
Modification time (default)
2024-01-15 14:30
--accessed or -u
Last access time
2024-01-15 09:15
--created or -U
Creation time
2024-01-10 08:00
--time-style=iso
ISO format
2024-01-15 14:30
--time-style=long-iso
Long ISO format
2024-01-15 14:30:45
--time-style=full-iso
Full ISO with timezone
2024-01-15 14:30:45.123456789 +0000
--time-style=relative
Relative time
2 hours ago
Quick Reference: Sort Options
Sort Key
Description
Usage
name
Alphabetical by name (default)
exa -l --sort=name
size
File size
exa -l --sort=size
extension
File extension
exa -l --sort=extension
modified
Modification time
exa -l --sort=modified
accessed
Access time
exa -l --sort=accessed
created
Creation time
exa -l --sort=created
type
File type (dir, file, link)
exa -l --sort=type
inode
Inode number
exa -l --sort=inode
oldest
Oldest first (reverse modified)
exa -l --sort=oldest
Add --reverse to any sort to invert the order.