Автор Тема: [SOLVED]Цветен Промпт  (Прочетена 4328 пъти)

4096bits

  • Напреднали
  • *****
  • Публикации: 6201
    • Профил
[SOLVED]Цветен Промпт
« -: Jan 08, 2015, 15:56 »
Опитах се да си направя промпта цветен. Той си беше цветен, но аз се опитах да го направя с други цветове. Копирах цветните кодове от този адрес с в началото на .bashrc и на мястото на PS1 чудесията
написах ето това:

Код:
if [ "$UID = 0" ]; then
 #PS1='${debian_chroot:+($debian_chroot)}\[\033[01;32m\]\u@\h\[\033[00m\]:\[\033[01;34m\]\w\[\033[00m\]\$ '
PS1="\[$BRed\]\u \[$BWhite\]@ \[$BGreen\]\h\[$BWhite\]:\[$BYellow\]\w \[$BRed\]\$\[$Color_off\]"
else
PS1="\[$BBlue\]\u \[$BWhite\]@ \[$BGreen\]\h\[$BWhite\]:\[$BYellow\]\w \[$BWhite\]\$\[$Color_off\]"
fi

Нищо не стана. Промпта си върна цвета зададен от профила на терминала и bash изплю тази грешка:
Код:
bash: /home/victor/.bashrc: line 188: unexpected EOF while looking for matching `''
bash: /home/victor/.bashrc: line 197: syntax error: unexpected end of file
На всичко отгоре, явно съм докоснал тъчпада без да искам и съм изтрил нещо, защото по едно време започна да пищи за липсваща скоба ']'. Не намерих, къде може да липсва. Някакви идеи?
На въпросния ред 188 има коментар.
« Последна редакция: Jan 09, 2015, 13:25 от 4096bits »
Активен

As they say in Mexico, "Dasvidaniya!" Down there, that's two vidaniyas.

Acho

  • Напреднали
  • *****
  • Публикации: 5293
  • Distribution: Slackware, MikroTik - сървърно
  • Window Manager: console only
    • Профил
    • WWW
Re: Цветен Промпт
« Отговор #1 -: Jan 08, 2015, 16:04 »
А къде е /home/victor/.bashrc в чиито 188 и 197 редове ти дава грешки ? Предполагам ако го пуснеш тук, колегите ще кажат какво е липсващото.
Активен

CPU - Intel Quad-Core Q8400, 2.66 GHz; Fan - Intel Box; MB - Intel G41M-T2; RAM - DDR2-800, Kingston HyperX, 2X2048 MB; VC - onboard, Intel G41 Express Chipset; HDD - Toshiba, 500 GB, SATAII; SB - Realtek HD Audio; DVD-RW - TSSTcorp DVD-RW; LAN - Realtek PCI-E GBE Controller; PSU - Fortron 350 Watt.

satir

  • Напреднали
  • *****
  • Публикации: 1073
  • Distribution: FreeBSD-10.1 & LMDE
  • Window Manager: i prefer MATE
    • Профил
    • WWW
Re: Цветен Промпт
« Отговор #2 -: Jan 08, 2015, 16:17 »
по мое мнение скобата е на 197-и ред, а щом е "затваряща" аз бих проверил къде е "отварящата".
Активен

4096bits

  • Напреднали
  • *****
  • Публикации: 6201
    • Профил
Re: Цветен Промпт
« Отговор #3 -: Jan 08, 2015, 16:41 »
А къде е /home/victor/.bashrc в чиито 188 и 197 редове ти дава грешки ? Предполагам ако го пуснеш тук, колегите ще кажат какво е липсващото.
Ми не ми се пускаше цялото нещо, да заливам тук форума, но ето го:
Код:
# Bash Named Color Codes

# Reset
Color_Off='\e[0m'       # Text Reset

# Regular Colors
Black='\e[0;30m'        # Black
Red='\e[0;31m'          # Red
Green='\e[0;32m'        # Green
Yellow='\e[0;33m'       # Yellow
Blue='\e[0;34m'         # Blue
Purple='\e[0;35m'       # Purple
Cyan='\e[0;36m'         # Cyan
White='\e[0;37m'        # White

# Bold
BBlack='\e[1;30m'       # Black
BRed='\e[1;31m'         # Red
BGreen='\e[1;32m'       # Green
BYellow='\e[1;33m'      # Yellow
BBlue='\e[1;34m'        # Blue
BPurple='\e[1;35m'      # Purple
BCyan='\e[1;36m'        # Cyan
BWhite='\e[1;37m'       # White

# Underline
UBlack='\e[4;30m'       # Black
URed='\e[4;31m'         # Red
UGreen='\e[4;32m'       # Green
UYellow='\e[4;33m'      # Yellow
UBlue='\e[4;34m'        # Blue
UPurple='\e[4;35m'      # Purple
UCyan='\e[4;36m'        # Cyan
UWhite='\e[4;37m'       # White

# Background
On_Black='\e[40m'       # Black
On_Red='\e[41m'         # Red
On_Green='\e[42m'       # Green
On_Yellow='\e[43m'      # Yellow
On_Blue='\e[44m'        # Blue
On_Purple='\e[45m'      # Purple
On_Cyan='\e[46m'        # Cyan
On_White='\e[47m'       # White

# High Intensity
IBlack='\e[0;90m'       # Black
IRed='\e[0;91m'         # Red
IGreen='\e[0;92m'       # Green
IYellow='\e[0;93m'      # Yellow
IBlue='\e[0;94m'        # Blue
IPurple='\e[0;95m'      # Purple
ICyan='\e[0;96m'        # Cyan
IWhite='\e[0;97m'       # White

# Bold High Intensity
BIBlack='\e[1;90m'      # Black
BIRed='\e[1;91m'        # Red
BIGreen='\e[1;92m'      # Green
BIYellow='\e[1;93m'     # Yellow
BIBlue='\e[1;94m'       # Blue
BIPurple='\e[1;95m'     # Purple
BICyan='\e[1;96m'       # Cyan
BIWhite='\e[1;97m'      # White

# High Intensity backgrounds
On_IBlack='\e[0;100m'   # Black
On_IRed='\e[0;101m'     # Red
On_IGreen='\e[0;102m'   # Green
On_IYellow='\e[0;103m'  # Yellow
On_IBlue='\e[0;104m'    # Blue
On_IPurple='\e[0;105m'  # Purple
On_ICyan='\e[0;106m'    # Cyan
On_IWhite='\e[0;107m'   # White

###########################################################################

# ~/.bashrc: executed by bash(1) for non-login shells.
# see /usr/share/doc/bash/examples/startup-files (in the package bash-doc)
# for examples

# If not running interactively, don't do anything
case $- in
    *i*) ;;
      *) return;;
esac

# don't put duplicate lines or lines starting with space in the history.
# See bash(1) for more options
HISTCONTROL=ignoreboth

# append to the history file, don't overwrite it
shopt -s histappend

# for setting history length see HISTSIZE and HISTFILESIZE in bash(1)
HISTSIZE=1000
HISTFILESIZE=2000

# check the window size after each command and, if necessary,
# update the values of LINES and COLUMNS.
shopt -s checkwinsize

# If set, the pattern "**" used in a pathname expansion context will
# match all files and zero or more directories and subdirectories.
#shopt -s globstar

# make less more friendly for non-text input files, see lesspipe(1)
[ -x /usr/bin/lesspipe ] && eval "$(SHELL=/bin/sh lesspipe)"

# set variable identifying the chroot you work in (used in the prompt below)
if [ -z "${debian_chroot:-}" ] && [ -r /etc/debian_chroot ]; then
    debian_chroot=$(cat /etc/debian_chroot)
fi

# set a fancy prompt (non-color, unless we know we "want" color)
case "$TERM" in
    xterm-color) color_prompt=yes;;
esac

# uncomment for a colored prompt, if the terminal has the capability; turned
# off by default to not distract the user: the focus in a terminal window
# should be on the output of commands, not on the prompt
force_color_prompt=yes

if [ -n "$force_color_prompt" ]; then
    if [ -x /usr/bin/tput ] && tput setaf 1 >&/dev/null; then
# We have color support; assume it's compliant with Ecma-48
# (ISO/IEC-6429). (Lack of such support is extremely rare, and such
# a case would tend to support setf rather than setaf.)
color_prompt=yes
    else
color_prompt=
    fi
fi

if [ "$color_prompt = yes"]; then
if [ "$UID = 0" ]; then
 #PS1='${debian_chroot:+($debian_chroot)}\[\033[01;32m\]\u@\h\[\033[00m\]:\[\033[01;34m\]\w\[\033[00m\]\$ '
PS1="\[$BRed\]\u \[$BWhite\]@ \[$BGreen\]\h\[$BWhite\]:\[$BYellow\]\w \[$BRed\]\$\[$Color_off\]"
else
PS1="\[$BBlue\]\u \[$BWhite\]@ \[$BGreen\]\h\[$BWhite\]:\[$BYellow\]\w \[$BWhite\]\$\[$Color_off\]"
fi
else
    PS1='${debian_chroot:+($debian_chroot)}\u@\h:\w\$ '
fi
unset color_prompt force_color_prompt

# If this is an xterm set the title to user@host:dir
case "$TERM" in
xterm*|rxvt*)
    PS1="\[\e\]0;${debian_chroot:+($debian_chroot)}\u@\h: \w\a\]$PS1"
    ;;
*)
    ;;
esac

# 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)"
    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

# some more ls aliases
alias ll='ls -alF'
alias la='ls -A'
alias l='ls -CF'

# Add an "alert" alias for long running commands.  Use like so:
#   sleep 10; alert
alias alert='notify-send --urgency=low -i "$([ $? = 0 ] && echo terminal || echo error)" "$(history|tail -n1|sed -e '\''s/^\s*[0-9]\+\s*//;s/[;&|]\s*alert$//'\'')"'

# Alias definitions.
# You may want to put all your additions into a separate file like
# ~/.bash_aliases, instead of adding them here directly.
# See /usr/share/doc/bash-doc/examples in the bash-doc package.

if [ -f ~/.bash_aliases ]; then
    . ~/.bash_aliases
fi

# enable programmable completion features (you don't need to enable
# this, if its already enabled in /etc/bash.bashrc and /etc/profile
# sources /etc/bash.bashrc).
if ! shopt -oq posix; then
  if [ -f /usr/share/bash-completion/bash_completion ]; then
    . /usr/share/bash-completion/bash_completion
  elif [ -f /etc/bash_completion ]; then
    . /etc/bash_completion
  fi
fi
Активен

As they say in Mexico, "Dasvidaniya!" Down there, that's two vidaniyas.

neter

  • Global Moderator
  • Напреднали
  • *****
  • Публикации: 3408
  • Distribution: Debian, SailfishOS, CentOS
  • Window Manager: LXDE, Lipstick
    • Профил
    • WWW
Re: Цветен Промпт
« Отговор #4 -: Jan 08, 2015, 17:20 »
На ред 136 си пропуснал кавички и интервал. Този ред трябва да бъде:
Код
GeSHi (Bash):
  1. if [ "$color_prompt" = "yes" ]; then

На ред 151 си добавил излишна наклонена черта. Този ред трябва да бъде:
Код
GeSHi (Bash):
  1. PS1="\[\e]0;${debian_chroot:+($debian_chroot)}\u@\h: \w\a\]$PS1"

Условието за $UID, започващо на ред 137, е безсмислено (на всичкото отгоре и с пропуснати кавички в него) - този .bashrc файл се чете само от потребителя ти victor, така че $UID при четенето на файла никога не е 0. Настройката за цветовете на root трябва да се въведат в /root/.bashrc, а настройките за други потребители - в .bashrc файла в тяхната домашна папка.

Добави си интервал в края на указателя за цветовете, за да не ти се сливат надписите в конзолата! Т.е., например:
Код
GeSHi (Bash):
  1. PS1="\[$BBlue\]\u \[$BWhite\]@ \[$BGreen\]\h\[$BWhite\]:\[$BYellow\]\w \[$BWhite\]\$\[$Color_off\] "

П.П.: Форумът има и опция за прикачване на файлове към постовете. Погледни линка "Допълнителни опции", намиращ се под текстовото поле за писане на пост!
« Последна редакция: Jan 08, 2015, 17:51 от neter »
Активен

"Да си добре приспособен към болно общество не е признак за добро здраве" - Джиду Кришнамурти

4096bits

  • Напреднали
  • *****
  • Публикации: 6201
    • Профил
Re: Цветен Промпт
« Отговор #5 -: Jan 08, 2015, 20:04 »
Благодаря! Сега ще направя промените. Тъчпада ми е големичък и го закачам и явно съм изтрил, там каквото липсва. А как не съм се сетил, че този .bashrc само аз си го чета, не мога изобщо и да помисля  :D

Сега ми дава грешка на ред 173, този с дългия регулярен израз. Който ми е като мишмаш, но там не видях проблем със скобите.
bash: /home/victor/.bashrc: line 173: unexpected EOF while looking for matching `)'
bash: /home/victor/.bashrc: line 194: syntax error: unexpected end of file
« Последна редакция: Jan 08, 2015, 20:15 от 4096bits »
Активен

