LINUX.ORG.RU

[bash] Строка приглашения.

 


0

3

Надоела стандартная строка приглашения в терминале - решил изменить её содержимое, но, как оказалось, хочется быстро и сейчас, а разбираться с правилами составления приглашения - это долго и потом. Видел тут у кого-то терминал на скриншоте, со строкой такой вся из себя навороченной. Так вот, хочу увидеть ваши настройки PS1 и быстренько их опробовать. Покажите, а.

# Для root'а
PS1='\n\[\e[0;33m\][\D{%Y.%m.%d %H:%M:%S}] \[\e[01;31m\]\u@\h \[\e[1;34m\]\w\n\$ \[\e[0;32m\]\[\e[0m\]'
# Для обычных пользователей
PS1='\n\[\e[0;33m\][\D{%Y.%m.%d %H:%M:%S}] \[\e[01;32m\]\u@\h \[\e[1;34m\]\w\n\$ \[\e[0;32m\]\[\e[0m\]'
Deleted
()
Ответ на: комментарий от Captcha

> Во, мне нравится, появилась мотивация пощупать zsh.

У меня в баше тоже наворочено, с выводом текущей ревизии проекта, но я не покажу.

name_no ★★
()
    PS1="\[\033[1;36m\][\t]\[\033[0m\033[1m\033[36m\][\[\033[34m\]\u@\h \[\033[32m\]\w\[\033[36m\]]\`errlev=\$?; if [ \$errlev != 0 ]; then echo \[\e[1m\e[31m\]\$errlev\[\e[0m\]; fi\`\[\033[1;36m\]>\[\033[0m\] "

http://ompldr.org/vNjltag

AITap ★★★★★
()

