3 điểm bởi GN⁺ 2024-07-23 | 1 bình luận | Chia sẻ qua WhatsApp

eza

Giới thiệu về eza

  • eza là một lựa chọn thay thế hiện đại cho lệnh liệt kê tệp ls được cung cấp mặc định trên các hệ điều hành Unix và Linux
  • Sử dụng màu sắc để phân biệt loại tệp và metadata
  • Nhận diện symbolic link, extended attributes và Git
  • Nhỏ gọn, nhanh và được cung cấp dưới dạng một binary duy nhất
  • Hướng tới việc trở thành một lựa chọn thay thế ls thân thiện với người dùng và giàu tính năng

Các tính năng chính của eza

  • Sửa lỗi "grid bug" từng xuất hiện trong exa 2021
  • Hỗ trợ hyperlink
  • Cung cấp thông tin chi tiết về mount point
  • Xuất Selinux context
  • Xuất trạng thái Git repository
  • Hiển thị ngày tương đối dễ đọc với con người
  • Nhiều bản vá bảo mật
  • Hỗ trợ màu cho terminal sáng
  • Nhiều sửa lỗi nhỏ và thay đổi khác

Cách cài đặt

  • eza có thể dùng trên Windows, macOS và Linux
  • Có thể xem hướng dẫn cài đặt theo từng nền tảng và bản phân phối trong INSTALL.md

Tùy chọn dòng lệnh

Tùy chọn hiển thị

  • -1, --oneline: hiển thị một mục trên mỗi dòng
  • -G, --grid: hiển thị các mục theo dạng lưới (mặc định)
  • -l, --long: hiển thị thông tin chi tiết mở rộng và thuộc tính
  • -R, --recurse: duyệt thư mục đệ quy
  • -T, --tree: duyệt thư mục đệ quy theo dạng cây
  • -x, --across: căn lưới theo chiều ngang
  • -F, --classify=(when): hiển thị loại ở tên tệp (always, auto, never)
  • --colo[u]r=(when): đặt thời điểm sử dụng màu terminal (always, auto, never)
  • --colo[u]r-scale=(field): nhấn mạnh bằng cách phân biệt mức độ của field (all, age, size)
  • --color-scale-mode=(mode): dùng màu cố định hoặc gradient cho --color-scale (fixed, gradient)
  • --icons=(when): đặt thời điểm hiển thị icon (always, auto, never)
  • --hyperlink: hiển thị mục dưới dạng hyperlink
  • --absolute=(mode): hiển thị mục bằng đường dẫn tuyệt đối (on, follow, off)
  • -w, --width=(columns): đặt chiều rộng màn hình theo số cột

Tùy chọn lọc

  • -a, --all: hiển thị tệp ẩn và tệp "dot"
  • -d, --list-dirs: liệt kê thư mục như tệp thông thường
  • -L, --level=(depth): giới hạn độ sâu đệ quy
  • -r, --reverse: đảo ngược thứ tự sắp xếp
  • -s, --sort=(field): đặt trường để sắp xếp
  • --group-directories-first: liệt kê thư mục trước các tệp khác
  • -D, --only-dirs: chỉ liệt kê thư mục
  • -f, --only-files: chỉ liệt kê tệp
  • --no-symlinks: không hiển thị symbolic link
  • --show-symlinks: hiển thị symbolic link một cách tường minh
  • --git-ignore: bỏ qua các tệp được nhắc tới trong .gitignore
  • -I, --ignore-glob=(globs): đặt glob pattern cho các tệp cần bỏ qua

Tùy chọn chế độ xem dài

  • -b, --binary: hiển thị kích thước tệp bằng tiền tố nhị phân
  • -B, --bytes: hiển thị kích thước tệp theo byte
  • -g, --group: hiển thị group của từng tệp
  • -h, --header: thêm hàng tiêu đề cho từng cột
  • -H, --links: hiển thị số hard link của từng tệp
  • -i, --inode: hiển thị số inode của từng tệp
  • -m, --modified: dùng trường timestamp đã sửa đổi
  • -M, --mounts: hiển thị chi tiết mount (chỉ áp dụng cho Linux và MacOS)
  • -S, --blocksize: hiển thị kích thước block hệ thống tệp đã cấp phát
  • -t, --time=(field): đặt trường timestamp sẽ dùng
  • -u, --accessed: dùng trường timestamp đã truy cập
  • -U, --created: dùng trường timestamp đã tạo
  • -X, --dereference: dereference symbolic link để lấy thông tin tệp
  • -Z, --context: hiển thị security context của từng tệp
  • -@, --extended: hiển thị extended attributes và kích thước của từng tệp
  • --changed: dùng trường timestamp đã thay đổi
  • --git: hiển thị trạng thái Git của từng tệp
  • --git-repos: hiển thị trạng thái Git của từng thư mục
  • --git-repos-no-status: chỉ hiển thị liệu thư mục có phải Git repository hay không (nhanh hơn)
  • --no-git: không hiển thị trạng thái Git
  • --time-style: đặt định dạng timestamp
  • --total-size: hiển thị kích thước thư mục đệ quy
  • --no-permissions: không hiển thị trường quyền hạn
  • -o, --octal-permissions: hiển thị quyền của từng tệp ở dạng bát phân
  • --no-filesize: không hiển thị trường kích thước tệp
  • --no-user: không hiển thị trường người dùng
  • --no-time: không hiển thị trường thời gian
  • --stdin: đọc tên tệp từ stdin

