Bạn có bao giờ cảm thấy các tiện ích dòng lệnh tiêu chuẩn trên Linux thật nhàm chán và thiếu đi sự hấp dẫn? Dù chức năng của chúng là thiết yếu, nhưng giao diện và khả năng của chúng dường như đã lỗi thời. Sẽ thế nào nếu bạn có thể “tân trang” các đầu ra của chúng bằng những màu sắc bắt mắt, hoặc thậm chí tăng tốc độ xử lý? Trong bài viết này, tinhoccongnghe.net sẽ giới thiệu cho bạn những tiện ích terminal thế hệ mới, không chỉ làm được những điều đó mà còn mang lại nhiều tính năng vượt trội khác, giúp công việc của bạn trên Linux trở nên hiệu quả và thú vị hơn bao giờ hết.
bat: Lệnh cat được nâng cấp với khả năng tô sáng cú pháp
Lệnh cat
có lẽ là một trong những lệnh đầu tiên mà nhiều người dùng Linux học và cũng là một trong những lệnh được sử dụng thường xuyên nhất. Tuy nhiên, nó đang dần bộc lộ những hạn chế của mình, khi chỉ hiển thị văn bản thuần túy, không định dạng. Điều này gây khó khăn đáng kể khi đọc các tập tin phức tạp như file cấu hình, mã nguồn, JSON hay YAML.
Bat chính là một phiên bản cải tiến của cat
. Nó giải quyết vấn đề đọc hiểu bằng cách tự động tô sáng cú pháp (syntax highlighting) cho các tập tin phức tạp bằng những màu sắc dễ nhìn. Điều này giúp các phần và ranh giới trong file nổi bật hơn, làm cho việc đọc và phân tích dữ liệu trở nên dễ dàng hơn rất nhiều.
Giao diện terminal hiển thị nội dung file với tính năng tô sáng cú pháp (syntax highlighting) được thực hiện bởi lệnh bat, thay thế cat truyền thống.
Ngoài ra, bat còn có một số tính năng hấp dẫn khác như tích hợp với Git để đánh dấu các dòng đã thay đổi, giúp các lập trình viên dễ dàng theo dõi sự khác biệt. Nó cũng có thể hoạt động hiệu quả với các công cụ khác như fzf
hay find
để hiển thị cửa sổ xem trước có màu sắc, mang lại trải nghiệm làm việc liền mạch và trực quan hơn.
Bat hiện đã có mặt rộng rãi và bạn có thể tìm thấy nó trong hầu hết các kho lưu trữ của các bản phân phối Linux phổ biến, giúp việc cài đặt trở nên đơn giản.
ripgrep: grep thế hệ mới với tốc độ vượt trội
Tương tự như các tiện ích khác mà chúng tôi sẽ đề cập, ripgrep
là một bản nâng cấp đáng giá cho đối tác tiêu chuẩn của nó là grep
. Điểm nổi bật nhất của ripgrep
chính là tốc độ: nó thực hiện nhiều tìm kiếm song song, trong khi grep
truyền thống thì không. ripgrep
tận dụng sức mạnh của các CPU hiện đại bằng cách phân chia công việc trên tất cả các lõi CPU, mang lại hiệu suất vượt trội.
ripgrep
không chỉ nhanh chóng mà còn sở hữu một danh sách dài các tính năng hữu ích, bao gồm phát hiện chữ hoa/thường thông minh (smart case detection), khả năng bỏ qua các tập tin và thư mục cụ thể, và tích hợp sâu rộng với các ứng dụng khác.
Tính năng phát hiện chữ hoa/thường thông minh là một bổ sung đơn giản nhưng cực kỳ hữu ích mà đáng lẽ nên có trong mọi chức năng tìm kiếm. Nó hoạt động như sau: nếu bạn sử dụng chữ cái viết hoa trong cụm từ tìm kiếm của mình, quá trình tìm kiếm sẽ trở thành phân biệt chữ hoa/thường. Đây là một tính năng tiện lợi thường bị bỏ sót, giúp nâng cao chất lượng trải nghiệm người dùng.
Giao diện terminal hiển thị kết quả tìm kiếm với các từ khóa được tô sáng màu đỏ, thể hiện khả năng của lệnh ripgrep.
ripgrep
cũng có thể bỏ qua các tập tin và thư mục cụ thể theo chỉ dẫn từ file .gitignore
hoặc các file ignore
khác. Ví dụ, dòng cấu hình sau sẽ khiến ripgrep
bỏ qua tất cả các hình ảnh có tên foo.jpg
hoặc thư mục có tên ignored_dir
:
ignored_dir/**/foo.jpg
Khả năng tích hợp của ripgrep
với các ứng dụng khác là rất tuyệt vời. Emacs, Vim, Neovim và fzf
đều có các tiện ích mở rộng của bên thứ ba cung cấp khả năng tích hợp ripgrep
, cho phép các ứng dụng này tận dụng trực tiếp khả năng tìm kiếm mạnh mẽ của ripgrep
. fzf
(một tiện ích khác) cung cấp các tính năng nâng cao hoạt động rất tốt với ripgrep
, như bạn sẽ thấy ở phần sau.
Chưa hết, ripgrep
còn có thể tìm kiếm trong các tập tin nén bằng cách sử dụng cờ -Z
. Nếu bạn có một thư mục lớn chứa cả tập tin văn bản và tập tin nén, ripgrep
có thể “xuyên phá” tất cả mà không cần giải nén thủ công. Mặc dù nó không cung cấp nhiều chi tiết về kết quả khớp, nhưng tính năng này giúp tiết kiệm rất nhiều thời gian và công sức.
ripgrep
có sẵn trong hầu hết các kho lưu trữ của các bản phân phối Linux, vì vậy hãy tham khảo hướng dẫn của bản phân phối bạn đang sử dụng để cài đặt gói.
delta: Nâng tầm hiển thị kết quả ripgrep và Git diff
Delta là một tiện ích được thiết kế chủ yếu cho các lập trình viên và là một trong những công cụ yêu thích của nhiều người. ripgrep
đã làm rất tốt công việc tìm kiếm nhanh chóng trong các file để tìm chính xác những gì bạn cần, với các tính năng hiện đại và cú pháp tìm kiếm nâng cao. Tuy nhiên, đầu ra của nó khá đơn điệu vì thiếu màu sắc và ngữ cảnh. Mặc dù một số người có thể cho rằng điều này đơn giản và chỉ tập trung vào cụm từ tìm kiếm, nhưng đối với mã nguồn, việc hiển thị ngữ cảnh xung quanh và màu sắc là cần thiết để dễ dàng phân biệt các phần quan trọng.
Đối với những ai là lập trình viên (hoặc mới bắt đầu), delta áp dụng tính năng tô sáng cú pháp cho đầu ra của ripgrep
. Nó cũng cung cấp các tính năng bổ sung để tích hợp với Git, một hệ thống quản lý phiên bản tài liệu. Ví dụ, delta cung cấp một chế độ xem hai bên (side-by-side view) đẹp mắt về các thay đổi trong tài liệu, hay còn gọi là diff
(viết tắt của difference
).
Git có thể quản lý mọi loại tài liệu văn bản, và mọi người thường sử dụng nó để lưu trữ các dotfile của họ (các file cấu hình bắt đầu bằng dấu chấm). Nếu bạn quan tâm đến việc lưu trữ dotfile của mình, chúng tôi đặc biệt khuyên bạn nên sử dụng Git. Trong trường hợp đó, delta cũng rất đáng để xem xét, chỉ riêng tính năng xem diff
của nó cũng đã rất hữu ích.
Bạn có thể cài đặt delta thông qua các kho lưu trữ chính thức cho Debian, Ubuntu, Fedora, Arch Linux và một số bản phân phối khác, dưới tên git-delta
. Nó cũng có sẵn qua Homebrew và Nix.
fd: Công cụ tìm kiếm nhanh hơn find với màu sắc trực quan
Đúng như tiêu đề đã nêu, fd
tương tự như find
, nhưng nhanh hơn đáng kể và có màu sắc đẹp mắt hơn. Màu sắc, như đã đề cập trước đó, giúp kết quả tìm kiếm dễ đọc và phân biệt hơn. fd
mã hóa màu các loại file và đường dẫn thư mục khác nhau, làm cho việc xác định chúng trở nên trực quan.
Giao diện terminal hiển thị hàng chục đường dẫn file, đây là kết quả tìm kiếm của lệnh fd với màu sắc phân biệt các loại file và thư mục.
Ngoài việc sử dụng màu sắc, fd
còn duyệt qua nhiều cây thư mục song song, tận dụng tối đa các lõi xử lý trong CPU hiện đại. Khả năng này không chỉ giới hạn ở việc duyệt thư mục mà còn áp dụng cho việc thực thi lệnh. Khi bạn sử dụng cờ -X
, fd
sẽ chạy một lệnh song song với mỗi kết quả khớp.
fd foo.txt -x bat --color=always
Giống như ripgrep
, fd
cũng hỗ trợ tìm kiếm chữ hoa/thường thông minh và tuân thủ file .gitignore
. Điều này giúp các tìm kiếm tiện lợi hơn và loại bỏ các kết quả nhiễu mặc định.
fd
có sẵn cho hầu hết các bản phân phối Linux, vì vậy để cài đặt, hãy tham khảo trình quản lý gói hoặc hướng dẫn của bản phân phối bạn đang sử dụng.
eza: ls hiện đại với màu sắc và biểu tượng đẹp mắt
eza
là một phiên bản hiện đại của lệnh ls
tiêu chuẩn, với các tính năng chính là hỗ trợ màu sắc tốt hơn và các biểu tượng (icons). Mặc dù các biểu tượng không phải là yếu tố thiết yếu, nhưng chúng tạo điểm nhấn thú vị. Tuy nhiên, đối với nhiều người, màu sắc là điều không thể thiếu để dễ dàng phân biệt các loại file và thư mục.
eza
còn có một số tính năng hữu ích khác như chế độ xem dạng cây (tree view) và siêu liên kết (hyperlinks). Ví dụ, cờ hyperlinks
sẽ biến tất cả tên file và thư mục thành các liên kết có thể nhấp được bằng định dạng OSC 8. Hầu hết các terminal hiện đại đều hỗ trợ các liên kết này, nhưng để chắc chắn, bạn có thể tham khảo danh sách không chính thức các terminal hỗ trợ siêu liên kết OSC 8. Mỗi terminal có thể khác nhau và bạn có thể cần phải kích hoạt thủ công.
Điểm đặc biệt là các siêu liên kết này cũng hoạt động với chế độ xem dạng cây, cho phép bạn nhanh chóng điều hướng qua các thư mục lớn. Tuy nhiên, một vấn đề nhỏ có thể nhận thấy là chế độ xem dạng cây của eza
chậm hơn đáng kể so với lệnh tree
tiêu chuẩn. Lệnh tree
sẽ hiển thị kết quả theo thời gian thực khi chúng được tìm thấy, trong khi eza
sẽ duyệt toàn bộ thư mục (đôi khi rất lớn) và hiển thị tất cả cùng một lúc – điều này có thể mất một chút thời gian, nhưng bù lại bạn có màu sắc đẹp mắt và các liên kết có thể nhấp!
Một lưu ý nhỏ là việc gõ eza --icons
mỗi lần có thể hơi phiền phức, vì vậy bạn có thể tạo một alias để đơn giản hóa.
eza
có sẵn cho hầu hết các bản phân phối phổ biến, vì vậy bạn có thể tham khảo trình quản lý gói của bản phân phối mình. Tuy nhiên, việc cài đặt trên Debian và Ubuntu yêu cầu thêm một kho lưu trữ APT tùy chỉnh, nhưng trang chủ của eza
sẽ hướng dẫn chi tiết về vấn đề này.
fzf History Search: Tìm kiếm lịch sử lệnh không thể thiếu
Dù bạn là người mới bắt đầu hay một “cựu binh” Linux, việc sử dụng công cụ tìm kiếm mờ (fuzzy search) cho lịch sử shell của bạn là điều cần thiết – đây có lẽ là một trong những công cụ quan trọng nhất. Việc gõ lại các lệnh dài dòng là tẻ nhạt, vì vậy bạn chỉ muốn làm điều đó một lần. Việc tìm kiếm các lệnh trước đó cũng tẻ nhạt, bởi vì việc sử dụng các phím mũi tên lên và xuống làm chậm quy trình làm việc. Một công cụ tìm kiếm mờ sẽ giải quyết cả hai vấn đề này.
Giao diện terminal hiển thị danh sách các lệnh đã thực thi trước đó, được sắp xếp và lọc bằng công cụ tìm kiếm lịch sử fzf (fzf History Search).
Nếu bạn chưa biết tìm kiếm mờ là gì, nó đơn giản có nghĩa là tìm kiếm theo “gần đúng”. Ví dụ, gõ emp
hoặc xpe
sẽ khớp với example
. Tại sao điều này quan trọng? Bởi vì bạn có thể không nhớ chính xác một lệnh đã gõ hai tháng trước, hoặc việc nhanh chóng chuyển đổi giữa nhiều lệnh khác nhau có thể gây ảnh hưởng đến trí nhớ của bạn. Bạn chỉ cần nhớ một vài ký tự trong lệnh, và công cụ tìm kiếm mờ sẽ nhanh chóng thu hẹp kết quả tìm kiếm theo thời gian thực.
Trong nhiều năm, nhiều người đã tin dùng plugin fzf History Search
cho zsh
. Ngoài ra, có một công cụ độc lập tên là Atuin, gần như tương tự. Cả hai đều thực hiện công việc đơn giản nhưng hiệu quả.
Bạn có thể tham khảo kho lưu trữ GitHub của fzf History Search
để biết hướng dẫn cài đặt. Hoặc tìm hiểu cách cài đặt và sử dụng Atuin để có một cách tiếp cận thay thế và dễ dàng hơn.
Kịch bản bonus: Sức mạnh tổng hợp của fzf, ripgrep và bat
Nếu bạn đã cài đặt fzf
, ripgrep
và bat
, bạn có thể sử dụng một lệnh tuyệt vời sau đây để tìm kiếm mờ trong hệ thống file của mình và mở các dòng khớp trong trình soạn thảo văn bản yêu thích của bạn. Đặt lệnh sau vào file .bashrc
của bạn và sau đó tải lại bằng source ~/.bashrc
.
Giao diện terminal chia đôi theo chiều ngang. Nửa trên hiển thị mã nguồn với tính năng tô sáng cú pháp từ lệnh bat. Nửa dưới hiển thị danh sách đường dẫn file kết quả từ lệnh fzf và ripgrep.
s () { fzf --ansi --disabled
--bind "change:reload:command
rg --line-number --no-heading --color=always --smart-case {q}
|| :"
--bind "enter:execute(${EDITOR:-nano} +{2} {1})"
--delimiter ":"
--preview "command bat -p --color=always {1} --highlight-line {2}"
--preview-window 'up:80%,border-bottom,~3,+{2}+3/3'
}
Lệnh trên mặc định sẽ mở file bằng nano
, nhưng bạn có thể thiết lập để sử dụng Vim, Neovim, Emacs, hoặc một số trình soạn thảo khác. Chỉ cần đặt biến EDITOR
trong .bashrc
của bạn và tải lại:
export EDITOR=nvim
Để sử dụng kịch bản này, chỉ cần chuyển đến một thư mục chứa các file văn bản và gõ chữ “s”. Mặc dù lệnh này sẽ chấp nhận các từ thông thường làm cụm từ tìm kiếm, bạn có thể tăng đáng kể độ chính xác của nó nếu bạn tìm hiểu về Regex, một cú pháp tìm kiếm nâng cao có thể học được trong thời gian ngắn.
Kết luận
Với fzf History Search
, ripgrep
và delta
, bạn sẽ cảm thấy mình như một người mất phương hướng nếu thiếu chúng, và đó thường là những công cụ đầu tiên được cài đặt. Còn với eza
, bat
và fd
, terminal sẽ trở nên đơn điệu và khó đọc. Những tiện ích dòng lệnh hiện đại này không chỉ cải thiện đáng kể hiệu suất làm việc mà còn mang lại trải nghiệm sử dụng terminal trực quan và thú vị hơn rất nhiều. Hãy bắt đầu khám phá và tích hợp chúng vào quy trình làm việc của bạn để nâng tầm kỹ năng sử dụng Linux lên một tầm cao mới.
Nếu bạn quan tâm đến việc tìm hiểu thêm các công cụ terminal hữu ích khác, đừng quên theo dõi các bài viết tiếp theo trên tinhoccongnghe.net!
Tài liệu tham khảo:
- Kho lưu trữ GitHub của fzf History Search
- Trang chủ của eza
- Hướng dẫn về lệnh
ls
trên Linux - Hướng dẫn cách tạo alias trên Linux
- Cách cài đặt Oh-My-Zsh
- Cách cài đặt fzf
- Cách cài đặt và sử dụng Atuin
- Giải thích về file .bashrc trên Linux
- Bắt đầu với Regex trong Linux Terminal
- Các tiện ích Linux tuyệt vời để theo dõi tài nguyên hệ thống trong terminal
- Cách sử dụng terminal Linux mà không làm hỏng hệ điều hành của bạn
- Tại sao người hâm mộ Linux lại thích terminal đến vậy?
- Nâng cao kỹ năng Linux với 6 trò chơi miễn phí này