Convert Figma logo to code with AI

eza-community logoeza

A modern alternative to ls

10,947
196
10,947
222

Top Related Projects

23,530

A modern replacement for ‘ls’.

22,363

A syntax-highlighting pager for git, diff, grep, and blame output

47,483

ripgrep recursively searches directories for a regex pattern while respecting your gitignore

33,285

A simple, fast and user-friendly alternative to 'find'

Quick Overview

Eza is a modern, maintained alternative to the ls command-line utility. It provides a more feature-rich and colorful output for listing directory contents and file information. Eza is written in Rust and aims to be a drop-in replacement for ls with additional functionality and improved performance.

Pros

  • Colorful and visually appealing output
  • Extensive feature set, including Git integration and extended file attributes
  • Fast performance due to Rust implementation
  • Active development and community support

Cons

  • May require additional setup compared to the built-in ls command
  • Some users might find the default output too verbose
  • Learning curve for users accustomed to traditional ls options
  • Dependency on Rust runtime (though binary releases are available)

Getting Started

To install eza on various systems:

# macOS (using Homebrew)
brew install eza

# Arch Linux
pacman -S eza

# Ubuntu/Debian (using cargo)
cargo install eza

# Windows (using Scoop)
scoop install eza

After installation, you can start using eza by replacing ls commands with eza:

# List files in the current directory
eza

# List files with details
eza -l

# Show hidden files and directories
eza -a

# Tree view of directory structure
eza --tree

For more advanced usage and options, refer to the eza documentation or run eza --help.

Competitor Comparisons

23,530

A modern replacement for ‘ls’.

Pros of exa

  • Established project with a longer history and wider adoption
  • Simpler codebase, potentially easier for newcomers to contribute
  • Lighter on system resources, especially for large directories

Cons of exa

  • No longer actively maintained, with the last commit in 2021
  • Lacks some advanced features and customization options
  • Limited icon support compared to eza

Code Comparison

exa:

pub fn print_dir(dir: &Dir, options: &Options) -> io::Result<()> {
    let mut files = Vec::new();
    for entry in dir.files() {
        files.push(entry?);
    }
    // ... (sorting and filtering logic)
    for file in files {
        println!("{}", file.file_name().to_string_lossy());
    }
    Ok(())
}

eza:

pub fn print_dir(dir: &Dir, options: &Options) -> io::Result<()> {
    let mut files = dir.files().collect::<io::Result<Vec<_>>>()?;
    // ... (sorting and filtering logic)
    for file in files {
        let display = file.display(options);
        println!("{}", display);
    }
    Ok(())
}

The code comparison shows that eza has a more streamlined approach to collecting files and uses a dedicated display method for formatting output, potentially offering more flexibility in customization.

22,363

A syntax-highlighting pager for git, diff, grep, and blame output

Pros of delta

  • Specialized for git diff output, offering enhanced syntax highlighting and side-by-side diffs
  • Supports various output formats, including line numbers and git-style output
  • Customizable themes and color schemes for better visual differentiation

Cons of delta

  • Limited to diff and log viewing, not a general-purpose file listing tool
  • May require additional configuration to integrate with git workflows
  • Potentially slower for large diffs due to advanced processing features

Code comparison

delta:

let config = Config::from_env()?;
let mut painter = Painter::new(&config);
painter.paint_buffered(input)?;

eza:

let options = Options::parse();
let fs = FileSystem::new(options.dereference);
let tree = fs.scan_tree(paths, &options)?;

Summary

Delta is a specialized tool for enhancing git diff output with advanced features like syntax highlighting and side-by-side diffs. It offers customizable themes and various output formats. However, it's limited to diff viewing and may require additional setup.

Eza, on the other hand, is a modern replacement for the ls command, providing colorized file listings with extended attributes. It's more versatile for general file system navigation but lacks the specialized diff viewing capabilities of Delta.

Choose Delta for improved git diff experiences, and Eza for enhanced file listing and exploration.

47,483

ripgrep recursively searches directories for a regex pattern while respecting your gitignore

Pros of ripgrep

  • Faster search performance, especially for large codebases
  • More advanced regex support and search options
  • Cross-platform compatibility (Windows, macOS, Linux)

