2017-01-31 2 views
0

enter image description hereтерминал цветовые коды (ANSI коды цвета Escape) в Python

Я должен был написать приложение PyQt, которое может осуществлять связь с последовательными устройствами через UART. Я подключил его к маршрутизатору на основе OpenWRT, и когда я попытался запустить 'ls' на нем, на выходе (см. Прикрепленный скриншот) были некоторые странные буквы вокруг имени папок. Я понимаю, что это цветовые коды. Как удалить их с вывода или отобразить цвет соответственно. Любая помощь поможет.

ответ

2

Смотрите страницу человека для Ls (1), а также вывод команды

$ command -v ls 

В моей системе Linux, которая сообщает

$ command -v ls 
alias ls='ls --color=auto' 

Это факт жизни, что Интерактивная оболочка Unix не может надежно определять характеристики подключенного терминала и вызывает сожаление тот факт, что окраска GNU безразлична к терминалу. При подключении к устройству, которое не хочет цвета, лучший план - просто отключить его везде, где он появляется.

Чтобы проверить это, один быстрый фокус в том, чтобы набрать «LS» таким образом:

$ \ls 

Вводный обратный слэш побеждает механизм псевдонимов командного интерпретатора, и переходит к использованию голой /usr/bin/ls, или независимо от ваших PATH поставок.

+0

Эй, спасибо за ответ james, я понимаю ваш ответ, но моя проблема в том, что этот инструмент будет использоваться со многими устройствами, многие из которых я бы не имел до этого. Существуют такие инструменты, как «экран», который способен каким-то образом анализировать эту информацию и отображать цвет соответственно, мне нужно что-то, что может либо сделать это, либо удалить коды вместе. –

+0

Вам не нужен доступ к устройству. После подключения просто установите свою среду в соответствии с вашими потребностями. Используйте shell-fu: ** unalias ** и ** unset ** каждую команду, которую вы поддерживаете/используете. Я действительно думаю, что это ваш единственный вариант. Я сомневаюсь, что существует программа, которая будет фильтровать управляющие последовательности ANSI. Задача сложная и нечеткая: программе нужно будет фильтровать любую последовательность управления для любого устройства, определенного в termcap (или что-то еще). Все, что требовало сделать это, было бы способно ввести столько проблем, сколько оно решает. –

Смежные вопросы