Stop Typing ls -la Like It's 1970: Meet eza, a Modern File Lister That Actually Understands Git and SELinux
You know the drill. You open a terminal, type ls, and get a wall of monochrome text that tells you almost nothing useful. Then you type ls -la and squint at the output, mentally parsing permissions and ownership while your brain tries to remember what that cryptic drwxr-xr-x actually means. For decades, this has been the Unix file-listing experience, and honestly? It's time for an upgrade.
Enter eza—a modern drop-in replacement for ls that's written in Rust, ships as a single binary, and comes with features that make the original feel like a museum piece. It's small, it's fast, and it's designed for developers who actually use their terminal.
What It Does
eza is a command-line tool that lists files and directories, just like ls. But where ls stops at showing you filenames and basic metadata, eza keeps going. It uses color to distinguish file types and metadata automatically. It understands symlinks, extended attributes, and Git repositories. It can display SELinux context output and mount point details. And it renders everything in a grid layout that actually works—no more misaligned columns or truncated filenames.
The project is a community fork of exa, which was a popular ls alternative that unfortunately had a bug that broke its grid display (known as "The Grid Bug") and fell into maintenance limbo. eza picks up where exa left off, fixing that bug and adding a pile of new capabilities. It's written in Rust, which means it compiles to a single static binary with no runtime dependencies. You can grab it for Windows, macOS, or Linux and it just works.
Why It's Cool
Let me tell you what sold me on eza, because honestly, it's the details that matter here.
-
Git integration that actually helps. When you run
eza -lin a Git repository, it shows you the status of each file—modified, staged, untracked, all that good stuff. No more switching betweenlsandgit statusto figure out what's changed. It's right there in the file listing. -
Hyperlink support. This is one of those features you didn't know you needed until you have it. eza can output filenames as clickable hyperlinks in terminals that support them. You can click a filename in your terminal and open it directly. It's a small thing, but it changes how you interact with file listings.
-
SELinux context output. If you work on systems with SELinux enforced—and many enterprise Linux environments do—you know the pain of running
ls -Zto see security contexts. eza includes this natively, so you can see those details alongside everything else. -
Human-readable relative dates. Instead of showing you "2024-03-15" or "Mar 15 2024", eza can display "2 hours ago" or "3 days ago". It's the same information, but your brain processes it faster.
-
Theme file customization. You can drop a
theme.ymlfile into your config and customize exactly how colors and icons render. No more fighting with environment variables or arcane terminal escape codes. -
Bright terminal color support. This sounds trivial, but if you've ever tried to get a consistent color scheme across terminals, you know it's not. eza handles the "bright" variant of terminal colors properly, so your file listings look the way you intended.
-
Security fixes. The README explicitly mentions several security fixes. For a tool that runs in your terminal and processes filenames from potentially untrusted sources, that's not nothing.
The project also fixed "The Grid Bug" from exa—a long-standing issue where the grid layout would break under certain conditions. That bug had been open since 2021. eza fixed it.
How to Try It
The fastest way to try eza is with Nix, if you have it set up with flake support:
nix run github:eza-community/eza
That will build and run eza immediately. If you want to pass arguments, tack them on after a --:
nix run github:eza-community/eza -- -ol
For everyone else, eza is available through most package managers. Check the INSTALL.md file for your specific platform. It's available on Windows, macOS, and Linux, and the Repology page shows a long list of distributions that package it.
Once installed, you can start using it as a drop-in replacement for ls. The options are similar but not identical—the README notes they're "almost, but not quite, entirely unlike ls's." Key options include -l for long format, -T for tree view, -R for recursive listing, and -G for grid display (which is actually the default).
Final Thoughts
eza isn't trying to reinvent the terminal or replace every file management tool you own. It's doing something simpler and arguably more important: making the most basic file-listing command actually pleasant to use. If you spend any time in a terminal—and as a developer, you almost certainly do—this is one of those quality-of-life upgrades that pays for itself in the first week. The Git integration alone is worth the switch. Give it a try; you might find yourself wondering why you put up with ls for so long.
Follow @githubprojects for more developer tools and open source projects.
Repository: https://github.com/eza-community/eza