Comment vider une page de manuel?


46

Comment puis-je "lire" une page de manuel comme si je "mettais un chat" dans un fichier pour obtenir juste une image du contenu?

Réponses:


41

Tout d’abord, les fichiers man ne sont généralement que des fichiers texte gzipés quelque part dans votre système de fichiers. Étant donné que votre kilométrage variera pour les trouver et que vous souhaitiez probablement la version traitée et formatée que man vous donne à la place de la source, vous pouvez simplement les vider à l' manaide de l' outil. En regardant man man, je vois que vous pouvez changer le programme utilisé pour afficher les pages de manuel avec le -Pdrapeau comme ceci:

man -P cat command_name

Il ne vaut également rien qui mandétecte automatiquement quand vous dirigez sa sortie au lieu de l'afficher à l'écran, donc si vous allez la traiter avec quelque chose d'autre, vous pouvez passer directement à cette étape comme ceci:

man command_name | grep search_string

ou vider dans un fichier:

man command_name > formatted_man_page.txt

1
utiliser -P ne rend pas le fichier de sortie parfaitement lisible. Il est gribouillé avec tous les caractères ctrl-H. J'avais l'habitude de faire l'homme cmd>! man.cmd et ouvrez le fichier man.cmd et exécutez '% s / ^ H .// g' pour supprimer les caractères de contrôle gênants permettant de représenter les caractères gras et italiques. Mais cela a toujours un problème quand il y a d'autres caractères spéciaux. Je cherche toujours une bonne méthode pour éviter l'édition manuelle de la sortie.
Chan Kim

@ChanKim Vous faites quelque chose de mal ou vous avez une configuration non standard qui vous gêne, car les deux méthodes ici produisent en fait une sortie nette, formatée en texte brut sans caractères de contrôle supplémentaires. Êtes-vous sûr de ne pas avoir d' manalias à quelque chose ou à des drapeaux forcés dans votre shell qui vous séparent de la fonction normale de man?
Caleb

1
@Caleb, je confirme le problème de OP. La version 6.7 de CentOS (version finale), / usr / bin / man gcc> j, modifiez «j», tous les ctrl-H sont présents. La meilleure réponse que j'ai trouvée est à commandlinefu.com/commands/view/2417/…
Charles Roth

1
man command_name > formatted_man_page.txtva provoquer des doublons de mots.
Zigii Wong

52

Pour obtenir un fichier de page de manuel ASCII, sans les tentatives ennuyeuses de soulignement / soulignement arrière / soulignement, et d'étranges séquences pour mettre en gras:

man ksh | col -b > ksh.txt

6
Vous méritez plus de votes positifs
Labo

2
Bonjour, pourquoi la sortie man piped contient-elle des caractères en double? et comment col -b l'enlève-t-il? Merci d'avance.
saurabheights

2
@saurabheights - man tente de faire des soulignements et du texte en gras et peut-être d'autres choses avec des backspaces, des doublons de caractères, des séquences d'échappement, etc. sous forme de texte sur un terminal. Je n'ai pas lu le code source col, mais il se contente probablement d'examiner octet par octet stdin et de ne pas transmettre d'espaces arrière, etc. à la sortie standard. La page de manuel de col se lit comme si quelqu'un l'avait écrit spécifiquement pour filtrer la sortie de man.
Bruce Ediger

1
ok, c'est logique. De tels caractères (masqués) peuvent provoquer les caractères en double. Merci Bruce.
saurabheights

Vous méritez vraiment vraiment les upvotes de mode. Est-ce que "col" pour la colonne?
Algèbre

24

Les pages de manuel sont généralement troffdes fichiers pré-traités, et vous pouvez accéder au texte brut avec,

groff -t -e -mandoc -Tascii manpage.1 | col -bx > manpage.txt

groffest un wrapper pour troff.

Plus d'informations ici .

Vous devrez peut-être d'abord utiliser gzip pour décompresser les fichiers de la page de manuel, et vous aurez toujours beaucoup d'informations de formatage dans le résultat.


4
+1 pour avoir parlé de groff / troff et du formatage des pages de
manuel

11

Je fais ça tout le temps. Cette ligne de commande me rend heureux:

man man | col -bx > man.txt

col -b supprime les espaces de retour.

col-bx remplace également les tabulations par des espaces, ce qui est ma grande préférence.

Si je veux que le texte soit formaté à une largeur de ma préférence lors de la lecture, alors je change la commande en ceci:

MANWIDTH=10000 man man | col -bx > man.txt

man man | col -bx > man.txta travaillé pour moi. Je vous remercie.
JaredH

6

Utilisez simplement la mancommande - vous pouvez diriger la sortie vers d’autres choses, tout comme catpour un fichier.


1
J'aime la simplicité.
Joel Sjögren le

3

Si vous voulez juste catune page de manuel, vous pouvez simplement la diriger vers cat:

man ls | cat

Si vous souhaitez vider son contenu dans un fichier:

man ls > ls_manpage_dump.txt
En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.