Редактировать: Этот ответ SuperUser может помочь вам очистить ввод перед ожиданием нажатия клавиши: https://superuser.com/a/622205
Чтобы сделать то, что вы хотите, вы должны либо:
- Отключение повторения клавиши перед чтением пользовательского ввода.
или
- Обнаружение события KeyUp перед принятием нового ввода.
Краткий ответ: это невозможно в командной консоли.
Длинный ответ: в большинстве случаев это невозможно и, конечно, не переносимо.
Нет средств для обработки событий нажатия клавиш и нажатия клавиш. в любой консольной среде Unix tty, а не в Bash, из-за того, как работают консоли и терминалы.
Терминальное устройство tty работает только с символьными потоками.
Выполнение того, что вы запрашиваете с помощью своегоСценарий требует низкоуровневого доступа к устройству клавиатуры.
Существуют способы сделать это локально, но это совершенно не тривиально, полагаться на протокол X-Window или локальный и привилегированный доступ к устройству клавиатуры.
Я нашел этот подробный пост в блоге, который вы можете прочитать, если хотите узнать больше, почему так сложно обнаружить события KeyUp в Linux:
https://blog.robertelder.org/detect-keyup-event-linux-terminal/