Способ, которым моя подсказка bash настроена в настоящее время, показывает полный путь к текущему каталогу. Это раздражает, когда я глубоко в дереве каталогов, так как приглашение становится настолько длинным, что каждая команда переносится в следующую строку. Как мне сделать так, чтобы он показывал только последнюю часть пути?
Вот что я имею в своем .bashrc
:
PS1='${debian_chroot:+($debian_chroot)}\[\033[01;32m\]\u@\h\[\033[00m\]:\[\033[01;34m\]\w\[\033[00m\]\$ '
# If this is an xterm set the title to user@host:dir
case "$TERM" in
xterm*|rxvt*)
PROMPT_COMMAND='echo -ne "\033]0;${USER}@${HOSTNAME}: ${PWD/$HOME/~}\007"'
;;
*)
;;
esac
источник
case
заявление переопределяет его, когда я нахожусь на xterm, и проблема, кажется,PWD
вPROMPT_COMMAND
строке. Ты знаешь, что я должен положить туда?\w
(нижний регистр) устанавливает полный путь,\W
(верхний регистр) обрезает последний бит. PROMPT_COMMAND устанавливает заголовок окна в xterm. проверьте переменную TERM; если он не начинается с «xterm» или «rxvt», то PROMPT_COMMAND даже не запускается.Простая команда замены bash
Для показа последнего каталога, который вы можете просто сделать
${PWD/*\//}
, то есть найти что-либо раньше, включая последний, '/
' и заменить его ничем.На моей машине с Ubuntu я использую:
источник
Мое решение состоит в том, чтобы показать три верхних и два нижних каталога, когда их более 5
Так что мое приглашение (в котором есть и другая информация) выглядит так:
когда мой pwd на самом деле
Моя подсказка PS1 настроена следующим образом:
git_branch
это функция, которая показывает текущую ветку git, я храню ее в своих точечных файлах, это:источник
Мое решение для этого немного отличается в отношении того, как я могу его экспортировать, поэтому я поделился этим здесь:
Создайте другую строковую переменную подсказки; PS5 и экспортируйте следующую строку в ваш
.profile
/.bash_profile
файл:Теперь, когда вам нужно использовать сокращенное PS, просто запустите:
eval $PS5
Или еще лучше, создайте псевдоним в вашем
.bash_aliases
файле: (спасибо @muru )source
снова, и теперь вы можете просто напечататьPS5
для переключения.источник
Большинство других решений не работали для меня во всех моих ОС, которые используют мои точечные файлы: AIX, Windoze и Linux. Порты Баш были старые версии , которые не поддерживают определенные конструкции , и я не хочу , чтобы отвалить другой процесс (то есть
sed
,awk
и т.д.) , которая заметно дороже под Cygwin.Следующее долго, но производительно:
Хочу выплюнуть
Обратите внимание на отсутствие косой черты в последней строке, что мне нравится. Кроме того, вы можете выплюнуть последние 3 каталога, изменив arg на
DIR_LAST
.Кроме того, я пытался сделать это с помощью регулярных выражений,
BASH_REMATCH
но bash v3, похоже, не нравился паренам, и я не мог понять, как правильно их избежать. Вздох.источник
Я считаю, что этот вариант намного проще, просто сделав:
Поэтому присвойте это переменной PS1 в вашем файле .bashrc:
источник
добавьте следующий код в конец вашего ~ / .bashrc
источник