Cons of ripgrep

  • Limited to text search functionality
  • Steeper learning curve for advanced features
  • Less visually appealing output compared to eza's colorful listings

Code Comparison

eza example:

eza -la --git

ripgrep example:

rg -i 'pattern' --type-add 'web:*.{html,css,js}' --type web

Key Differences

  • Purpose: eza is a modern replacement for ls, while ripgrep is a fast search tool similar to grep
  • Output: eza provides colorful and detailed file listings, ripgrep focuses on efficient text search results
  • Use case: eza is best for file system navigation and information, ripgrep excels at searching file contents

Performance

  • ripgrep generally outperforms eza in search operations
  • eza may be faster for simple directory listings

Community and Development

  • Both projects have active communities and regular updates
  • ripgrep has a larger user base and more contributors
  • eza (formerly exa) has recently transitioned to community maintenance

Integration

  • ripgrep integrates well with text editors and IDEs for code search
  • eza is commonly used in shell scripts and command-line workflows
33,285

A simple, fast and user-friendly alternative to 'find'

Pros of fd

  • Faster search performance, especially for large directories
  • More intuitive and user-friendly syntax compared to traditional find command
  • Built-in smart case sensitivity and parallel command execution

Cons of fd

  • Limited to file and directory search, lacks advanced file listing features
  • Does not provide detailed file information or colorized output by default
  • Less customizable in terms of output format and display options

Code Comparison

fd:

fd -e txt
fd '^foo.*bar$'
fd -exec rm {}

eza:

eza -l --sort=size
eza --tree --level=2
eza -T -L 2 --git-ignore

Summary

fd excels in fast file searching with a simple syntax, making it ideal for quickly locating files and directories. eza, on the other hand, focuses on enhanced file listing capabilities, offering rich output formats and Git integration. While fd is more specialized for search operations, eza provides a more comprehensive replacement for the traditional ls command with additional features for file system exploration and information display.

Convert Figma logo designs to code with AI

Visual Copilot

Introducing Visual Copilot: A new AI model to turn Figma designs to high quality code using your components.

Try Visual Copilot

README

eza

A modern replacement for ls.

Gitter

Built with Nix Contributor Covenant

Unit tests Crates.io Crates.io

eza demo gif


eza is a modern, maintained replacement for the venerable file-listing command-line program ls that ships with Unix and Linux operating systems, giving it more features and better defaults. It uses colours to distinguish file types and metadata. It knows about symlinks, extended attributes, and Git. And it’s small, fast, and just one single binary.

By deliberately making some decisions differently, eza attempts to be a more featureful, more user-friendly version of ls.


eza features not in exa (non-exhaustive):

  • Fixes “The Grid Bug” introduced in exa 2021.
  • Hyperlink support.
  • Mount point details.
  • Selinux context output.
  • Git repo status output.
  • Human readable relative dates.
  • Several security fixes.
  • Support for bright terminal colours.
  • Many smaller bug fixes/changes!
  • Configuration theme.yml file for customization of colors and icons.

...and like, so much more that it became exhausting to update this all the time. Like seriously, we have a lot of good stuff.


Try it!

Nix ❄️

If you already have Nix setup with flake support, you can try out eza with the nix run command:

nix run github:eza-community/eza

Nix will build eza and run it.

If you want to pass arguments this way, use e.g. nix run github:eza-community/eza -- -ol.

Installation

eza is available for Windows, macOS and Linux. Platform and distribution specific installation instructions can be found in INSTALL.md.

Packaging status


Command-line options

eza’s options are almost, but not quite, entirely unlike ls’s. Quick overview:

Display options

Click to expand
  • -1, --oneline: display one entry per line
  • -G, --grid: display entries as a grid (default)
  • -l, --long: display extended details and attributes
  • -R, --recurse: recurse into directories
  • -T, --tree: recurse into directories as a tree
  • -x, --across: sort the grid across, rather than downwards
  • -F, --classify=(when): display type indicator by file names (always, auto, never)
  • --colo[u]r=(when): when to use terminal colours (always, auto, never)
  • --colo[u]r-scale=(field): highlight levels of field distinctly(all, age, size)
  • --color-scale-mode=(mode): use gradient or fixed colors in --color-scale. valid options are fixed or gradient
  • --icons=(when): when to display icons (always, auto, never)
  • --hyperlink: display entries as hyperlinks
  • --absolute=(mode): display entries with their absolute path (on, follow, off)
  • -w, --width=(columns): set screen width in columns

