Did 'man ls temp.txt'. El archivo de texto de salida está dañado

26

Cuando ejecuto man ls > temp.txt , el archivo de texto de salida está dañado. Por corrompido me refiero a que las primeras y últimas letras de algunas palabras se repiten excesivamente.

Varias primeras líneas en temp.txt :

LS(1)                     BSD General Commands Manual                    LS(1)

NNAAMMEE
     llss -- list directory contents

SSYYNNOOPPSSIISS
     llss [[email protected]@aabbccddeeffgghhiikkllmmnnooppqqrrssttuuwwxx11] [_f_i_l_e _._._.]

DDEESSCCRRIIPPTTIIOONN

Y así sucesivamente. Sin redirección man ls es perfectamente normal. ¿Qué está pasando?

    
pregunta seeker_of_bacon 21.07.2015 - 15:33

5 respuestas

30

Desde man man :

  

Para obtener una versión de texto simple de una página de manual, sin espacios de retroceso ni guiones bajos, intente

    # man foo | col -b > foo.mantxt

man imprime la versión formateada de la página man, los guiones bajos y las letras dobles están analizados

  

No es tanto que se "analicen", sino que "si no tiene un terminal, el formato en negrita se mostrará como un carácter repetido". Una vez que lo conecte a un terminal (vt100, xterm, Terminal, etc.), el hombre reconoce el terminal y envía los códigos de control apropiados para hacer color, negrita, subrayado y similares. Se está analizando correctamente, solo para un tipo de terminal nulo.

comentario por MichaelT

    
respondido por el Mateusz Szlosek 21.07.2015 - 15:44
21

Érase una vez, las computadoras se conectaban de forma rutinaria a los teletipos (teleprinters) que imprimían todo el texto en papel en tiempo real a medida que se recibía. A pesar de que los impresores no tienen instalaciones para texto subrayado o en negrita, la salida de un subrayado, el retroceso y la impresión de otra cosa podrían hacer que esa otra cosa aparezca subrayada. Del mismo modo, la salida de un carácter, el retroceso y la salida del mismo carácter tenderían a hacer que el carácter se vea más oscuro, aunque la efectividad de la misma variaría dependiendo de la calidad de la cinta instalada (si la cinta era antigua y débil, escriba el mismo carácter dos veces). lo haría significativamente más oscuro; con una nueva cinta escribiendo el carácter, incluso una vez alcanzaría un nivel de negrura máxima. Además, incluso si un usuario no estuviera conectado a una impresora, la redirección de la salida de man a un spooler de impresión hubiera sido bastante común, lo que probablemente explica por qué man se comportaría de esa manera incluso cuando la salida se redirigiera. / p>

Por cierto, en algunas impresoras (e incluso en impresoras telefónicas), el rendimiento de _←U_←N_←D_←E_←R_←L_←I_←N_←I_←N_←G sería notablemente peor que en ___________←←←←←←←←←←←UNDERLINING , ya que el primero requiere que el cabezal de impresión invierta la dirección en varias ocasiones (y generalmente supere su objetivo en ambos extremos). Lo mismo sería cierto cuando se usa negrita de múltiples golpes también, pero el comportamiento podría ser ventajoso ya que la primera vez que se imprime cada carácter seguiría inmediatamente a un carácter de retroceso y la segunda no. Si el cabezal de impresión estuviera acelerando mientras imprimía el primer carácter, eso haría que se alineara ligeramente con respecto al segundo, haciendo que el efecto de cara negrita sea más efectivo.

    
respondido por el supercat 22.07.2015 - 00:01
15

La respuesta de Mateusz es correcta, pero vale la pena señalar que en lugar de eliminar el formato destinado a un tty, puede tener un formato de hombre diferente.

Por ejemplo, puede obtener un pdf bien formateado en lugar de:

man -t ls | pstopdf -i -o ~/ls.pdf
    
respondido por el Tim B 21.07.2015 - 16:52
5

Como alternativa, tengo la siguiente función de shell definida (llamada desde el complemento OS X de Oh-my-ZSH ):

man-preview () {
    man -t "[email protected]" | open -f -a /Applications/Preview.app
}

Esto da como resultado que la página de manual deseada se abra en Vista previa con todo el formato bonito que uno podría desear. Es bastante fácil agregar este único alias a su ~/.profile (creo que pman es más fácil que man-preview , así que he establecido alias pman='man-preview en mi ~/.zshrc ).

P.S. He visto la función pman definida en varios archivos de puntos en Internet, Oh-my-ZSH resulta que es donde está definido el mío.

    
respondido por el Dustin Wheeler 21.07.2015 - 21:02
2

O puede usar ManOpen by Carl Lindberg para buscar e imprimir cualquier página man. ManOpen se desarrolló por primera vez para NeXtStep y aún funciona gracias a Carl.

    
respondido por el Sunwolf 21.07.2015 - 20:40

Lea otras preguntas en las etiquetas