LINUX.ORG.RU

Как перекрасить вывод программы stdout/stderr в разные цвета?

 


1

2

Как правильно?
Вот мой неправильный вариант:

#!/bin/bash

GREEN='\033[1;32m'
RED='\033[1;31m'
COL='\033[0m'

command > >(echo -e "$GREEN""$(< /dev/stdin)""$COL") \
 2> >(echo -e "$RED""$(< /dev/stdin)""$COL" >&2)

★★★★★

Последнее исправление: teod0r (всего исправлений: 1)

может, для этого есть какая-то единая настройка?

teod0r ★★★★★
() автор топика

кажется, вот рабочий вариант, не знаю на сколько правильный

#!/bin/bash

GREEN='\033[1;32m'
RED='\033[1;31m'
COL='\033[0m'

command > >(printf "$GREEN%s$COL\n" "$(< /dev/stdin)") \
 2> >(printf "$RED%s$COL\n" "$(< /dev/stdin)" >&2)
teod0r ★★★★★
() автор топика
echo "$(tput bold) Try to use $(tput setaf 1) man tput $(tput setaf 0) and $(tput setaf 3) man terminfo $(tput setab 2) Color Handling"
anonymous
()

Можно включить для всего скрипта вот так:

#!/bin/bash
exec 2> >(sed $'s/^.*$/\033[1;31m\\0\033[0m/') # порядок важен
exec > >(sed $'s/^.*$/\033[1;32m\\0\033[0m/')

echo abc
ls /not-exist
legolegs ★★★★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.