Comment utiliser l'homme sans moins?


21

Par défaut, manutilise lesspour sortir du texte. Comment puis-je lui dire de simplement sortir sur stdout? Mon émulateur de terminal possède une barre de défilement et une fonction de recherche et je souhaite les utiliser à la place des touches fléchées.

Réponses:


31

En fait, il utilise tout ce qui est spécifié dans la variable d'environnement MANPAGERou PAGER.

Selon votre manimplémentation et votre version, il pourrait également y avoir un commutateur de ligne de commande pour spécifier le pager.

Avec l' implémentation man-db, j'utilise toutes les méthodes ci-dessous:

MANPAGER=cat man man

PAGER=cat man man

MANOPT='-P cat' man man

man -P cat man

Pour le définir définitivement, ajoutez-le simplement à votre ~/.bashrc(ou à un autre fichier d'initialisation utilisé par votre shell):

export MANPAGER=cat

Cela fonctionne également avec certaines manimplémentations plus anciennes , tout en MANOPTétant spécifique à man-db:

export MANOPT='-P cat'

(Mieux vaut ne pas définir de PAGERcette façon. Celui-ci est également utilisé par de nombreuses autres applications.)

Il pourrait également y avoir un fichier de configuration globale. man-db a /etc/man_db.confou /etc/manpath.config. Là, vous pouvez définir:

DEFINE    pager    cat

Mais malheureusement, cela n'est pris en considération que si ni l'un MANPAGERni l'autre PAGERn'est défini.


2
Bonne réponse. Re: ~/.bashrc, Vous pouvez également envelopper l'exportation dans une condition il ne fixe que le récepteur d' appel si elle est le terminal / émulateur approprié: if [ "x$TERM" = "xxterm" ]; then export MANPAGER=cat; fi; évidemment remplacer xtermpar l'émulateur approprié.
Kevin

1
En fait, c'est bien et par conception, manpath.config est pris en compte plus tard. PAGER et MANPAGER sont tous deux de niveau utilisateur, où le fichier de configuration est de niveau système. Si le niveau du système était prioritaire, les utilisateurs ne pourraient pas du tout passer outre.
Paul de Vrieze

@PauldeVrieze, vous avez raison MANPAGER. J'ai utilisé le mot «malheureusement» pour le fait que le comportement s'applique également à PAGER, qui est un paramètre générique (utilisé par de nombreux outils) et je préférerais qu'il ne remplace pas un paramètre spécifique (utilisé par un seul outil), même si cela l'un est au niveau du système.
manatwork

Si vous souhaitez remplacer un paramètre spécifique pour un seul outil, vous pouvez toujours le faire en créant un alias, une fonction shell ou un script wrapper. L'un ou l'autre équivaudrait à: PAGER=cat manpar exemple:alias man='PAGER=cat MANPAGER=cat man'
Paul de Vrieze

6

Dirigez simplement la sortie de manvers cat?

man ls | cat   # useful use of cat

6
Notez que selon l' manimplémentation, que 1) augmente l'erreur, 2) affiche les codes de format troff dans le terminal, 3) supprime tout le formatage, 4) fonctionne comme prévu.
manatwork

2
Je ne l'ai jamais vu faire autre que 4.
Keith Thompson

@KeithThompson macOS mansemble utiliser le pager défini MANPAGERmême lorsque la sortie est un fichier ou un canal. Et si le pager l'est less, alors tout va bien car il lessse comporte comme catlorsque la sortie est un pipe ... Mais si vous utilisez autre chose (comme Vim, que j'utilise), alors ce n'est pas si bon.
muru

1

Essayez ces commandes pour générer une sortie man sans pageur.

  • man ls | cat (largeur fixe générée)

  • man -P cat ls (largeur variable générée)

J'étais sur un système GNU Linux


1

Un autre angle: similaire à la réponse de Tony.

Vous pouvez également rediriger la sortie de l'homme dans un fichier et l'afficher avec votre éditeur de texte préféré ou même y ajouter des signets, des commentaires, etc.

man bash  > bashman.txt

J'ai une copie de la page de manuel bash ainsi que les sections sur le contrôle de flux bash et les indicateurs de test bash enregistrés sous forme de fichiers texte dans mon répertoire bin afin que je puisse les charger directement dans mon éditeur de texte (kate) pour référence pendant que je suis écrire des scripts bash.


Avertissement: selon votre système et la page de manuel, la commande ci-dessus peut entraîner des informations de formatage et des caractères de contrôle dans le fichier.

Pour éviter cela, faites comme suggéré dans LESS='+/^TIPS' man man:

To  get a  plain  text  version  of a man page, without backspaces and
underscores, try

  # man foo | col -b > foo.mantxt

1
@Wildcard - Merci. Je n'en savais rien.
Joe
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.