Những thủ thuật fzf này sẽ thay đổi cách bạn sử dụng thiết bị đầu cuối Linux

Tác giả Starlink, T.M.Một 07, 2025, 09:00:05 CHIỀU

« Chủ đề trước - Chủ đề tiếp »

0 Thành viên và 1 Khách đang xem chủ đề.

Tôi không thể sống thiếu fzf và bạn sẽ bỏ lỡ rất nhiều nếu không sử dụng nó.

Terminal khá cồng kềnh và kém hiệu quả nếu không có các tùy chỉnh bổ sung. Nếu bạn là người mới bắt đầu, bạn có thể cảm thấy đây là công cụ tốt nhất, nhưng thực tế không phải vậy. Có một công cụ đặc biệt nổi bật và có thể cải thiện đáng kể trải nghiệm của bạn. Tôi xin tóm tắt một số lý do tại sao fzf là công cụ terminal yêu thích của tôi.


1. Fzf là gì và tại sao nó lại tuyệt vời?

Lệnh fzf là một công cụ để thực hiện tìm kiếm nhanh trên một danh sách lớn các mục. Nghe có vẻ không mấy hấp dẫn, nhưng làm thế nào để bạn thường tìm kiếm trong số lượng lớn các lựa chọn trên terminal? Ví dụ, khi chọn một đường dẫn tệp từ hàng ngàn đường dẫn khác, bạn làm thế nào để làm được điều đó? Bạn gặp khó khăn khi hoàn thành lệnh tab, hay bạn thực hiện một số thao tác khó khăn nào đó trên terminal? Cả hai đều không phải là lựa chọn phù hợp, và fzf sẽ giải quyết vấn đề này một cách trực tiếp.


2. Cài đặt

Để thực hiện theo, bạn sẽ cần cài đặt gói fzf.

Trên Debian, bạn nên thực hiện lệnh cài đặt sau.

Mã nguồn [Chọn]
sudo apt install fzf
Trên Fedora, bạn nên thực hiện lệnh cài đặt sau.

Mã nguồn [Chọn]
sudo dnf install fzf   
Trên Arch Linux, bạn nên thực hiện lệnh cài đặt sau.

Mã nguồn [Chọn]
sudo pacman -S fzf   
Bây giờ, để kích hoạt các tính năng nâng cao của fzf, bạn cần thêm một dòng vào tệp cấu hình shell.

Nếu bạn sử dụng Bash, hãy đưa lệnh sau vào tệp ~/.bashrc và tải lại shell bằng lệnh source ~/.bashrc.

Mã nguồn [Chọn]
eval "$(fzf --bash)"
Nếu bạn sử dụng Zsh, hãy đưa lệnh này vào tệp ~/.zshrc và tải lại shell bằng lệnh source ~/.zshrc.

Mã nguồn [Chọn]
source <(fzf --zsh)
3. Tìm kiếm lịch sử lệnh

Việc tìm kiếm lịch sử shell trong Bash—dù sử dụng lệnh history hay phím mũi tên—đều chậm kinh khủng. Với fzf, bạn có thể tìm kiếm nhanh hàng ngàn lệnh đã thực hiện theo thời gian thực, đây chắc chắn là tính năng terminal yêu thích của tôi. Sau khi kích hoạt fzf, chỉ cần nhấn Ctrl+R, bắt đầu nhập và nhấn Enter để thực thi.


Có một công cụ tương tự có tên là Atuin cung cấp trải nghiệm rất giống.

4. Điều hướng thư mục nhanh

Việc duyệt hệ thống tệp trên terminal có thể tốn thời gian, và sau một thời gian sử dụng, bạn có thể muốn một phương pháp nhanh hơn. Với các tính năng terminal nâng cao được bật của fzf, bạn có thể nhấn Alt+C để nhanh chóng chuyển đến bất kỳ thư mục con nào. Khi thực hiện thao tác này, fzf sẽ hiển thị một danh sách đệ quy các thư mục con, cho phép bạn nhanh chóng thu hẹp danh sách và chọn một thư mục. Điều này rất hữu ích khi bạn muốn tìm hiểu sâu hơn về một thư mục con được lồng nhau sâu.


4. Tìm kiếm và lựa chọn tập tin nhanh

Thông thường, khi gõ lệnh, bạn cần chọn một tệp. Sử dụng chức năng hoàn thành bằng tab là một cách, nhưng không phải là cách tốt nhất. Một cách tốt hơn là sử dụng công cụ tìm kiếm mờ (fuzzy finder), và fzf cung cấp trình chọn tệp tích hợp.

