Книга: Искусство программирования на языке сценариев командной оболочки
Пример 12-41. Захват нажатых клавиш
Пример 12-41. Захват нажатых клавиш
#!/bin/bash
# Захват нажатых клавиш.
keypresses=4 # Количество фиксируемых нажатий.
old_tty_setting=$(stty -g) # Сохранить настройки терминала.
echo "Нажмите $keypresses клавиши."
stty -icanon -echo # Запретить канонический режим.
# Запретить эхо-вывод.
keys=$(dd bs=1 count=$keypresses 2> /dev/null)
# 'dd' использует stdin, если "if" не задан.
stty "$old_tty_setting" # Восстановить настройки терминала.
echo "Вы нажали клавиши "$keys"."
# Спасибо S.C.
exit 0
Команда dd имеет возможность произвольного доступа к данным в потоке.
echo -n . | dd bs=1 seek=4 of=file conv=notrunc
# Здесь, опция "conv=notrunc" означает, что выходной файлне будет усечен.
# Спасибо, S.C.
Команда dd может использоваться для создания образов дисков, считывая данные прямо с устройств, таких как дискеты, компакт диски, магнитные ленты (Пример A-6). Обычно она используется для создания загрузочных дискет.
dd if=kernel-image of=/dev/fd0H1440
Точно так же, dd может скопировать все содержимое дискеты, даже с неизвестной файловой системой, на жесткий диск в виде файла-образа.
dd if=/dev/fd0 of=/home/bozo/projects/floppy.img
Еще одно применение dd -- создание временного swap-файла (Пример 28-2) и ram-дисков (Пример 28-3). Она может создавать даже образы целых разделов жесткого диска, хотя и не рекомендуется делать это без особой на то необходимости.
Многие (которые, вероятно, не знают чем себя занять) постоянно придумывают все новые и новые области применения команды dd.
- Пример 12-39. Использование seq для генерации списка аргументов цикла for
- Пример 12-40. Использование getopt для разбора аргументов командной строки
- Пример 12-41. Захват нажатых клавиш
- Пример 12-42. Надежное удаление файла
- Пример 12-43. Генератор имен файлов
- Пример 12-44. Преобразование метров в мили
- Пример 12-45. Пример работы с m4
- Пример установочного скрипта
- Пример из практики
- ПРИМЕР ПРОСТОЙ ПРОГРАММЫ НА ЯЗЫКЕ СИ
- Примеры получения статистики
- Пример применения метода «пять почему»
- Пример 12-8. Частота встречаемости отдельных слов
- 1.2.5. Пример программы
- Пример 17-10. Блочный комментарий
- Примеры
- 2. Пример создания базового отношения в записи на псевдокоде
- Пример 9-8. Содержимое $* и $@, когда переменная $IFS -- пуста
- 16.2. Комбинации клавиш