Учитывая описание задачи, вы не должны обрабатывать ввод посимвольно. Читать построчно - нормально. Чтение посимвольно вам не поможет.
Если вам не нужно ничего делать на Ctrl + C , кроме выхода из скрипта, то ничего не делайте. Это поведение по умолчанию.
Если вам нужно запустить какой-то пользовательский код на Ctrl + C (, который может закончиться или не закончиться выходом из скрипта ),в драйвере терминала есть встроенный механизм -. Нажатие этой клавиши отправляет сигналSIGINT . В оболочке определите ловушку для сигнала.
cleanup () {
… whatever you need to do before the script exits …
}
trap 'echo >&2 "Aborting"; cleanup; exit 130' INT
while IFS= read -r line; do
…
done
Мне не удалось установить его через apt, но flatpak работал:
flatpak install flathub com.valvesoftware.Steam
Проблема решена.
Спасибо @ajgringo619