Попытка настроить приглашение для отображения определенной части PWD в ZSH

#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 , вам, вероятно, повезет больше, если вы опубликуете новый вопрос.