Daria 14.12.2010 19:04
Скрипты — Rapid Prompt Switcher
Частенько при работе в консоли, прыгая из одной директории в другую, prompt разрастает под тяжестью пути, что мешает прилично работать. В такие моменты очень хочется на некоторое время заменить приглашение командной строки аскетичным молчанием. Что-либо жутко неудобное - прекрасный мотиватор для поиска быстрых решений.Посему, азартом и мотивацией так приятно разбавить такие полезные, но сухие вещи, как самообразование. Собственно так я начала знакомство с функциями в Bash (и мы стали подружками), пересеклась с извращёнными подобиями массивов (и мы обменялись телефонами), так вот что вышло:
Эту функцию можно, к примеру, записать в файл .bash_function, а затем добавить инклюд в .bashrc:
. .bash_functions
UPT: заменила quotes
подсмотрел в LiveCD ArchBang PS1, с некоторыми модификациями делюсь - вдруг пригодится кому-то.
PS1='\e<01;31m??<\e<01;35m`date "+%D %T"`\e<01;31m>??<\e<00;37m${HOSTNAME%%.*}@\u\e<01;32m>: \w\e<01;31m\n\e<01;31m???\e<01;36m$ \e<00m'
$ cat /etc/bash.bashrc.local
#!/bin/sh
#
if < `whoami` = 'root' >
then
PS1="\<\033<31m\>#\<\033<0m\> "
else
PS1="$ "
fi
Мой личный выбор после пяти лет с линуксом. Если надо - pwd в помощь. А в большинстве случаев почему-то даже не проверяю где я, не смотря на то, что открыта куча консолей.
тоже самое:
PS1="\$ "
в man bash в секции PROMPTING, есть список специальных символов, вот что там:
\$ if the effective UID is 0, a #, otherwise a $
PS1="\$ "
в man bash в секции PROMPTING, есть список специальных символов, вот что там:
\$ if the effective UID is 0, a #, otherwise a $
Этого не знал, спасибо. Однако:
1) Но не красненький же! =)
2) Тестдрайв
1) Но не красненький же! =)
2) Тестдрайв
$ su
Password:
# PS1=\$
$
$whoami
root
$PS1="\$"
$whoami
root
Помнится, в zsh можно было выделить путь в т.н. "правое" приглашение (переменная RPROMPT), которое само пропадало, когда до него допечатаешь.
function pre_prompt
{
newPWD="${PWD}"
let promptsize=$(echo -n "??< $newPWD >}?" | wc -c | tr -d " ")
width=$COLUMNS
let fillsize=${width}-${promptsize}-9
let helping=$fillsize
fill=""
while < "$fillsize" -gt "0" >
do
fill="${fill}?"
let fillsize=${fillsize}-${promptsize}
done
if < $helping == $fillsize >
then
let cutt=3-${fillsize}
newPWD="...$(echo -n $PWD | sed -e "s/\(^.\{$cutt\}\)\(.*\)/\2/")"
fi
}
# Set prompt colour
if < `id -u` -eq 0 >
then
cText="${LightRed}"
cBorder="${Red}"
else
# cText="${LightCyan}"
cText="${white}"
cBorder="${white}"
fi
PROMPT_COMMAND=pre_prompt
# Display Prompt
PS1="${cBorder}??<${cText} \t ${cBorder}>?< ${cText}\$newPWD${cBorder} >\${fill}?\n${cBorder}?${cBorder}?? ${white}$normal"
Получим
??< 21:14:35 >?< ...ng/long/long/long/long/long/long/long/long/long/long/long/long/long/long/long/long/long/long/long/long/long/long/long/long/long/long/long >?
т.е. первые папки отбрасываются, если не умещаемся на экран