LinuxForum.Fans
Тема

Как сделать дефолтным измененный цвет текста в bash

Автор: kerogaz 19 сообщений 1955 просмотров
#370692

Я меняю цет таким образом

text
$ echo -e "This is red->\e[00;31mRED\e[00m"

Но после перезагрузки или скажем после команды очистки экрана reset цвет возвращается в первоначальное состояние

#370700

Понял, спасибо

text
$ nano ~/.bashrc
Comment out the default prompt:
# PS1='[\u@\h \W]\$ '
Add the following green prompt for regular users:
[chiri@zetsubou ~]$ _
PS1='\[\e[1;32m\][\u@\h \W]\$\[\e[0m\] '
#370705

Я так и сделал

text
#  [ "$PS1" = "\\s-\\v\\\$ " ] && PS1="[\u@\h \W]\\$ "
  [ "$PS1" = "\\s-\\v\\\$ " ] && PS1="\[\e[1;32m\][\u@\h \W]$\[\e[0m\] "

однако у меня поменялся только цвет приглашения :) а набор текста так белым цветом и остался

#370707

kerogaz, а разве эмулятор терминала не дает право выбрать цвет текста в терминале? Посмотрите в настройках.

#370708
kirillov3798 написал:
kerogaz, а разве эмулятор терминала не дает право выбрать цвет текста в терминале? Посмотрите в настройках.

У меня нет графики , голая командная строка. А в графике конечно всё просто

#370709

kerogaz, тогда это уже совсем другой вопрос.

#370711

я удаленно поменял цвет, в putty тоже изменился.
при чем тут графика?

играйтесь с .bashrc

#370714
moshell написал:
я удаленно поменял цвет, в putty тоже изменился.
при чем тут графика?

играйтесь с .bashrc

В Минте в bashrс есть настройки цвета (хотя они могли появиться после того как я настроил здесь цвет используя

Показать
# set a fancy prompt (non-color, overwrite the one in /etc/profile)
#PS1='${debian_chroot:+($debian_chroot)}\u@\h:\w\$ '

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
[[ -f ~/.dir_colors ]] && match_lhs="${match_lhs}$(<~/.dir_colors)"
[[ -f /etc/DIR_COLORS ]] && match_lhs="${match_lhs}$(</etc/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 color support of ls and also add handy aliases
if [ -x /usr/bin/dircolors ]; then
# test -r ~/.dircolors && eval "$(dircolors -b ~/.dircolors)" || eval "$(dircolors -b)"
eval `dircolors`
LS_COLORS="$LS_COLORS*.JPG=01;35:*.GIF=01;35:*.jpg=01;35:*.gif=01;35:*.jpeg=01;35:*.pcx=01;35:*.png=01;35:*.pnm=01;35:*.bz2=0$
fi
# 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[0;31m\]$(returncode)\[\033[0;37m\]\[\033[0;35m\]${debian_chroot:+($debian_chroot)}\[\033[01;31m\]\h\[\033$
else
PS1='\[\033[0;31m\]$(returncode)\[\033[0;37m\]\[\033[0;35m\]${debian_chroot:+($debian_chroot)}\[\033[0;35m\]\u@\h\[\0$
fi

alias ls='ls --color=auto'
alias grep='grep --colour=auto'
alias fgrep='fgrep --colour=auto'
alias egrep='egrep --colour=auto'
alias ll='ls -lF'
alias la='ls -A'
alias l='ls -CF'
else
if [[ ${EUID} == 0 ]] ; then
# show root@ when we don't have colors
PS1='\[$(returncode)\]\u@\h \W \$ '
else
PS1='\[$(returncode)\]\u@\h \w \$ '

А в Сентосе, баш которого я пытаюсь настроить ни фига нету

Показать
# /etc/bashrc

# System wide functions and aliases
# Environment stuff goes in /etc/profile

# It's NOT a good idea to change this file unless you know what you
# are doing. It's much better to create a custom.sh shell script in
# /etc/profile.d/ to make custom changes to your environment, as this
# will prevent the need for merging in future updates.

# are we an interactive shell?
if [ "$PS1" ]; then
if [ -z "$PROMPT_COMMAND" ]; then
case $TERM in
xterm*)
if [ -e /etc/sysconfig/bash-prompt-xterm ]; then
PROMPT_COMMAND=/etc/sysconfig/bash-prompt-xterm
else
PROMPT_COMMAND='printf "\033]0;%s@%s:%s\007" "${USER}" "${HOSTNAME%%.*}" "${PWD/#$HOME/~}"'
fi
;;
screen)
if [ -e /etc/sysconfig/bash-prompt-screen ]; then
PROMPT_COMMAND=/etc/sysconfig/bash-prompt-screen
else
PROMPT_COMMAND='printf "\033]0;%s@%s:%s\033\\" "${USER}" "${HOSTNAME%%.*}" "${PWD/#$HOME/~}"'
fi
;;
*)
[ -e /etc/sysconfig/bash-prompt-default ] && PROMPT_COMMAND=/etc/sysconfig/bash-prompt-default
;;
esac
fi
# Turn on checkwinsize
shopt -s checkwinsize
# [ "$PS1" = "\\s-\\v\\\$ " ] && PS1="[\u@\h \W]\\$ "
[ "$PS1" = "\\s-\\v\\\$ " ] && PS1="\[\e[1;32m\][\u@\h \W]$\[\e[0m\] "
# You might want to have e.g. tty in prompt (e.g. more virtual machines)
# and console windows
# If you want to do so, just add e.g.
# if [ "$PS1" ]; then
# PS1="[\u@\h:\l \W]\\$ "
# fi
# to your custom modification shell script in /etc/profile.d/ directory
fi

