среда, 8 сентября 2010 г.

Цветное приглашение в bash

Однажды захотелось мне как-то выделить работу в терминале под суперпользователем. Придумал использовать цветовую дифференциацию приглашения. Например вот так: Теперь о том, как это сделать.
В терминале:
$ cp .bashrc .bashrc_backup
$ sudo cp /root/.bashrc /root/.bashrc_backup

Добавьте код, представленный ниже в файлы ~/.bashrc и /root/.bashrc.
GREEN="\[\033[32m\]" # foreground green
RS="\[\033[0m\]"    # reset
RED="\[\033[31m\]" # foreground red
if [ "$(id -u)" != "0" ]; then
    PS1="${GREEN}\\$ ${RS}"
    PS2="${GREEN}> ${RS}"
else
    PS1="${RED}\\$ ${RS}"
    PS2="${RED}> ${RS}"
fi

Все, готово!
Дополнительно: Скрипт для просмотра кодов цветов:
#!/bin/bash
#
#   This file echoes a bunch of color codes to the 
#   terminal to demonstrate what's available.  Each 
#   line is the color code of one forground color,
#   out of 17 (default + 16 escapes), followed by a 
#   test use of that color on all nine background 
#   colors (default + 8 escapes).
#

T='gYw'   # The test text

echo -e "\n                 40m     41m     42m     43m\
     44m     45m     46m     47m";

for FGs in '    m' '   1m' '  30m' '1;30m' '  31m' '1;31m' '  32m' \
           '1;32m' '  33m' '1;33m' '  34m' '1;34m' '  35m' '1;35m' \
           '  36m' '1;36m' '  37m' '1;37m';
  do FG=${FGs// /}
  echo -en " $FGs \033[$FG  $T  "
  for BG in 40m 41m 42m 43m 44m 45m 46m 47m;
    do echo -en "$EINS \033[$FG\033[$BG  $T  \033[0m";
  done
  echo;
done
echo

Дополнительные ссылки:
http://ubuntuforums.org/showthread.php?t=614743
http://www.faqs.org/docs/Linux-HOWTO/Bash-Prompt-HOWTO.html