LINUX.ORG.RU
ФорумTalks

[быдлокодерство][bash]Prompt adam2 from zsh: final

 


1

0

Допилил сабж до годного состояния - реализовал худо-бедно обрезку слишком длинной $PWD. Других особых изменений нет. Код страшен аки ядерная война :-)

# приглашение (adam2)
function prompt_adam2(){
local WHOAMI=$(whoami);
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}-3));
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
}

export PS1='\[\e[36;1m\].\[\e[0m\]\[\e[36m\]-\[\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[36;1m\]\`\[\e[0m\]\[\e[36;1m\]-\[\e[0m\]\[\e[36m\]-\[\e[0m\]\
\[\e[37;1m\]>\[\e[0m\] '
export PS2='\[\e[37;1m\]> \[\e[0m\]'

Пихать в ~/.bashrc

Скриншот.

★★★★★

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

Ответ на: комментарий от wyldrodney

wyldrodney wrote:

Как предлагаешь быть ленивым параноикам?

Параноики идут читать man bash ;-). Так согласен - выглядит страшненько.

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

wyldrodney wrote:

А вдруг у меня полугодичная дыра в udev не закрыта, а ты её используешь?

O_x каких только ужасов на ЛОРе не услышишь... Хитровыделанный rm -rf /* на bash я буду писать только через пару недель, если будет желание.

GotF ★★★★★
() автор топика

это ж до какой степени надо bash любить...

ananas ★★★★★
()

> \[\e[36;1m\].\[\e[0m\]\[\e[36m\]-\[\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[36;1m\]\`\[\e[0m\]\[\e[36;1m\]-\[\e[0m\]\[\e[36m\]-\[\e[0m\]\


\[\e[37;1m\]>\[\e[0m\] '



rm: невозможно удалить `/bin/bash': Permission denied
rm: невозможно удалить `/bin/bunzip2': Permission denied

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

reliktt wrote:

zsh лучше, зачем портировать то?

Лучше, но bash стандартнее, а мне ещё и заняться нечем...

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