![Раскрашивание всего вывода с терминала](https://rvso.com/image/1087127/%D0%A0%D0%B0%D1%81%D0%BA%D1%80%D0%B0%D1%88%D0%B8%D0%B2%D0%B0%D0%BD%D0%B8%D0%B5%20%D0%B2%D1%81%D0%B5%D0%B3%D0%BE%20%D0%B2%D1%8B%D0%B2%D0%BE%D0%B4%D0%B0%20%D1%81%20%D1%82%D0%B5%D1%80%D0%BC%D0%B8%D0%BD%D0%B0%D0%BB%D0%B0.png)
Есть ли способ сделать все выходные данные моего терминала окрашенными по-своему? Например: Если я введу команду: sudo apt-get update
- Я получу столбец текста и мне нужно будет выделить КРАСНЫМ цветом все слова типа «ОШИБКА» в этом тексте, и ЗЕЛЁНЫМ цветом все слова типа «ГОТОВО» или «ЗАВЕРШЕНО».
Это всего лишь пример, и я понимаю, что это может испортить цветной вывод других программ, просто интересно, возможно ли это.
В данный момент я использую ZSH, но принимаю ответы для любого эмулятора терминала.
решение1
Вы можете использовать его sed
для замены строк "ERROR", "DONE" и "FINISHED", разделенных на слова, на ту же строку, заключенную вПоследовательности перехода цвета ANSI(для удобства можно использовать псевдоним команды ~/.bashrc
; как видите, это работает в Zsh, но поскольку именно терминал интерпретирует управляющие последовательности, это будет работать в любой оболочке, запущенной в терминале, совместимом с ANSI / VT100):
sudo apt-get update |& sed 's/\bERROR\b/\x1B[1;31m&\x1B[0m/; s/\bDONE\b/\x1B[1;32m&\x1B[0m/; s/\bFINISHED\b/\x1B[1;34m&\x1B[0m/'
sudo apt-get update |&
sed '
s/\bERROR\b/\x1B[1;31m&\x1B[0m/
s/\bDONE\b/\x1B[1;32m&\x1B[0m/
s/\bFINISHED\b/\x1B[1;34m&\x1B[0m/
'