LINUX.ORG.RU
ФорумTalks

А поделитесь-ка своим PS1

 , ,


6

3

Собственно сабж. Вот скрипт для получения моего:

case "${TERM}" in
xterm*|rxvt*)
    clr_mode=9
    ;;
*)
    clr_mode=3
    ;;
esac

if [ ${UID} -eq 0 ] ; then
  usr_color="\e[0;31m"
  usr_sign="#"
else
  usr_color="\e[0;${clr_mode}2m"
  usr_sign="\$"
fi

# source /usr/share/bash-completion/bash_completion
# или 
# source /etc/bash_completion

# enable showing the dirty (unstaged/staged) state
export GIT_PS1_SHOWDIRTYSTATE=1
# enable showing the stashed state
export GIT_PS1_SHOWSTASHSTATE=1
# enable showing the untracked state
export GIT_PS1_SHOWUNTRACKEDFILES=1
# enable showing the upstream state
export GIT_PS1_SHOWUPSTREAM="auto verbose"

type __git_ps1 &>/dev/null && git_prompt='$(__git_ps1 " %s")'

if [ -n "$SSH_CLIENT" ]; then
    host_prompt="\e[1;33m@$(echo $SSH_CONNECTION | awk '{print $3":"$4}')\e[m"
fi

PS1="\[${usr_color}\]\u\[\e[m\]$host_prompt \[\e[1;34m\]\w\[\e[m\]\[\e[1;35m\]${git_prompt}\[\e[m\] \[${usr_color}\]${usr_sign}\[\e[m\] "

unset color_prompt force_color_prompt git_prompt usr_color usr_sign host_prompt

В итоге выходит нечто такое:

\[\e[0;92m\]\u\[\e[m\] \[\e[1;34m\]\w\[\e[m\]\[\e[1;35m\]$(__git_ps1 " %s")\[\e[m\] \[\e[0;92m\]$\[\e[m\]

Выглядит так

★★★★★

Последнее исправление: KennyMinigun (всего исправлений: 3)
Ответ на: комментарий от yura_ts

А что именно не так как хотелось бы? Не на всю длинну?
Попробуй напрямую скрипт запусти: так работает? Я проверял не через bashrc, напрямую запускал.

Kroz ★★★★★
()
Ответ на: комментарий от Io

Удобство. Это называется создания более удобного окружения под себя.

Kroz ★★★★★
()
Ответ на: комментарий от Kroz

Ну да, первоначально хотелось на всю длину.

Впрочем, от идеи отказался — поставил небольшое фиксированное число минусов, так сойдёт.

yura_ts ★★
()
echo $PS1
\[\033[01;32m\]\u@\h\[\033[01;34m\] \w $\[\033[00m\]\n(`if [ $? = 0 ]; then echo \[\e[32m\]^_^\[\e[0m\]; else echo \[\e[31m\]O_O\[\e[0m\]; fi`) >>>

Даёт зелёный смайлик (^_^) в случае удачного выполнения команды и красный O_O в случае неудачного. Больше ничем не примечателен.

raven_cler ★★
()
Ответ на: комментарий от KennyMinigun

Нет, судя по строке автора, слэш - это статический символ, в строке находится сразу после \W

l0stparadise ★★★★★
()

А вот кто знает, можно ли сделать вывод времени ввода команды? Т.е. вместо

user:~# echo bla bla bla
bla bla bla
чтобы было скажем
user:~#14:24:10# echo bla bla bla
bla bla bla
, где время — именно момент ввода?

orm-i-auga ★★★★★
()
if env | grep -q VIMRUNTIME; then IS_VIM="(vim)"; else IS_VIM=""; fi
export PS1="\[\033[1;37m\]${IS_VIM}\W\$\[\033[0m\] " # \W\$
E ★★★
()
PS1='\[\e[1;32m\]\u \[\e[0;31m\] [\[\e[1;34m\]\w \[\e[0;31m\]] \[\e[1;37m\]{\t}\n\$ '
AoD314
()
Ответ на: комментарий от raven_cler

чтоб короче и понятнее можно было вынести в функцию:

_exit_status() {
    local color='32m'
    local smiley='^_^'
    
    if [ $? != 0 ]; then
        smiley='O_O'
        color='31m'
    fi
    
    echo "\[\e[$color\]$smiley\[\e[m\]"
}

PS='\[\e[1;32m\]\u@\h\[\e[1;34m\] \w $\[\e[m\]\n$(_exit_status) >>> '

Хотя у меня у самого говнокодище, собранный за несколько лет. Надо привести в порядок :)

KennyMinigun ★★★★★
() автор топика
Ответ на: комментарий от orm-i-auga

где время — именно момент ввода?

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

// кстати интересная идея, приду домой попробую %)

А показать время можно с помощью \t. Для

user:~#14:24:10#
нужно
PS1='\u:\w#\t# '

KennyMinigun ★★★★★
() автор топика
Последнее исправление: KennyMinigun (всего исправлений: 1)
Ответ на: комментарий от Allakka

Честно говоря, красиво сделать не получилось. Я забыл, что виджеты zle нельзя вызывать за пределами zle (хотел использовать reset-prompt в preexec). Но если сильно не выделываться, то есть вполне пристойное решение, которое тот же bash не потянет без хаков:

preexec () {
	print -P '%*' $1
}
Т.е. перед выводом команды будет печататься отдельной строкой время и командная строка до парсинга.

Gotf ★★★
()
Ответ на: комментарий от KennyMinigun

Если куда-то .bashrc «на показать» целиком выкладывать, то лучше. А для себя в одну строчку как-то привычней.

raven_cler ★★
()
[alexey] ~
$ echo $PS1
\n\[\033[01;32m\][\u] \[\033[00m\]\w\n\[\033[01;34m\]\$\[\033[00m\]
batekman ★★★
()
Ответ на: комментарий от KennyMinigun

ну, у меня зрение херовое. тщательный выбор палитры терминала (zsh, vim, etc) и никакой прозрачности

MyTrooName ★★★★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.