66 điểm bởi GN⁺ 2025-10-15 | 1 bình luận | Chia sẻ qua WhatsApp
  • Giới thiệu nhiều công cụ dòng lệnh hiện đại giúp nâng cao hiệu suất làm việc trên Linux
  • Bao gồm nhiều công cụ thay thế hiện đại hoặc tăng cường các lệnh Unix truyền thống, đồng thời tập trung vào hiệu năng và được phát triển bằng Rust, Go, v.v.

Công cụ xem và duyệt tệp

  • bat : phiên bản nâng cấp của lệnh cat với syntax highlighting và tích hợp git mạnh hơn
  • exa : trình xem danh sách tệp hiện đại thay thế ls/tree, nhưng hiện đã ngừng được bảo trì
  • eza : fork của exa, cung cấp ls/tree hiện đại
  • lsd : ls thế hệ mới, hỗ trợ tương thích với cách dùng cũ và đầu ra đẹp hơn
  • broot : trình duyệt tệp dạng cây thư mục với khả năng điều hướng được tăng cường
  • nnn : trình quản lý tệp trong terminal nhẹ và nhanh

Phân tích dung lượng tệp và thư mục

  • ncdu : cung cấp giao diện du trực quan dựa trên văn bản
  • dust : giải pháp thay thế du dễ dùng hơn được viết bằng Rust
  • duf : công cụ phân tích dung lượng đĩa có khả năng sử dụng tốt hơn so với df truyền thống

Tìm kiếm tệp và mã nguồn

  • fd : thay thế find ngắn gọn và nhanh, rất dễ dùng
  • ripgrep : công cụ thay thế grep siêu nhanh có hỗ trợ gitignore
  • ag : công cụ tìm kiếm mã tương tự ack nhưng nhanh hơn
  • fzf : công cụ tìm kiếm mờ đa dụng, có thể dùng trong pipeline và nhiều ngữ cảnh khác
  • bfs : giải pháp thay thế find dựa trên breadth-first

Trình xem Git/diff trong terminal

  • delta : trực quan hóa kết quả gitdiff để dễ đọc hơn

Lịch sử và xử lý lệnh

  • mcfly : cải tiến đột phá cho tìm kiếm và duyệt lịch sử shell, nâng cao chất lượng tìm kiếm và cung cấp UI trực quan

Xử lý dữ liệu

  • choose : giải pháp thay thế trực quan và nhanh hơn cut và một phần awk
  • jq : trình phân tích dữ liệu dùng như sed dành riêng cho JSON
  • sd : công cụ thay thế sed với find/replace thân thiện hơn

Giám sát hệ thống/tiến trình

  • bottom : trình giám sát hệ thống và tiến trình dạng đồ họa đa nền tảng
  • glances : phiên bản cải tiến của top/htop
  • gtop : trình giám sát hệ thống kiểu dashboard trong terminal
  • procs : lệnh thay thế ps được viết bằng Rust

Benchmark và mạng

  • hyperfine : công cụ tự động hóa benchmark CLI
  • gping : công cụ ping có khả năng xuất biểu đồ

HTTP client

  • httpie : HTTP client hiện đại và thân thiện cho CLI, phù hợp để kiểm thử API cho lập trình viên
  • curlie : công cụ kết hợp sức mạnh của curl với tính dễ dùng của httpie
  • xh : công cụ thay thế httpie tập trung vào hiệu năng

Di chuyển thư mục và trình soạn thảo

  • zoxide : lệnh cd thông minh lấy cảm hứng từ z
  • micro : trình soạn thảo văn bản trong terminal với các tính năng hiện đại

Tiện ích CLI mới xuất hiện

  • up : công cụ pipeline xem trước theo thời gian thực, có thể kiểm tra ngay đầu ra lệnh

Công cụ trợ giúp và tài liệu

  • ManKier : man page dạng tóm tắt với phần giải thích lệnh gọn gàng
  • tldr : bản tóm tắt man page ngắn gọn, tập trung vào ví dụ
  • tealdeer : triển khai tldr bằng Rust với tốc độ chạy nhanh
  • explainshell : tự động phân tích tham số lệnh và giải thích ý nghĩa theo cách trực quan
  • cheat.sh : dịch vụ trợ giúp trực tuyến tích hợp tldr và cheatsheet

