Terminal trên Linux là một công cụ không thể thiếu đối với bất kỳ người dùng nào, từ lập trình viên đến quản trị viên hệ thống. Tuy nhiên, bạn có bao giờ cảm thấy các tiện ích dòng lệnh tiêu chuẩn như cat
, grep
, find
hay ls
khá nhàm chán và thiếu đi sự hiện đại? Chức năng của chúng rất quan trọng, nhưng chúng lại không cung cấp một trải nghiệm trực quan hay hiệu quả tối ưu. May mắn thay, cộng đồng mã nguồn mở đã tạo ra vô số các tiện ích nâng cấp, giúp “làm đẹp” và tăng tốc các hoạt động hàng ngày của bạn trên terminal. Bài viết này của trithuccongnghe.net sẽ giới thiệu đến bạn 7 tiện ích terminal vượt trội, hứa hẹn sẽ thay đổi hoàn toàn cách bạn tương tác với hệ điều hành Linux. Chúng không chỉ bổ sung màu sắc sinh động mà còn cải thiện đáng kể hiệu suất và tính năng, giúp bạn làm việc nhanh hơn và hiệu quả hơn.
bat: “Mèo” Nâng Cấp Với Cú Pháp Đầy Màu Sắc
cat
là một trong những lệnh đầu tiên mà nhiều người dùng Linux học và nó vẫn là một trong những lệnh được sử dụng thường xuyên nhất. Tuy nhiên, nó đã thể hiện sự lỗi thời khi chỉ hiển thị văn bản thuần túy, không định dạng. Điều này thường gây khó khăn khi đọc các tệp phức tạp như tệp cấu hình, mã nguồn, JSON hoặc YAML.
bat
chính là một phiên bản nâng cấp của cat
, nhưng tốt hơn rất nhiều. Nó giải quyết vấn đề dễ đọc bằng cách tô màu các tệp phức tạp thông qua tính năng highlight cú pháp (syntax highlighting). Điều này giúp các phần và ranh giới trong tệp trở nên rõ ràng hơn, dễ đọc hơn rất nhiều.
bat
còn có một số tính năng bổ sung hấp dẫn, như tích hợp với Git để đánh dấu các dòng đã thay đổi. Nó cũng có thể hoạt động cùng với các công cụ khác như fzf
hoặc find
để hiển thị cửa sổ xem trước có màu. bat
có sẵn 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.
Cửa sổ terminal hiển thị mã nguồn với highlight cú pháp từ lệnh bat.
ripgrep: Sức Mạnh Tìm Kiếm Vượt Trội Của grep
Giống 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 so với đối tác tiêu chuẩn của nó là grep
. Điểm bán hàng chính của nó là tốc độ: nó thực hiện nhiều tìm kiếm song song, trong khi grep
chỉ tìm kiếm tuần tự. ripgrep
tận dụng sức mạnh của các CPU hiện đại bằng cách phân tán công việc của nó trên tất cả các lõi CPU.
ripgrep
không chỉ cực kỳ nhanh mà còn có một danh sách dài các tính năng hữu ích, như phát hiện chữ hoa thông minh (smart case detection), bỏ qua các tệp và thư mục cụ thể, và tích hợp với các ứng dụng khác.
Tính năng phát hiện chữ hoa thông minh là một tính năng đơn giản và thanh lịch mà đáng lẽ nên có trong mọi chức năng tìm kiếm. Nó có nghĩa là nếu bạn sử dụng chữ cái viết hoa trong từ khóa tìm kiếm của mình, thì 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 ích thường bị thiếu.
ripgrep
cũng bỏ qua các tệp và thư mục cụ thể, theo chỉ dẫn của tệp .gitignore
hoặc ignore
. Ví dụ, tệp sau đây sẽ khiến ripgrep
bỏ qua tất cả các hình ảnh có tên foo.jpg
hoặc các thư mục có tên ignored_dir
.
ignored_dir/**/foo.jpg
ripgrep
có khả năng tích hợp tuyệt vời với các ứng dụng khác. Emacs, Vim, Neovim và fzf
đều có các tiện ích mở rộng của bên thứ ba cung cấp tích hợp ripgrep
; điều này cho phép các ứng dụng này tận dụng khả năng tìm kiếm mạnh mẽ của ripgrep
một cách trực tiếp. fzf
(một tiện ích khác) cung cấp các tính năng nâng cao hoạt động tốt với ripgrep
, như bạn sẽ thấy sau.
Chưa hết, ripgrep
cũng có thể tìm kiếm trong các tệp nén với cờ -Z
. Nếu bạn có một thư mục lớn chứa các tệp văn bản và tệp nén, ripgrep
có thể xử lý tất cả mà không cần giải nén thủ công. Mặc dù nó không hiển thị nhiều chi tiết về kết quả trùng khớp, nhưng nó thực sự tiết kiệm rất nhiều thời gian và sự phức tạp.
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, vì vậy hãy tham khảo hướng dẫn của bản phân phối của bạn để cài đặt gói.
Kết quả tìm kiếm ripgrep trong terminal, từ khóa được highlight màu đỏ.
delta: Tối Ưu Hiển Thị Kết Quả Tìm Kiếm ripgrep
delta
thường dành cho các lập trình viên và nó là một trong những tiện ích yêu thích của chúng tôi. ripgrep
làm rất tốt việc nhanh chóng “xuyên thủng” các tệp để tìm chính xác những gì bạn cần; nó có 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á “nhạt nhẽo” vì thiếu màu sắc và ngữ cảnh. Mặc dù một số người có thể cho rằng nó đơn giản và chỉ tập trung vào từ khóa tìm kiếm, nhưng chúng tôi thấy rằng mình cần nhiều hơn thế. Khi tìm kiếm mã, chúng tôi muốn thấy ngữ cảnh xung quanh và màu sắc, vì cả hai đều giúp phân biệt đâu là cái cần thiết.
Đối với những bạn là lập trình viên (hoặc mới bắt đầu), delta
áp dụng highlight 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ý tài liệu. Ví dụ, nó cung cấp một chế độ xem song song đẹp mắt về các thay đổi đối với tài liệu (còn gọi là diff, viết tắt của difference).
Git có thể quản lý bất kỳ loại tài liệu văn bản nào, và mọi người thường sử dụng nó để lưu các “dotfiles” của họ (các tệp 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 các dotfiles của mình, chúng tôi thực sự khuyên bạn nên lưu chúng bằng Git. Trong trường hợp đó, delta
cũng rất đáng để xem xét, chỉ riêng với tính năng xem diff của nó đã đủ giá trị.
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 thông qua Homebrew và Nix.
fd: Tìm Kiếm File Nhanh Hơn, Đẹp Hơn find
Như tiêu đề đã nói, fd
rất giống find
, ngoại trừ việc nó nhanh hơn đáng kể và có màu sắc đẹp hơn. Màu sắc, như đã đề cập trước đây, 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 tệp và đường dẫn thư mục khác nhau.
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 nhiều lõi trong các CPU hiện đại. Khả năng này không chỉ mở rộng đến việc duyệt thư mục; nó còn áp dụng cho việc thực thi lệnh nữa. Khi bạn sử dụng cờ -X
, fd
chạy một lệnh song song với mỗi kết quả trùng khớp.
fd foo.txt -x bat --color=always
Giống như ripgrep
, fd
cũng hỗ trợ tìm kiếm smart case, và nó cũng tuân theo tệp .gitignore
, vì vậy các tìm kiếm sẽ tiện lợi hơn và loại bỏ nhiễu theo mặc định.
fd
có sẵn cho hầu hết mọi bản phân phối, vì vậy để cài đặt nó, 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 của bạn.
Cửa sổ terminal hiển thị danh sách đường dẫn file, kết quả tìm kiếm từ lệnh fd.
eza: Hiện Đại Hóa Lệnh ls Với Màu Sắc và Biểu Tượng
eza
là một phiên bản hiện đại của lệnh ls
tiêu chuẩn, và các tính năng chính của nó là hỗ trợ màu sắc tốt hơn và biểu tượng. Mặc dù không cần thiết, chúng tôi thấy biểu tượng là một điểm nhấn thú vị, nhưng đối với chúng tôi, màu sắc là điều cần thiết.
eza
có một số tính năng thú vị khác, như chế độ xem dạng cây (tree view) và siêu liên kết (hyperlinks). Ví dụ, cờ hyperlinks
chuyển đổi tất cả tên tệp và thư mục thành các liên kết có thể nhấp bằng định dạng OSC 8. Hầu hết các terminal đề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 là khác nhau và bạn có thể cần kích hoạt nó theo cách thủ công.
Điểm tuyệt vời nhất là các siêu liên kết cũng hoạt động với chế độ xem cây, có nghĩa là bạn có thể nhanh chóng điều hướng các thư mục lớn. Tuy nhiên, một vấn đề mà chúng tôi nhận thấy là chế độ xem cây của eza
chậm hơn nhiều so với lệnh tree
tiêu chuẩn: tree
sẽ hiển thị kết quả khi chúng được tìm thấy, trong khi eza
sẽ duyệt toàn bộ (đôi khi rất lớn) thư mục 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 nó có màu sắc đẹp và các liên kết có thể nhấp!
Cuối cùng, việc gõ eza --icons
mỗi lần khá khó chịu, vì vậy bạn có thể muốn đọc hướng dẫn của chúng tôi về cách tạo một alias.
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 của mình. Tuy nhiên, việc cài đặt trên Debian và Ubuntu yêu cầu một kho APT tùy chỉnh, nhưng trang chủ của eza
có đề cập đến điều này.
fzf History Search: Tìm Kiếm Lịch Sử Lệnh Mờ Không Thể Thiếu
Dù bạn là người mới bắt đầu hay một người dùng kỳ cựu, việc sử dụng một 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 là công cụ quan trọng nhất mà chúng tôi có. Việc gõ các lệnh rất tẻ nhạt, vì vậy chúng tôi 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 lên và xuống làm chậm quy trình làm việc của chúng tôi. Một công cụ tìm kiếm mờ giải quyết cả hai vấn đề này.
Nếu bạn không biết tìm kiếm mờ là gì, nó đơn giản có nghĩa là tìm kiếm gần đúng. Ví dụ, gõ emp
hoặc xpe
sẽ khớp với example
. Tại sao điều đó quan trọng? Bởi vì chúng ta không thể nhớ một lệnh đã gõ hai tháng trước, hoặc vì việc chuyển đổi nhanh chóng giữa nhiều lệnh gây gánh nặng cho bộ nhớ. Chúng ta 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 tìm kiếm trong thời gian thực.
Trong nhiều năm, chúng tôi đã dựa vào 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 một công việc đơn giản nhưng hiệu quả.
Tham khảo kho lưu trữ GitHub của fzf History Search
để biết hướng dẫn cài đặt. Bạn cũng có thể muốn theo dõi các hướng dẫn của chúng tôi về cách cài đặt Oh-My-Zsh và cách cài đặt fzf
. Một cách tiếp cận thay thế và dễ dàng hơn là đọc hướng dẫn của chúng tôi về cách cài đặt và sử dụng Atuin.
Danh sách các lệnh trong lịch sử shell được tìm kiếm bằng fzf History Search.
Script Bonus: Tìm Kiếm File Chuyên Nghiệp Kết Hợp fzf, ripgrep, bat
Nếu bạn đã cài đặt fzf
, ripgrep
và bat
, bạn có thể sử dụng lệnh tuyệt vời sau để tìm kiếm mờ hệ thống tệp 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 tệp .bashrc
của bạn và sau đó tải lại nó bằng source ~/.bashrc
. Tham khảo hướng dẫn của chúng tôi về cách hoạt động của tệp .bashrc
để biết thêm thông tin.
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ước đó mặc định mở tệp trong nano
, nhưng bạn có thể đặt nó để sử dụng Vim, Neovim, Emacs và 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 nó:
export EDITOR=nvim
Để sử dụng script, bạn chỉ cần chuyển đến một thư mục chứa các tệp 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 cho các 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 theo dõi hướng dẫn của chúng tôi về Regex, một cú pháp tìm kiếm nâng cao mà bạn có thể học trong một giờ.
Màn hình terminal chia đôi hiển thị mã nguồn (trên) và danh sách đường dẫn file (dưới) với script tìm kiếm.
Kết Luận
Các tiện ích dòng lệnh tiêu chuẩn của Linux tuy cần thiết nhưng có thể thiếu đi sự hấp dẫn và hiệu quả mà người dùng hiện đại mong muốn. Bằng cách thay thế hoặc bổ trợ chúng với bat
, ripgrep
, delta
, fd
, eza
và fzf History Search
, bạn sẽ không chỉ nâng tầm trải nghiệm terminal của mình lên một cấp độ mới mà còn cải thiện đáng kể năng suất làm việc. Từ việc highlight cú pháp đẹp mắt, tìm kiếm siêu tốc, đến quản lý lịch sử lệnh thông minh, những công cụ này mang lại sự tiện lợi và sức mạnh mà bạn không muốn bỏ lỡ. Đối với những người dùng chuyên nghiệp, chúng trở thành những công cụ không thể thiếu trong bộ công cụ hàng ngày. 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 để tận hưởng một môi trường terminal hiện đại, hiệu quả và trực quan hơn.