manuálové stránky všech příkazů jsou uloženy v /usr/share/man/ adresář v Linuxu. Manuálové stránky jsou komprimovány v gzip (.gz) formát. Zajímá vás, který příkaz má největší manuálovou stránku ve vašem systému Linux? Zde největší znamená, mluvím o počtu řádků v manuálové stránce. Nezáleží na velikosti souboru nebo počtu stránek při tisku. Pokud jste někdy přemýšleli, jak najít nejdelší manuálovou stránku v distribucích Linuxu a Unixu, postupujte podle jedné ze zde uvedených metod.
Najděte nejdelší mužskou stránku v Linuxu
Největší a nejdelší manuálové stránky můžeme najít tak, že spočítáme počet řádků a slov v nich. Wc příkaz se používá k počítání počtu řádků a slov v souboru. Chcete-li například spočítat počet řádků v ls manuálová stránka příkazu, spusťte:
$ man ls | wc -l
Podobně, chcete-li spočítat počet slov v manuálové stránce ls, použijte -w příznak jako níže.
$ man ls | wc -w
Najděte počet řádků a slov v manuálové stránce v linuxu
Nicméně počítání počtu řádků v každé manuálové stránce je únavné, časově náročné a pravděpodobně hloupý nápad zjistit nejdelší manuálové stránky v celém systému. To můžeme snadno najít pomocí smyčky for jako níže.
for i in {1..8}; do f=/usr/share/man/man$i/$(ls -1S /usr/share/man/man$i/ | head -n1); printf "%s: %9d\n" "$f" $(man "$f" 2>/dev/null | wc -l); done
Tento příkaz analyzuje man adresáře (1 až 8) a zobrazí nejdelší manuálovou stránku v každém adresáři v sestupném pořadí. Bude to trvat několik minut v závislosti na počtu manuálových stránek ve vašem systému.
Zde je výstup z mého systému Ubuntu 18.04:
/usr/share/man/man1/ffmpeg-all.1.gz: 25468 /usr/share/man/man2/perf_event_open.2.gz: 1732 /usr/share/man/man3/Net::SSLeay.3pm.gz: 8738 /usr/share/man/man4/st.4.gz: 423 /usr/share/man/man5/proc.5.gz: 3087 /usr/share/man/man6/espdiff.6.gz: 50 /usr/share/man/man7/groff_mdoc.7.gz: 1826 /usr/share/man/man8/dnsmasq.8.gz: 1337
Najděte nejdelší man stránku v Linuxu a Unixu
Jak vidíte, nejdelší manuálová stránka je ffmpeg-all s 25468 řádků celkem.
Můžete to zkontrolovat pomocí wc příkaz jako níže.
$ man ffmpeg-all | wc -l 25468
Pokud chcete najít nejdelšího muže na základě počtu slov místo řádků, spusťte:
for i in {1..8}; do f=/usr/share/man/man$i/$(ls -1S /usr/share/man/man$i/ | head -n1); printf "%s: %9d\n" "$f" $(man "$f" 2>/dev/null | wc -w); done
Ukázkový výstup:
/usr/share/man/man1/ffmpeg-all.1.gz: 130475 /usr/share/man/man2/perf_event_open.2.gz: 11031 /usr/share/man/man3/Net::SSLeay.3pm.gz: 37886 /usr/share/man/man4/st.4.gz: 4358 /usr/share/man/man5/proc.5.gz: 22939 /usr/share/man/man6/espdiff.6.gz: 294 /usr/share/man/man7/groff_mdoc.7.gz: 11919 /usr/share/man/man8/dnsmasq.8.gz: 16875
Zkontrolujte, zda je správná pomocí příkazu:
$ man ffmpeg-all | wc -w 130475
Jednoduchý skript k nalezení nejdelší stránky muže v Linuxu
Zde je jednoduchý BASH skript pro nalezení nejdelší manuálové stránky v systému Linux.
Vytvořte soubor, například longman.sh (zkratka pro longest man stránka):
$ nano longman.sh
Přidejte do něj následující řádky:
#!/usr/bin/env bash cd /usr/share/man/ for fn in $(find -maxdepth 1 -type d -iname 'man[1-8]'); do fn=${fn#./} ls -1Sp "$fn" | head -n 10 | sed -Ee "s,^,$PWD/$fn/," | while read manpage; do shortname=$(echo "$manpage" | sed -e "s,$PWD/man,," -e "s,/,"$'\t'",") printf '%9d\t%s\n' $(man "$manpage" 2>/dev/null | wc -l) "$shortname" done done | sort -n
Pokud chcete místo řádků počítat počet slov, použijte wc -w ve výše uvedeném skriptu. Tento skript vezme prvních 10 v každém mužském adresáři, sestaví tabulku a seřadí ji podle počtu řádků. Rovněž vylučuje jakoukoli z očíslovaných sekcí 1-8, pokud ve vašem systému NEEXISTUJÍ.
Uložte a zavřete soubor a udělejte jej spustitelný pomocí příkazu:
$ chmod +x longman.sh
Nyní spusťte tento skript a najděte nejdelší manuálovou stránku ve vašem systému:
$ ./longman.sh
Nejdelší manuálová stránka je zobrazena dole. Pokud chcete zobrazit nejdelší manuálovou stránku nahoře, použijte "sort -rn" ve výše uvedeném skriptu.
Ukázkový výstup:
[...] 14236 1 ffmpeg-filters.1.gz 15470 1 x86_64-linux-gnu-g++-7.1.gz 15470 1 x86_64-linux-gnu-gcc-7.1.gz 20579 1 ffplay-all.1.gz 20797 1 ffprobe-all.1.gz 24856 1 ffserver-all.1.gz 25468 1 ffmpeg-all.1.gz
Bash Script k nalezení nejdelší mužské stránky v Linuxu
Číslo uprostřed označuje sekci manuálové stránky .
Chcete-li se dozvědět více podrobností o manuálových stránkách, spusťte:
$ man man
$ man -k man
$ info man
Doporučené čtení:
- Jak nainstalovat Missing Man Pages Of Commands na Ubuntu
- Jak vytvořit a udržovat své vlastní Man Pages
Doufám, že to bylo užitečné.