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

Правильный метод использования nohup в пакетном процессе
Как удалить символическую ссылку на каталог?
Bash скрипт для редактирования имени файла и перемещения файла.
Сценарий Bash завершается ошибкой " синтаксическая ошибка в условном выражении"
Создание сценария BASH " для " обрабатывать имена файлов с пробелами (или обходной путь)
Закройте сценарий bash, когда curl получает статус HTTP, отличный от 200
Есть ли способ в терминале Linux напрямую найти микроархитектуру процессора?
Проблемы редактирования файлов с nano в Bash / Windows 10
Используйте OpenOffice из командной строки для преобразования HTML в RTF
Добавление пользовательских строк в файл с помощью shell-скрипт
Добавить миллисекунды к существующему времени Unix
Как исправить проблему несоответствия шифров с sftp?
Вывод Grep из нескольких строк в ограниченной среде оболочки
Как остановить в Git-Bash, то ждать окончания?
Двойные трубы в Linux

Использование r в bash PS1

я немного устал от моих typeaheads в Баш от испортить PS1. Например, я бы выполнил команду, например ls, и в то время как он работает, начните вводить следующую команду, как echo, и typeahead для echo появится перед PS1, как

/$ls
...
ec/$echo

(здесь /$ - это PS1). Мое решение для этого было добавить r к передней части PS1, так что он очистит линию первым.

это, кажется, работает разумно Ну, но, кажется, есть странная проблема. В моем .inputrc, Я

"ep": history-search-backward

дайте мне типа M-p, чтобы вернуться назад (iTerm 2 карты вариант, чтобы избежать правильно).

проблема в том, что иногда, когда я печатаю некоторые вещи, а затем M-p чтобы получить предыдущую команду, то я делаю C-u C-k очистить строку, первый символ остается, и становится частью PS1 (удаляется из исполняемой строки, но отображается на PS1). Это когда я выполнить команда, но всякий раз, когда я нажимаю этот элемент в истории, даже с обычной стрелкой вверх, этот первый персонаж снова застревает там. Это происходит только с командами определенной длины. Это не имеет значения, если r фактически очищает любой текст, чтобы это произошло.

я поражаю странную ошибку в bash и / или iTerm? Добавляет r перед PS1 правильный способ очистить крафт перед ним?

5
задан asmeurer
источник

1 ответов

сигнал bash что \r является непечатным символом, так что вычисляется правильная длина строки приглашения, то есть вместо

PS1='\rstuff'

использовать

PS1='\[\r\]stuff'

Я думаю, что с \r в начале приглашения, это всегда символ нулевой длины, а не символ отрицательной ширины переменной длины, как это можно было бы рассмотреть, если это происходит в середине приглашения som где, поэтому это должно работать.

1
отвечен chepner 2014-04-07 16:26:08
источник

Другие вопросы bash carriage-return iterm2 ps1