Prevenir secuencias de escape ANSI en salida de terminal

1

Cuando hago un "ls -l" en mi caja de linux sobre PuTTY, da una salida limpia y de colores agradables.

Pero cuando trato de hacer lo mismo por plink programáticamente, llego a tener todo tipo de secuencias de control, lo que probablemente signifique esos valores de color.

¿Puedo configurar de alguna manera las opciones de terminal para que no envíe estas secuencias adicionales para los colores y solo emita texto sin formato?

[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
Pradyumna
fuente

Respuestas:

1

Esto probablemente esté relacionado con la forma en que configura su ls para mostrar los colores. Si puedes publicar eso podríamos ser más útiles.

Recomiendo usar lo siguiente en su archivo de perfil de shell favorito (.bashrc): alias ls="ls --color=auto"

Alternativamente, cuando no quieres una salida de color, puedes llamar a ls usando --color=never

Rob
fuente
4

Otra alternativa es usar el ansicon utilidad que se encuentra entre la consola y el plink y traduce los códigos de color ANSI sobre la marcha:

$ ansicon.exe plink.exe user@host
Björn Lindqvist
fuente
1

Para agregar a la respuesta de Rob:

Las secuencias de escape ANSI deben ser interpretadas por un programa emulador de terminal (o por un terminal de hardware real) . PuTTY es tanto un emulador de terminal como un cliente SSH en un solo programa.

Pero plink es solo un cliente SSH diseñado para transferir datos binarios en bruto; eso no interpretar secuencias ANSI, simplemente las pasa al terminal en el que se está ejecutando. En Windows, el terminal es el Consola de Windows - Y tampoco es compatible con ANSI.

Si desea usar SSH desde la línea de comandos, pruebe la versión Cygwin de OpenSSH. PuTTY también se puede iniciar desde la línea de comandos.

grawity
fuente
1

Podría eliminar las secuencias de escape ANSI con la siguiente expresión regular de Java (por ejemplo):

\\[..;..[m]|\\[.{0,2}[m]|\\(Page \\d+\\)|\u001B\\[[K]|\u001B|\u000F
MisterZ
fuente