As they say in Mexico, "Dasvidaniya!" Down there, that's two vidaniyas.

neter

  • Global Moderator
  • Напреднали
  • *****
  • Публикации: 3408
  • Distribution: Debian, SailfishOS, CentOS
  • Window Manager: LXDE, Lipstick
    • Профил
    • WWW
Re: Цветен Промпт
« Отговор #6 -: Jan 08, 2015, 20:14 »
Ами дай пак да видим текущото съдържание на файла, за да не правим голи предположения :)
Активен

"Да си добре приспособен към болно общество не е признак за добро здраве" - Джиду Кришнамурти

4096bits

  • Напреднали
  • *****
  • Публикации: 6201
    • Профил
Re: Цветен Промпт
« Отговор #7 -: Jan 08, 2015, 20:16 »
Ами дай пак да видим текущото съдържание на файла, за да не правим голи предположения :)
Активен

As they say in Mexico, "Dasvidaniya!" Down there, that's two vidaniyas.

neter

  • Global Moderator
  • Напреднали
  • *****
  • Публикации: 3408
  • Distribution: Debian, SailfishOS, CentOS
  • Window Manager: LXDE, Lipstick
    • Профил
    • WWW
Re: Цветен Промпт
« Отговор #8 -: Jan 08, 2015, 21:13 »
Проблемът не се предизвиква от грешка на ред 173, а от грешка отново на ред 136 - не си го редактирал точно така, както ти казах (пак си отървал кавички), поради което редовете надолу са влизали в общ блок, чак до част от ред 173, и тъй като така ред 173 е изглеждал непълен, интерпретаторът съобщава за грешка там.