Cách đóng góp cho eza

  • Để đóng góp cho eza, trước tiên cần tuân theo bộ quy tắc ứng xử
  • Sau khi hiểu bộ quy tắc ứng xử, có thể tham khảo CONTRIBUTING.md để biết thông tin về việc tham gia phát triển thực tế

Tóm tắt của GN⁺

  • eza là lựa chọn thay thế hiện đại cho ls, cung cấp nhiều tính năng hơn và giao diện thân thiện hơn với người dùng
  • Bao gồm các tính năng hữu ích như nhiều tùy chọn màu sắc và hiển thị trạng thái Git
  • Có thể dùng trên Windows, macOS và Linux, đồng thời cách cài đặt cũng đơn giản
  • Tương tự ls nhưng cung cấp nhiều tùy chọn hơn để thực hiện công việc liệt kê tệp hiệu quả hơn
  • Một công cụ cung cấp tính năng tương tự là exa

1 bình luận

 
GN⁺ 2024-07-23
Ý kiến trên Hacker News
  • "ngày tháng dễ đọc cho con người" gây bất tiện. Muốn xem ngày và giờ trong danh sách thư mục

    • Ví dụ, muốn hiển thị thời gian chính xác thay vì "1 day ago"
    • Có thể đây là hệ quả của cuộn vô hạn
  • Cũng có lsd, nhưng vẫn thích eza hơn

    • Gợi ý các công cụ dòng lệnh hiện đại
      • bat - cat có tô sáng cú pháp
      • difftastic - diff tốt hơn
      • gdu - trình phân tích dung lượng đĩa cho SSD
      • zoxide - cd hiện đại
      • fd - thay thế find
      • rg - ripgrep (grep)
      • fzf - trình tìm kiếm mờ
      • jless - trình xem JSON có chức năng gập bằng chuột
      • dra - tải xuống và cài đặt release asset
      • lazygit - Git TUI
      • lazydocker - Docker TUI
      • yazi - trình quản lý tệp có xem trước hình ảnh
      • zellij - tmux / screen tốt hơn
      • starship - cấu hình prompt đa shell
  • GNU ls vẫn đang được duy trì

    • Có các commit gần đây (2024-06-24, 2024-06-27)
    • Mailing list của GNU Coreutils cũng hoạt động sôi nổi
  • Sau khi chuyển sang fish shell, mức dùng ls giảm 100%

    • Dùng lệnh Alt + l để hiển thị nội dung thư mục
    • Kết quả lịch sử shell gọn gàng hơn
  • Có vấn đề với các công cụ terminal dùng màu để phân biệt loại tệp

    • Đang dùng nền terminal dễ nhìn cho mắt
    • Bảng màu xung đột với nền hoặc khó nhìn
    • Không muốn màu trong đầu ra của ls hoặc các bản thay thế ls
    • Đầu ra ls -AFC là đủ
  • Thắc mắc vì sao các phiên bản mới của tiện ích GNU lại được build theo giấy phép MIT

  • Thấy lạ khi README không nhắc eza là một fork của exa

  • Trên bàn phím qwerty, gõ eza khá bất tiện

    • ls là tổ hợp phím rất nhanh
    • Có thể dùng alias, nhưng vì vấn đề tương thích nên vẫn thấy kỳ
  • Tính năng chính của eza/exa không phải màu sắc đẹp mà là tích hợp git

    • Có thể xem trạng thái git của từng tệp trong danh sách (bị bỏ qua, đã sửa đổi, v.v.)
  • Hầu như không ai dùng ls

    • Dùng tab completion để liệt kê các tệp cần thiết
    • Thắc mắc vì sao lại khẳng định ls không còn được duy trì