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

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

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

Я бы хотел, чтобы

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

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

2
задан 25 June 2013 в 20:10
3 ответа

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

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$ \" )"
0
ответ дан 3 December 2019 в 10:07

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

2
ответ дан 3 December 2019 в 10:07

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

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

Это дает:

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

вместо:

[root@MDMarra archive]#
2
ответ дан 3 December 2019 в 10:07

Теги

Похожие вопросы