PS1=«\[\033[01;32m\]\u@\h\[\033[01;34m\] \W \$\[\033[00m\] »

staseg ★★★★★
()
[08:42:07] worker@trued:~ :)$ true
[08:42:25] worker@trued:~ :)$ false
[08:42:41] worker@trued:~ :($ echo $PS1
${debian_chroot:+($debian_chroot)}\[\033[01;36m\]\133\t\135 \[\033[01;33m\]\u\[\033[00m\]@\[\033[01;32m\]\h\[\033[00m\]:\[\033[01;35m\]\W \[\033[01;31m\]$( if [ "$?" == "0" ]; then echo :\); else echo :\(; fi )\[\033[00m\]\$
Xenesz ★★★★
()
export PS1='\[\e[36m\]┌\[\e[0m\]\[\e[30;1m\]┤\[\e[0m\]\
\[\e[32;1m\]$(prompt_adam2 mypwd)\[\e[0m\]\[\e[30;1m\]├\[\e[0m\]\[\e[36m\]$(prompt_adam2 dashes)\
\[\e[30;1m\]┤\[\e[0m\]\[\e[36m\]\u\[\e[1m\]@\[\e[0m\]\[\e[36m\]\h\
\[\e[30;1m\]├\[\e[0m\]\[\e[36m\]─\[\e[0m\]\n\
\[\e[36m\]└\[\e[0m\]\[\e[36m\]─\[\e[0m\]\
\[\e[37;1m\]>\[\e[0m\] '
export PS2='\[\e[37;1m\]> \[\e[0m\]'

prompt_adam2(){
local WHOAMI=${USER};
local HOSTNAME=${HOSTNAME};
local USER_AT_HOST_LEN=$((${#WHOAMI}+${#HOSTNAME}+3));
local WIDTH=$(tput cols);
local MYPWD="$PWD";
if [[ "$HOME" == ${MYPWD:0:${#HOME}} ]]; then
	local PWD_LEN=$((${#MYPWD}-${#HOME}+3));
	local MYNEWPWD="~${MYPWD:${#HOME}}";
else
	local PWD_LEN=$((${#MYPWD}+2));
	local MYNEWPWD="$MYPWD";
fi
local DASHES=$((${WIDTH}-${USER_AT_HOST_LEN}-${PWD_LEN}-2));
local PWD_LIM=$((${WIDTH}-${USER_AT_HOST_LEN}-12));
if (( ${#MYNEWPWD} >= ${PWD_LIM} )); then
	local TRUNC_SEQ="/.../";
	PWD_LEN=${#MYNEWPWD};
	if [[ "$HOME" == ${MYPWD:0:${#HOME}} ]]; then
	MYNEWPWD="~"$TRUNC_SEQ"${MYNEWPWD:${PWD_LEN}-${PWD_LIM}:999}";
	DASHES=1;
	else
	MYNEWPWD=""$TRUNC_SEQ"${MYNEWPWD:${PWD_LEN}-${PWD_LIM}:999}";
	DASHES=1;
	fi
fi
if [ "$1" == "dashes" ]; then
for (( i=1; i<=${DASHES}; i++)); do
	echo -n '─';
done
elif [ "$1" == "mypwd" ]; then
	echo -n ${MYNEWPWD};
fi
}
GotF ★★★★★
()

насмотрелась на GotF, поставила себе вариант попроще

export PS1='\[\]┌ \u@\h: \[\]\[\]\[\][\[\]\
\[\]\w\[\]\[\]]\[\]\n\
\[\]└\[\]\[\]\[\]\
\[\]>\[\] '

Sylvia ★★★★★
()

Самый труёвый вариант.
PS1=«$ »

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

А зачем так длинно, если

export PS1='\[\]┌ \u@\h: [\w]\n└> '
дает то же самое?

P.S. У меня:

\[\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

Eddy_Em ☆☆☆☆☆
()
Ответ на: комментарий от Eddy_Em

>> А зачем так длинно

Я так понимаю, там просто обработались эскейп-последовательности (xpg_echo on).

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

А, ну да, кажется, там есть лишние элементы. У меня в таком виде получается вот так:

┌┤~├──────────────────────────────────────────────────────────┤gotf@persephone├─
└─> echo $PS1
\[\]┌\[\]\[\]┤\[\]\ \[\]$(prompt_adam2 mypwd)\[\]\[\]├\[\]\[\]$(prompt_adam2 dashes)\ \[\]┤\[\]\[\]\u\[\]@\[\]\[\]\h\ \[\]├\[\]\[\]─\[\]
\ \[\]└\[\]\[\]─\[\]\ \[\]>\[\]
GotF ★★★★★
()
Ответ на: комментарий от Eddy_Em

> \[\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

Для гламурных прозрачных терминалов не пойдётъ.

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

Для гламурных прозрачных терминалов не пойдётъ.

А я такой фигней и не страдаю :)

GotF

Цвета же.

Чтобы был цвет, надо внутри скобок и его записать, например, так: \[\033[1;33;41m\h>\]

Eddy_Em ☆☆☆☆☆
()
[ "x$USER" = "xroot" ] && NAMECOLOR=red || NAMECOLOR=blue
PROMPT="
%B%F{$NAMECOLOR}[%n] %F{green}%/# %f%b"

Это у меня в zsh. Скриншот.

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

>> Чтобы был цвет, надо внутри скобок и его записать, например, так: \[\033[1;33;41m\h>\]

Он там и записан. Просто последовательность раскрывается в этом режиме, а не печатается «как есть».

GotF ★★★★★
()
Ответ на: комментарий от GotF
┌┤~├──────────────────────────────────────────────────────────┤gotf@persephone├─
└─> shopt xpg_echo 
xpg_echo       	off
┌┤~├──────────────────────────────────────────────────────────┤gotf@persephone├─
└─> echo $PS1
\[\e[36m\]┌\[\e[0m\]\[\e[30;1m\]┤\[\e[0m\]\ \[\e[32;1m\]$(prompt_adam2 mypwd)\[\e[0m\]\[\e[30;1m\]├\[\e[0m\]\[\e[36m\]$(prompt_adam2 dashes)\ \[\e[30;1m\]┤\[\e[0m\]\[\e[36m\]\u\[\e[1m\]@\[\e[0m\]\[\e[36m\]\h\ \[\e[30;1m\]├\[\e[0m\]\[\e[36m\]─\[\e[0m\]\n\ \[\e[36m\]└\[\e[0m\]\[\e[36m\]─\[\e[0m\]\ \[\e[37;1m\]>\[\e[0m\]
┌┤~├──────────────────────────────────────────────────────────┤gotf@persephone├─
└─> shopt -s xpg_echo 
┌┤~├──────────────────────────────────────────────────────────┤gotf@persephone├─
└─> echo $PS1
\[\]┌\[\]\[\]┤\[\]\ \[\]$(prompt_adam2 mypwd)\[\]\[\]├\[\]\[\]$(prompt_adam2 dashes)\ \[\]┤\[\]\[\]\u\[\]@\[\]\[\]\h\ \[\]├\[\]\[\]─\[\]
\ \[\]└\[\]\[\]─\[\]\ \[\]>\[\]

Вот я о чём :D

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