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

4 ответа4

4

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

$ ansicon.exe plink.exe user@host
1

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

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

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

1

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

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

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

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

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

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

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .