Здесь нет ничего особенного. Синтаксис для case
:
case word in [ [(] pattern [ | pattern ]... ) list ;; ]... esac
В примере в вопросе word
строится путем объединения $1
, /
и $2
./
вообще не имеет особого значения, это просто символ.
PS :На практике использование немного странное, так как часть $2
впоследствии сопоставляется с *
, так что значение $2
на самом деле не имеет значения. Можно было бы в контексте, описанном в Вики, также написать
#!/bin/sh
case $1 in
pre)
echo "Going to $2..."
;;
post)
echo "Waking up from $2..."
;;
esac
Но могут быть случаи, когда suspend
, hibernate
илиhybrid
(возможные значения для$2
)имеют значение, так что здесь это просто общая схема.
Я предполагаю, что большая часть вашего файла .zshrc
была взята из более старого или чьего-то другого файла .bashrc
, поскольку в нем есть ряд вещей, которые в zsh
выполнялись бы иначе, чем в bash
.
Ваша текущая подсказка установлена с
PS1='[${GREEN}%n${NC}@${GREEN}%m${NC}:${CYAN}%1~${NC}]%(?,,[${RED}%?${NC}])$(git_status)$ '
где $GREEN
и т. д. — управляющие последовательности, создаваемые tput
.
Проблема заключается в том, что оболочке будет сложно определить ширину подсказки, поскольку вы используете свои собственные управляющие последовательности для раскрашивания вместо стандартного способа zsh
.
Я бы посоветовал вам отказаться от $GREEN
и т. д.переменная и вместо этого используйте
PS1='[%F{green}%n%f@%F{green}%m%f:%F{cyan}%1~%f]%(?,,[%F{red}%?%f])$(git_status)$ '
Каждый %F{colorname}
устанавливает цвет переднего плана на colorname
, и каждый %f
прекращает использование этого цвета.
Чтобы правильно использовать ваши собственные escape-последовательности, каждая такая последовательность должна быть заключена в %{...%}
, чтобы оболочка знала, что она не займет места в подсказке (файл инициализации пользователя root делает это, но в окольный путь):
PS1='[%{${GREEN}%}%n%{${NC}%}@%{${GREEN}%}%m%{${NC}%}:%{${CYAN}%}%1~%{${NC}%}]%(?,,[%{${RED}%}%?%{${NC}%}])$(git_status)$ '
Обратите внимание, что это также означает, что вывод вашей git_status
функции оболочки, который содержит цветовые коды, должен быть обновлен.
Прочтите раздел «РАСШИРЕНИЕ ПОСЛЕДОВАТЕЛЬНОСТЕЙ ПОДСКАЗОК» в руководстве zshmisc
.