TopGit
Đánh giá repo GitHub

exa: exa ls replacement không còn bảo trì

ogham/exa
ETopGit review image for ogham/exa
Review by Topgit.dev for ogham/exa, with GitHub repository stats and README context.
Nhận định nhanh

exa đã ngừng phát triển theo đúng nghĩa: không còn ai merge PR vào ogham/exa nữa, và ngay dòng đầu README cũng nói vậy, trỏ thẳng sang bản fork eza. Phần còn lại vẫn chạy tốt như một công cụ thay thế ls, có màu sắc, trạng thái Git, và chế độ xem cây, nhưng đó là code đã đóng băng trong khi eza vẫn tiếp tục vá lỗi. Chỉ nên cài exa nếu một script đã phụ thuộc sẵn vào đúng binary đó; dùng hàng ngày thì eza là cùng công cụ, trừ rủi ro bị bỏ rơi.

Sao
★ 24.5k
Fork
⑂ 651
Người đóng góp
👥 163
Ngôn ngữ
Rust
Giấy phép
MIT
Chủ đề
Developer Tools
Cập nhật
Sep 2024
Trang chủ
GitHub

exa là gì?

exa là một binary Rust duy nhất thay thế lệnh `ls` trên Unix, thêm màu sắc, icon, và khả năng nhận biết symlink, extended attribute, và trạng thái Git mà `ls` gốc không hiển thị. Nó đọc cùng thư mục như `ls` nhưng định dạng theo dạng lưới mặc định, hoặc dạng một dòng, dạng dài, hay dạng cây khi được yêu cầu. Điều cần biết trước: exa đã ngừng nhận cập nhật, và chính README của nó trỏ người dùng sang bản fork eza nếu cần dùng lâu dài.

Key features: colors, Git status, and tree views

  • ✓Chế độ xem dài nhận biết Git: `--git` kết hợp với `-l` đánh dấu từng file là đã sửa, mới, hay bị ignore ngay từ working tree, điều mà `ls` không có khái niệm.
  • ✓Đệ quy dạng cây tích hợp sẵn: `-T`/`--tree` duyệt qua các thư mục con và in ra dạng cây mà không cần pipe qua `find` hay cài thêm binary tree riêng.
  • ✓Extended attribute: `-@`/`--extended` liệt kê xattr của từng file cùng kích thước, hữu ích khi kiểm tra thứ như cờ quarantine trên macOS.
  • ✓Kích thước theo thang màu: `--color-scale` tô màu kích thước file để file lớn nổi bật trong danh sách dài thay vì chỉ là con số thuần.
  • ✓Chỉ báo loại file và icon: `-F`/`--classify` thêm ký hiệu loại file, còn `--icons` thêm icon loại file cho terminal hỗ trợ.
  • ✓Sắp xếp và lọc linh hoạt: `--sort`, `--group-directories-first`, `--git-ignore`, và `--ignore-glob` theo glob kiểm soát những gì hiển thị và theo thứ tự nào mà không cần thêm xử lý shell.
Số sao GitHub của repo này thay đổi thế nào theo thời gian. Nguồn: star-history.com.Xem lịch sử sao ↗

Cài đặt exa trên hệ thống của bạn

exa có sẵn trên hầu hết trình quản lý gói Unix: `apt install exa` trên Debian và Ubuntu 20.10 trở lên, `pacman -S exa` trên Arch, `dnf install exa` trên Fedora, `brew install exa` trên macOS qua Homebrew, `port install exa` qua MacPorts, `apk add exa` trên Alpine, `zypper install exa` trên openSUSE, `emerge sys-apps/exa` trên Gentoo, `xbps-install -S exa` trên Void, `nix-env -i exa` trên NixOS, và `pkg install exa` trên Termux/Android. Nếu đã có sẵn Rust toolchain, `cargo install exa` sẽ build từ crates.io và đặt binary vào `$HOME/.cargo`; thêm `--no-default-features` để bỏ qua dependency libgit2 nếu không cần trạng thái Git. Cài thủ công thì tải binary đã build sẵn từ trang GitHub releases rồi copy vào một thư mục nằm trong `$PATH`, ví dụ `/usr/local/bin`.

