Настройте приглашение zsh при отображении предыдущего кода выхода команды
Zsh включает в себя возможность отображения кода возврата/выхода предыдущей команды в приглашении с помощью escape-последовательности %?
.
Однако я хотел бы получить следующее приглашение:
[email protected] ~ [%?] %
когда код выхода отличается от 0 и:
[email protected] ~ %
когда код выхода равен 0.
Если я использую только %?
, он всегда отображается, даже если %?
равно 0.
Кроме того, я хочу квадратные скобки, но только тогда, когда код выхода не равен 0.
Каков самый простой способ сделать это?
Ответы
Ответ 1
Добавьте это в позицию в PS1
, где вы хотите, чтобы появился код выхода:
%(?..[%?] )
Это условное выражение. Часть между двумя точками (ничего в этом случае) не выводится, если выражение перед первой точкой равно true. Часть после второй точки выводится, если она неверна.
Например:
PS1='%n%m %~ %(?..[%?] )%# '
Ответ 2
В качестве альтернативы вы можете:
setopt PRINT_EXIT_VALUE
чтобы всегда печатать новую строку, показывающую предыдущее возвращаемое значение.
Я не предпочитаю это для обычного использования, но он часто хорош для отладки сценариев оболочки.