Клавиша Backspace не работает в запущении скрипта удара

Я запускаю очень простой скрипт, который читает линию за линией и печатает вводимую строку назад к терминалу:

while read CMD; do
    echo $CMD
done

Это хорошо работает, но когда я пытаюсь отредактировать строку с backspace символ это печатает ^?вместо того, чтобы удалить символ. И когда я нажимаю Ctrl + backspace вывод ^H. Как это поведение могло быть зафиксировано так backspace удаляет символ вместо того, чтобы добавить эти символы? Я попробовал stty erase '^?' команда, но не успешно.

8
задан 15 August 2017 в 09:22

2 ответа

Проблема состоит в том, что существует много способов представить клавишу Backspace, но эти read команда не понимает всех их. Необходимо смочь настроить то, что точно отправляется при нажатии в†ђ Клавиши Backspace вводят настройки эмулятора терминала.

Принятие Вы используете gnome-terminal в качестве эмулятора, открываете Редактирование manu и нажимаете Profile на предпочтения . Переключитесь на вкладка Compatibility , и необходимо получить эти опции:

gnome-terminal → profile preferences → compatibility

Теперь можно измениться , клавиша Backspace генерирует: установка. У Вас есть эти пять опций ниже доступного, выбрал из. Я добавил в фигурных скобках, как они ведут себя в моей системе:

  • Автоматический (работы)
  • Управление-H (печать ^H вместо этого)
  • ASCII DEL (значение по умолчанию, работы)
  • Escape-последовательность (печать ^[[3~ вместо этого)
  • Стирание TTY (работы)
6
ответ дан 23 November 2019 в 05:45

У меня была та же проблема, использование избивают Терминал Gnome.

Обратите внимание, что на командной строке, клавиша Backspace работает как ожидалось, но когда моя программа (простой основанный на сокете TCP клиент чата) читает из stdin, backspace символьная печать (реагирует на экран), ^?вместо того, чтобы удалить последний знак.

Использовать # stty icanon позволить "канонический (приготовленный) режим". Посмотрите некоторое объяснение здесь https://unix.stackexchange.com/questions/131105/how-to-read-over-4k-input-without-new-lines-on-a-terminal

Еще некоторые предпосылки к моей проблеме/решению: у Меня была проблема, где я должен вставить больше, чем 4k символы. И во время того исследования, я велся к вышеупомянутой ссылке. Я использовал # stty -icanon отключить предел 4k, но потеряло способность использовать клавишу Backspace (стирание).

1
ответ дан 23 November 2019 в 05:45

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

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