Предотвратить escape-последовательности ANSI в выводе терминала

1

Когда я делаю «ls -l» на моем linux-боксе поверх PuTTY, он дает чистый, красиво окрашенный вывод.

Но когда я пытаюсь сделать то же самое программным способом, я получаю все виды управляющих последовательностей, которые, вероятно, обозначают эти значения цвета.

Можно ли как-то установить параметры терминала, чтобы он не отправлял эти дополнительные последовательности для цветов, а просто излучал простой текст?

[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
источник

Ответы:

1

Это, вероятно, связано с тем, как вы настраиваете свой ls для отображения цветов. Если вы можете опубликовать это, мы могли бы быть более полезными.

Я рекомендую использовать следующее в вашем любимом файле профиля оболочки (.bashrc): alias ls="ls --color=auto"

Кроме того, если вы не хотите выводить цвет, вы можете вызвать ls, используя --color=never

Rob
источник
4

Другой альтернативой является использование ansicon Утилита, которая сидит между консолью и plink и переводит цветовые коды ANSI на лету:

$ ansicon.exe plink.exe user@host
Björn Lindqvist
источник
1

Чтобы добавить к ответу Роба:

Экранирующие последовательности ANSI должны интерпретироваться программой эмулятора терминала (или реальным аппаратным терминалом) , PuTTY является одновременно эмулятором терминала и SSH-клиентом в одной программе.

Но plink просто клиент SSH, предназначенный для передачи необработанных двоичных данных; Это не интерпретировать последовательности ANSI, просто передает их в терминал, в котором он работает. В Windows терминал является Консоль Windows - и он также не поддерживает ANSI.

Если вы хотите использовать SSH из командной строки, попробуйте Cygwin-версию OpenSSH. PuTTY также может быть запущен из командной строки.

grawity
источник
1

Вы можете удалить escape-последовательности ANSI с помощью следующего регулярного выражения Java (например):

\\[..;..[m]|\\[.{0,2}[m]|\\(Page \\d+\\)|\u001B\\[[K]|\u001B|\u000F
MisterZ
источник