Bắt đầu bằng cách nhập lệnh, và khi đến lúc chọn tệp, hãy nhấn Ctrl+T. Trình chọn tệp fzf sẽ được kích hoạt, tìm kiếm đệ quy trong thư mục làm việc hiện tại. Khi bạn nhấn Enter trên một lựa chọn, nó sẽ hoàn tất lệnh của bạn với tệp đã chọn.


Khi bạn đã quen, việc kích hoạt fzf giữa chừng lệnh sẽ trở thành thói quen và giúp giảm đáng kể thời gian viết lệnh.

5. Chấm dứt quy trình dễ dàng

Việc tắt một tiến trình Linux có thể khá khó khăn khi bạn không biết tên chính xác của nó. Các lệnh như pgrep, killall và kill all yêu cầu tên hoặc ID của tiến trình, đôi khi có thể khó nhớ. Với tích hợp shell của fzf, bạn có thể nhanh chóng tìm kiếm và chọn tiến trình bạn muốn tắt.

Để tắt tiến trình bằng fzf, hãy nhập lệnh sau và nhấn phím Tab (không nhấn Enter):

Mã nguồn [Chọn]
kill -9 **<TAB>   

Sử dụng lệnh fzf cho phép bạn nhanh chóng chọn một tiến trình và tắt tiến trình đó; lệnh này nhanh hơn nhiều so với các lệnh khác và rất hữu ích khi bạn quên tên chính xác của tiến trình đó.

6. Lệnh thưởng

Cú pháp "**" kích hoạt cửa sổ tìm kiếm của fzf. Các lệnh fzf mà bạn đã thêm vào cấu hình shell trước đó đã tạo ra các hàm xử lý cú pháp này và kích hoạt các tính năng khác của fzf.

Trigger "**" hoạt động với hầu hết mọi lệnh; một số lệnh được xử lý đặc biệt (như lệnh SSH), và phần còn lại mặc định là trình chọn tệp. Tôi khuyến khích bạn dùng thử, lưu ý rằng "**" mặc định kích hoạt trình chọn tệp.

6.1. SSH

SSH được xử lý đặc biệt. Việc thêm dấu tab bằng ** cho phép bạn tìm kiếm máy chủ một cách mơ hồ từ cấu hình SSH, các máy chủ đã biết và /etc/hosts.

Mã nguồn [Chọn]
ssh **<TAB>
6.2. Git

Tác giả fzf cung cấp một tập lệnh Git chính thức có tên là   Đăng nhập để xem liên kết. Nếu bạn làm theo hướng dẫn cài đặt trên tệp README của kho lưu trữ, bạn có thể truy cập vào tính năng hoàn thành mờ nhanh chóng trên các thao tác Git.


6.3. Biến môi trường

Thực hiện lệnh sau để nhanh chóng biết giá trị của bất kỳ biến môi trường nào.

Mã nguồn [Chọn]
env | fzf   

Bạn thậm chí có thể nhanh chóng hủy cài đặt biến môi trường bằng lệnh fzf:

Mã nguồn [Chọn]
unset **<TAB>
6.4. Systemd

Systemd là hệ thống khởi tạo cho hầu hết các bản phân phối; nó xử lý quá trình khởi động, bao gồm cả các dịch vụ hệ thống. Việc quản lý các tệp đơn vị systemd rất phức tạp, và việc khởi động và dừng các dịch vụ sẽ được hưởng lợi rất nhiều từ một tập lệnh dựa trên fzf. Có một tập lệnh như vậy, được gọi là fuzzy-sys. Để sử dụng tập lệnh này, hãy làm theo hướng dẫn trong tệp README của kho lưu trữ tập lệnh, sau đó thực hiện lệnh sau.

Mã nguồn [Chọn]
fuzzy-sys --status   
Điều đó sẽ cho bạn biết trạng thái của bất kỳ dịch vụ nào.


Nó hỗ trợ một số cờ, bao gồm bắt đầu, dừng, bật và chỉnh sửa, v.v. Tập lệnh này giúp việc chọn dịch vụ trở nên dễ dàng; giờ đây bạn không cần phải gõ tên dịch vụ dài dòng và khó hiểu.

Fzf cải thiện đáng kể năng suất thiết bị đầu cuối và cung cấp danh sách các tập lệnh cộng đồng phong phú. Các lệnh phức tạp trước đây mất vài phút để viết và thực thi giờ chỉ mất vài giây—việc viết và chạy nhiều lệnh phức tạp liên tiếp giờ đây trở nên vô cùng dễ dàng.