Случаи Mark ключевого слова с другим цветом

Я могу думать о двух местах, которые я использовал : в прошлом.

while :
do
     shell commands
     some exit condition
done

Это - навсегда-цикл.

function doSomethingStub {
    :
}

Вставьте интерфейсную функцию, только для получения высокоуровневого потока корректного управления.

Одно использование я видел назад в Былые времена: Вместо a #!/bin/sh (или безотносительно), строка, Вы видели бы a : строка. Некоторые более старые Реальные ядра Unix или Реальные оболочки Unix использовали бы это, чтобы означать, что "я - сценарий оболочки, имею sh, выполняет меня". Как я вспоминаю, это было то, как раз в то самое время, когда csh предпринимал шаги как общую интерактивную оболочку.

13
01.11.2012, 19:26
3 ответа

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

 $ myprogram | \
   GREP_COLORS='mt=01;32' egrep --color=always '\[OK\]|' | \
   GREP_COLORS='mt=01;31' egrep --color=always '\[FAIL\]|'

Таким образом, Вы работаете grep по выводу дважды, с другим GREP_COLORS переменная среды каждый раз.

'01; 32' значения означают, что "полужирный зеленый" и другой означают "полужирный красный". См. статью Wikipedia о кодах ANSI для большего количества идей.

Увы, это требует GNU grep версия 2.5.3 или выше. Более старые версии GNU grep поддерживали другой механизм окраски, но те версии имеют ошибку, которая препятствует тому, чтобы Вы использовали функцию в конвейере несколько раз. BSD grep эмулирует более старый GNU grep окраска механизма, и это будет работать дважды в конвейере, но это вопит о "пустом подвыражении" из-за manatwork взлом.

Можно удалить обратные косые черты в конце первых двух строк для создания всего этого одной строкой. Я только что разделил его здесь для ясности и играть по правилам с форматом страниц SE.

10
27.01.2020, 19:53
  • 1
    Это является блестящим действительно! Но по некоторым причинам сценарий, кажется, не выделяет второй оператор на моей машине. Я выполняю CentOS 5. –  Theodor 01.11.2012, 19:46
  • 2
    Что происходит, вот то, что CentOS 5 поставляет GNU grep достаточно взрослый, который он не поддерживает GREP_COLORS, множественное число. Это использует более старое GREP_COLOR метод только и тот метод имеют ошибку в нем, которая препятствует тому, чтобы он делал правильную вещь. Если Вы изменяете команду для использования GREP_COLOR=32 и такой, это изменит цвет подсветки первого соответствия только. Если Вы передаете результат по каналу через hexdump -c Вы видите то добавление второго egrep команда действительно делает что-то, но это не легальный ANSI. Нижняя строка: необходимо обновить grep заставить это работать правильно. –  Warren Young 01.11.2012, 20:44
  • 3
    DEP сборки Ха-ха, это - такой проницательный комментарий. Да CentOS5 становится довольно старым, как со многими OS:s, работающими на старой машине, выкладывающей старый, бог оставленные сообщения журнала :) Я попытаюсь видеть, не ли обновление centos6 возможно. –  Theodor 01.11.2012, 21:06
  • 4
    я только что проверил свое решение на поле CentOS 6, и оно действительно работает там, подтверждая мой диагноз. (Более ранние тесты были на серверах Ubuntu.) EL6 поставлется с GNU grep 2.6.3. Интересно, они действительно также фиксировали GREP_COLOR (исключительная) ошибка, даже при том, что функция удерживалась от использования, как только заменено. –  Warren Young 01.11.2012, 23:27
  • 5
    , который я не могу понять, как это решает проблему, так как 1-й grep отфильтрует весь "СБОЙ", таким образом, не будет ничего, чтобы второй grep соответствовал.. –  laertis 20.01.2017, 15:53

Можно использовать мультихвост или ccze для этого, оба позволяют конфигурациям описывать regexps для соответствия и цвета.

1
27.01.2020, 19:53

На основе ответа Warren Young я записал этот сценарий Python, который делает то же самое более изящно и с намного меньшим количеством ввода. Таким образом, это - то, как Вы использовали бы тот сценарий:

cat yourfile | himul '\[OK\]' '\[FAIL\]'
1
27.01.2020, 19:53

Теги

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