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 X̲
.
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
.