Tôi đã khám phá các trang web lớn nhất dành cho người dùng Linux

Tác giả Starlink, T.Ba 22, 2025, 01:22:31 CHIỀU

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

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

Những cuốn hướng dẫn này có kích thước lớn.

Gần đây tôi tự hỏi các trang man có kích thước lớn như thế nào. Một số trang quá dài, có vẻ như không thể hiểu hết, trong khi một số trang khác lại có rất ít chi tiết. Kích thước của chúng có thể cho chúng ta biết điều gì về hệ thống Linux hoặc macOS mà chúng đang sử dụng?


1. Làm thế nào để tìm được trang Man Pages lớn nhất?

Dòng lệnh tôi sử dụng để tìm các trang hướng dẫn lớn nhất trông như thế này:

Mã nguồn [Chọn]
du -a /usr/share/man | fgrep '.' | sort -rn | head -n 20
Có khá nhiều điều đang diễn ra ở đó nên hãy để tôi giải thích.

Các trang hướng dẫn mặc định nằm trong một hệ thống phân cấp có gốc tại /usr/share/man. Bên trong thư mục đó là các thư mục con cho mỗi phần hướng dẫn. Bên trong đó là các tệp trang hướng dẫn riêng lẻ như /usr/share/man/man1/grep.1 và /usr/share/man/man4/ip.4.

Các tệp trang hướng dẫn có thể nằm ở nhiều vị trí; lệnh manpath sẽ liệt kê chúng. Tôi đang tìm kiếm trải nghiệm "cổ điển" nhất ở đây, vì vậy tôi giới hạn tìm kiếm của mình ở /usr/share/man, nơi chứa phần lớn các lệnh cổ điển.

Lệnh du, cho "sử dụng đĩa", cho bạn biết dung lượng đĩa mà các tệp và thư mục đang chiếm dụng. Tùy chọn -a liệt kê tất cả các tệp và thư mục trong hệ thống phân cấp, cùng với kích thước khối của chúng. Kích thước khối không hoàn toàn giống với kích thước tệp, nhưng đối với bài tập này, nó khá gần.

Đường ống đến fgrep xóa các thư mục mà du báo cáo. Một lần nữa, bạn có thể thực hiện theo cách tốt hơn, nhưng trong trường hợp cụ thể ở đây, nó hoạt động tốt.

Sau đó, pipeline sử dụng sort với các tùy chọn -r và -n để sắp xếp đầu ra từ du theo số với các số lớn nhất ở trên cùng. Điều này hiệu quả vì đầu ra của du bao gồm size làm trường đầu tiên.

Cuối cùng, head -n 20 đưa ra 20 tệp hàng đầu. Bạn có thể thay đổi số lượng hoặc thay thế toàn bộ lệnh bằng một trình phân trang như less để khám phá toàn bộ đầu ra.

2. Những trang web dành cho hướng dẫn lớn nhất là gì?

Tôi đã kiểm tra hai hệ điều hành tương đối giống Unix để xem trang hướng dẫn lớn nhất của chúng là gì:

    macOS 15
    Ubuntu 22

Trên macOS, tôi thấy thông báo sau:


Vì vậy, các trang hướng dẫn lớn nhất là perltoc, perlapi, perlfunc, postconf và perldiag. Rất nhiều Perl!

Trên Ubuntu, kết quả rất khác biệt:


Lưu ý cách Ubuntu nén các trang hướng dẫn của mình. Các tệp văn bản thường nén rất hiệu quả, do đó chúng chiếm ít không gian hơn. Nhưng các trang lớn nhất ít tập trung vào Perl hơn và bao gồm các tiện ích mạng và quản trị hệ thống.

3. Những trang web lớn nhất của Man Pages có thể dạy chúng ta điều gì

Bạn có thể học được rất nhiều điều khi đọc chúng, nhưng những trang này cũng cho chúng ta biết một số điều hữu ích về Linux, macOS và chương trình nào là nặng nhất.

3.1. Perl được ghi chép đầy đủ

Trên macOS, 4 trong 5 man page lớn nhất liên quan đến Perl. Tôi đã kiểm tra xem có tổng cộng bao nhiêu man page Perl:
       
Mã nguồn [Chọn]
find /usr/share/man -name 'perl*'
214! Gần một phần ba trong số này là các trang "delta", giống như trang bạn nhận được từ man perl583delta :


Những trang này tương đương với ghi chú phát hành và chúng có trong nhiều phiên bản nhỏ của ngôn ngữ. Đây là một trong những điều đầu tiên tôi học được trong quá trình này: một số trang hướng dẫn không ánh xạ trực tiếp đến lệnh hoặc chương trình đã cài đặt.

Ngược lại, chỉ có sáu trang hướng dẫn perl* trên máy Ubuntu của tôi. Vấn đề này không thực sự liên quan đến phiên bản Perl được cài đặt. Trên macOS, tôi thấy phiên bản 5.34.1 và trên Ubuntu là 5.34.0.

3.2. zsh quá lớn, nó chia các trang Man của nó thành nhiều trang nhỏ hơn

