Zoals je wellicht weet, worden de man-pagina's van alle opdrachten in Linux opgeslagen in de map /usr/share/man/. De man-pagina's zijn gecomprimeerd in gzip-formaat (.gz). Heb je ooit willen weten welke opdracht de grootste man-pagina op je Linux-systeem heeft? Met grootste bedoelen we het aantal regels in een man-pagina. Het gaat niet om de bestandsgrootte of het aantal pagina's wanneer deze wordt afgedrukt.
We kunnen de grootste en langste man-pagina's vinden door het aantal regels en woorden erin te tellen.
De wc opdracht wordt gebruikt om het aantal regels en woorden in een bestand te tellen.
Om het aantal regels in de man-pagina van de ls opdracht te tellen, voer je het volgende uit:
dany@pindabook:~$ man ls | wc -l
243
Om het aantal woorden in de ls man-pagina te tellen, gebruikt je de -w optie:
dany@pindabook:~$ man ls | wc -w
1026
Het tellen van het aantal regels in elke man-pagina is echter vervelend, tijdrovend en waarschijnlijk een domme manier om de langste man-pagina's in het hele Linux-systeem te vinden. We kunnen dit eenvoudig vinden met behulp van een for-lus:
dany@pindabook:~$ 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
/usr/share/man/man1/guestfish.1.gz: 9097
/usr/share/man/man2/perf_event_open.2.gz: 2269
/usr/share/man/man3/Sys::Guestfs.3pm.gz: 6542
/usr/share/man/man4/md.4.gz: 808
/usr/share/man/man5/smb.conf.5.gz: 9751
/usr/share/man/man6/kpat.6.gz: 78
/usr/share/man/man7/qemu-qmp-ref.7.gz: 19264
/usr/share/man/man8/dnsmasq.8.gz: 2078
Deze opdracht analyseert de man-mappen (1 tot 8) en geeft de langste man-pagina in elke map weer. Afhankelijk van het aantal man-pagina's op jouw systeem kan dit enkele minuten duren.
Zoals je kunt zien, is de langste man-pagina op mijn systeem qemu-qmp-ref.7.gz met in totaal 19264 regels.
Je kunt dit controleren met de wc opdracht:
dany@pindabook:~$ man qemu-qmp-ref | wc -l
19264
Als je de langste man wilt vinden op basis van het aantal woorden in plaats van het aantal regels, voer dan het volgende uit:
<dany@pindabook:~$ Controleer of het correct is met behulp van de opdracht: dany@pindabook:~$ Ziehier een eenvoudig BASH-script om de langste man-pagina in een Linux-systeem te vinden. Maak met een teksteditor (bv. dany@pindabook:~$ Voer de volgende regels in: #!/usr/bin/env bash
Als je het aantal woorden in plaats van het aantal regels wilt tellen, gebruik je Het bovenstaande script neemt de top 10 in elke man-map, stelt een tabel samen en sorteert deze op het aantal regels.
Het sluit ook alle genummerde secties 1-8 uit als deze NIET op het systeem aanwezig zijn. Sla het script op (opslaan met Ctrl+o, daarna Return en afsluiten met Ctrl+x).
Voer nu dit script uit om de langste man-pagina op jouw systeem te vinden: dany@pindabook:~$ De langste man-pagina wordt onderaan weergegeven.
Het getal in het midden geeft de sectie van de man-pagina aan.
Als je de langste man-pagina bovenaan wilt weergeven, gebruik dan Voor meer informatie over man-pagina's voer je het volgende opdracht uit: dany@pindabook:~$ MAN(1) Hulpprogramma's paginaopmaker MAN(1)
Voor een man pagina's overzicht: dany@pindabook:~$ Het enige wat we moeten verwijderen, is het zelf gemaakte script. dany@pindabook:~$ 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
/usr/share/man/man1/guestfish.1.gz: 46930
/usr/share/man/man2/perf_event_open.2.gz: 12919
/usr/share/man/man3/Sys::Guestfs.3pm.gz: 40261
/usr/share/man/man4/md.4.gz: 8107
/usr/share/man/man5/smb.conf.5.gz: 66757
/usr/share/man/man6/kpat.6.gz: 279
/usr/share/man/man7/qemu-qmp-ref.7.gz: 85903
/usr/share/man/man8/dnsmasq.8.gz: 20931
/p>

man qemu-qmp-ref | wc -w
85903
Met een script
nano) een script aan, bijvoorbeeld met de naam longman.sh (afkorting van longest man page):nano longman.sh
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
wc -w in het bovenstaande script.bash longman.sh
14 6 intro.6.gz
78 6 kpat.6.gz
186 4 initrd.4.gz
232 4 radeon.4.gz
236 4 lirc.4.gz
283 4 wacom.4.gz
342 4 fuse.4.gz
404 4 libinput.4.gz
458 4 intel.4.gz
472 4 console_codes.4.gz
524 4 st.4.gz
647 2 seccomp.2.gz
726 2 bpf.2.gz
735 7 tcp.7.gz
747 2 open.2.gz
808 4 md.4.gz
835 2 futex.2.gz
838 7 capabilities.7.gz
845 2 fcntl.2.gz
893 2 clone.2.gz
901 7 X.7.gz
987 7 cgroups.7.gz
1141 2 keyctl.2.gz
1185 7 gitcore-tutorial.7.gz
1200 2 ptrace.2.gz
1281 2 seccomp_unotify.2.gz
1449 8 ip-link.8.gz
1534 3 CGI.3pm.gz
1581 8 smartctl.8.gz
1610 8 pppd.8.gz
1704 3 IO::Socket::SSL.3pm.gz
1730 7 ossl-guide-migration.7ssl.gz
1752 8 mdadm.8.gz
1893 5 terminfo.5.gz
1921 3 Date::Manip::DM5.3pm.gz
2023 8 net.8.gz
2078 8 dnsmasq.8.gz
2121 8 mount.8.gz
2269 2 perf_event_open.2.gz
2338 8 lsof.8.gz
2449 5 btrfs.5.gz
2508 3 DBI::Changes.3pm.gz
2587 8 iptables-extensions.8.gz
2629 3 DBI::DBD.3pm.gz
3154 5 sudoers.5.gz
3252 1 gpg.1.gz
3288 3 Sys::Virt::Domain.3pm.gz
3396 3 XML::Twig.3pm.gz
3405 5 systemd.exec.5.gz
3579 7 bpf-helpers.7.gz
3890 1 rsync.1.gz
4125 1 xorriso.1.gz
4256 8 nft.8.gz
4374 1 qemu-system.1.gz
4494 5 systemd.network.5.gz
4970 1 bash.1.gz
5024 5 org.freedesktop.systemd1.5.gz
5497 3 DBI.3pm.gz
5547 1 git-config.1.gz
5883 5 nm-settings.5.gz
5883 5 nm-settings-nmcli.5.gz
6009 1 curl.1.gz
6138 1 virsh.1.gz
6542 3 Sys::Guestfs.3pm.gz
6546 1 xterm.1.gz
7620 5 nm-settings-dbus.5.gz
8268 7 qemu-storage-daemon-qmp-ref.7.gz
9097 1 guestfish.1.gz
9751 5 smb.conf.5.gz
10973 3 Net::SSLeay.3pm.gz
19264 7 qemu-qmp-ref.7.gz
19946 7 systemd.directives.7.gz
sort -rn in het script.man man
NAAM
man - an interface to the system reference manuals
SAMENVATTING
man [man options] [[section] page ...] ...
man -k [apropos options] regexp ...
man -K [man options] [section] term ...
man -f [whatis options] page ...
man -l [man options] file ...
man -w|-W [man options] page ...
BESCHRIJVING
man is the system's manual pager. Each page argument given to man is normally the name of a program,
utility or function. The manual page associated with each of these arguments is then found and displayed.
A section, if provided, will direct man to look only in that section of the manual. The default action is
to search in all of the available sections following a pre-defined order (see DEFAULTS), and to show only
the first page found, even if page exists in several sections.
De onderstaande tabel toont de sectie-nummers van de handleiding, gevolgd door de paginasoorten die ze
bevatten.
1 Executable programs or shell commands
2 System calls (functions provided by the kernel)
3 Library calls (functions within program libraries)
4 Special files (usually found in /dev)
5 File formats and conventions, e.g. /etc/passwd
6 Games
Manual page man(1) line 1 (press h for help or q to quit)
man -k man
accessdb (8) - dumps the content of a man-db database in a human readable format
addgroup (8) - gebruikers of groepen toevoegen of manipuleren
adduser (8) - gebruikers of groepen toevoegen of manipuleren
apropos (1) - namen en beschrijvingen van de man-pagina's doorzoeken
apt (8) - commandoregelinterface
apt-get (8) - APT gereedschap voor het behandelen van pakketten -- commandoregelinterface
apt-patterns (7) - Syntaxis en semantiek van apt-zoekpatronen
catman (8) - create or update the pre-formatted manual pages
dpkg-source (1) - gereedschap voor het manipuleren van een Debian broncodepakket (.dsc)
fakeroot-sysv (1) - voert een commando uit in een omgeving die root-privileges fingeert voor het manipuleren v...
...
xfs_quota (8) - manage use of quota on XFS filesystems
xfs_rtcp (8) - XFS realtime copy command
xfs_spaceman (8) - show free space information about an XFS filesystem
xman (1) - Manual page display program for the X Window System
xmlcatalog (1) - Command line tool to parse and manipulate XML or SGML catalog files.
xmllint (1) - command line XML tool
xorriso (1) - creates, loads, manipulates and writes ISO 9660 filesystem images with Rock Ridge extensions.
xrandr (1) - primitive command line interface to RandR extension
xsetwacom (1) - commandline utility to query and modify wacom driver settings.
xsm (1) - X Session Manager
Opruimen
rm longman.sh