Công cụ GUI

  • baobab : trình phân tích dung lượng đĩa dựa trên GUI
  • stacer : công cụ GUI tối ưu hóa và giám sát hệ thống, bao gồm quản lý dịch vụ

1 bình luận

 
GN⁺ 2025-10-15
Ý kiến trên Hacker News
  • Có thể các công cụ này khách quan mà nói là tốt hơn, nhưng tôi nhận ra rằng mỗi lần cài lại OS, dựng VM hay SSH vào máy là lại phải thiết lập chúng, đúng kiểu khổ vô tận. Việc phải cấu hình cho từng môi trường rất mệt mỏi, và tôi cũng không muốn ở chỗ này dùng công cụ mới, chỗ khác lại trộn với công cụ truyền thống. Học cho thật vững các công cụ cổ điển mới là cách khiến cuộc sống dễ thở nhất

    • Có người dành phần lớn thời gian trên chính máy tính của mình nên giá trị của những cải tiến tiện dụng như thế này là rất lớn. Dù vậy, họ vẫn biết dùng các công cụ cổ điển ở mức đủ tốt, nên thỉnh thoảng làm việc trên server khác cũng không thành vấn đề. Không phải ai cũng là sysadmin phải đăng nhập vào đủ loại server suốt cả ngày

    • Có những công cụ tốt hơn hẳn đến mức dù cài đặt hơi phiền vẫn hoàn toàn xứng đáng. Tôi dùng thành thạo công cụ cổ điển, nhưng fd hay ripgrep vẫn luôn tốt hơn

    • Lý do tôi thật sự thích Nix là vì nó cho phép có cùng một thiết lập gần như ở mọi môi trường (miễn là môi trường tôi dùng là Linux hoặc macOS, tôi chỉ quan tâm hai cái đó). Có nhiều cách cài Nix không cần quyền root, nên tôi có thể tái tạo nguyên xi môi trường của mình ở bất cứ đâu. Tất nhiên, nếu không có Nix thì công cụ cổ điển vẫn dùng tốt. Không phải chọn một trong hai, mà có thể có cả hai

    • Khi cài lại OS thì kiểu gì cũng phải cài các gói cần thiết bằng apt-get, pacman, dnf, brew các thứ, rồi còn phải tự cài browser, editor của riêng mình nữa. SSH vào thì cũng đâu dùng được GUI, nhưng đó không phải lý do để tránh công cụ GUI. Dù bộ công cụ ở môi trường cá nhân và môi trường dùng chung có khác nhau thì tôi cũng không thấy là vấn đề lớn. Ví dụ bat không hẳn thay thế hoàn toàn cat, mà chỉ thêm syntax highlight để cuộc sống dễ chịu hơn. Nếu chưa cài thì đơn giản là đừng dùng

    • Theo tôi, nếu nhìn theo triết lý UNIX “làm tốt một việc”, thì việc có thể dễ dàng thay thế bằng một phương án tốt hơn chính là tinh thần cốt lõi của các tiện ích đơn giản này. Học công cụ cổ điển trước là đúng nếu xét cho sự nghiệp, nhưng tôi nghĩ nhất định cũng nên học các lựa chọn mới. Với tôi, những công cụ tiết kiệm thời gian như fd (thay find), sd (thay sed) hữu ích hơn hẳn so với bat hay eza

  • Với người phải truy cập hàng trăm server trên nhiều mạng và của nhiều khách hàng, gần như không đáng để dùng công cụ tùy biến. Lý do là 90% môi trường không cài sẵn những thứ đó. Tôi chỉ thêm đúng vài thứ vào ansible-config để triển khai bằng tự động hóa, và giữ danh sách thật ngắn gọn. 95% hệ thống tôi quản lý là Debian hoặc Ubuntu nên baseline gần như giống nhau, rồi tôi chỉ thêm ack, etckeeper, vim, pv, dstat những thứ như vậy

    • Từ “server” ở đây mới là điểm mấu chốt. Phần lớn các chương trình kiểu cải tiến nhẹ cho sysadmin có thể không quá đáng giá, nhưng một số lại là dev tool thực thụ cho môi trường phát triển, nên chỉ cần cài trên số ít máy dùng để lập trình là được. Tiêu biểu như ripgrep (recursive grep rất mạnh), jq (trình xử lý JSON mà bộ công cụ Unix mặc định không có lựa chọn thay thế), hyperfine (benchmarking)

    • Làm việc qua lại giữa Windows và Linux khiến tôi thấy các công cụ đa nền tảng xuất sắc như ripgrep cực kỳ tiện

    • Tôi tự hỏi có công cụ hay phần mở rộng SSH nào thực sự có thể tự động mang những app này vào phiên SSH từ xa không. Nếu là binary nhỏ thì có thể copy vào thư mục tạm để dùng, và cũng có thể hình dung chuyện tự động hóa quy trình đó. Nhưng vấn đề là có vướng bảo mật hay không, và có cần thêm quyền gì không. Rốt cuộc thì tính portable của các app này mới là mấu chốt. Tôi cũng thường xuyên nghĩ về chuyện này

    • emacs gần như hoạt động như một hệ điều hành, nên ở bất kỳ hệ thống nào bạn cũng có thể có một môi trường quen thuộc. Câu “GNU is my operating system, linux is just the current kernel” cũng từ đó mà ra. Ở góc nhìn của một admin kỳ cựu, đó là lý do tôi khuyên người mới học Linux hãy bắt đầu bằng lệnh info và đọc hết manual của nó. Làm vậy có thể vượt xa phần lớn admin khác. Khi biết công cụ tích hợp sẵn là gì thì manual cũng rất tốt, việc viết script trở nên dễ dàng, và đó chính là trung tâm của triết lý Linux. Đã từng có thời không có cả nano, chỉ có vi, nhưng ngày nay thêm cả editor TUI bằng tự động hóa CI/CD cũng rất đơn giản

    • Tôi không mấy đồng cảm với những bình luận kiểu “tôi là kiểu người như thế này”. Có rất nhiều người không quan tâm chuyện bạn không cài công cụ tùy biến trên máy từ xa. Ý ở đây là hãy cài chúng ít nhất trên máy local của bạn để hưởng lợi ích

  • Tôi nghĩ nên có thêm một cột trong bảng là “công cụ này giải quyết vấn đề gì”. Còn kiểu “được viết bằng Rust” thì tôi không xem là điểm khác biệt đáng kể

    • Tôi từng có một trải nghiệm dở khóc dở cười trong cuộc họp công ty khi nghe người ta giải thích rằng “viết bằng Go” là điểm khác biệt. #facepalm

    • Nhiều mục trong bảng thực ra có nhắc đến vấn đề cụ thể như “syntax highlight”, “giao diện ncurses”, “trực quan hơn”. Chỉ là các mô tả kiểu “viết bằng Rust”, “modern”, “better” thì tôi thấy không giúp ích gì

    • Mục đích hàng đầu của đa số công cụ là cải thiện UX

    • Dùng giấy phép không phải GPL cũng không phải là điểm khác biệt

    • Khá nhiều công cụ trong số này còn dùng được trên Windows, đó là một điểm hay

  • Những danh sách công cụ kiểu này lúc nào cũng vui. Có lẽ đa số mọi người sẽ tìm được ít nhất một hoặc hai công cụ ở đây hữu ích cho mình. Cá nhân tôi xem ripgrepjq là thiết yếu. ripgrep là trình thay thế grep tốt nhất theo kiểu drop-in, còn jq giải quyết đúng bài toán mà tôi thực sự cần. Tôi cũng đang tính thử lsddust. Dù công cụ mới không trực tiếp cần cho tôi, tôi vẫn biết ơn việc mọi người bỏ thời gian vào chúng. Việc cả cộng đồng cùng làm cho hộp đồ nghề chung tốt hơn từng chút một thật đáng nể

    • Tôi có lẽ sẽ chọn fzf đầu tiên. Tôi thích nó hơn hẳn rg hay jq

    • ripgrep hoạt động khác grep, nên trên thực tế không phải là thay thế drop-in. Nó là một chương trình tuyệt vời, nhưng không hoàn toàn tương thích

    • Những admin Linux như tôi ai cũng có một danh sách chắt lọc kiểu này. Tôi thiên về một stack dựa trên GPL, và đặc biệt thích định dạng của ikrima.dev

  • Tôi sống trong terminal, nhưng các công cụ này либо không giải quyết vấn đề tôi đang cần ngay lúc này, либо không có sẵn trên hệ thống của tôi, thế mà vẫn có hàng chục nghìn sao GitHub. Tôi thật sự không hiểu vì sao chúng lại nổi tiếng đến vậy

    • Người sống giữa thư viện âm nhạc cũng có thể thấy khó hiểu khi những nghệ sĩ không hợp gu mình hoặc không có trong thư viện của mình lại bán được hàng triệu bản. Nói vui vậy thôi, tôi muốn hỏi là bạn đã thật sự thử dùng mấy công cụ này chưa. Tôi trước đây cũng không hiểu vì sao người ta dùng vim, nhưng khi dùng nghiêm túc rồi thì tôi hiểu ngay

    • Không dùng fzf à? Nghe như sống trong terminal sẽ rất vất vả đấy. Hữu ích nhất là qua các shell plugin, bạn có thể dùng Ctrl+R để fuzzy search bash_history, hay Ctrl+T để fuzzy search file trong thư mục hiện tại, chứ không chỉ chạy trực tiếp nó

    • Bộ công cụ Unix cốt lõi vốn đã rất chắc chắn, nên chỉ với công cụ mặc định cũng đủ làm việc. Nhiều công cụ thay thế đúng là tốt hơn, nhưng không phải bắt buộc, hơn nữa đa số lại không được cài sẵn

    • Hỏi thật vì tò mò: với các công cụ Unix tích hợp sẵn, có cách thanh lịch nào để recursive grep chỉ trên một phần mở rộng nhất định mà bỏ qua file ẩn (.git chẳng hạn) không? Ví dụ lệnh rg -g '*.foo' bar là mẫu tôi dùng cực kỳ thường xuyên. Tương tự với fd để tìm file theo regex hay glob. Tôi chưa tìm ra cách gọn gàng nào chỉ với công cụ mặc định

    • Tôi tò mò không biết bạn làm loại công việc gì trong terminal cả ngày mà lại không có nhu cầu cải thiện bộ công cụ. Hay là bạn tự viết mọi công cụ mình dùng?

  • Ở dark mode, chữ của link quá khó nhìn nên rất khó đọc

  • Tôi nghĩ chỉ có jq là thực sự giải quyết một vấn đề mà công cụ cũ không xử lý được. Còn lại phần lớn chỉ là khác biệt về sở thích, hiệu năng, highlight hay việc được viết bằng Rust

  • Tôi rất muốn có một “bộ công cụ” mà cùng một team phát hành, với thiết kế nhất quán về tham số, màu sắc, bảng biểu các thứ

  • Tôi đã dùng htop thay cho top trong thời gian dài vì thấy dễ tiếp cận hơn, nhưng htop mặc định không hiển thị kernel thread nên từng cản trở tôi tìm nguyên nhân sự cố. Từ đó tôi quay lại top vì nó cho thấy đầy đủ thông tin và đáng tin cậy hơn. Tôi nghĩ các UI như htop/btop khá giống kiểu phô diễn hơn là cần thiết

  • Bài này là từ năm 2023. Phần lớn “công cụ hiện đại” có thể giờ đã được cập nhật, hoặc đã có thứ mới thời thượng hơn xuất hiện

    • Có nhiều công cụ đến mức chỉ cần một nửa sống sót thôi cũng đã đủ đáng giá

    • Trải nghiệm của tôi lại ngược hẳn. Phần lớn các công cụ này, nếu chịu bỏ thời gian học cho tử tế, rốt cuộc cũng chỉ là “phát minh lại” bộ công cụ GNU mặc định vốn đã cực kỳ mạnh mẽ thêm một lần nữa