Исправлены ошибки, связанные с переносом строк в bash и отображением backspace в Mac OS X?


14

Когда я открываю терминал (в 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\] '

... решил проблему.


1
+1 за самые красивые снимки экрана терминала, которые я когда-либо видел.
Приостановлено до дальнейшего уведомления.

1
две строки кода, которые вы показали в своем обновлении, идентичны.
Магн

Хороший улов, @Magne. Прошло четыре года с тех пор, как я посмотрел на это, поэтому я не помню конкретно, но я предполагаю, что «до» не хватало \].
Дэрил Спитцер

они не идентичны: у 1-го \]вместо '[`
Охад Коэн

Ответы:


19

Поведение соответствует наличию консольных кодов в вашем приглашении (для изменения цвета и т. Д.) И неправильной маркировки, чтобы bash знал, что они невидимы.

Прежде всего, сделайте это:

PS1='\w\$ '

А потом попробуйте еще раз. Если проблема решена, то мои подозрения верны.

Каждая последовательность кода консоли должна быть разделена с помощью переменной PS1 \[и \]внутри нее. Они говорят Bash, что все, что там находится, не перемещает позицию курсора. Прочтите руководство по bash для получения дополнительной информации.


Это была проблема. Спасибо! Я уточню свой вопрос с деталями.
Дэрил Спитцер

А что, если это не решит проблему?
Levesque

3

Чтобы создать санированную подсказку, попробуйте http://www.kirsle.net/wizards/ps1.html, это довольно круто. Просто будьте осторожны со скобками в вашем приглашении, оно пытается избежать их или что-то в этом роде.


+1 Хотя ответ @ Juliano технически верен, здесь приведена ссылка, которая устанавливает правильные tputкоманды - в ней исправлены исправления новой строки, `` новой строки и другие "history + backspace", которые не могли исправить другие коды ANSI.
Эрик Дункан
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.