Категории

воскресенье, 11 декабря 2011 г.

Функция вывода цветных сообщений в sh/bash скрипте.

Бывает необходимость в sh скрипте вывести на экран сообщения выделенные цветом, я использую такую функцию:
#!/bin/sh

# Функция вывода цветных сообщений
COLOR_STR() {
 case $2 in
  red) printf %b "\033[1;31m$1\033[0m\n" ;;
  green) printf %b "\033[1;32m$1\033[0m\n" ;;
 esac
}

# Пример вызова функции
COLOR_STR "Красный Текст" red
COLOR_STR "Зеленый Текст" green
COLOR_STR "Зеленый Текст c несколькими     пробелами" green
Конечно же функцию можно дополнить набором своих цветов. Вот небольшой sh скрипт, который выводит всевозможные цвета:
#!/bin/sh

echo
echo 'Table for 16-color terminal escape sequences.'
echo 'Replace ESC with \\033 in sh.'
echo
echo 'Background | Foreground colors'
echo '------------------------------------------------------------------'
bg=40 && while [ $bg -le 47 ]; do
 bold=0 && while [ $bold -le 1 ]; do
  printf %b "\033[0m ESC[${bg}m   | "
  fg=30 && while [ $fg -le 37 ]; do
   if [ $bold = "0" ]; then
    printf %b "\033[${bg}m\033[${fg}m [${fg}m  "
   else
    printf %b "\033[${bg}m\033[1;${fg}m [1;${fg}m"
   fi
   fg=$(($fg+1))
  done
  printf %b "\033[0m\n"
  bold=$(($bold+1))
 done
 echo '------------------------------------------------------------------'
 bg=$(($bg+1))
done


Ссылки по теме: 1. The 256 color mode of xterm
Данный метод работает на Linux в оболочке bash, а также во FreeBSD в оболочке csh.

Комментариев нет:

Отправить комментарий