Sử dụng các tùy chọn dòng lệnh của exa

Chế độ xem mặc định là dạng lưới có màu (`-G`); chuyển sang mỗi dòng một entry bằng `-1`, hoặc thêm `-l` để có chế độ xem dài với quyền truy cập, kích thước, và timestamp. Thêm `-T` để đệ quy dạng cây, hoặc `-R` để đệ quy mà không theo định dạng cây, và `-L 2` để giới hạn độ sâu đệ quy. `-a` hiển thị file ẩn (dùng hai lần để hiện cả `.` và `..`), còn `--git-ignore` bỏ qua những gì khớp với `.gitignore`. Trong `-l`, `--git` thêm cột trạng thái Git, `-@` hiển thị extended attribute, và `-h` thêm dòng header; `--time=modified` (hoặc `changed`/`accessed`/`created`) chọn trường timestamp nào hiển thị ở cột thời gian, còn `--sort=size` hoặc `--sort=type` đổi thứ tự sắp xếp.

Điểm mạnh

  • ✓Một binary duy nhất, không cần duy trì shell function hay alias trên nhiều máy.
  • ✓Trạng thái Git tích hợp sẵn trong chế độ xem dài, tiết kiệm một lệnh `git status` riêng khi kiểm tra thư mục nhanh.
  • ✓Được đóng gói sẵn trên hầu hết repo của các distro lớn và Homebrew, nên cài đặt chỉ mất một dòng lệnh trên đa số hệ thống.
  • ✓Màu mặc định hợp lý ngay từ đầu, không cần cấu hình `LS_COLORS`.

Hạn chế của exa

  • △Dự án đã ngừng bảo trì: README nói rằng repo còn không thể archive vì người duy nhất có quyền làm việc đó hiện không liên lạc được, nên issue và PR mở ra không ai xử lý.
  • △Build với hỗ trợ Git cần libgit2, và người dùng target musl cần thêm feature flag `vendored-openssl` mới chạy được — một bước build mà một dự án còn bảo trì lẽ ra đã làm mượt hơn.
  • △Mọi bản build đóng gói theo distro đều đóng băng ở phiên bản release cuối cùng; không còn đường nào để nhận fix mới ngoài việc chuyển sang eza.
  • △Việc build trang man phụ thuộc vào pandoc, một công cụ ngoài mà phần lớn người dùng chưa chắc đã cài sẵn chỉ để đọc `man exa`.

Các lựa chọn thay thế cho exa

eza — bản fork đang được bảo trì tích cực của exa, giữ nguyên bộ tính năng cốt lõi (màu sắc, trạng thái Git, chế độ xem cây) cộng thêm fix và tính năng mới từ sau khi exa dừng lại.lsd (LSDeluxe) — một công cụ thay thế `ls` khác viết bằng Rust, có icon và màu sắc, hướng tiếp cận tương tự exa nhưng vẫn đang phát triển.`ls` gốc kèm alias trong shell — `alias ll='ls -alFh --color=auto'` cho một phần kết quả có màu, chi tiết mà không cần thêm dependency.

Câu hỏi thường gặp về exa

exa có còn được bảo trì không, hay nên dùng eza?

exa không còn được bảo trì — chính README của nó nói vậy và trỏ sang eza, một bản fork cộng đồng vẫn tiếp tục thêm tính năng và fix lỗi mà exa đã ngừng nhận. Với thiết lập mới, eza là lựa chọn an toàn hơn; exa vẫn chạy được, nhưng bug và thiếu sót phát hiện bây giờ sẽ không được vá trong repo này.

Cách cài exa trên Ubuntu, macOS, hoặc qua Cargo?

Trên Ubuntu 20.10 trở lên, chạy `sudo apt install exa`. Trên macOS với Homebrew, chạy `brew install exa`. Nếu đã cài Rust toolchain, `cargo install exa` sẽ build từ crates.io; thêm `--no-default-features` để bỏ qua dependency hỗ trợ Git nếu không cần.

Sự khác biệt giữa exa và lệnh ls tiêu chuẩn là gì?

