Вопрос

Я хотел бы установить свою приглашение Bash фиксированной ширину и составить разницу в пространстве до $, так будь то длинный или короткий, моя подсказка остается такой же шириной:

[name@host] ~/Directory/Dir...Another/LastDir $ 
[name@host] ~/Directory(branch)               $ 

В настоящее время в коротком каталоге пути моего подсказки выглядит что-то подобное:

[name@host] ~/Directory(branch) $ 

Путь более глубокого каталога выглядит так:

[name@host] ~/Directory/Dir...Another/LastDir $ 

Вы можете видеть, что усеял PWD в середине, чтобы я мог видеть, где начинается путь, и где он заканчивается. Я хотел бы составить разницу до $.

Вот моя текущая подсказка:

# keep working directory to 30 chars, center tuncated
prompt_pwd() {
  local pwd_symbol="..."
  local pwd_length=30
  newPWD="${PWD/#$HOME/~}"
  [ ${#newPWD} -gt ${pwd_length} ] && newPWD=${newPWD:0:12}${pwd_symbol}${newPWD:${#newPWD}-15}
}
# set prompt
prompt_color() {
  PROMPT_COMMAND='prompt_pwd;history -a;title_git'
  PS1="${WHITEONMAGENTA}[\u@\h]${MAGENTA} \w\$(parse_git_branch) ${MAGENTABOLD}\$${PS_CLEAR} "
  PS1=${PS1//\\w/\$\{newPWD\}}
    PS2="${WHITEONTEAL}>${PS_CLEAR} "
}

В моем поиске я нашел Подсказка ширина вашего термина Что делает какую-то наполнить, но не смогла его работать на эту конкретную подсказку.

Это было полезно?

Решение

Если ваш путь слишком короткий ([ ${#newPWD} -le ${pwd_length} ]) Вы можете использовать PrintF (1), чтобы продлить его.

printf -v newPWD "%-*s" $pwd_length "$newPWD"

Это оставит оправдать строку в $newPWD с шириной поля $pwd_length.

PrintF (1) встроен в Bash, поэтому он не слишком дорогой, чтобы запустить каждую подсказку.

Другие советы

Вы можете установить переменную среды BASH_COMMAND, что позволяет вам определить подсказку вручную. Вы можете использовать expand -t чтобы получить его до желаемой длины.

Что я сделал, это позиционировать мой каталог и такой над Моя подсказка, поэтому мне не нужно беспокоиться об этом:

myusername@mybox:/home/myusername/some/directory
$ 

Таким образом, я также могу получить дополнительное преимущество копирования строки выше для команд SCP и SSH, без необходимости добавлять пример каталога-каталога User @ Host: /.

Вот моя переменная $ PS1, если вы хотите попробовать это:

\[\e]0;\w\a\]\n\[\e[32m\]\u@\h \[\e[33m\]\w\[\e[0m\]\n\$

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top