Европейский Университет в Санкт-Петербурге
Опубликован: 10.10.2005 | Доступ: свободный | Студентов: 1716 / 298 | Оценка: 4.30 / 3.85 | Длительность: 16:22:00
ISBN: 978-5-94774-820-8
Лекция 2:

Введение в UNIX. Интерфейс пользователя

< Лекция 1 || Лекция 2: 1234 || Лекция 3 >

Понятие терминала

Терминал - это экран и клавиатура, с помощью которых осуществляется связь с компьютером.

Терминалы бывают графические и текстовые. Графические терминалы могут работать и в графическом, и в текстовом режиме.

Терминал предназначен исключительно для ввода информации и ее отображения на экране. Терминалы бывают физическими (еще их называют реальными), виртуальными и псевдотерминалами (т.е. программами, которые "притворяются" терминалами ).

Физический терминал - это устройство, состоящее из экрана и клавиатуры, обычно подключенное к компьютеру через последовательный интерфейс, например, с помощью кабеля или модема. Если вы соединяетесь с UNIX-машиной с помощью эмулятора терминала через модем своего компьютера, позвонив на другой модем, подключенный непосредственно к UNIX-машине, то с точки зрения UNIX вы работаете на физическом терминале. В этом случае связка модем - телефонная сеть - модем рассматривается как единый кабель.

В старых версиях Solaris неофициально поддерживались виртуальные терминалы. В версии 9 эта поддержка отсутствует. Основа виртуального терминала - это монитор и клавиатура, непосредственно подключенные к компьютеру. Однако, хотя монитор всего один, виртуальных терминалов может быть несколько. Вы можете по очереди работать с разными виртуальными терминалами, нажимая клавиши Alt-Fх, где х - номер терминала. С монитором и клавиатурой связано несколько независимых виртуальных терминалов. При работе в графическом режиме надо использовать клавиши Ctrl-Alt-Fn для переключения между виртуальными терминалами.

Виртуальные терминалы, как правило, текстовые, хотя один из них может быть графическим.

Виртуальные терминалы чаще всего используются в компьютерах на платформе i386, потому что терминалы, подключаемые к компьютерам на других платформах, обычно постоянно работают в графическом режиме, а в этом режиме вместо нескольких виртуальных терминалов проще открыть несколько окон эмуляторов терминала. Виртуальные терминалы широко используются в Linux и FreeBSD.

При работе с графическим терминалом для получения нескольких терминалов достаточно просто открыть несколько окон и в каждом из них запустить терминальную программу. Так, в Solaris можно запустить несколько приложений, обозначенных в меню CDE как "console". Программа, которая запускается при выборе приложения "console", называется dtconsole. Выбрав в меню "This host", вы запустите терминальную программу dtterm.

Консоль - это терминал, который используется для загрузки операционной системы.

Проще говоря, если системный администратор при загрузке использует некий терминал для наблюдения за процессом загрузки и (возможно) вмешательства в него, то этот терминал называется консолью. Для UNIX-систем консоль - это либо непосредственно подключенный к компьютеру монитор и клавиатура, либо подключенный к первому последовательному порту терминал. В приложении к виртуальным терминалам консолью является первый виртуальный терминал (Alt-F1).

Псевдотерминал - это программа-эмулятор терминала, которая соединяется с UNIX-компьютером через сеть или запускается в графическом режиме (например, dtterm ).

Любой терминал (физический, виртуальный или псевдотерминал) может быть графическим. Эмулятор графического терминала базируется на программе X-Server. Подробнее об X-серверах и системе X-Window - в "лекции 15" курса "Администрирование ОС Solaris".

Текстовые терминалы могут отображать только текст и псевдографику. Мы будем рассматривать значительную часть команд Solaris в предположении, что мы работаем с текстовым терминалом. В то же время, когда в Solaris доступна и полезна программа с графическим интерфейсом, которая часто нужна системному администратору в работе, мы будем рассматривать и такие случаи.

Существует большое количество разных текстовых терминалов. Наиболее известны терминалы ANSI и VT-100. Разные терминалы отличаются друг от друга управляющими последовательностями. Например, чтобы передать терминалу команду "поднять курсор на одну строку вверх", терминалу VT-100 нужно передать последовательность <Esc>[A. Описания терминалов (и соответствующих управляющих последовательностей) содержатся в файле /etc/termcap и базе данных в подкаталогах /usr/share/lib/terminfo.

Переменная среды окружения TERM должна иметь значение типа терминала, на котором вы работаете. Возможно, ее придется переопределить, если в начале вашей работы система неверно определила тип вашего терминала. Фактический тип вашего терминала может отличаться от того, что принят в системе по умолчанию. Переопределение выполняется путем присваивания переменной нужного значения:

TERM='VT100'; export TERM

Вывести на экран значение переменной TERM можно командой

echo $TERM

Если переменная TERM определена неверно, терминал будет вести себя непредсказуемо. Например, при нажатии Enter не произойдет перевода строки, или при нажатии стрелки "вверх" на экране появится [[A, а курсор вверх не сдвинется. Некоторые терминалы практически совместимы между собой, например, ANSI и VT-100. Однако отдельные управляющие последовательности могут не совпадать. Поэтому лучше, чтобы в TERM был записан тип именно того терминала, на котором вы работаете.

Таблица 2.1. Управляющие комбинации клавиш
Ctrl-C прерывание выполнения программы (termination)
Ctrl-D конец ввода текста
Ctrl-S остановка вывода на экран
Ctrl-Q продолжение вывода на экран
Ctrl-U стирание введенной строки
Ctrl-Z остановка выполнения программы (suspend)
<backspace> удаление последнего введенного символа

Управляющие комбинации клавиш

Текстовый терминал воспринимает и передает активной программе коды следующих управляющих комбинаций клавиш, которые любая программа должна интерпретировать стандартным образом:

Некоторые терминалы не воспринимают клавишу <backspace> стандартным образом, вместо нее на таких терминалах можно использовать клавишу <Delete>.

В старых системах клавиша <Delete> могла использоваться вместо <Ctrl-C> для прерывания работы программы.

Команда Ctrl-D (конец ввода текста) может использоваться в командном интерпретаторе для выхода из него. При работе в текстовом режиме выход из командного интерпретатора, запущенного для пользователя при входе в систему (такой экземпляр интерпретатора называется login shell), означает автоматическое завершение сеанса работы с системой (logout).

В некоторых системах командный интерпретатор по умолчанию настраивается так, чтобы такого завершения работы не происходило. В этом случае выйти из системы пользователь может, только дав команду logout.

Настройка терминала: команда stty

Проверить, как настроен терминал, можно с помощью программы stty:

stty -a

Эта команда позволяет узнать все настройки терминала, в том числе скорость и другие физические параметры передачи символов, а также управляющие комбинации:

stty -a
speed 9600 baud;
rows = 24; columns = 80; ypixels = 490; xpixels = 570;
csdata ?
eucw 1:0:0:0, scrw 1:0:0:0
intr = ^c; quit = ^\; erase = ^h; kill = ^u;
eof = ^d; eol = <undef>; eol2 = <undef>; swtch = <undef>;
start = ^q; stop = ^s; susp = ^z; dsusp = ^y;
rprnt = ^r; flush = ^o; werase = ^w; lnext = ^v;
-parenb -parodd cs8 -cstopb hupcl cread -clocal -loblk
     -crtscts -crtsxoff -parext
-ignbrk -brkint -ignpar -parmrk -inpck -istrip -inlcr
     -igncr icrnl -iuclc
ixon -ixany ixoff -imaxbel
isig icanon -xcase echo echoe echok -echonl -noflsh
-tostop echoctl -echoprt echoke -defecho -flusho -pendin iexten
opost -olcuc onlcr -ocrnl -onocr -onlret -ofill -ofdel

Для настройки правильной реакции на стандартные комбинации клавиш (см. таблицу 2.1) нужно выполнить команды

stty susp '^z'
stty intr '^c'
stty erase '^h'

и т.д. Список параметров установки ( susp, intr, erase и другие) можно увидеть по команде stty -a или в руководстве ( man stty ).

< Лекция 1 || Лекция 2: 1234 || Лекция 3 >