exa mặc định có output màu, bố cục dạng lưới thay vì cột thuần, trạng thái Git trong chế độ xem dài, đệ quy dạng cây với `-T`, liệt kê extended attribute, và thang màu cho kích thước file — những thứ `ls` gốc không có nếu không thêm flag hoặc script wrapper.

exa có hiển thị trạng thái Git và thay đổi file trong danh sách không?

Có, exa hiển thị trạng thái Git: dùng `--git` cùng với `-l` (chế độ xem dài) sẽ thêm một cột đánh dấu từng file đã tracked là đã sửa, mới, hay bị ignore, dựa trên working tree hiện tại, ngay trong danh sách file.

Có thể dùng chế độ xem cây và icon của exa trên mọi hệ Unix không?

Chế độ xem cây (`-T`) và flag `--icons` của exa hoạt động ở bất kỳ đâu binary exa chạy được, kể cả Linux, macOS, và Android/Termux — icon hiển thị đúng hay không chỉ phụ thuộc vào font của terminal có hỗ trợ glyph mà exa xuất ra hay không.

Cần phiên bản Rust nào để build exa từ source?

Build exa từ source cần Rust phiên bản 1.66.1 trở lên, cài qua rustup, cộng với libgit2 để hỗ trợ trạng thái Git (hoặc build với `--no-default-features` để bỏ qua dependency đó).

Vấn đề mà exa giải quyết

Lệnh `ls` gốc trên Linux và macOS chỉ hiển thị tên file, và với `-l` thì thêm quyền truy cập và kích thước — không có thông tin file nào đã thay đổi trong branch Git hiện tại, không icon, và không có thang màu kích thước để phân biệt một file config 2KB với một file binary 200MB chỉ bằng mắt. Ai làm việc với terminal cả ngày cũng phải nhớ tổ hợp flag `ls -la` hoặc dùng một wrapper; exa đóng gói sẵn hành vi wrapper phổ biến — màu sắc, nhận biết Git, đệ quy dạng cây — vào một binary duy nhất thay vì alias và function trong shell. Đó là khoảng trống mà exa lấp đầy.

Các trường hợp sử dụng tốt nhất

  • •Xem nhanh working tree Git: `exa -l --git` hiển thị file đã sửa và chưa được track mà không cần chạy `git status` riêng.
  • •Duyệt cấu trúc thư mục nhanh: `exa -T -L 2` cho ra cây hai cấp thay vì pipe `find` qua `sed` hoặc cài thêm binary tree riêng.
  • •Phát hiện file lớn bằng mắt: `exa -l --color-scale` tô màu kích thước để một file log hay binary quá khổ nổi bật trong danh sách dài.
  • •Kiểm tra extended attribute trên macOS: `exa -l -@` liệt kê xattr như cờ quarantine ngay trong danh sách file.

Ai nên dùng — và ai nên bỏ qua

Ai đang thiết lập terminal mới hôm nay nên bắt đầu với eza, không phải exa — cùng lệnh, cùng flag, nhưng còn được vá lỗi. exa vẫn hợp lý nếu bạn đang duy trì một dotfiles repo cũ hoặc một script đã sẵn gọi tới nó và việc cài lại chưa đáng công ngay lúc này, hoặc nếu distro bạn dùng chỉ đóng gói sẵn `exa` và bạn chỉ cần danh sách file có màu, nhận biết Git mà không muốn thêm gói mới. Bỏ qua nó nếu bạn muốn icon và tính năng được thêm sau thời điểm fork, hoặc nếu bạn quan tâm việc có người trả lời issue.

Repo liên quan

Nguồn & ghi công

Thông tin và trích dẫn lấy từ repo GitHub ogham/exa (github.com/ogham/exa), bao gồm README và yêu cầu phiên bản Rust toolchain được nêu.

Dữ liệu GitHub · đồng bộ lần cuối 15 thg 8, 2026Đánh giá bởi Henry
← Về TopGit

exa có đáng để bạn bỏ thời gian?

ChatGPT, Claude và Perplexity đều đọc được trang này. Hỏi thử xem họ nghĩ gì về exa.

GitHub