Вы можете получить желаемый (если я думаю правильно) эффект, используя функцию precmd , которая выполняется каждый раз перед отображением подсказки, чтобы напечатать дополнительные строки над подсказкой.
Используйте, например, этот код
precmd() {
LEFT="The time is"
RIGHT="$(date) "
RIGHTWIDTH=$(($COLUMNS-${#LEFT}))
print $LEFT${(l:$RIGHTWIDTH::.:)RIGHT}
}
PS1="foo > "
RPS1="bar"
объяснение
$LEFT и $RIGHT содержат строки для левой и правой стороны, соответственно. Вы можете использовать вывод команды с синтаксисом $(...) .
$RIGHTWIDTH - это разница текущей ширины терминала (хранится в zsh в параметре $COLUMNS) и ширины левой строки. $((...)) для математических выражений
- Волшебство приходит с
${(l:$RIGHTWIDTH::.:)RIGHT} , где параметр $RIGHT дополняется слева (l) точками (пропустите последний :.: Если вам нужны пробелы) до длины $RIGHTWIDTH .
- Распечатать дополнительную строку. Повторите команды, если вы хотите больше строк.
PS1 и RPS1 короче для PROMPT и RPROMPT .
демонстрация
The time is............................................Fri, Sep 18, 2015 8:20:22 PM
foo > _ bar