Пользовательские цвета Терминатора переопределяются KDE

Измените эту строку:

if [[ "$TEST" == "ON Master" ]];

К этому:

if [ "$TEST" == "ON Master" ];

Подробнее

Проблемой является использование [[ .. ]]. Вывод показывает Вам различие. Ваше значение, для которого Вы добираетесь $STATUS не просто "На Ведущем устройстве". Это, скорее всего, содержит другие символы, которые наиболее вероятны не печатаемые, так не замечаются.

[[ .. ]]

++ echo On Master
+ TEST='On Master'
+ [[ On Master == \O\N\ \M\a\s\t\e\r ]]

[ .. ]

++ echo On Master
+ TEST='On Master'
+ '[' 'On Master' == 'ON Master' ']'

Использование двойных квадратных скобок ([[ .. ]]) обсужден здесь на страницах TLDP Advanced Bash Scripting.

$STATUS эха

Эта строка кажется немного подозрительной мне также. Я защитил бы содержание $STATUS путем обертывания его в двойные кавычки также.

TEST=`echo "$STATUS"`

Также я отбросил бы задние галочки ('...') и использовал бы $( ... ) нотация вместо этого для выполнения этой команды. Это изменение является просто лучшей практикой и не является частью Вашей проблемы все же.

TEST=$(echo "$STATUS")

Управляющие символы в выводе (^ [[92mON^ [[0m Ведущее устройство)

Учитывая Вы видите эти управляющие символы в своем выводе (^[[92m & ^[[0m) Я подозрителен что grep команда вводит их в Ваш вывод в канале. Это может быть это grep псевдонимы, чтобы всегда включать --color переключатель, я временно попытался бы назвать исполняемый файл непосредственно, и передачей любые псевдонимы, которые могут быть там. Просто изменитесь grep к этому, /bin/grep.

Присутствие их - то, что мы подозревали и - почему текст переносился когда Вы echo переменная $STATUS. Эти символы являются непечатными, и изменяют цвет терминала для выделения соответствий это grep нашел.

Присутствие их также объясняет почему =~ оператор не соответствовал также. Вы пытались соответствовать 'On Master' с '^[[92mON^[[0m Master'.

Наконец цветной вывод с управляющими символами может прибывать из другого инструмента перед grep. Я должен был бы видеть эффективную выходную мощность от /root/setup_ha для подтверждения этого но я с подозрением относился бы к тому инструменту также в создании этих символов в потоке канала.

Разделение управляющих символов

Я нашел это Вопросами и ответами U&L названный: Программа, которая передает STDIN STDOUT с разделенными цветовыми кодами?.

Используйте любой из этих методов для избавлений от управляющих символов.

Perl

$ cmd-with-colored-output | perl -pe 's/\e\[?.*?[\@-~]//g'

Sed

$ cmd-with-colored-output | sed -r "s/\x1B\[([0-9]{1,2}(;[0-9]{1,2})?)?[m|K]//g"

3
14.11.2014, 12:19
1 ответ

, Если единственной проблемой являются цвета в выводе ls, легко зафиксировать. Просто установить свое собственное переменная LS_COLORS, и это переопределит что-либо еще. Так, для запуска работайте

dircolors -p > ~/.mycolors

, Который распечатает значения по умолчанию в новый файл, названный .mycolors в вашем $HOME каталог. Обратить внимание, что это выберет цвета по умолчанию от вашей текущей среды. Вы, возможно, должны были бы отредактировать этот файл и изменить цвета. Например, чтобы заставить каталоги казаться голубыми, найдите строку, запускающуюся с DIR в .mycolors, и установите его в:

 DIR 01;34

Несколько доступных цветов ( от TLDP):

Black       0;30     Dark Gray     1;30
Blue        0;34     Light Blue    1;34
Green       0;32     Light Green   1;32
Cyan        0;36     Light Cyan    1;36
Red         0;31     Light Red     1;31
Purple      0;35     Light Purple  1;35
Brown       0;33     Yellow        1;33
Light Gray  0;37     White         1;37

Затем скажите вашей оболочке загружать тот файл. Принятие вы используете удар, добавляет эта строка к вашему ~/.bashrc:

dircolors -b ~/.mycolors > /dev/null

Теперь, все новые окна терминала (оболочки), которые вы открываете, будут иметь правильные цвета.

2
27.01.2020, 21:27

Теги

Похожие вопросы