if ! shopt -q login_shell ; then # We're not a login shell
# Need to redefine pathmunge, it get's undefined at the end of /etc/profile
pathmunge () {
case ":${PATH}:" in
*:"$1":*)
;;
*)
if [ "$2" = "after" ] ; then
PATH=$PATH:$1
else
PATH=$1:$PATH
fi
esac
}

# By default, we want umask to get set. This sets it for non-login shell.
# Current threshold for system reserved uid/gids is 200
# You could check uidgid reservation validity in
# /usr/share/doc/setup-*/uidgid file
if [ $UID -gt 199 ] && [ "`id -gn`" = "`id -un`" ]; then
umask 002
else
umask 022
fi

# Only display echos from profile.d scripts if we are no login shell
# and interactive - otherwise just process them to set envvars
for i in /etc/profile.d/*.sh; do
if [ -r "$i" ]; then
if [ "$PS1" ]; then
. "$i"
else
. "$i" >/dev/null 2>&1
fi
fi
done

unset i
unset pathmunge
fi
# vim:ts=4:sw=4

Здесь я только и сумел изменить цвет промпта

#370731

не забывайте делать logout, изменения вступают в силу после relogin'a

#370734

Да здесь хоть перегрузись ничего не будет потому что в описании строки bashrc сказано ,что она меняет только цвет prompt
а как поменять цвет строки набора в Сентос непонятно?

#370738

moshell написал:
.bashrc
В Сентосе при изменении цвета текста bash ничего не записыается в bashrc. У меня один комп с графикой, я там успешно изменил цвет, эти изменения сохранились , но в bashrc при этом ничего не записалось. Куда-то в другое место пишется. Буду смотреть по дате. А если в графике сохранить изменение цвета шрифта можно то и в командной строке несомненно имеется такая возможность
#370768

Вы сами должны поправить .bashrc
чтоб цвет был всегда

#371410
moshell написал:
Вы сами должны поправить .bashrc
чтоб цвет был всегда

Убедительно прошу читать внимательно то , о чём я вам писал в предыдущих постах , чтобы впредь избежать персеверации.Повторяю ещё раз: в Сентосе дефолтное изменение цвета текста командной строки скорее всего прописываются не в bashrc ,а уже на этапе начальной загрузке, где-то в grub А в Минте например это прописывается в файле под названием bash.bashrc

#371426

Варианты все перечислены в man bash: /etc/profile, ~/.bashrc, ~/.profile, ~/.bash_login. Читать тут. Что до LinuxMint, который основан на Ubuntu, которая стандартам не следует, я сказать не могу, где да что да как там это сделано в угоду оригинальности.

#371435

"kerogaz" написал:
[\e[0m\] "

однако у меня поменялся только цвет приглашения ab а набор текста так белым цветом и остался
дык [0m как раз и значит "вернуть на дефолт". Сотрите это.

"kerogaz" написал:
персеверации.Повторяю ещё раз: в Сентосе дефолтное изменение цвета текста командной строки скорее всего прописываются не в bashrc ,а уже на этапе начальной загрузке, где-то в grub А в Минте например это прописывается в файле под названием bash.bashrc
бред какой-то. Если вы $PS* поменяете (хоть в ~/.bashrc), то у вас каждый раз будет меняться. От дистра это не зависит.

Есть другой вариант -- сменить палитру, но это ИМХО не самый лучший вариант.
#371502

drBatty написал:
[quote="kerogaz"][\e[0m\] "

однако у меня поменялся только цвет приглашения ab а набор текста так белым цветом и остался
дык [0m как раз и значит "вернуть на дефолт". Сотрите это.

"kerogaz" написал:
персеверации.Повторяю ещё раз: в Сентосе дефолтное изменение цвета текста командной строки скорее всего прописываются не в bashrc ,а уже на этапе начальной загрузке, где-то в grub А в Минте например это прописывается в файле под названием bash.bashrc
бред какой-то. Если вы $PS* поменяете (хоть в ~/.bashrc), то у вас каждый раз будет меняться. От дистра это не зависит.

Есть другой вариант -- сменить палитру, но это ИМХО не самый лучший вариант.[/quote]
У меня после
text
PS1='\[\e[1;32m\][\u@\h \W]\$\[\e[0m\] '

promt root стал красным а текст вообще никакой командой не меняется :) А после перезагрузки текст и промт всё равно белый а промпт становится красным только тогда когда зайдёшь как root. И мне очень хотелочь бы знать куда записывается изменение цвета текста командной строки , которое весьма успешно осуществляется в графическом режиме

#371519
"kerogaz" написал:
promt root стал красным а текст вообще никакой командой не меняется ab А после перезагрузки текст и промт всё равно белый а промпт становится красным только тогда когда зайдёшь как root.

ну раз вы меняли /root/.bashrc, то что в этом удивительного? ~/.bashrc свой для каждого юзера.

"kerogaz" написал:
И мне очень хотелочь бы знать куда записывается изменение цвета текста командной строки , которое весьма успешно осуществляется в графическом режиме
зачем вам это знать? В свойства окна записывается. Да, у окна есть цвет фона и цвет текста. А чем это вам поможет если окно не существует?
Войдите или зарегистрируйтесь, чтобы ответить.