Ctrl não desejado + h no arquivo salvo da saída do homem

4

Depois de man less (e, opcionalmente, de h para "Resumo de menos comandos"), uma vez que man usa less para exibir o texto, pressione s para salvar o texto em um arquivo.

Quando eu abro o arquivo no emacs ou vi, há ctrl + h indesejado, e alguns caracteres são indesejados repetidamente. Por que é que? Como deve salvar "Resumo de menos comandos" corretamente?

Por que redirecionar a saída de man less para um arquivo não tem o problema?

Obrigado.

    
por Tim 24.04.2015 / 21:46

1 resposta

6

Isso remete às tele-máquinas de escrever (ttys!) nos anos 70.

Enviar X<backspace>X ( ^H sendo o caractere ASCII BS) para uma máquina de escrever tele, faz com que ele escreva X, volte um caractere e escreva X novamente sobre si mesmo. Sendo escrito duas vezes, aparece como negrito .

Da mesma forma, para sublinhar, você escreveria _<backspace>X , que escreveria X sobre um underscore .

roff , o sistema de composição usado por man foi uma das primeiras coisas escritas para o Unix nos anos 70, e foi assim que os autores do Unix conseguiram seu financiamento.

Usar man em uma máquina de escrever por telefone envia essas sequências para escrever em negrito e sublinhado.

Tele-máquinas de escrever logo foram substituídas por terminais Cathod-Ray-Tube. Lá, o caractere BS apenas move o cursor para trás e os caracteres sobrescrevem o caractere abaixo.

Portanto, o envio de X<backspace>X ou _<backspace>X exibe apenas X . Os CRTs também têm um espaço de tela limitado (em oposição ao papel em tele-máquinas de escrever), então pagers como more nasceram.

Os pagers foram aprimorados para entender essas sequências X<BS>X e usar sequências de escape correspondentes para informar ao terminal para exibir negrito ou sublinhado.

Hoje, os pagers, incluindo more , less , most , w3m , ainda entendem essas sequências.

E man ainda os usa para exibir negrito ou sublinhado quando a saída vai para um pager.

Quando man (pelo menos algumas implementações) detecta que a saída não vai para um terminal, ele não invoca um pager e não usa essas sequências, e é por isso que você não as vê quando redirecionar para um arquivo.

Se você quiser remover essas seqüências, use o comando col -b .

    
por 24.04.2015 / 23:05

Tags