Есть ли команда linux, которая позволяет мне раскрасить результат другой команды?

1068
STW

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

Результат часов - число от 1 до 5000. Я хотел бы показать число зеленым, когда оно ниже 500, желтым, если оно между 501 и 4000, и красным для значения выше 4000.

Есть ли команда, которая может легко установить цвет в зависимости от значения моей команды?

5
Я не знаком с linux :) "смотреть" - значит показывать стандартный вывод в терминале? Maximus 11 лет назад 0
@Maximus Это утилита Linux, которая многократно выполняет команду и отображает вывод в терминале с заданным интервалом. `watch -n 1 ps aux` - например, монитор процессов бедного человека (выполнять` ps aux`, чтобы перечислять процессы каждую `1` секунду и печатать результаты). Darth Android 11 лет назад 1
Просто скажу вам: для всех этих неприятных команд diff есть colordiff. Например. SVN Diff | Colordiff -> Woho! Valentin 11 лет назад 0

4 ответа на вопрос

3
Der Hochstapler

CCZE может быть тем, что вы ищете:
справочная страница в руководствах по Ubuntu

Монтаж

В системах на основе Debian вы можете легко установить его через

sudo apt-get install ccze 

использование

Используйте это так:

tail -f /var/log/syslog | ccze 

Плагины

Если cczeвам не нравится поведение по умолчанию, вы можете расширить функциональность с помощью плагинов. К сожалению, я никогда не писал ничего, так как мне хорошо подходит поведение по умолчанию, поэтому я могу только направить вас на ccze-pluginстраницу руководства .

3
fmanco

Я написал этот небольшой сценарий, который я назвал цвет:

#!/bin/bash  result=$($@)  GREEN="1;32m" YELLOW="1;33m" RED="1;31m"  if [ "$result" -lt "500" ] then echo -e "\033[$GREEN $result \033[0m" ; elif [ "$result" -ge "500" -a "$result" -le "4000" ] then echo -e "\033[$YELLOW $result \033[0m" ; else echo -e "\033[$RED $result \033[0m" ; fi 

Теперь вы можете запустить:

watch --color ./color <your command here> 

Убедитесь, что ваша команда просто выводит число. Иначе вы должны правильно обработать вывод и присвоить его resultпеременной.

1
wizlog

Однако я думаю, что вы можете раскрасить справочные страницы (после нескольких поисков в Google я не думаю, что то, что вы ищете, существует.

1
ott--

Вы можете использовать, tputчтобы добавить цвета в свою жизнь. Примеры

tput setf 3 # textcolor green tput setf 6 # red tput sgr0 # back to normal echo "$(tput setf 6)$line$(tput setf sgr0)" 

Это и многое другое с tput на http://www.ibm.com/developerworks/aix/library/au-learningtput/

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