Все пак, като спомена ред 173, каква точно функция очакваш да изпълнява въведеният там alias? При така въведения код при команда "alert" ще ти изскача балонче, в което винаги ще пише само "alert", като само иконката ще се сменя, според статуса на изпълнение на предходната команда, което обезсмисля четенето на историята и прилагането на регулярния израз. Може би искаш в балончето да се изписва предходната команда, за да бъдеш известяван какво се е изпълнило последно и с какъв статус?
Активен

"Да си добре приспособен към болно общество не е признак за добро здраве" - Джиду Кришнамурти

Odido

  • Напреднали
  • *****
  • Публикации: 627
  • Distribution: Arch Linux
  • Window Manager: Gnome
    • Профил
Re: Цветен Промпт
« Отговор #9 -: Jan 08, 2015, 22:50 »
Преди време ,като започнах със сидукс (сегашния аптосид) си правих цветен терминала от тук.: http://manual.aptosid.com/en/term-konsole-en.htm
Активен

"Congratulations, you broke the Internet
Look at what you did! Are you happy now?"

4096bits

  • Напреднали
  • *****
  • Публикации: 6201
    • Профил
Re: Цветен Промпт
« Отговор #10 -: Jan 09, 2015, 01:32 »
Този ред си беше там. Чудех се дали да не го коментирам и него. Регулярния израз ми е мътна работа, но го видях, че не прави нещо особено. Промпта стана. Само да му махна интервалите, че май без тях по-добре. Мерси! Отдавна не съм се хващам май да пиша код  :D

