Когда я открываю терминал (в Mac OS X 10.5.8) и набираю длинную командную строку:
... текст не переходит на следующую строку, когда он переносится:
Кроме того, иногда, когда я набираю команду и затем возвращаюсь (или стрелка вверх или ^ U):
... вся строка не стирается, и я не могу вернуться за пределы определенной точки:
Это известная ошибка bash (в Mac OS X)? Есть ли исправление?
Обновление: Джулиано был прав, проблема была вызвана неправильным разграничением последовательности кода консоли в моей переменной PS1. Изменение:
export PS1='\[\033[1;34m\]\$\]\033[0m\] '
... по моему .bashrc
:
export PS1='\[\033[1;34m\]\$\[\033[0m\] '
... решил проблему.
\]
.\]
вместо '[`Ответы:
Поведение соответствует наличию консольных кодов в вашем приглашении (для изменения цвета и т. Д.) И неправильной маркировки, чтобы bash знал, что они невидимы.
Прежде всего, сделайте это:
А потом попробуйте еще раз. Если проблема решена, то мои подозрения верны.
Каждая последовательность кода консоли должна быть разделена с помощью переменной PS1
\[
и\]
внутри нее. Они говорят Bash, что все, что там находится, не перемещает позицию курсора. Прочтите руководство по bash для получения дополнительной информации.источник
Чтобы создать санированную подсказку, попробуйте http://www.kirsle.net/wizards/ps1.html, это довольно круто. Просто будьте осторожны со скобками в вашем приглашении, оно пытается избежать их или что-то в этом роде.
источник
tput
команды - в ней исправлены исправления новой строки, `` новой строки и другие "history + backspace", которые не могли исправить другие коды ANSI.