_|
_|_|_|_| _|_|_| _|_|_|
_| _|_| _| _|
_| _|_| _| _|
_|_|_|_| _|_|_| _| _|
Решил я как-то впихнуть себе текущую ветку git в приглашение, и таки впихнул
☺
Но поведать сегодня хочу не об этом, а о небольшом моменте который меня в то время «зацепил» — собственно вывод переменных или результата функции в приглашении zsh и разборки с кавычками…
Дело в том что обычно описание приглашения идет в двойных кавычках, но если указать в этих кавычках, к примеру, переменную
$? (код завершения предыдущей программы), то эта переменная будет считана всего один раз, т.е. приглашение будет иметь всегда один и тот же вид
☹, поэтому что бы результат считывался перед каждым выводом приглашения используют
%? (или всякие %m %n) или одинарные кавычки.
Но вот вывод результата функции несколько отличается — просто указание функции не работает, посему просто
'$(function_name)'. И вот благодаря этому можно выводить в приглашении что угодно без использования
add-zsh-hook, как это часто делают воводя тот же git brunch. Аналогичное же поведение и у приглашения в bash.
К примеру, наипростейший вывод помянутой ветки git будет выглядеть так
git_branch() { basename `(git symbolic-ref -q HEAD || git name-rev --name-only --no-undefined --always HEAD) 2> /dev/null` 2> /dev/null}
PROMPT='$(git_branch)'"ваше приглашение"
Ну а дальше можно навернуть ещё больше, расскрасить там аль вывести что изменения незакомиченные имеются…
Our new ebooks offer prompts to get you writing each day, tips and techniques on taking great photos, and help with growing traffic and community on your blog. What's more? They're free.