Странно но \$  не показва знак #, когато напиша sudo -s
« Последна редакция: Jan 09, 2015, 01:52 от 4096bits »
Активен

As they say in Mexico, "Dasvidaniya!" Down there, that's two vidaniyas.

neter

  • Global Moderator
  • Напреднали
  • *****
  • Публикации: 3408
  • Distribution: Debian, SailfishOS, CentOS
  • Window Manager: LXDE, Lipstick
    • Профил
    • WWW
Re: Цветен Промпт
« Отговор #11 -: Jan 09, 2015, 02:24 »
Странно но \$  не показва знак #, когато напиша sudo -s
Видът на промпта на root не се управлява от .bashrc файла на твоя потребител, дори и при влизане със sudo. Сигурен ли си, че успяваш да влезеш като root при това изпълнение на sudo? Да не се окаже, че потребителят ти няма право да изпълнява sudo, или има някакъв друг проблем с изпълнението на sudo, при което да си оставаш в този потребител, а инерционно да си мислиш, че това е на root. Ако си сигурен, че влизаш, то да не би да си пипал нещо в /root/.bashrc или /etc/bashrc?

Информативно за регулярния израз. Командата, в която се намира, взема последния ред от историята на изпълнените команди и целта на регулярния израз в sed е да премахне (замени с нищо) някои излишни части от прихванатия текст. Всъщност, изразите са два:
Цитат
^\s*[0-9]\+\s*
и
Цитат
[;&|]\s*alert$

