Zbadałem największe strony podręczne (man pages) w systemie Linux, oto czego się nauczyłem

Artykuł bada różnice w rozmiarze stron man w systemach Linux i macOS, ujawniając, które programy są najlepiej udokumentowane oraz co to mówi o tych systemach.
Niedawno zacząłem się zastanawiać, jak duże są różne strony man. Niektóre są tak długie, że wydają się nieprzeniknione, podczas gdy inne mają bardzo mało szczegółów. Co ich rozmiar może nam powiedzieć o systemie Linux lub macOS, na którym się znajdują?
Jak Znaleźć Największe Strony Man?
Użyłem następującej linii poleceń, aby znaleźć największe strony man:
du -a /usr/share/man | fgrep '.' | sort -rn | head -n 20
Trochę się dzieje, więc pozwól, że wyjaśnię.
Domyślne strony man znajdują się w hierarchii, której korzeniem jest /usr/share/man. Wewnątrz tego katalogu znajdują się podkatalogi dla każdej sekcji man. W tych podkatalogach są pojedyncze pliki stron man, takie jak /usr/share/man/man1/grep.1 oraz /usr/share/man/man4/ip.4.
Pliki stron man mogą znajdować się w kilku lokalizacjach; polecenie manpath je wymienia. Szukam tutaj najbardziej "standardowego" doświadczenia, więc ograniczam swoje poszukiwania do /usr/share/man, gdzie znajduje się większość standardowych poleceń.
Polecenie du, oznaczające "zużycie dysku," pokazuje, ile miejsca na dysku zajmują pliki i katalogi. Opcja -a wymienia wszystkie pliki i katalogi w hierarchii, wraz z ich rozmiarem bloku. Rozmiar bloku nie jest dokładnie tym samym co rozmiar pliku, ale do tego ćwiczenia, to wystarczająco bliskie.
Rura do fgrep usuwa katalogi, które raportuje du. Można to zrobić lepiej, ale w tym konkretnym przypadku działa dobrze.
Następnie używamy sort z opcjami -r i -n, aby posortować dane wyjściowe z du numerycznie, z największymi liczbami na górze. To działa, ponieważ dane wyjściowe du zawierają rozmiar w swoim pierwszym polu.
Na końcu polecenie head -n 20 zwraca 20 największych plików. Można zmienić tę liczbę lub zastąpić całe polecenie pagerem, takim jak less, aby przeglądać pełne dane wyjściowe.
Jakie Są Największe Strony Man?
Sprawdziłem dwa dość "waniliowe", podobne do Uniksa systemy operacyjne, aby zobaczyć, jakie mają największe strony man:
- macOS 15
- Ubuntu 22
Na macOS zobaczyłem następujące wyniki:
Największe strony man to perltoc, perlapi, perlfunc, postconf i perldiag. Dużo Perl!
Na Ubuntu wyniki są całkiem inne:
Zauważ, jak Ubuntu kompresuje swoje strony man. Pliki tekstowe często kompresują się bardzo efektywnie, więc zajmują znacznie mniej miejsca. Ale największe strony są mniej skoncentrowane na Perl i obejmują narzędzia do sieci i sysadminów.
Czego Największe Strony Man Mogą Nas Nauczyć
Można się wiele nauczyć, czytając je, ale te strony mówią nam także kilka przydatnych rzeczy o Linuxie, macOS oraz które programy są najcięższe.
Perl Jest Obszernie Udokumentowany
Na macOS, 4 z 5 największych stron man są związane z Perlem. Sprawdziłem, ile jest ogólnie stron man dla Perla:
find /usr/share/man -name 'perl*'
214! Prawie jedna trzecia z nich to strony "delta", takie jak uzyskujesz z man perl583delta:
Te strony są odpowiednikiem notatek z wydania i są obecne dla wielu mniejszych wersji języka. To była jedna z pierwszych rzeczy, które nauczyłem się w tym procesie: niektóre strony man nie są bezpośrednio powiązane z poleceniem lub zainstalowanym programem.
W przeciwieństwie do tego, na moim komputerze z Ubuntu jest tylko sześć stron man związanych z perl*. To nie jest również bezpośrednio związane z wersją Perla, która jest zainstalowana. Na macOS widzę wersję 5.34.1, a na Ubuntu 5.34.0.
zsh Jest Tak Duży, że Dzieli Swoje Strony Man Na Wiele Mniejszych
Na macOS używam zsh, i okazuje się, że ta powłoka jest dobrze reprezentowana, jeśli chodzi o strony man. Wśród 10 najlepszych jest strona man o nazwie “zshcompsys”, a wśród 20 najlepszych znajdują się także zshcontrib i zshmodules. Podobnie jak Perl, zsh dzieli swój podręcznik na osobne strony; jest ich "tylko" 16.
Strona zshcompsys ma zawrotną liczbę 5 000 linii, wyjaśniając, jak działa automatyczne uzupełnianie w zsh. System uzupełniania jest niesamowicie potężny i konfigurowalny, więc całkowicie zrozumiałe jest, że ta strona man jest tak obszerna.
To kontrastuje z innymi powłokami. Główna strona man bash jest nadal duża: #8 na liście i tuż poniżej 5 000 linii. Ale jest tylko jedna inna strona podręcznika związana z bash, bashbug, i jest ona niewielka, chociaż dokumentuje interesujące polecenie, które pozwala zgłaszać błędy z wiersza poleceń.
Inne powłoki są dobrze reprezentowane—tcsh jest na #9 na liście, a ksh na #20—ale każda z tych powłok ogranicza się do jednej strony man.
W międzyczasie, w systemie Linux, I.
użyj bash, a ta powłoka ma największą stronę podręczną. To się zgadza; nie mam zainstalowanego zsh i spodziewałem się, że strony podręczne powłok będą jednymi z największych.
curl jest najbardziej złożonym "normalnym" programem
To tutaj rozpoczęła się moja podróż, zastanawiając się, czy jakiś inny program jest tak skomplikowany i dobrze udokumentowany jak curl. Polecenie curl ma tak wiele opcji, aby poradzić sobie z różnymi funkcjami HTTP, że jego strona podręczna zajmuje ~4,500 linii na Linuxie i ~6,500 na macOS. Różnica prawdopodobnie wynika z różnych wersji curl (8.7.1 na macOS, 7.81.0 na Ubuntu), ale w każdym razie jest to ogromny podręcznik.
Kiedy strony podręczne osiągają taki rozmiar, stają się nieporęczne. W przypadku curl, myślę, że są dwie lepsze alternatywy. Po pierwsze, jest tldr, prostsza alternatywa dla man, koncentrująca się na przykładowych zastosowaniach. Oto co mówi o curl:
Te 32 linie są znacznie bardziej efektywne niż 6,000 w stronie podręcznej! Strona tldr wspomina również o drugiej najlepszej alternatywie: wersji online strony podręcznej curl.
macOS bardziej koncentruje się na sekcji 1
strona podręczna man opisuje sekcję 1 jako "Podręcznik ogólnych poleceń". Na macOS 18 z 20 największych stron podręcznych znajduje się w sekcji 1. Dla porównania, największe strony podręczne Ubuntu są znacznie bardziej zróżnicowane, rozproszone po sekcjach 1, 3 (Funkcje biblioteki), 5 (Formaty plików) i 8 (Podręcznik zarządzania systemem).
Strona podręczna sekcji 8 dla openvpn jest drugą co do wielkości na moim systemie. Nawet ostrzega czytelnika o swojej długości!
To prawdopodobnie odzwierciedla głównych użytkowników każdego systemu. macOS jest ukierunkowany na szerszy rynek konsumencki, więc nawet jego strony podręczne w terminalu są skierowane do poleceń końcowego użytkownika. Linux przyciąga programistów, administratorów systemów i operatorów sieci, dlatego jego bardziej zaawansowane strony podręczne są bardziej kompleksowe.
Więcej niż cokolwiek innego, nauczyłem się być znów ciekawym
Co zaczęło się jako nietrafne pytanie, które zadałem sobie, rozwinęło się w eksplorację unixowych króliczych nor, w które nigdy wcześniej nie zapuszczałem się. Wiedziałem minimum o stronach podręcznych, ale moja wiedza o sekcjach była ograniczona, a o poleceniu manpath nie wiedziałem wcale. Co więcej, nie wiedziałem wiele o kompozycji stron podręcznych na moich systemach i z pewnością nie zdawałem sobie sprawy, ile miejsca zajmują Perl lub git-config.
To ćwiczenie sprawiło, że poczułem nostalgię za moimi wcześniejszymi dniami z Linuxem, kiedy wszystko było gotowe do odkrywania. Po latach - a nawet dekadach - użytkowania łatwo stać się zadowolonym i przestać zadawać pytania o podstawowy system. Przypomniano mi, że zaglądanie za zasłonę może być skutecznym sposobem uczenia się, a postaram się w przyszłości trochę bardziej nakarmić tę ciekawską naturę.
Jeśli ciekawią Cię artykuły podobne do Zbadałem największe strony podręczne (man pages) w systemie Linux, oto czego się nauczyłem, zajrzyj do kategorii Linux i odkryj jeszcze więcej interesujących treści.
Dodaj komentarz
Możesz być zainteresowany