-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 на самом деле может предполагать наличие управляющей последовательности <CONTROL‑H>. Для устранения этого недостатка необходимо во время работы в редакторе vi поступить следующим образом: нажмите клавишу [Ctrl] и одновременно с ней клавишу [V], затем отпустите клавишу [V] и нажмите клавишу [Н].
Ниже приводятся наиболее распространенные наименования команды 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
Команда stty позволяет настраивать терминал, принтеры или модемы, т. е. она весьма универсальна. Однако, применяя команду stty, будьте внимательны. Не следует изменять настройку ранее установленного параметра, поскольку это может привести к нарушению работоспособности системы.
13.4. Создание файла .logout
Одним из недостатков интерпретатора Bourne shell является отсутствие в нем файла .logout. Этот файл содержит команды, которые требуется выполнить непосредственно перед завершением сеанса работы в системе, т. е. до выполнения команды
exit.
Однако собственный файл .logout интерпретатора Bourne shell можно создать с помощью команды trap (более подробные сведения о команде trap и сигналах приведены далее в книге). Рассмотрим, как это делается. Отредактируйте свой файл .profile и разместите на последней строке приведенную ниже команду. Затем сохраните этот файл и выйдите из режима редактирования.
trap "$HOME/.logout" 0
Создайте файл .logout и введите в него любые команды, которые требуется выполнить. В этот файл можно включать сведения по своему усмотрению.
$ pg .logout
rm -f $HOME/*.log
rm -f $HOME/*.tmp
echo "Bye…bye $LOGNAME"
Файл .logout вызывается при выходе пользователя из системы. Когда пользователь выходит из среды интерпретатора shell, система посылает сигнал 0, который и означает выход из текущего интерпретатора shell. Прежде чем управление передается обратно интерпретатору shell, для продолжения процесса выхода из системы, упомянутый выше сигнал перехватывается командой trap. Эта команда находится в соответствующей строке файла .profile. Затем выполняется файл .logout.
13.5. Заключение
Каждый пользователь может настроить свой файл $HOME/.profile в соответствии с требуемыми задачами. В главе было показано, каким образом можно переопределять общесистемные параметры согласно своим предпочтениям. Существует большое количество способов настройки пользовательской рабочей среды. Можно указывать приветственные сообщения и вносить существенные изменения в параметры терминала.
ГЛАВА 14
Переменные среды и интерпретатора shell
Чтобы продуктивно работать с интерпретатором shell, нужно уметь управлять переменными этого интерпретатора. Переменными интерпретатора shell являются наименования, которым присваиваются значения. В качестве значений может выступать имя пути, имя файла или число. В любом случае интерпретатор shell воспринимает присвоенное значение как текстовую строку.
Существуют переменные двух типов — переменные интерпретатора (shell) и переменные среды. На самом деле имеется четыре типа переменных, но оставшиеся предназначены только для чтения. Эти переменные считаются специальными и применяются при передаче параметров в shell–сценарии.
В этой главе рассматриваются следующие темы:
• переменные интерпретатора shell;
• переменные среды;
• подстановка переменных;
• экспорт переменных;
• специальные переменные;
• передача информации в сценарии;
• применение позиционных параметров в системных командах.
14.1. Понятие о переменных интерпретатора shell
Переменные позволяют выполнить настройку среды. Они содержат информацию, которая применяется определенным пользователем. Благодаря этому система получает более подробные сведения о пользователях. Кроме того, переменные используются для хранения констант. Рассмотрим, например, переменную под именем editor. Существует довольно много текстовых редакторов, но как выбрать наиболее подходящий из них? Присвойте имя нужного редактора переменной editor, и тогда именно этот редактор будет применяться, когда используется программа cron или другие приложения. Система обращается к значению переменной editor и применяет указанный редактор как заданный по умолчанию.
Для регистрации в системе sybase следует ввести команду:
$ isql -Udavet -Pabcd -Smethsys