Я уверен, что видел, что у кого-то есть часть их подсказки, выровненной направо в их окне терминала и затем имею фактический курсор, запускаются на второй строке. Я знаю, что могу достигнуть второй строки с "\n" в PS1, но я не могу выяснить, как выровнять часть его направо. Был тем, что я видел просто пробел, добавленный между двумя строками?
То, что Вы хотите, может довольно легко быть сделано путем отображения первой строки прежде, чем отобразить подсказку. Например, следующие дисплеи подсказка \w
слева от первой строки и подсказки \u@\h
справа от первой строки. Это использует $COLUMNS
переменная, которая содержит ширину терминала и $PROMPT_COMMAND
параметр, который оценен перед ударом, отображает подсказку.
print_pre_prompt ()
{
PS1L=$PWD
if [[ $PS1L/ = "$HOME"/* ]]; then PS1L=\~${PS1L#$HOME}; fi
PS1R=$USER@$HOSTNAME
printf "%s%$(($COLUMNS-${#PS1L}))s" "$PS1L" "$PS1R"
}
PROMPT_COMMAND=print_pre_prompt
Можно использовать printf
сделать выравнивание по правому краю:
$ printf "%10s\n" "hello"
hello
$ PS1='$(printf "%10s" "$somevar")\w\$ '