Как сделать так, чтобы цвет бита в терминале менял цвет каждой строки? - PullRequest
0 голосов
/ 04 апреля 2011

В настоящее время у меня есть это:

function xtitle2()      # Adds some text in the terminal frame.
{
export var1=`echo $HOSTNAME | perl -pe 's/^([a-zA-Z0-9]+)\.(.*)$/\1/g'`
export var2=`pwd`
echo -n -e "\033]0;$var1 : $var2\007"

a=$(( $a + 1 ))
if (( $a > 36 ))
then
    a=30
fi

}


PROMPT_COMMAND="xtitle2"

PS1="\e[0;${a}m$ \e[m"

но он меняет цвет только когда я делаю

$. ~/.profile

но я хочу, чтобы он менял цвет каждый раз при вводе любой команды ...

как мне это сделать?

Eidt:

закончил тем, что пошел с этим:

function xtitle2()      # Adds some text in the terminal frame.
{
export var1=`echo $HOSTNAME | perl -pe 's/^([a-zA-Z0-9]+)\.(.*)$/\1/g'`
export var2=`pwd`
echo -n -e "\033]0;$var1 : $var2\007"

if [ -z $a ]
then
    a=29
fi

a=$(( $a + 1 ))
if (( $a > 36 ))
then
    a=30
fi
PS1="\[\033[${a}m\]$\[\e[0m\]"
}


export PROMPT_COMMAND="xtitle2"

Ответы [ 3 ]

1 голос
/ 04 апреля 2011

Вместо двойных кавычек в PS1="\e[0;${a}m$ \e[m" используйте одинарные кавычки, например:

PS1='\e[0;${a}m$ \e[m'

... так что ${a} будет оцениваться каждый раз.

1 голос
/ 04 апреля 2011

Включите «$ (xtitle2)» в настройку PS1

Конечно, вам нужно немного реорганизовать xtitle2; Хорошей новостью является то, что вам больше не придется злоупотреблять PROMPT_COMMAND для этой цели. Кроме того, все переменные, кроме a, могут быть локальными.

Вы захотите использовать $(($HISTCMD % 30)) вместо беспорядка с переменной a

0 голосов
/ 04 апреля 2011

В основном PROMPT_COMMAND - это функция Bash, которую вы, вероятно, ищете.

С man bash(1):

PROMPT_COMMAND

Если установлено, значение выполняется как команда перед выдачей каждого основного приглашения.

Итак:

function rotate_prompt_colour() {
    ROTATE_COLOUR=$(( (ROTATE_COLOUR + 1) % 7))
    PS1="\h : \w \[\e[$(( 30 + ROTATE_COLOUR ))m\]\$\[\e[0m\] "
}

export PROMPT_COMMAND=rotate_prompt_colour

Обратите внимание, что PS1 имеет несколько полезных escape-последовательностей, которые могут сэкономить некоторые хлопоты. Также обратите внимание на \[...\] вокруг последовательностей ANSI, чтобы избежать некоторых странностей чтения строки.

...