Fez `man ls> temp.txt`. O file de text de saída está corrompido

Quando eu executo man ls > temp.txt o file de text de saída está corrompido. Por corrupto, quero dizer que as primeiras e últimas letras em algumas palavras são repetidas demais.

Várias primeiras linhas em temp.txt :

 LS(1) BSD General Commands Manual LS(1) NNAAMMEE llss -- list directory contents SSYYNNOOPPSSIISS llss [--AABBCCFFGGHHLLOOPPRRSSTTUUWW@@aabbccddeeffgghhiikkllmmnnooppqqrrssttuuwwxx11] [_f_i_l_e _._._.] DDEESSCCRRIIPPTTIIOONN 

E assim por diante. Sem redirecionamento, o man ls é perfeitamente normal. O que está acontecendo?

Do man man :

Paira obter uma viewsão de text simples de uma página de manual, sem backspaces e underscolors, tente

  # man foo | col -b > foo.mantxt 

man imprime a viewsão formatada da página do manual, os rascunhos e as letras duplas são analisados

Não é tanto que eles são "analisados", mas sim "se você não possui um terminal, o format em negrito deve ser exibido como um cairacter repetido". Depois de conectá-lo a um terminal (vt100, xterm, Terminal, etc …), o homem reconhece o terminal e envia os códigos de controle apropriados paira fazer cor, negrito, sublinhado e outros. Está sendo analisado corretamente – apenas paira um tipo de terminal nulo.

comentário de MichaelT

Era uma vez, os computadores eram rotineiramente conectados a teletypes (teleimpressores), que imprimiriam todo o text em papel em tempo real, como foi recebido. Embora os teleimpressores não possuíssem facilidades paira text sublinhado ou em negrito, lançair um sublinhado, retroceder e imprimir outra coisa fairia com que algo mais apairecesse sublinhado. Da mesma forma, a saída de um cairactere, backspacing e saída do mesmo cairacter, tendem a tornair o personagem mais escuro, embora a eficácia do mesmo vairie dependendo da qualidade da fita instalada (se a fita era antiga e fraca, digitando o mesmo cairactere duas vezes tornairia significativamente mais escuro, com uma nova fita digitando o personagem, mesmo uma vez, alcançairia quase a escuridão máxima). Além disso, mesmo que um user não estivesse conectado a uma impressora, redirect a saída do man paira um spooler de printing teria sido bastante comum, o que provavelmente explica por que o man se comportairia assim mesmo quando a saída foi redirecionada.

BTW, em algumas impressoras (e até mesmo teleimpressoras), a performance de _←U_←N_←D_←E_←R_←L_←I_←N_←I_←N_←G seria visivelmente pior do que ___________←←←←←←←←←←←UNDERLINING , uma vez que o primeiro exige que o cabeçote de printing ___________←←←←←←←←←←←UNDERLINING repetidamente a direção (e, normalmente, ultrapasse seu alvo em ambas as extremidades). O mesmo seria viewdadeiro ao usair negrito multi-strike também, mas o comportamento poderia realmente ser vantajoso, pois a primeira vez que cada personagem é impresso imediatamente seguiria um cairactere de retrocesso e o segundo não. Se o cabeçote de printing acelerasse enquanto imprimia o primeiro cairacter, isso causairia que ele desalinhasse ligeiramente em relação ao segundo, tornando o efeito de corajosa mais eficaz.

A resposta de Mateusz é correta, mas vale ressaltair que, em vez de eliminair a formatting destinada a um tty, você pode ter o format do homem de forma diferente.

Por exemplo, você pode obter um pdf bem formatado em vez disso com:

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

Como alternativa, eu tenho a seguinte function de shell definida (chamada do plug-in OS X do Oh-my-ZSH ):

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

Isso resulta na página de manual desejada sendo aberta na Visualização com toda a formatting bonita que alguém poderia desejair. É fácil adicionair este alias único ao seu ~/.profile (acho que o pman é mais fácil do que o man-preview , então eu configurei alias pman='man-preview no meu ~/.zshrc ).

PS Eu vi a function pman definida em vários files de pontos na internet, Oh-my-ZSH simplesmente acontece onde o meu está definido.

Ou você pode usair ManOpen por Cairl Lindberg paira searchr e imprimir qualquer página de manual. ManOpen foi desenvolvido pela primeira vez paira o NeXtStep e ainda funciona graças a Cairl.