#zsh #ps1
Вопрос:
В настоящее время я использую это в ZSH export PS1='${USER}:${PWD}: '
Я мог бы использовать это: export PS1='${USER}:${PWD##*/} $ '
Но я хочу видеть папку дальше в иерархии папок, поэтому я хотел бы использовать что-то вроде этого, export PS1='${USER}:${PWD | cut -d '/' -f6}:${PWD##*/} '
Но это не работает, это просто показывает это: ${USER}:${PWD | cut -d / -f6}:${PWD##*/}
Я хочу, чтобы он отображал определенную папку (в позиции f6), а затем текущий каталог.
Есть какие-нибудь мысли о том, как я могу это сделать?
Ответ №1:
Работает ли это?:
setopt prompt_subst
export PROMPT='${USER}:${${(s:/:)PWD}[5]}:${PWD:t} '
Некоторые из фрагментов:
setopt prompt_subst
— позволяет${...}
расширять приглашения. У вас, наверное, это~/.zshrc
уже есть в вашем.PROMPT
— тот же эффект,PS1
что и .${(s:/:)PWD}
— разбивает значение рабочего каталогаPWD
на/
s.${...[5]}
— выбирает пятый элемент этого разделения (который соотносится с шестым полем изcut
).${PWD:t}
— выбирает «хвостовой» (последний) элемент из пути.
Флаг s
расширения параметра задокументирован на zshexpn
справочной странице вместе с t
модификатором. Возможно, вам также захочется взглянуть на побеги подсказок, описанные на zshmisc
справочной странице, и на precmd
подключение zshcontrib
.
Комментарии:
1. Setopt, похоже, не существует, и параметр ПРИГЛАШЕНИЯ игнорируется, вместо этого я просто экспортировал PS1 с обратной строкой, чтобы избежать проблемы (длинный каталог над моей командой ниже).
2. @DavidHarman — спасибо, что посмотрели на это. Это звучит так, как будто ваша оболочка настроена
bash
и нетzsh
.3. Вы правы @Gairfowl, это КШ, а не ЗШ, извините за это….
4. @DavidHarman — не беспокойтесь. Если вы все еще ищете подходящий ответ
ksh
, вам, вероятно, повезет больше, если вы опубликуете новый вопрос.