GNU/Linux >> Tutoriels Linux >  >> Linux

Comment trouver la page de manuel la plus longue sous Linux

Les pages de manuel de toutes les commandes sont stockés dans /usr/share/man/ répertoire sous Linux. Les pages de manuel sont compressées en gzip (.gz). Curieux de savoir quelle commande a la plus grande page de manuel sur votre système Linux ? Ici, plus grand signifie, je parle du nombre de lignes dans une page de manuel. Il ne s'agit pas de la taille du fichier ou du nombre de pages lors de l'impression. Si vous vous êtes déjà demandé comment trouver la page de manuel la plus longue dans les distributions Linux et Unix, suivez l'une des méthodes indiquées ici.

Trouver la page de manuel la plus longue sous Linux

Nous pouvons trouver les pages de manuel les plus grandes et les plus longues en comptant le nombre de lignes et de mots qu'elles contiennent. Les wc La commande est utilisée pour compter le nombre de lignes et de mots dans un fichier. Par exemple, pour compter le nombre de lignes dans ls page de manuel de la commande, exécutez :

$ man ls | wc -l

De même, pour compter le nombre de mots dans la page de manuel ls, utilisez -w drapeau comme ci-dessous.

$ man ls | wc -w

Trouver le nombre de lignes et de mots dans une page de manuel sous Linux

Cependant, compter le nombre de lignes dans chaque page de manuel est fastidieux, prend du temps et probablement une idée stupide pour trouver les pages de manuel les plus longues de tout le système. Nous pouvons facilement trouver cela en utilisant une boucle for comme ci-dessous.

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

Cette commande analysera les répertoires man (1 à 8) et affichera la page man la plus longue de chaque répertoire par ordre décroissant. Cela prendra quelques minutes selon le nombre de pages de manuel dans votre système.

Voici la sortie de mon système 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

Trouver la page de manuel la plus longue sous Linux et Unix

Comme vous pouvez le voir, la page de manuel la plus longue est ffmpeg-all avec 25468 lignes au total.

Vous pouvez le vérifier avec wc commande comme ci-dessous.

$ man ffmpeg-all | wc -l
25468

Si vous voulez trouver l'homme le plus long en fonction du nombre de mots au lieu de lignes, exécutez :

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

Exemple de résultat :

/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

Vérifiez s'il est correct en utilisant la commande :

$ man ffmpeg-all | wc -w
130475

Un simple script pour trouver la page de manuel la plus longue sous Linux

Voici un simple script BASH pour trouver la page de manuel la plus longue d'un système Linux.

Créez un fichier, par exemple longman.sh (abréviation de longest man page):

$ nano longman.sh

Ajoutez-y les lignes suivantes :

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

Si vous voulez compter le nombre de mots au lieu de lignes, utilisez wc -w dans le script ci-dessus. Ce script prend le top 10 dans chaque répertoire man, compile un tableau et le trie par nombre de lignes. Il exclut également toutes les sections numérotées de 1 à 8 si elles n'existent PAS sur votre système.

Enregistrez et fermez le fichier et rendez-le exécutable à l'aide de la commande :

$ chmod +x longman.sh

Maintenant, exécutez ce script pour trouver la page de manuel la plus longue de votre système :

$ ./longman.sh

La page de manuel la plus longue est affichée en bas. Si vous souhaitez afficher la page de manuel la plus longue en haut, utilisez "sort -rn" dans le script ci-dessus.

Exemple de résultat :

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

Un script bash pour trouver la page de manuel la plus longue sous Linux

Le nombre au milieu indique la section de la page de manuel .

Pour en savoir plus sur les pages de manuel, exécutez :

$ man man
$ man -k man
$ info man

Suggestion de lecture :

  • Comment installer les pages man manquantes des commandes sur Ubuntu
  • Comment créer et gérer vos propres pages de manuel

J'espère que cela vous a été utile.


Linux
  1. Comment utiliser FIND sous Linux

  2. Comment trouver un fichier sous Linux

  3. Comment savoir ce que fait une commande Linux

  4. Comment trouver l'adresse IP de la passerelle par défaut sous Linux

  5. Comment ajouter une entrée dans la base de données des pages de manuel Linux

Comment installer des pages de manuel dans Alpine Linux

Comment trouver une adresse IP sous Linux

Comment trouver le nom d'hôte sous Linux

Comment trouver la ou les lignes les plus longues dans un fichier sous Linux

Comment trouver la dernière connexion sous Linux

Comment trouver une adresse IP sous Linux