Tại sao fzf lại là “vật bất ly thân” của mình?
Cảm giác lục lọi một file cấu hình nằm sâu trong mớ hỗn độn /etc hay cố nhớ lại câu lệnh Docker chạy từ tuần trước thật sự rất nản. Cách làm truyền thống là dùng history | grep hoặc find. Cách này vẫn chạy tốt, nhưng sẽ rất chậm khi danh sách lệnh của bạn vượt quá con số 5.000 dòng.
Mình đã cài fzf cho toàn bộ dàn server production lẫn máy cá nhân suốt nửa năm qua. Nghĩ lại, mình thấy tiếc vì không biết đến nó sớm hơn. fzf là một công cụ lọc dữ liệu viết bằng Go, cực kỳ nhẹ và tốc độ phản hồi gần như tức thì.
Điểm ăn tiền nhất chính là cơ chế “fuzzy search” (tìm kiếm mờ). Bạn chỉ cần gõ vài ký tự gợi nhớ thay vì chính xác từng chữ, kết quả sẽ nhảy ra ngay theo thời gian thực. Qua thực tế quản lý hệ thống, mình thấy fzf xử lý gọn gàng 3 thao tác: lùng lại lệnh cũ, mở file nhanh và dọn dẹp các process treo.
Cách cài đặt fzf để dùng được hết tính năng
Dù các bản phân phối như Ubuntu hay Debian đều có sẵn fzf trong kho ứng dụng (sudo apt install fzf), mình vẫn ưu tiên cài qua Git. Cách này giúp bạn sở hữu phiên bản mới nhất và tự động kích hoạt các bộ script hỗ trợ phím tắt cực kỳ tiện lợi.
# Tải repo về thư mục home
git clone --depth 1 https://github.com/junegunn/fzf.git ~/.fzf
# Chạy script cài đặt
~/.fzf/install
Khi cài, script sẽ đưa ra 3 lựa chọn, bạn hãy gõ Y cho tất cả:
- Fuzzy auto-completion: Hỗ trợ gõ
cd **[TAB]để tìm thư mục nhanh. - Key bindings: Kích hoạt các tổ hợp phím tắt như CTRL-R, CTRL-T.
- Update shell configuration: Tự động thêm cấu hình vào
.bashrccho bạn.
Cài xong, bạn hãy chạy lệnh source ~/.bashrc để hệ thống nhận diện công cụ mới nhé.
Những tổ hợp phím giúp bạn làm việc chuyên nghiệp hơn
Sử dụng phím tắt mặc định
Dưới đây là 3 tổ hợp phím mình bấm không dưới 100 lần mỗi ngày:
- CTRL-R: Thay thế hoàn toàn kiểu tìm history cũ kỹ của Bash. Chỉ cần gõ “nginx reload”, fzf sẽ lọc ra đúng câu lệnh bạn cần trong tích tắc.
- CTRL-T: Tìm nhanh file để chèn vào lệnh đang gõ. Ví dụ, bạn gõ
vim [CTRL-T], chọn file và tên file sẽ tự động xuất hiện sau lệnh vim. - ALT-C: Di chuyển nhanh vào thư mục con. Bạn không cần gõ đường dẫn dài dằng dặc, chỉ cần chọn thư mục từ danh sách của fzf.
Tích hợp fd để quét file nhanh gấp 10 lần
Mặc định fzf dùng lệnh find, vốn khá chậm và hay quét nhầm vào thư mục .git hoặc node_modules. Mình thường thay thế bằng fd để tăng tốc độ quét trên các project lớn.
Cài đặt fd bằng lệnh: sudo apt install fd-find. Sau đó, hãy dán đoạn code sau vào cuối file .bashrc:
# Dùng fd thay find để bỏ qua file ẩn và thư mục .git
export FZF_DEFAULT_COMMAND='fd --type f --strip-cwd-prefix --hidden --follow --exclude .git'
export FZF_CTRL_T_COMMAND="$FZF_DEFAULT_COMMAND"
Cửa sổ Preview: Xem nội dung file không cần mở
Thay vì mở từng file ra xem có đúng cái mình cần không, bạn có thể dùng tính năng xem trước. Để giao diện đẹp và có màu sắc (syntax highlighting), bạn nên cài thêm công cụ bat.
# Cấu hình Preview 500 dòng đầu của file cho CTRL-T
export FZF_CTRL_T_OPTS="--preview 'bat --color=always --line-range :500 {}'"
Giờ đây mỗi khi nhấn CTRL-T, một cửa sổ bên phải sẽ hiện ra nội dung file cực kỳ trực quan.
Xử lý nhanh các Process bị treo
Khi server bị nghẽn, thay vì gõ ps aux | grep... rồi copy PID thủ công, mình dùng một hàm nhỏ này trong .bashrc để “diệt” process trong vài giây:
fkill() {
local pid
pid=$(ps -ef | sed 1d | fzf -m | awk '{print $2}')
if [ "x$pid" != "x" ]
then
echo $pid | xargs kill -${1:-9}
fi
}
Gõ fkill, dùng phím mũi tên hoặc gõ tên process, nhấn Enter là xong. Bạn có thể dùng phím Tab để chọn nhiều process cùng lúc.
Kinh nghiệm thực tế sau 3 năm sử dụng
Làm chủ fzf không khó, nhưng có vài lưu ý để bạn dùng mượt hơn trên mọi môi trường:
1. Tài nguyên hệ thống: fzf cực kỳ tiết kiệm RAM, thường chỉ chiếm dưới 20MB ngay cả khi xử lý danh sách hàng chục nghìn file. Bạn hoàn toàn yên tâm cài trên các VPS cấu hình thấp.
2. Xử lý thư mục khổng lồ: Nếu làm việc với các thư mục chứa hơn 100.000 file, hãy chắc chắn bạn đã dùng fd và loại bỏ các đường dẫn ảo như /proc hay /sys để tránh bị treo search.
3. Lưu ý khi dùng SSH: Khi remote vào server mới, nếu server đó chưa cài fzf, các phím tắt sẽ không chạy. Mình thường cài sẵn fzf trên các server quản trị chính để luồng công việc luôn thông suốt.
fzf không chỉ dành cho Bash. Nếu bạn dùng Vim, công cụ này còn có các plugin cực mạnh để tìm kiếm mã nguồn. Tuy nhiên, chỉ riêng việc dùng fzf trên dòng lệnh đã giúp bạn tiết kiệm ít nhất 30 phút mỗi ngày cho những thao tác lặp đi lặp lại nhàm chán.
Hãy thử dành 1 tuần để làm quen với CTRL-R và CTRL-T. Mình tin bạn sẽ không bao giờ muốn quay lại cách gõ lệnh thủ công trước đây.

