Linux CLI hiện đại: fzf, ripgrep, jq, bat, eza

Linux CLI hiện đại thay đổi cách bạn làm việc

Linux CLI đang phát triển mạnh mẽ với hàng loạt công cụ mới thay thế trực tiếp những tiện ích cổ điển như find, grep, ls, cat, ps. Những công cụ này được viết lại bằng Rust và Go, mang lại tốc độ nhanh hơn, output có màu sắc và trực quan hơn, tích hợp Git, syntax highlighting ngay từ đầu.

Nếu bạn vẫn dùng grep -r để tìm kiếm hay ls -la để liệt kê file, đã đến lúc nâng cấp. Bài viết này tổng hợp các công cụ Linux CLI hiện đại phổ biến nhất, cách cài đặt và lý do bạn nên thay thế ngay.

Giao diện terminal hiển thị eza với icons và thông tin Git

fzf: tìm kiếm tương tác mọi thứ

fzf là công cụ fuzzy finder dùng để tìm kiếm bất kỳ thứ gì trong terminal: file, lịch sử lệnh, process, host, commit Git. Thay vì nhớ đúng tên file, bạn chỉ cần gõ vài ký tự, fzf sẽ lọc ra kết quả phù hợp.

  • Tích hợp trực tiếp với Ctrl+R để tìm lệnh đã chạy trước đó
  • Hỗ trợ preview window khi duyệt file hoặc commit
  • Kết hợp với fd, ripgrep để tạo workflow mạnh mẽ
  • Hỗ trợ multi-select và custom key bindings
# Tìm và mở file nhanh
fzf --preview 'bat --color=always {}'

Để cài đặt, dùng package manager của distro: sudo apt install fzf (Ubuntu/Debian), sudo pacman -S fzf (Arch), hoặc brew install fzf (macOS). Sau khi cài, chạy fzf --bash hoặc fzf --zsh để tích hợp shell.

Giao diện fd tìm kiếm file với preview và filter

fd: thay thế find đơn giản và nhanh

fd là công cụ tìm kiếm file thay thế cho find với cú pháp trực quan hơn. Nó mặc định không phân biệt hoa thường, bỏ qua file trong .gitignore, chạy song song nhiều luồng tận dụng đa nhân CPU.

fd rust
fd -e py --type f
fd --hidden --exclude .git

So với find / -name '*.rs' -type f 2>/dev/null, fd chỉ cần fd rs cho cùng kết quả nhưng nhanh hơn nhiều nhờ bỏ qua thư mục ẩn và dùng threading. Tích hợp với fzf: fd --type f | fzf để chọn file tương tác.

Bat hiển thị mã nguồn Python với syntax highlighting và số dòng

bat: cat với syntax highlighting

Thay vì cat file.py thuần túy, bat hiển thị mã nguồn có màu sắc, đánh số dòng, tự động nhận diện ngôn ngữ lập trình. Nó còn hiển thị thay đổi so với index Git ở cột bên trái (dấu + và -).

bat main.py
bat --plain main.py  # tắt màu khi pipe sang lệnh khác
bat --theme=Dracula  # đổi theme màu

Bat cũng hỗ trợ hiển thị file lớn bằng pager tự động (less), và làm man page đẹp hơn khi dùng export MANPAGER="sh -c 'col -bx | bat -l man -p'".

ripgrep: grep tốc độ cao

ripgrep (rg) tìm kiếm nội dung trong file nhanh hơn grep rất nhiều nhờ viết bằng Rust. Nó tự động bỏ qua file trong .gitignore, hỗ trợ regex PCRE2, Unicode, và hiển thị kết quả có màu.

rg "TODO" src/
rg -t py "import"
rg --files-with-matches "password"

Cú pháp rg pattern path thay vì grep -r pattern path. Dùng --no-ignore để tìm cả file trong .gitignore, --hidden để tìm file ẩn. Kết hợp với fzf: rg --files | fzf.

eza: ls hiện đại cho thế hệ mới

eza là bản nâng cấp của ls với icon, màu sắc, hiển thị thông tin Git, symlink, và metadata. Nó nhẹ, nhanh, chỉ là một binary đơn lẻ, không phụ thuộc thư viện phức tạp.

eza -la --icons --git
eza --tree --level=2 --icons
eza --long --header --git --icons

Các flag quan trọng: --icons hiển thị icon file type (cần Nerd Font), --git hiển thị trạng thái Git (modified, new, ignored), --tree hiển thị dạng cây thư mục. Alias thường dùng: alias ls='eza --icons', alias ll='eza -la --icons --git'.

jq: xử lý JSON trong terminal

Khi làm việc với API, jq là công cụ không thể thiếu để parse, lọc, định dạng JSON trực tiếp trong Linux CLI. Thay vì copy JSON vào Python hay JS, bạn có thể xử lý ngay tại shell.

curl -s https://api.example.com/data | jq '.results[] | .name'
echo '{"a":1,"b":2}' | jq '.a + .b'
jq -r '.[] | select(.active==true) | .name' data.json

dust: du trực quan hơn

dust thay thế du với hiển thị thanh ngang, tự động sắp xếp theo dung lượng lớn nhất, bỏ qua thư mục giống nhau. Rất hữu ích khi cần tìm folder chiếm nhiều dung lượng.

dust -d 2
dust -r  # sắp xếp ngược, nhỏ nhất lên đầu

procs: ps thân thiện

procs thay thế ps với màu sắc, cột linh hoạt, tìm kiếm tương tác, và hiển thị thông tin rõ ràng hơn. Bạn có thể xem tree process hoặc lọc theo port, user.

procs --tree
procs -p 8080
procs --watch  # cập nhật realtime

Kết luận

Bộ công cụ Linux CLI hiện đại không chỉ đẹp hơn mà còn giúp bạn làm việc nhanh hơn đáng kể. Bắt đầu từ việc thay alias cơ bản: alias cat=bat, alias ls='eza --icons', alias grep=rg, alias find=fd. Sau đó khám phá fzfjq để tối ưu hóa workflow hàng ngày. Tương lai của terminal là sự kết hợp giữa tốc độ, trực quan và tương tác.

Tôi là một lập trình viên IOS. Code chính là IOS nhưng thỉnnh thoảng vẫn đá sang Android hoặc web. Mặc dù không quá thông thạo nhưng tôi sẽ chia sẻ những kiến thức mà mình đã tìm hiểu, áp dụng qua.

Bài viết liên quan

YubiKey cơ bản: Thiết lập khóa bảo mật phần cứng cho tài khoản

YubiKey là gì? YubiKey là khóa bảo mật phần cứng (hardware security key) được sản xuất bởi Yubico, dùng để xác thực hai yếu tố (2FA) và xác thực đa…

Xem thêm

Dotfileschezmoi: Quản lý cấu hình dotfiles đa máy tự động

Mỗi lần đổi máy, bạn lại mất nửa ngày để cấu hình lại dotfiles: .bashrc, .zshrc, .gitconfig, Neovim config, i3/waybar, scripts tự động. Công việc nhỏ nhặt nhưng tất yếu…

Xem thêm

Chống lừa đảo mạo danh cảnh sát: dấu hiệu nhận biết và phòng tránh

Tội phạm mạo danh cảnh sát đang gia tăng nhanh tại Việt Nam, đặc biệt qua điện thoại và mạng xã hội. Hiểu dấu hiệu nhận biết và biện pháp…

Xem thêm
0 0 đánh giá
Article Rating
Theo dõi
Thông báo của
guest
0 Comments
Cũ nhất
Mới nhất Được bỏ phiếu nhiều nhất