The terminal is a temple. And for decades, ls has been its first prayer—short, stoic, reliable. Then eza breezed in: a single static binary, modern defaults, and a knack for showing you exactly what you care about. So which one belongs on your muscle memory in 2025? Let’s put them head-to-head—speed vs. signal, ubiquity vs. usability, tradition vs. taste.
TL;DR
- If you script against POSIX and live on stripped-down rescue systems → keep using
ls. - If you’re an interactive human who wants richer, readable listings → switch your day-to-day alias to
eza. - Pro move: keep both. Alias
l,ll,latoezafor comfort; fall back tolswhen you need the lowest-common-denominator.
Quick Comparison
| Feature | ls (GNU/BusyBox/BSD) |
eza |
|---|---|---|
| Install base | Universal on Unix-likes | Widely packaged for Linux/macOS/Windows |
| Output defaults | Minimal; readable with tuning | Colorful, informative, sane defaults |
| Git status | Not built-in | Built-in --git shows modified/staged/ignored |
| Tree view | ls -R (flat recursion) |
--tree with levels, headers, alignment |
| Icons & file kind glyphs | No | Yes (optional) |
| Extended attributes / ACLs | Varies by platform | Clear columns/markers in long view |
| Performance on huge dirs | Extremely fast | Fast; overhead for richer context |
| Scripting safety | Predictable, traditional | Human-oriented output; not for parsing |
| Cross-platform niceties | Ship of Theseus (BSD/GNU variants) | One binary, consistent flags mindset |
Why eza Feels Better for Humans
Signal density. With eza, a single glance answers: which files changed under Git, which entries are directories, what’s executable, who owns what, and whether there are extended attributes to care about. Instead of toggling a confetti of flags on every run, the defaults are opinionated in your favor.
Purposeful structure. Headers, aligned columns, group-directories-first, tree views with --level limits—tiny choices that remove friction and mental math. It’s the difference between “a pile of filenames” and “a dashboard for a directory.”
Consistency across distros. BSD vs GNU ls is a perennial “oh right, that flag isn’t here” moment. eza narrows the variance. Your dotfiles get simpler; your hands stop second-guessing.
Why ls Still Matters (and Always Will)
It’s everywhere. Minimal containers, initramfs shells, ancient appliances—ls is there when nothing else is. When you drop into a constrained environment, sober muscles help.
It’s very fast. Especially without color/stat overhead, ls screams on giant trees. When all you need is “print names, now,” it’s still the quickest draw.
It’s the scripting baseline. While parsing ls is a meme to avoid, its presence and behavior remain the reference point in countless tutorials, books, and brain cells.
Common Tasks: “How would I…?”
1) Get a modern long view you can read
# eza
eza -l --group --header --git --time-style=relative
# ls (closest feel)
ls -l --group-directories-first --human-readable --color=auto
2) Sort like you mean it
# Largest first, one file per line
eza --oneline --reverse --sort=size
# Newest at top, with header
eza -l --header --sort=modified --reverse
3) Peek into a repo like a pro
# Show staged/modified/ignored at a glance
eza -l --git
# Tree view limited to two levels, with totals
eza --tree --level=2 --long --total-size
4) Surface extended attributes / ACLs
# eza exposes the interesting bits right in the long listing
eza -l --extended
Performance Notes (the honest bit)
If you list a directory with hundreds of thousands of entries, the extra context eza computes—Git state, metadata, decorations—adds overhead. Interactive humans rarely notice on typical projects, but power users on massive monorepos will. The remedy is simple: use the right tool for the moment. For raw speed, disable adornments or reach for vanilla ls. For comprehension, reach for eza.
Ergonomic Aliases You’ll Actually Use
Drop these in your shell config and forget they exist:
# Human-first defaults
alias l='eza -1a' # compact, all files
alias ll='eza -lah --group --header' # long, human-readable
alias lt='eza --tree --level=2 --long --git' # quick tree with context
alias lg='eza -lah --git' # long + git
# Safety belt: lowest common denominator
alias ls='ls --color=auto' # preserve classic muscle memory
Tip: if you work on remote hosts where
ezaisn’t guaranteed, keeplsaliased normally and bind theezaexperience tol,ll,lt,lg. Zero surprises.
Installation Cheat Sheet (October 2025)
- macOS (Homebrew):
brew install eza - Debian/Ubuntu: install from your distro or the project’s recommended repo for a recent build
- Fedora:
dnf install eza - Arch:
pacman -S eza - Nix:
nix profile install nixpkgs#ezaor use flakes - Windows:
winget install eza-community.ezaorscoop install eza
You’ll get a single binary; configuration lives in your shell aliases and optional LS_COLORS/fonts if you enable icons.
Accessibility & Fonts
Icons are nice, not necessary. If terminal fonts or color contrast get in your way, disable icons and tweak color theming. The value of eza isn’t the emojis—it’s the structured defaults that keep your eyes from doing unpaid overtime.
Which One Should You Use in 2025?
Use both. Make eza your daily driver for interactive work; keep ls in your back pocket for spartan environments and speed-critical sweeps. That’s not fence-sitting—it’s acknowledging that “listing files” is two different jobs: understanding a directory and dumping names fast. One brain, two hammers.
Copy-Paste Starter Kit
# --- eza core ---
alias l='eza -1a'
alias ll='eza -lah --group --header --time-style=relative'
alias lg='eza -lah --git'
alias lt='eza --tree --level=2 --long --git --group'
# --- fallbacks ---
# keep classic ls clean and colored when eza isn't available
if command -v dircolors >/dev/null 2>&1; then
eval "$(dircolors -b)"
alias ls='ls --color=auto'
fi
Set it once. Enjoy it daily.
FAQ
Will eza break my scripts?
Don’t parse either tool’s human-friendly output. Use find, stat, printf, and shell globs for scripting. Treat eza as an interactive tool.
Do I need nerd fonts for icons?
Only if you enable icons. Skip them if you prefer a clean, text-only interface.
Is there any reason to stick to ls forever?
If you live in minimal chroots, embedded shells, or standardized training environments: yes. Otherwise, eza simply helps you see more, faster.
Final Verdict
ls is the venerable baseline; eza is the comfortable chair. In 2025, comfort compounds: fewer flags to remember, fewer seconds lost deciphering dense output, fewer mental context switches. Keep the classic. Reach for the modern. Your future terminal-self will thank you.
Comments
Post a Comment