Filtering options

Click to expand
  • -a, --all: show hidden and 'dot' files
  • -d, --list-dirs: list directories like regular files
  • -L, --level=(depth): limit the depth of recursion
  • -r, --reverse: reverse the sort order
  • -s, --sort=(field): which field to sort by
  • --group-directories-first: list directories before other files
  • -D, --only-dirs: list only directories
  • -f, --only-files: list only files
  • --no-symlinks: don't show symbolic links
  • --show-symlinks: explicitly show links (with --only-dirs, --only-files, to show symlinks that match the filter)
  • --git-ignore: ignore files mentioned in .gitignore
  • -I, --ignore-glob=(globs): glob patterns (pipe-separated) of files to ignore

Pass the --all option twice to also show the . and .. directories.

Long view options

Click to expand

These options are available when running with --long (-l):

  • -b, --binary: list file sizes with binary prefixes
  • -B, --bytes: list file sizes in bytes, without any prefixes
  • -g, --group: list each file’s group
  • -h, --header: add a header row to each column
  • -H, --links: list each file’s number of hard links
  • -i, --inode: list each file’s inode number
  • -m, --modified: use the modified timestamp field
  • -M, --mounts: Show mount details (Linux and MacOS only).
  • -S, --blocksize: show size of allocated file system blocks
  • -t, --time=(field): which timestamp field to use
  • -u, --accessed: use the accessed timestamp field
  • -U, --created: use the created timestamp field
  • -X, --dereference: dereference symlinks for file information
  • -Z, --context: list each file’s security context
  • -@, --extended: list each file’s extended attributes and sizes
  • --changed: use the changed timestamp field
  • --git: list each file’s Git status, if tracked or ignored
  • --git-repos: list each directory’s Git status, if tracked
  • --git-repos-no-status: list whether a directory is a Git repository, but not its status (faster)
  • --no-git: suppress Git status (always overrides --git, --git-repos, --git-repos-no-status)
  • --time-style: how to format timestamps. valid timestamp styles are ‘default’, ‘iso’, ‘long-iso’, ‘full-iso’, ‘relative’, or a custom style ‘+<FORMAT>’ (E.g., ‘+%Y-%m-%d %H:%M’ => ‘2023-09-30 13:00’. For more specifications on the format string, see the eza(1) manual page and chrono documentation.).
  • --total-size: show recursive directory size
  • --no-permissions: suppress the permissions field
  • -o, --octal-permissions: list each file's permission in octal format
  • --no-filesize: suppress the filesize field
  • --no-user: suppress the user field
  • --no-time: suppress the time field
  • --stdin: read file names from stdin

Some of the options accept parameters:

  • Valid --colo[u]r options are always, automatic (or auto for short), and never.
  • Valid sort fields are accessed, changed, created, extension, Extension, inode, modified, name, Name, size, type, and none. Fields starting with a capital letter sort uppercase before lowercase. The modified field has the aliases date, time, and newest, while its reverse has the aliases age and oldest.
  • Valid time fields are modified, changed, accessed, and created.
  • Valid time styles are default, iso, long-iso, full-iso, and relative.

See the man pages for further documentation of usage. They are available

Custom Themes

Click to expand

Eza has recently added support for a theme.yml file, where you can specify all of the existing theme-ing options available for the LS_COLORS and EXA_COLORS environment variables, as well as the option to specify different icons for different file types and extensions. Any existing environment variables set will continue to work and will take precedence for backwards compatibility.

An example theme file is available in docs/theme.yml, and needs to either be placed in a directory specified by the environment variable EZA_CONFIG_DIR, or will looked for by default in $XDG_CONFIG_HOME/eza.

Full details are available on the man page and an example theme file is included here

Hacking on eza

If you wanna contribute to eza, firstly, you're expected to follow our code of conduct. After having understood the code of conduct, you can have a look at our CONTRIBUTING.md for more info about actual hacking.

Star History Chart