Текст отображается во время загрузки после установки Nvidia [дубликат]

Убедитесь, что все непечатаемые байты в вашем PS1 содержатся в \[ \]. В противном случае bash будет считать их в строке запроса. Он использует длину подсказки, чтобы определить, когда нужно обернуть линию.

Например, здесь bash подсчитывает приглашение шириной 19 столбцов, а приглашение, отображаемое терминалом, имеет ширину всего 10 колонок (My prompt, написанный в циане, и >, написанный по умолчанию):

PS1='\e[36mMy prompt\e[0m>'         # bash count: 19, actual: 10

, в то время как здесь он подсчитывает только приглашение шириной 10 колонок, поскольку он игнорирует байты между специальными \[ и \] escapes:

PS1='\[\e[36m\]My prompt\[\e[0m\]>' # bash count: 10, actual: 10

Для хорошей практики используйте tput для генерации выводов терминала, а не для их жесткого кодирования:

cyan=$(tput setaf 6) # \e[36m
reset=$(tput sgr0)   # \e[0m
PS1='\[$cyan\]My prompt\[$reset\]>'

См. http: // mywiki. wooledge.org/BashFAQ/053, а также http://wiki.bash-hackers.org/scripting/terminalcodes для tput.

1
задан 28 April 2014 в 09:43

0 ответов

Другие вопросы по тегам:

Похожие вопросы: