Evitar sequências de escape ANSI na saída do terminal

1

Quando eu faço um "ls -l" na minha caixa de Linux sobre o PuTTY, ele fornece uma saída limpa e bem colorida.

Mas quando eu tento o mesmo programaticamente sobre o plink, eu obtenho todo tipo de sequências de controle, provavelmente significando esses valores de cor.

Posso de alguma forma definir as opções do terminal para que ele não envie essas sequências extras para as cores e apenas emite texto sem formatação?

[00mtotal 8956
drwxr-xr-x 8 pradymn users    4096 2010-07-23 12:29 [01;34mtestsb1[00m
drwxr-xr-x 5 pradymn users    4096 2010-07-24 22:49 [01;34mtest1[00m
-rw-r--r-- 1 pradymn users 9143013 2010-07-24 23:03 [00;31mtest1.tar.gz[00m
    
por Pradyumna 01.08.2010 / 15:16

4 respostas

1

Isso provavelmente está relacionado a como você configura seu ls para exibir cores. Se você puder postar, poderemos ser mais úteis.

Eu recomendo usar o seguinte no seu arquivo de perfil de shell favorito (.bashrc): alias ls="ls --color=auto"

Alternativamente, quando você não quiser a saída de cores, poderá chamar ls usando --color=never

    
por 01.08.2010 / 15:24
4

Outra alternativa é usar o utilitário ansicon que fica entre o console e o plink e traduz códigos de cores ANSI em tempo real:

$ ansicon.exe plink.exe user@host
    
por 05.01.2012 / 17:57
1

Para adicionar à resposta de Rob:

As seqüências de escape ANSI devem ser interpretadas por um programa emulador de terminal (ou por um terminal de hardware real) . O PuTTY é um emulador de terminal e um cliente SSH em um programa.

Mas plink é apenas um cliente SSH projetado para transferir dados binários brutos; ele não interpreta sequências ANSI, apenas as passa para o terminal em que está sendo executado. No Windows, o terminal é o Console do Windows - e também não suporta ANSI.

Se você quiser usar o SSH na linha de comando, tente a versão Cygwin do OpenSSH. O PuTTY também pode ser iniciado a partir da linha de comando.

    
por 02.08.2010 / 12:03
1

Você pode remover seqüências de escape ANSI com o seguinte regex java (por exemplo):

\[..;..[m]|\[.{0,2}[m]|\(Page \d+\)|\u001B\[[K]|\u001B|\u000F
    
por 24.07.2012 / 14:40