GNU/Linux >> Linux Esercitazione >  >> Linux

Come trovare la pagina man più lunga in Linux

Le pagine man di tutti i comandi sono archiviati in /usr/share/man/ directory in Linux. Le pagine man sono compresse in gzip (.gz). Curioso di sapere quale comando ha la pagina di manuale più grande sul tuo sistema Linux? Qui significa più grande, sto parlando del numero di righe in una pagina man. Non si tratta della dimensione del file o del numero di pagine quando viene stampato. Se ti sei mai chiesto come trovare la pagina man più lunga nelle distribuzioni Linux e Unix, segui uno dei metodi indicati qui.

Trova la pagina man più lunga in Linux

Possiamo trovare le pagine man più grandi e più lunghe contando il numero di righe e parole in esse contenute. Il WC comando viene utilizzato per contare il numero di righe e parole in un file. Ad esempio, per contare il numero di righe in ls pagina man del comando, esegui:

$ man ls | wc -l

Allo stesso modo, per contare il numero di parole nella pagina man di ls, usa -w segnala come sotto.

$ man ls | wc -w

Trova il numero di righe e parole in una pagina man in Linux

Tuttavia, contare il numero di righe in ogni pagina man è noioso, richiede tempo e probabilmente un'idea stupida per scoprire le pagine man più lunghe dell'intero sistema. Possiamo trovarlo facilmente usando un ciclo for come di seguito.

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

Questo comando analizzerà le directory man (da 1 a 8) e visualizzerà la pagina man più lunga in ciascuna directory in ordine decrescente. Ci vorranno alcuni minuti a seconda del numero di pagine man nel tuo sistema.

Ecco l'output del mio sistema 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

Trova la pagina man più lunga in Linux e Unix

Come puoi vedere, la pagina man più lunga è ffmpeg-all con 25468 righe in totale.

Puoi eseguire un controllo incrociato con wc comando come di seguito.

$ man ffmpeg-all | wc -l
25468

Se vuoi trovare l'uomo più lungo in base al numero di parole anziché alle righe, esegui:

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

Risultato di esempio:

/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

Controlla se è corretto usando il comando:

$ man ffmpeg-all | wc -w
130475

Un semplice script per trovare la pagina man più lunga in Linux

Ecco un semplice script BASH per trovare la pagina man più lunga in un sistema Linux.

Crea un file, ad esempio longman.sh (abbreviazione di uomo più lungo pagina):

$ nano longman.sh

Aggiungi le seguenti righe:

#!/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

Se vuoi contare il numero di parole anziché le righe, usa wc -w nello script di cui sopra. Questo script prende i primi 10 in ogni man dir, compila una tabella e la ordina in base al numero di righe. Esclude anche le sezioni numerate da 1 a 8 se NON esistono sul tuo sistema.

Salva e chiudi il file e rendilo eseguibile usando il comando:

$ chmod +x longman.sh

Ora, esegui questo script per trovare la pagina man più lunga nel tuo sistema:

$ ./longman.sh

La pagina man più lunga viene visualizzata in basso. Se vuoi visualizzare la pagina man più lunga in alto, usa "sort -rn" nello script sopra.

Risultato di esempio:

[...]
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

Uno script Bash per trovare la pagina man più lunga in Linux

Il numero al centro indica la sezione della pagina man .

Per conoscere maggiori dettagli sulle pagine man, esegui:

$ man man
$ man -k man
$ info man

Lettura consigliata:

  • Come installare Man Pages Of Commands mancanti su Ubuntu
  • Come creare e gestire le tue pagine man

Spero che questo sia stato utile.


Linux
  1. Come usare TROVA in Linux

  2. Come trovare un file in Linux

  3. Come trovare l'IP del gateway predefinito in Linux

  4. Come aggiungere una voce nel database delle pagine man di Linux

  5. Come leggere le pagine man di Linux?

Come installare le pagine man in Alpine Linux

Come trovare l'indirizzo IP in Linux

Come trovare il nome host in Linux

Come trovare le righe più lunghe in un file in Linux

Come trovare l'ultimo accesso su Linux

Come trovare l'indirizzo IP in Linux