Я тут недавно игрушку написал. Ну, как написал, реализовал.
Вариант 2048, оптимизированный по занимаемому экранному пространству.
Но у нас тут люди серьёзные, поэтому рассмотрим проблемы, возникающие при реализации вывода скриптов.
Простой пример:
for i in {1..100}; do
printf "#"
sleep .3
done
Код просто выводит символы #, примерно 3 штуки в секунду. Всё работает нормально, пока пользователь не начинает что-то набирать на клавиатуре.
И тогда получаем:
######sb#sf#bg#sfbg#wfgb#wg#fg#b###^[[A#^[[B#^[[D#^[[A#^[[B##
Убрать эхо вывода на терминал просто:
stty -echo
Классная команда. После её выполнения нажатые клавиши не отображаются.
Всё работает, команды выполняются, результат отображается, а набранная команда — нет. Как при наборе пароля.
Вернуть всё просто:
stty echo
Но в скриптах желательно обрабатывать прерывания:
trap 'exit' INT HUP TERM
trap 'stty echo;tput cnorm' EXIT
# stop terminal echo
stty -echo
# hide cursor
tput civis
man stty
man tput
help trap








Комментарии