28 votos

¿"El hombre es > temp.txt"? El archivo de texto de salida está corrupto

Cuando ejecute man ls > temp.txt el archivo de texto de salida está corrupto. Por corrupto quiero decir que la primera y la última letra de algunas palabras se repiten demasiado.

Varias primeras líneas en temp.txt :

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

NNAAMMEE
     llss -- list directory contents

SSYYNNOOPPSSIISS
     llss [--AABBCCFFGGHHLLOOPPRRSSTTUUWW@@aabbccddeeffgghhiikkllmmnnooppqqrrssttuuwwxx11] [_f_i_l_e _._._.]

DDEESSCCRRIIPPTTIIOONN

Y así sucesivamente. Sin redireccionamiento man ls es perfectamente normal. ¿Qué es lo que está pasando?

30voto

hjdm Puntos 18

De man man :

Para obtener una versión en texto plano de una página de hombre, sin espacios en blanco ni subrayados, intente

    # man foo | col -b > foo.mantxt

man imprime la versión formateada de la página del hombre, los subrayados y las letras dobles son parsed

No se trata tanto de que sean "analizados" sino más bien de que "si no tienes un terminal, el formato en negrita debe ser mostrado como un carácter repetido". Una vez que lo conectas a un terminal (vt100, xterm, Terminal, etc...), el hombre reconoce el terminal y envía los códigos de control apropiados para hacer el color, la negrita, el subrayado y similares. Está siendo analizado correctamente - sólo para un tipo de terminal nulo.

comentario de MichaelT

21voto

Ali Burak Kulakli Puntos 321

Érase una vez que las computadoras se conectaban rutinariamente a teletipos (teleimpresoras) que imprimían todo el texto en papel en tiempo real a medida que se recibía. Aunque las teleimpresoras no tenían facilidades para el texto subrayado o en negrita, la salida de un subrayado, un espacio entre líneas y la impresión de otra cosa causaría que esa otra cosa apareciera subrayada. Del mismo modo, la salida de un carácter, el espaciado y la salida del mismo carácter tenderían a hacer que el carácter apareciera más oscuro, aunque la eficacia de esto variaría dependiendo de la calidad de la cinta instalada (si la cinta fuera vieja y débil, teclear el mismo carácter dos veces la haría significativamente más oscura; con una nueva cinta que tecleara el carácter aunque fuera una sola vez lograría una negrura cercana al máximo). Además, incluso si un usuario no estaba conectado a una impresora, la redirección de la salida de man a una bobina de impresión habría sido bastante común, lo que probablemente explica por qué man se comportaría así incluso cuando la salida fuera redirigida.

Por cierto, en algunas impresoras (e incluso teleimpresoras), el rendimiento de _←U_←N_←D_←E_←R_←L_←I_←N_←I_←N_←G sería notablemente peor que ___________←←←←←←←←←←←UNDERLINING ya que el primero requiere que el cabezal de impresión invierta repetidamente la dirección (y típicamente sobrepase su objetivo en ambos extremos). Lo mismo sería cierto cuando se utiliza la negrita de golpe múltiple también, pero allí el comportamiento podría ser realmente 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 la cabeza de impresión se acelerara mientras se imprime el primer carácter, eso haría que se desalineara ligeramente con respecto al segundo, haciendo que el efecto de la negrita fuera más efectivo.

15voto

jamie Puntos 11

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

Por ejemplo, puedes obtener un pdf con un buen formato:

man -t ls | pstopdf -i -o ~/ls.pdf

6voto

Dustin Wheeler Puntos 389

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

man-preview () {
    man -t "$@" | open -f -a /Applications/Preview.app
}

Esto resulta en que la página del hombre deseado se abre en la vista previa con todo el bonito formato que uno pueda desear. Es bastante fácil añadir este único alias a tu ~/.profile (Creo que pman es más fácil que man-preview así que he establecido alias pman='man-preview en mi ~/.zshrc ).

P.D. He visto el pman función definida en varios archivos de puntos alrededor de Internet, Oh-my-ZSH sólo pasa a ser donde la mía está definida.

2voto

Sunwolf Puntos 21

O puedes usar ManOpen de Carl Lindberg para buscar e imprimir cualquier página de hombre. ManOpen fue desarrollado primero para NeXtStep y todavía funciona gracias a Carl.

AppleAyuda.com

AppleAyuda es una comunidad de usuarios de los productos de Apple en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros usuarios, hacer tus propias preguntas o resolver las de los demás.

Powered by:

X