caracteres estranhos no arquivo de log do bash + como evitá-los?

0

Não entendo por que recebemos os seguintes caracteres estranhos em log out

exemplo -

 ^[[1m  

ou

 ^[(B^ 

ou

 ^[[1m  

ou

 ^[(B^[[

ou

 ^[[1m

do log: (exemplo)

STATUS OF SERVICES

^[(B^[[mAMBARI_METRICS...... STARTED
HDFS................ STARTED
YARN................ STARTED
ZOOKEEPER........... STARTED
^[[1m
STATUS OF COMPONENTS

^[(B^[[mAPP_TIMELINE_SERVER. STARTED,
DATANODE............ STARTED,
    
por yael 22.01.2018 / 12:40

1 resposta

1

Como ilkkachu comentou, o programa cuja saída você redirecionou para um arquivo de log foi projetado para gravar o status formatado para uma exibição de console de texto, não para fazer login em um arquivo.

O ^[[1m é um exemplo de uma sequência de código de controle ANSI para definir atributos de exibição (cor de primeiro plano ou plano de fundo, negrito, sublinhado etc). O ^[ é uma representação típica de um caractere de controle ASCII, neste caso, Escape (Esc), que é usado no padrão ANSI relevante como um introdutor de seqüência de controle (CSI).

Portanto, esse comportamento é ativado em qualquer programa que você esteja usando. Você pode tentar enganar o programa sobre o tipo de dispositivo de saída ao qual está conectado e, assim, enganá-lo para não emitir esses códigos. Muitos programas usam uma biblioteca conhecida como curses , que usa o valor da variável de ambiente TERM

As camadas comuns permitem que você altere temporariamente o valor de uma variável de ambiente para um único comando, sem afetar os comandos subsequentes:

TERM=dumb programname options
    
por 22.01.2018 / 13:08