Trên macOS, tôi chạy zsh và hóa ra shell này được thể hiện tốt khi nói đến man pages. Trong top 10 có một man page có tên là "zshcompsys", và top 20 cũng bao gồm zshcontrib và zshmodules. Giống như Perl, zsh chia hướng dẫn sử dụng của nó thành các trang riêng biệt; "chỉ" có 16 trang.

Trang zshcompsys có tới 5.000 dòng giải thích cách hoạt động của tab-complete của zsh. Hệ thống hoàn thành cực kỳ mạnh mẽ và có thể cấu hình được, vì vậy có thể hiểu được tại sao trang hướng dẫn này lại lớn như vậy.

Điều này trái ngược với các shell khác. Trang hướng dẫn bash chính vẫn lớn: #8 trong danh sách và chỉ dưới 5.000 trang. Nhưng chỉ có một trang hướng dẫn liên quan đến bash khác, bashbug, và nó rất nhỏ, mặc dù nó có ghi lại một lệnh thú vị cho phép bạn gửi báo cáo lỗi từ dòng lệnh.

Các shell khác cũng được đại diện tốt—tcsh ở vị trí số 9 trong danh sách và ksh ở vị trí số 20—nhưng mỗi shell này chỉ giới hạn trong một trang hướng dẫn duy nhất.

Trong khi đó, trên Linux, tôi sử dụng bash và shell này có man page lớn nhất nói chung. Điều này đúng; tôi không cài đặt zsh và tôi mong đợi man page shell sẽ nằm trong số những man page lớn nhất.

3.3. curl là chương trình "bình thường" phức tạp nhất

Đây là nơi cuộc hành trình của tôi bắt đầu, tự hỏi liệu có chương trình nào khác phức tạp và được ghi chép đầy đủ như curl không. Lệnh curl có rất nhiều tùy chọn để xử lý tất cả các tính năng khác nhau của HTTP, đến nỗi trang hướng dẫn của nó kéo dài ~4.500 dòng trên Linux và ~6.500 dòng trên macOS. Sự khác biệt có thể là do các phiên bản curl khác nhau (8.7.1 trên macOS, 7.81.0 trên Ubuntu), nhưng dù thế nào đi nữa, đây cũng là một hướng dẫn khổng lồ.

Khi man pages đạt đến kích thước này, chúng bắt đầu trở nên khó sử dụng. Trong trường hợp của curl, tôi nghĩ có hai lựa chọn thay thế tốt hơn. Đầu tiên, có tldr, một lựa chọn thay thế đơn giản hơn cho man tập trung vào các ví dụ sử dụng. Đây là những gì nó tạo ra cho curl:


32 dòng đó hiệu quả hơn nhiều so với 6.000 dòng trong trang hướng dẫn! Trang tldr cũng đề cập đến giải pháp thay thế tốt thứ hai: phiên bản trực tuyến của trang hướng dẫn của curl.

3.4. macOS tập trung nhiều hơn vào Phần 1

Trang hướng dẫn riêng của man mô tả phần 1 là "Sổ tay hướng dẫn lệnh chung". Trên macOS, 18 trong số 20 trang hướng dẫn lớn nhất nằm trong phần 1. Ngược lại, các trang hướng dẫn lớn nhất của Ubuntu đa dạng hơn nhiều, được phân bổ trên các phần 1, 3 (Chức năng thư viện), 5 (Định dạng tệp) và 8 (Sổ tay hướng dẫn của người quản lý hệ thống).

Trang hướng dẫn phần 8 cho openvpn là trang lớn thứ hai trên hệ thống của tôi. Nó thậm chí còn cảnh báo người đọc về độ dài của chính nó!


Điều này có thể phản ánh người dùng chính của từng hệ thống. macOS hướng đến thị trường người tiêu dùng rộng hơn, vì vậy ngay cả các trang hướng dẫn đầu cuối của nó cũng hướng đến các lệnh của người dùng cuối. Linux hấp dẫn các lập trình viên, quản trị viên hệ thống và nhà điều hành mạng, vì vậy các trang hướng dẫn cấp thấp hơn của nó toàn diện hơn.

4. Hơn bất cứ điều gì, tôi đã học được sự tò mò một lần nữa

Những gì bắt đầu như một câu hỏi vu vơ mà tôi tự hỏi mình, đã phát triển thành một cuộc khám phá những hang thỏ Unix mà tôi chưa từng mạo hiểm trước đây. Tôi biết tối thiểu về man pages, nhưng hiểu biết của tôi về các phần thì hạn chế, và tôi không biết gì về lệnh manpath. Quan trọng hơn, tôi không biết nhiều về thành phần của man pages trên hệ thống của mình, và tôi chắc chắn không nhận ra họ dành bao nhiêu không gian cho Perl hoặc git-config.

Bài tập này khiến tôi hoài niệm về những ngày đầu sử dụng Linux, khi mọi thứ đều chín muồi để khám phá. Sau nhiều năm, thậm chí là nhiều thập kỷ, sử dụng, thật dễ dàng để trở nên tự mãn và ngừng đặt câu hỏi về hệ thống cơ bản. Tôi đã được nhắc nhở rằng việc nhìn trộm đằng sau bức màn có thể là một cách học hiệu quả, và tôi sẽ cố gắng nuôi dưỡng bản chất tò mò đó thêm một chút nữa trong tương lai.