Легенда:
^ - означава "начало на реда"
\s* - интервали; звездичката е за брой - нула или повече
[0-9]\+ - цифри от 0 до 9; плюсът е за брой - една или повече
[;&|] - един от символите ";", "&" или "|"
alert - думата "alert"
$ - означава "край на реда"
Активен

"Да си добре приспособен към болно общество не е признак за добро здраве" - Джиду Кришнамурти

4096bits

  • Напреднали
  • *****
  • Публикации: 6201
    • Профил
Re: Цветен Промпт
« Отговор #12 -: Jan 09, 2015, 09:25 »
В /root/.bashrc само поставих промпта, който искам да се появява. Потребителят ми може да използва sudo, това си е мойта машина. И изпълнявам судо. Когато изпълня sudo -s, потребителя се сменя на root ( първото в промпта ), но не се сменя $ на #
Активен

As they say in Mexico, "Dasvidaniya!" Down there, that's two vidaniyas.

neter

  • Global Moderator
  • Напреднали
  • *****
  • Публикации: 3408
  • Distribution: Debian, SailfishOS, CentOS
  • Window Manager: LXDE, Lipstick
    • Профил
    • WWW
Re: Цветен Промпт
« Отговор #13 -: Jan 09, 2015, 09:39 »
И текущото съдържание на /root/.bashrc е? :)
Активен

"Да си добре приспособен към болно общество не е признак за добро здраве" - Джиду Кришнамурти

4096bits

  • Напреднали
  • *****
  • Публикации: 6201
    • Профил
Re: Цветен Промпт
« Отговор #14 -: Jan 09, 2015, 11:30 »
И текущото съдържание на /root/.bashrc е? :)
Активен

As they say in Mexico, "Dasvidaniya!" Down there, that's two vidaniyas.