Question Comment puis-je faire en sorte que la commande man n'utilise pas un pager?


Comment puis-je forcer la man commande de ne pas utiliser de pageur, et à la place de sortir la page de manuel en entier et de continuer à mettre en surbrillance?

Si j'utilise man -P cat ou man | cat, Je perds la mise en évidence.


4
2017-12-24 21:19


origine


Toi avoir besoin un meilleur titre. - SLaks
@Slaks: Vous voulez dire que la réponse n'est pas "achetez-lui un blackberry"? - mbarnett
@Matt: exactement. - SLaks
Ops! Je ne l'ai pas lu de cette façon :)))


Réponses:


Longue lecture des manuels pour l'homme, moins, groff et grotty m'a finalement donné la réponse

La mise en évidence par défaut est faite en utilisant des séquences de retour arrière: c\bc => gras c, _\bc => souligné c. Mais si la sortie utilise cat comme pager sort simplement du simple c dans les deux cas. De plus, les lignes vierges sont comprimées. Pour ce faire, le pager doit être défini sur ul | cat -s.

Le téléavertisseur peut être configuré de plusieurs manières:

  1. en utilisant les variables MANPAGER ou PAGER (MANPAGER est préférable car PAGER affecte non seulement la commande man)

    export MANPAGER='ul | cat -s'
    
  2. dans man.conf

    PAGER       ul | cat -s
    
  3. en utilisant le paramètre -P

    cat -P 'ul | cat -s' …
    

    ou

    alias man='man -P "ul | cat -s"'
    

7
2017-12-25 00:08



+1, mais je n'ai besoin d'utiliser 'ul' que mon pager pour transférer la sortie sur la console avec mise en évidence. C'est à dire. man -P ul <command>. Ubuntu 12.04.2. - G-Wiz


homme homme

...
    PAGER          A program to use for interactively delivering
                        man's  output  to  the  screen.   If not set,
                        `more -s' is used.  See more(1).

Ce qui signifie que le pager est régulé par PAGER env. variable, Il suffit donc de définir PAGER comme

setenv PAGER cat

et apprécie.


2
2017-12-24 21:41



Pourquoi la descente? Ce n'est peut-être pas la solution optimale, mais ce n'est pas incorrect. Essayez-le: $ PAGER=cat man foobar. - bcat
N'utilise pas cat comme un téléavertisseur essentiellement la même chose que de ne pas utiliser de téléavertisseur du tout? - bcat
La question concerne ne pas en utilisant un téléavertisseur et ceci sans perdre la mise en évidence. - Pascal Thivent
Lorsque j'essaie cette approche, je perds la mise en évidence (sur Mac OS X et Ubuntu). - Brian Campbell
Je perds aussi la mise en évidence. comme l'indique un commentaire dans une autre réponse, man -P ul ou PAGER=ul man travaux. TIL à propos de ul ... - flying sheep


Sinon, il y a toujours le -P commutateur:

man -P cat foo

1
2017-12-24 21:47



Je suis déjà triste qu'avec -P cat J'utilise la mise en évidence - tig
J'ai vérifié ma théorie avec <code> man -P cat man | tee foo.txt; moins -R foo.txt </ code>. Le formatage est toujours là; il ne s'affiche tout simplement pas dans la fenêtre de commande. - amphetamachine


Ce n'est pas exactement ce que vous voulez (vous n'obtiendrez pas la sortie dans la console) mais vous pourriez générer un fichier dvi avec le contenu d'un manuel comme expliqué dans l'homme de l'homme:

man -l -Tdvi ./foo.1x.gz > ./foo.1x.dvi

Cette commande va décompresser et formater le manuel source nroff     page ./foo.1x.gz dans un fichier (dvi) indépendant du périphérique. Le redi     La correction est nécessaire car l’indicateur -T fait que la sortie est dirigée vers     stdout sans pager. La sortie peut être visualisée avec un programme     tel que xdvi ou encore traité en PostScript en utilisant un programme     tels que dvips.

Je viens de tester cela et j'ai ouvert le fichier dvi avec evince: la mise en évidence n'est pas perdue.


1
2017-12-24 21:57



l'homme sur mac n'a pas de paramètres -l et -T - tig