Назад | Перейти на главную страницу

как получить [current_path] в приглашении оболочки bash?

Возможно ли, чтобы имя текущего рабочего каталога отображалось в командной строке оболочки?

Я работаю над OSX и CentOS в нескольких проектах в / srv / ... и быстро ошибаюсь в неправильном каталоге.

Я бы хотел

[current_path] в моем приглашении как-то, возможно, цветное Возможно ли это?

Например, как / srv / myproject, он будет выдавать подсказку [root @ server [myproject] # Это должно оставаться неизменным даже в / srv / myproject / app / etc

Я использую следующую строку в /etc/bashrc в моих системах Linux. Обычно это вопрос замены заглавной буквы «W» на строчную «w» в большинстве установок Bash по умолчанию:

PS1="[\u@\h \w]\\$ "

Это дает:

[root@MDMarra /ppro/edi/0010/GOODBI/receive/archive]#  

вместо того:

[root@MDMarra archive]#

Последовательность символов для всего текущего рабочего каталога в $PS1 является \w. Видеть «Совет: быстрое волшебство» Больше подробностей.

Это должно быть близко к тому, что вы ищете:

PS1="\$([[ \$PWD == /srv/*/* ]] && p=\${PWD#/*/} && p=[\${p%%/*}]; echo -n \"\$p$ \" )"

Для тестирования используйте это, чтобы показать полный каталог вместе с усеченным для сравнения:

PS1="\$([[ \$PWD == /srv/*/* ]] && p=\${PWD#/*/} && p=[\${p%%/*}]; echo -n \"[\$PWD] \$p$ \" )"

Экраны приводят к тому, что раскрытие переменной откладывается до выдачи приглашения. Расширения параметров удаляют каталог первого уровня и все уровни каталогов ниже второго уровня.

Вам, вероятно, понадобятся:

shopt -s promptvars

но думаю это по умолчанию.

Приглашение выполняет свою работу только тогда, когда вы находитесь в каталоге под /srv

Это один из способов добавить цвета. Это делает название проекта голубым.

PS1="\$([[ \$PWD == /srv/*/* ]] && p=\${PWD#/*/} && p='[\[\033[1;36m\]'\${p%%/*}'\[\033[0m\]]'; echo -n \"\$p$ \" )"