13.3. Применение команды stty
Команда stty позволяет установить характеристики используемого терминала. Чтобы уточнить текущие установки опций stty, примените команду stty -a.
$ stty -а
speed 9600 baud; rows 24; columns 80; line=0
intr=^C; quit=^\; erase=^?; kill=^U; eof=^D; eol=
eol2=
next=^V; flush=^0; min=1, time=0;
-parenb -parodd cs8 -hupci -cstopb cread -clocal -crtscts
-ignbrk -brkint -ignpar -parmrk -inpck -istrip -inlcr -ignor icrnl ixon
-ixoif -iuclc -ixany -imaxbel
opcst -olcuc -ocrnl onlcr -onocr -onlret -ofill -ofdel n10 cr0 tab0 bs0
vt0 ff0 isig icanon iexcen echo echoe echok -echonl
-noflsh -xcase
-tostop -echoprt echoctl echoke
Довольно часто при настройке терминала не работает клавиша [Backspace], т. е. при ее нажатии не происходит удаление символа. Данная команда stty сообщает, что в качестве клавиши [Backspace] используется комбинация клавиш ^?. Однако эта комбинация не действует. С помощью комбинации клавиш [Ctrl+H] можно вернуться на одну позицию и удалить предыдущий символ. Поэтому для устранения данной проблемы воспользуемся командой stty. Общий формат установки параметров команды stty в командной строке:
stty символ
Ниже показана установка управляющей последовательности ^H, соответствующей коду клавиши [Backspace]:
$ stty erase '\^H'
При использовании приведенной выше команды stty в файле .profile могут возникнуть затруднения. Команда stty на самом деле может предполагать наличие управляющей последовательности
Ниже приводятся наиболее распространенные наименования команды stty.
Наименование | Клавиша | Значение |
intr | ^C | Завершение процесса |
echo | Подключение режима отображения | |
-echo | Отключение режима отображения | |
eof | ^D | Конец файла, выход из системы |
kill | ^Y | Удаление строки |
start | ^Q | Начало прокрутки текста на экране |
Stop | ^S | Завершение прокрутки текста на экране |
Весьма полезен следующий параметр команды stty:
stty -g
Этот параметр позволяет сохранить результаты выполнения команды stty в удобочитаемом формате. Затем эти результаты можно назначить команде stty, как показано выше на примере листинга файла /etc/profile. Для этого достаточно разместить содержимое команды stty -g в соответствующей переменной, ввести необходимые изменения в команду stty, а по завершении передать эти изменения команде stty.
Этим приемом удобно воспользоваться, если при изменении параметров команды stty вы нечаянно нарушили нормальную работу терминала. В этом случае можно легко восстановить исходные параметры терминала. Ниже приведен пример сохранения и последующего восстановления текущих установок команды stty. В данном случае команда stty -echo применяется для отключения режима отображения, а в конце сценария восстанавливаются исходные параметры.
$ pg password
#!/bin/sh
#пароль
#отображение процесса восстановления среды
stty SAVEDSTTY=`stty -g`
stty -echo
echo "\nGive me that password :\c"
read PASSWD
echo "\nyour password is $PASSWD
stty $SAVEDSTTY
$ sttypass
Give me that password : your password is bong
В Linux …
Чтобы сообщить Linux, что в строках предполагается применение управляющих символов, команду echo следует вводить как "echo -e".
SAVEDSTTY=`stty -g`
stty -echo
echo "\nGive me that password :\c"
read PASSWD
echo "\nyour password ls $PASSWD"
stty $SAVEDSTTY