Как сделать цветной вывод в консоль? [[SOLVED]]

Изображение пользователя null56.

На другом дистре у меня одним цветом выделяются пользователь и домен, папки и файлы и многое другое.... как в виртуальных терминалах, так и на эмуляторах в Х

Как можно это сделать и в кубунту?

0
picaro - 15 Декабрь, 2008 - 14:48
Изображение пользователя picaro.

Порулить ~/.bashrc
У меня получалось для конкретного юзера сделать всё цветастенькое.
Я из генты /etc/bash/bashrc брал.
Там такой текст, посвящённый цвету:

use_color=false

# Set colorful PS1 only on colorful terminals.
# dircolors --print-database uses its own built-in database
# instead of using /etc/DIR_COLORS. Try to use the external file
# first to take advantage of user additions. Use internal bash
# globbing instead of external grep binary.
safe_term=${TERM//[^[:alnum:]]/?} # sanitize TERM
match_lhs=""
[[ -f ~/.dir_colors ]] && match_lhs="${match_lhs}$(<~/.dir_colors)"
[[ -f /etc/DIR_COLORS ]] && match_lhs="${match_lhs}$(DIR_COLORS)"
[[ -z ${match_lhs} ]] \
&& type -P dircolors >/dev/null \
&& match_lhs=$(dircolors --print-database)
[[ $'\n'${match_lhs} == *$'\n'"TERM "${safe_term}* ]] && use_color=true

if ${use_color} ; then
# Enable colors for ls, etc. Prefer ~/.dir_colors #64489
if type -P dircolors >/dev/null ; then
if [[ -f ~/.dir_colors ]] ; then
eval $(dircolors -b ~/.dir_colors)
elif [[ -f /etc/DIR_COLORS ]] ; then
eval $(dircolors -b /etc/DIR_COLORS)
fi
fi

if [[ ${EUID} == 0 ]] ; then
PS1='\[\033[01;31m\]\h\[\033[01;34m\] \W \$\[\033[00m\] '
else
PS1='\[\033[01;32m\]\u@\h\[\033[01;34m\] \w \$\[\033[00m\] '
fi

alias ls='ls --color=auto'
alias grep='grep --colour=auto'
else
if [[ ${EUID} == 0 ]] ; then
# show root@ when we don't have colors
PS1='\u@\h \W \$ '
else
PS1='\u@\h \w \$ '
fi
fi

# Try to keep environment pollution down, EPA loves us.
unset use_color safe_term match_lhs

0
null56 - 15 Декабрь, 2008 - 21:17
Изображение пользователя null56.

Да... я скрипты поправил в /etc глобальные... Там немного странные они были, сделал и для всех юзеров и для рута цвета

Тогда другой вопрос по этой же теме. вот у меня основная система гента, у неё изначальная загрузка системы цветная, там где инициализация системы идет, там можно как - нибудь сделать? Ок - одним цветом, fail, warning другим.... при самой загрузке...?

0
picaro - 16 Декабрь, 2008 - 13:15
Изображение пользователя picaro.

Так поведай как сделал для всех. Я писал и в /etc/bash.bashrc и в /etc/profile и всё безтолку.
По поводу ОК другим цветом: форум Ubuntu

0
null56 - 16 Декабрь, 2008 - 18:26
Изображение пользователя null56.

Значит смотри, я приведу свои файлы, и укажу ключевые моменты, я просто люблю скрипты перелопатить....

1) Мои локальные файлы ~/.bashrc у рута и остальных пользователей, я практически очистил

2) Мой /etc/profile

if [ "`id -u`" -eq 0 ]; then
PATH="/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin"
else
PATH="/usr/local/bin:/usr/bin:/bin:/usr/games"
fi

if [ "$PS1" ]; then
if [ "$BASH" ]; then
PS1='\u@\h:\w\$ '
else
if [ "`id -u`" -eq 0 ]; then
PS1='# '
else
PS1='$ '
fi
fi
fi

export PATH

. /etc/bash.bashrc # КЛЮЧЕВОЙ МОМЕНТ "ТОЧКА ПРОБЕЛ ГЛОБАЛЬНЫЙ ФАЙЛ БАША"

umask 022

3) Мой глобальный файл баша /etc/bash.bashrc
Выделю лишь кусочек, который я дописывал

case "$TERM" in
xterm*|rxvt*)
PROMPT_COMMAND='echo -ne "\033]0;${USER}@${HOSTNAME}: ${PWD}\007"'
;;
*)
;;
esac

if [[ ${EUID} == 0 ]] ; then
PS1='\[\033[01;31m\]\h\[\033[01;34m\] \W \$\[\033[00m\] '
else
PS1='\[\033[01;32m\]\u@\h\[\033[01;34m\] \w \$\[\033[00m\] '
fi


# enable bash completion in interactive shells
#if [ -f /etc/bash_completion ]; then
# . /etc/bash_completion
#fi


if [ -x /usr/bin/dircolors ]; then
eval "`dircolors -b`"
alias ls='ls --color=auto'
alias dir='dir --color=auto'
alias vdir='vdir --color=auto'

alias grep='grep --color=auto'
alias fgrep='fgrep --color=auto'
alias egrep='egrep --color=auto'
fi

Попробуй, если чего не получится, я твои скрипты посмотрю... удачи

0
null56 - 17 Декабрь, 2008 - 09:53
Изображение пользователя null56.

Да и еще хотел добавить... Когда вы создаете нового пользователя и назначаете ему оболочку SHELL, то создается файл .bashrc, который по умолчанию, по крайней мере у меня, выключает показ цветов и является более приоритетным по отношению к глобальному.
Приведу строки кода, которые препятствуют показу цветов нового пользователя их две:

1)
#здесь переменная TERM проверяется на имя xterm-color и в случае успеха активизируется переменная color_prompt. У меня терминал xterm и условие уже не выполняется

case "$TERM" in
xterm-color) color_prompt=yes;;
esac

2)
# переменная отвечает за принудительный показ цветов, раскомментировав ее, получите цвета, но как я говорил, я свои локальные файлы от этих скриптов почистил и дополнил своими

#force_color_prompt=yes

3) Остается открытый вопрос, как заставить баш не создавать локальные файлы, ну или задать ему опции, с которыми он их создавал бы?

0
picaro - 17 Декабрь, 2008 - 20:26
Изображение пользователя picaro.

Спасибо, о приоритетах я как-то не подумал.
А чтобы для юзеров создавались правильные конфиги, скорее всего, надо подправить файлики в папке /etc/skel/. Например, /etc/skel/.bashrc. Ведь именно они даются новому юзеру при создании.

0
null56 - 18 Декабрь, 2008 - 13:42
Изображение пользователя null56.

Да, так и есть... я про /etc/skel/.bashrc

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

CAPTCHA на основе изображений
Введите цифры