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)

стандартный гентушный

$ echo $PS1
\[\033[01;32m\]\u@\h\[\033[01;34m\] \w \$\[\033[00m\]

TheAnonymous ★★★★★
()

Эх. Когда я был молодым, я в досе раскрашивал и наворачивал приглашение. Сейчас постарел, лень. Хотя идея хорошая, только я не понял, что такое «*% u=».

Xellos ★★★★★
()

У меня так:

PS1="\[\e[01;32m\]\u@\h \[\e[01;34m\][\w] \[\e[01;34m\]$\[\e[00m\] "

На работе еще ORACLE_SID в квадратных скобочках.

alex_the_v ★★★
()
echo $PS1
\[\e]0;\u@\h: \w\a\]${debian_chroot:+($debian_chroot)}\u@\h:\w\$

считаю, что всё до \w\ - лишнее, но в бубунте по умолчанию так, ну и ладно.

yvv ★★☆
()
u@mydefence:~> echo $PS1
PS1: Неопределенная переменная.
u@mydefence:~> 

у меня tcsh, но:

u@mydefence:~> grep prompt .cshrc 
if ($?prompt) then
        set prompt = '%n@%m:%~> '
u@mydefence:~>
IPR ★★★★★
()

Не менял дефолтные.

На домашнем мак мини:

\h:\W \u\$

На домашнем микросервачке с фряхой:

[\u@\h \w]\$

На бесплатной впске:

${debian_chroot:+($debian_chroot)}\u@\h:\w\$
sT331h0rs3 ★★★★★
()

Ужас какой! Зачем так перегружать PS1? И что это за «*% u=», действительно?

Сам пока что использую стандартный гентушный, но есть и свой, покороче, чтобы не мешало.

Deleted
()
export PS1="\[\e[01;32m\][\[\e[0m\]\[\e[01;34m\]\u\[\e[0m\]\[\e[01;32m\]]\[\e[0m\]\[\e[00;37m\] \[\e[0m\]\[\e[01;32m\][\[\e[0m\]\[\e[01;31m\]\w\[\e[0m\]\[\e[01;32m\]]\[\e[0m\]\[\e[00;37m\]\n \[\e[0m\]\[\e[01;36m\] >\[\e[0m\]\[\e[00;37m\] \[\e[0m\]"


Выглядит так.
Сделать красиво - http://bashrcgenerator.com/

StReLoK ☆☆
()

root: \[\033[01;31m\]\h\[\033[01;34m\] \W \$\[\033[00m\]
non-root: \[\033[01;32m\]\u@\h\[\033[01;34m\] \w \$\[\033[00m\]

Lavos ★★★★★
()

user: export PS1="\[\033[36m\][\t] \[\033[1;33m\]\u\[\033[0m\]@\h:\[\033[36m\][\w]:\[\033[0m\] "

root: export PS1="\[\033[36m\][\t] \[\033[1;31m\]\u\[\033[0m\]@\h:\[\033[36m\][\w]:\[\033[0m\] "

observer ★★★
()
sosnov:~ $ echo $PS1
\[\e[0;32m\]\u\[\e[m\]:\[\e[1;34m\]\w\[\e[m\] \[\e[1;32m\]\$\[\e[m\]

Писал очень давно, для пробы. В принципе устраивает, но иногда раздражает, ели рабочая директория на каком нибудь 8 уровне и приветствие пол экрана занимает. Но менять лень.

comp00 ★★★★
()
Последнее исправление: comp00 (всего исправлений: 1)

zsh

Выглядит так

if [ "$EUID" -eq 0 ]; then
	promptname=${red}
	prompttext=${white}
	prompthost=${red}
	promptdir=${green}
	prompttime=${green}
	promptnum=${red}
	promptprig='#'
else
	promptname=$'%{\e[38;5;141m%}'
	prompttext=$'%{\e[38;5;225m%}'
	prompthost=$'%{\e[38;5;141m%}'
	promptdir=$'%{\e[38;5;99m%}'
	prompttime=$'%{\e[38;5;99m%}'
	promptnum=$'%{\e[38;5;207m%}'
	promptprig='$'
fi

export PROMPT="${promptname}┌─%n${prompttext}@${prompthost}%m ${promptdir}%~
${promptname}└┤${promptprig} ${prompttext}"

export RPROMPT="${promptnum}%! ${prompttime}%* ${promptnum}%y${prompttext}"

najlus ★★★★★
()

Для юзера:

\[\033[1;33;41m\h>\]\[\033[1;32;40m \D{%d.%m, %H:%M}\] \[\033[1;33;40m\w\]\[\033[1;32;40m\]\[\033[0;37;40m\n

Для рута:

\[\033[1;31;40m[\h ROOT SESSION \D{%d.%m %H:%M}\] \[\033[1;33;40m\w\]\[\033[1;32;40m]\]\[\033[0;37;40m\n

Несмотря на наличие имени хоста, все равно бывают косяки, когда пишу poweroff или reboot не в той вкладке терминала. Надо, наверное, и правда генерировать на основе того, откуда пришел. Если по ssh — писать еще какую-нибудь красную мигающую хрень.

Eddy_Em ☆☆☆☆☆
()
\[\e]0;\u@\h: \w\a\]\[\033[01;34m\]\W\$\[\033[00m\]
wota ★★
()
Ответ на: комментарий от Xellos

*% u=

* — есть измененные файлы
% — есть неотслеживаемые файлы
u= — текущая ветка на одном коммите с апстримом

KennyMinigun ★★★★★
() автор топика
\[\e]0;\u@\h: \w\a\]${debian_chroot:+($debian_chroot)}[\u@\h \W]\$
tailgunner ★★★★★
()
PROMPT=%B%F{black}'%20<…<'%1d'%<<'%f%b\ %(0?..%B%F{red}%? %b%f)%B%(!.%F{red}'#'.%F{cyan}%%)%b%f\ 
if [[ ! -z $MC_SID ]] { PROMPT=%B%K{blue}[MC]%b%k\ $PROMPT }
if [[ ! -z $RANGER_LEVEL ]] { PROMPT=%B%K{green}[Ranger]%b%k$PROMPT }
if [[ ! -z $SSH_CLIENT ]] { PROMPT=%B%F{green}%m%b%f\ $PROMPT; }
Gotf ★★★
()
Ответ на: комментарий от madcore

без имени хоста в промте?

Он у меня показывается только при ssh соединениях:

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

А при работе с физическими ПК он не нужен. Итак видно что «Компьютер Андрея» :D

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

Это и есть в баше, и это не совсем \W.

Gotf ★★★
()

Выглядит так. Кусок .zshrc.

В промпте пишется время запуска команды. Рудимент, поскольку меня скорее интересует не время запуска, а запускалась ли команда вообще (если нажать ^C, то она не исполнится, но строчка останется). А ещё помогает быстро найти взглядом промпт среди каши из чьего-нибудь stdout.

NeXTSTEP ★★
()
if ($uid == 0)
    set prompt = "%{\033[1;31m%}%N%{\033[0;36m%}@%{\033[1;34m%}%m %{\033[0;34m%}%~ %{\033[1;30m%}%#%{\033[0m%} " 
else
    set prompt = "%{\033[1;32m%}%N%{\033[0;32m%}@%{\033[1;32m%}%m %{\033[0;33m%}%~ %{\033[1;30m%}%#%{\033[0m%} "
endif
fat_angel ★★★★★
()

Для рута:

PS1='\[\033[01;31m\]\u@\h\[\033[00m\]:\[\033[01;34m\]\w\[\033[00m\]> '

Для kroz показывает статусы:
- ftp (запуск, индикатор подключения)
- торренты (запуск)
- sshd (запуск, индикатор подключения)
- apache (запуск)
- svn (запуск)
- emerge (запуск, статус устновки пакетов: сколько всего должно быть установлено и какой по счету устанавливается сейчас)

Каждый статус выводится одной буквой, которая меняет цвет в зависимости от... Только emerge позволено выводить цифры - кол-во пакетов. Так что много места не занимает. Очень удобно.

function _SystemStatus()
{
	SERVICES="ftsave"
	RESULT=""

	# Standard services
	f_SERVICE="proftpd"
	t_SERVICE="transmission-daemon"
	s_SERVICE="sshd"
	a_SERVICE="apache2"
	v_SERVICE="svnserve"

	# Statuses, colors
	C_NONE="\[\033[0;37m\]"
	C_IDLE="\[\033[1;37m\]"
	C_CRTITICAL="\[\033[7;31m\]"
	C_STAT1="\[\033[1;33m\]"
	C_RESET="\[\033[0m\]"


	while [[ -n "$SERVICES" ]]; do
		I="${SERVICES:0:1}"
		SERVICES="${SERVICES:1}"

		STATUS="${I}_STATUS"
		eval $STATUS="NONE"
		
		SERVICE="${I}_SERVICE"
		if [[ -n "$SERVICE" ]]; then
			A=`/etc/init.d/${!SERVICE} status 2>/dev/null` ;
			if [[ "${A##* }" = "started" ]] ; then
							eval $STATUS="IDLE"
			fi
		fi 
		
		VALUE="$I"
		case "$I" in
			"s" ) # ssh
				S_CONNECTIONS=`who | while read U C D T S ; do [[ -n "$S" ]] && [[ "${S:1:1}" != ":" ]] && echo "$U" ; done`
				[[ -n "$S_CONNECTIONS" ]] && s_STATUS="CRTITICAL"
				;;
			"f" ) # ftp
				S_CONNECTIONS=`netstat -n --protocol inet 2>/dev/null | grep ':21 ' | while read P C1 C2 S D E ; do [[ "$E" = "ESTABLISHED" ]] && echo "$S" ; done`
				[[ -n "$S_CONNECTIONS" ]] && f_STATUS="STAT1"
				;;
			"e" ) # emerge
				# if we have merge running
				e_A=`ps ax -o comm= | grep "emerge" | head -n 1 `
				if [[ -n "$e_A" ]] ; then
					e_STATUS="IDLE"
					
					# Note: there should be permiossion to read /var/log/emerge.log
					# emerge started time
					e_eT=`cat /var/log/emerge.log | grep "Started emerge on: " | tail -n 1`
					e_eT="${e_eT:0:10}"
				
					# emerge log record time
					e_A=`cat /var/log/emerge.log | grep "..........:  >>> emerge" | tail -n 1`
					e_lT="${e_A:0:10}" # Log record time
					
					if [[ "$e_lT" -gt "$e_eT" ]]; then
						e_M=`expr match "$e_A" '.*(\([0-9]*\) of'`
						e_N=`expr match "$e_A" '.*([0-9]* of \([0-9]*\)'`
						
						[[ "$e_M" != "" ]] && if [[ "$e_N" != "" ]]; then
							VALUE="$e_M/$e_N"
							e_STATUS="STAT1"
						fi
					fi 
				fi
		esac
		

		######## Output ########
		# TODO: more detailed output - if user wants to see details

		# For prompt
		STATUS="${I}_STATUS";STATUS="${!STATUS}"
		COLOR="C_$STATUS";COLOR="${!COLOR}"

		[[ "$STATUS" != "NONE" ]] && RESULT="${RESULT}${COLOR}${VALUE}${C_RESET}"
	done
	[[ -n "$RESULT" ]] && RESULT="[${RESULT}]"

	PS1="[]\[\033[01;32m\]\u@\h\[\033[00m\]:\[\033[01;34m\]\w\[\033[00m\]> "
	PS1="${PS1/[]/${RESULT}}"
}

PROMPT_COMMAND="_SystemStatus"
Kroz ★★★★★
()
Последнее исправление: Kroz (всего исправлений: 1)
Ответ на: комментарий от Kroz

Вау!

У меня быдлокод какой-то:

minus=""
i=0
while [ $i -lt `tput cols` ]
do
i=`expr $i + 1`
minus="$minus-"
done
 
export PS1="$minus\n\[\e[01;33m\]\u @ \[\e[0m\]\[\e[01;31m\]\h\[\e[0m\]\[\e[00;37m\] \[\e[0m\]\[\e[01;34m\][\w]\[\e[0m\]\[\e[00;37m\] \[\e[0m\]\[\e[01;37m\]\A\[\e[0m\]\[\e[00;37m\]\n\[\e[0m\]\[\e[01;37m\]>>\[\e[0m\] "
На баше пишу что-то сложнее хелловорлда первый раз. А быдлокод он потому, что медленно отрабатывает почему-то (при запуске эмулятора терминала жду полсекунды, пока появится приветствие).

yura_ts ★★
()
Последнее исправление: yura_ts (всего исправлений: 1)
PROMPT="%~/ >>"
RPROMPT="%(?,%{$fg[green]%}>:]%{$reset_color%},%{$fg[red]%}>:[%{$reset_color%}"

Стоит у меня zsh.

RisuX3
()
Ответ на: комментарий от yura_ts

Конечно, если у тебя куча вызовов subshell'ов. Сделай вот так:

minus=""
i=0
N=`tput cols`
while [ $i -lt $N ]
do
let i++
minus="$minus-"
done

Kroz ★★★★★
()
 >> echo $PS1
${vcs_info_msg_0_} ${RED}>> ${NO_COLOR}

Под юзером - вместо красного желтый.

когда в репе, выглядит как-то так

(git)-[master] >>
l0stparadise ★★★★★
()
Последнее исправление: l0stparadise (всего исправлений: 1)
Ответ на: комментарий от science

Два слеша в корне же, а надо один. Если я правильно понял и слеш в конце это закос под вывод ls с дополнительными символами.

KennyMinigun ★★★★★
() автор топика
Последнее исправление: KennyMinigun (всего исправлений: 1)
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.