Quando executo man ls > temp.txt
o arquivo de texto de saída está corrompido. Por corrompido, quero dizer que a primeira e a última letra 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 man ls
é perfeitamente normal. O que está acontecendo?
terminal
command-line
bash
seeker_of_bacon
fonte
fonte
less
oumore
exibe a formatação corretamente. Se você usarvim
, ele mostrará os backspaces brutos (^H
) com as letras extras.Respostas:
De
man man
:man
imprime a versão formatada da página de manual, sublinhados e letras duplas sãoanalisadoscomentário de MichaelT
fonte
Antigamente, os computadores eram rotineiramente conectados a teletipos (tele-impressoras), que imprimiam todo o texto no papel em tempo real, à medida que ele era recebido. Embora as tele-impressoras não possuam instalações para texto sublinhado ou em negrito, imprimir um sublinhado, retroceder e imprimir outra coisa faria com que outra coisa aparecesse sublinhada. Da mesma forma, a saída de um caractere, o backspacing e o mesmo caractere tendem a torná-lo mais escuro, embora a eficácia disso varie dependendo da qualidade da faixa de opções instalada (se a faixa de opções for antiga e fraca, digitando o mesmo caractere duas vezes tornaria significativamente mais escuro; com uma nova fita digitando o personagem, mesmo que atingisse a escuridão máxima). Além disso, mesmo que um usuário não esteja conectado a uma impressora,
man
para um spooler de impressão teria sido bastante comum, o que provavelmente explica porman
que se comportaria dessa maneira mesmo quando a saída fosse redirecionada.BTW, em algumas impressoras (e até mesmo em tele-impressoras), o desempenho de
_←U_←N_←D_←E_←R_←L_←I_←N_←I_←N_←G
seria significativamente pior do que___________←←←←←←←←←←←UNDERLINING
, já que o primeiro exige que o cabeçote de impressão inverta repetidamente a direção (e normalmente ultrapassa seu objetivo nas duas extremidades). O mesmo seria verdade ao usar o negrito de múltiplos golpes também, mas o comportamento poderia ser realmente vantajoso, pois a primeira vez que cada caractere é impresso seguiria imediatamente um caractere de backspace e o segundo não. Se a cabeça de impressão estivesse acelerando ao imprimir o primeiro caractere, isso faria com que estivesse desalinhado levemente em relação ao segundo, tornando o efeito de negrito mais eficaz.fonte
A resposta de Mateusz está correta, mas vale ressaltar que, em vez de retirar a formatação destinada a um tty, você pode ter o formato man de maneira diferente.
Por exemplo, você pode obter um pdf bem formatado com:
fonte
gzip -dc $(man -w ls) | groff -Thtml -mandoc -c > /tmp/man-ls.html
-t
formata comgroff -Tps ...
e de executar strings em / usr / bin / man, que parece estar codificado. E como-Tps
substitui GROFF_TYPESETTER, sua solução pode ser a mais viável. Embora você esteja perdendo uma etapa em seu pipeline. Você quer tbl então groff. Tenteman -d ls
ver o pipeline usado.Como alternativa, eu tenho a seguinte função shell definida (chamada do plug-in OS X de Oh-my-ZSH ):
Isso resulta na abertura da página de manual desejada na Visualização com toda a bonita formatação que se poderia desejar. É fácil o suficiente adicionar esse alias único ao seu
~/.profile
(eu acho quepman
é mais fácil do queman-preview
, então configureialias pman='man-preview
no meu~/.zshrc
).PS: Eu já vi a
pman
função definida em vários arquivos de ponto na Internet; o Oh-my-ZSH é o local onde o meu está definido.fonte
Ou você pode usar o ManOpen da Carl Lindberg para procurar e imprimir qualquer página de manual. O ManOpen foi desenvolvido pela primeira vez para o NeXtStep e ainda funciona graças a Carl.
fonte