Lorsque j'exécute, man ls > temp.txt
le fichier texte de sortie est corrompu. Par corrompu, je veux dire que la première et la dernière lettre de certains mots sont trop répétées.
Plusieurs premières lignes dans temp.txt
:
LS(1) BSD General Commands Manual LS(1)
NNAAMMEE
llss -- list directory contents
SSYYNNOOPPSSIISS
llss [--AABBCCFFGGHHLLOOPPRRSSTTUUWW@@aabbccddeeffgghhiikkllmmnnooppqqrrssttuuwwxx11] [_f_i_l_e _._._.]
DDEESSCCRRIIPPTTIIOONN
Etc. Sans redirection, man ls
c'est parfaitement normal. Que ce passe-t-il?
terminal
command-line
bash
seeker_of_bacon
la source
la source
less
oumore
affiche correctement la mise en forme. Si vous utilisezvim
, il affichera les backspaces bruts (^H
) avec les lettres supplémentaires.Réponses:
De
man man
:man
imprime la version formatée de la page de manuel, les traits de soulignement et les lettres doubles sontanalyséscommentaire de MichaelT
la source
Il était une fois, des ordinateurs étaient régulièrement connectés à des télétypes (téléimprimeurs) qui imprimaient tout le texte sur papier en temps réel au fur et à mesure de sa réception. Bien que les téléimprimeurs ne disposaient d'aucune fonctionnalité pour le texte souligné ou en gras, la sortie d'un soulignement, d'un retour en arrière et de l'impression d'une autre chose ferait apparaître cette autre chose soulignée. De même, la sortie d'un caractère, le retour en arrière et la sortie du même caractère tendraient à rendre le caractère plus sombre, bien que l'efficacité de celui-ci varie en fonction de la qualité du ruban installé (si le ruban était ancien et faible, en tapant le même caractère deux fois le rendrait beaucoup plus sombre; avec un nouveau ruban tapant le caractère, même une seule fois atteindrait une noirceur maximale). De plus, même si un utilisateur n'était pas connecté à une imprimante,
man
à un spouleur d'impression aurait été assez courant, ce qui explique probablement pourquoiman
se comporterait de cette façon même lorsque la sortie était redirigée.BTW, sur certaines imprimantes (et même les téléimprimantes), les performances de
_←U_←N_←D_←E_←R_←L_←I_←N_←I_←N_←G
seraient nettement pires que___________←←←←←←←←←←←UNDERLINING
, car la première nécessite que la tête d'impression inverse à plusieurs reprises la direction (et dépasse généralement sa cible aux deux extrémités). La même chose serait vraie lors de l'utilisation de caractères gras multi-frappes également, mais là, le comportement pourrait en fait être avantageux car la première fois que chaque caractère est imprimé suivrait immédiatement un caractère de retour arrière et le second ne le serait pas. Si la tête d'impression accélérait lors de l'impression du premier caractère, cela entraînerait un léger désalignement par rapport au second, ce qui rendrait l'effet de gras plus efficace.la source
La réponse de Mateusz est correcte, mais il convient de souligner qu'au lieu de supprimer le formatage destiné à un tty, vous pouvez avoir un formatage homme différemment.
Par exemple, vous pouvez obtenir un pdf bien formaté à la place avec:
la source
gzip -dc $(man -w ls) | groff -Thtml -mandoc -c > /tmp/man-ls.html
-t
formats avecgroff -Tps ...
et à partir de l'exécution de chaînes sur / usr / bin / man, semblent être codés en dur. Et comme elle-Tps
remplace GROFF_TYPESETTER, votre solution pourrait être la plus viable. Bien qu'il vous manque une étape dans votre pipeline. Vous voulez tbl puis groff. Essayezman -d ls
de voir le pipeline qu'il utilise.Comme alternative, j'ai la fonction shell suivante définie (appelée depuis le plugin OS X d' Oh-my-ZSH ):
Il en résulte que la page de manuel souhaitée est ouverte dans Aperçu avec tout le joli formatage que l'on peut souhaiter. Il est assez facile d'ajouter ce seul alias à votre
~/.profile
(je pense quepman
c'est plus facile queman-preview
, donc je l'ai définialias pman='man-preview
dans mon~/.zshrc
).PS J'ai vu la
pman
fonction définie dans divers fichiers dot sur Internet, Oh-my-ZSH se trouve être là où la mienne est définie.la source
Ou vous pouvez utiliser ManOpen by Carl Lindberg pour rechercher et imprimer n'importe quelle page de manuel. ManOpen a été développé pour la première fois pour NeXtStep et fonctionne toujours grâce à Carl.
la source