Next Previous Contents

14. Использование терминала

14.1 Введение

Это раздел об управлении интерфейсом компьютер-терминал и/или изменении установок терминалов при использовании терминала. Он объясняет (или указывает на объяснения) как пользователь терминала может управлять и просматривать интерфейс и как использовать различные команды, предлагаемые драйвером устройства. Он не объясняет, как использовать многие прикладные программы, оболочки или большинство Linux утилит. Две команды, обычно используемые в терминале:

  • clear (чтобы очистить экран)
  • reset (чтобы сбросить терминал)

14.2 Запуск терминала

Вы включаете питание терминала, нажимаете клавишу "возврат" (или "ввод") и затем получаете подсказку входа в систему. Затем в ответ на запрос печатаете ваше учетное имя и ваш пароль. Если ничего не происходит, удостоверьтесь, что хост работает правильно. Если хост выключен, тогда то, что вы печатаете на клавиатуре терминала может появляться на экране, так как и передающие, и принимающие штырьки на хосте могут быть соединены вместе, приводя к отображению на экране символов "от" компьютера. Если вы не можете зарегистрироваться, хотя хост работает, см. `` Поиск неисправностей ".

14.3 Драйвер устройства терминала

При печати в командной строке, оболочка (типа bash) читает то, что вы напечатаете и реагирует на это. То, что вы печатаете сначала проходит через драйвер терминала вашей операционной системы. Этот драйвер может транслировать некоторые символы (типа изменения символа "возврат", сгенерированного клавишей "возврат" в символ "новой строки"). Он также распознает некоторые управляющие коды, которые вы можете напечатать в клавиатуре типа ^C, чтобы прервать выполнение программы. Он также обычно отображает то, что вы напечатаете обратно на вашем дисплее.

Для настройки драйвера можно использовать ``stty".

14.4 Испорченный интерфейс терминала

Признаки

Когда изображение на дисплее выглядит неправильным или то, что вы печатаете, не отображается правильно, у вас вероятно испортился интерфейс терминала. Это может также быть ошибкой в программе, которую вы используете, аппаратный отказ или, возможно, неправильная настройка. Если все работало нормально, но внезапно произошел отказ, то может быть интерфейс испортился в результате ващих каких- либо действий. Интерфейс может быть испорчен двумя способами: посылкой двоичного файла на терминал и неправильным выходом из прикладной программы.

На терминал посланы двоичные символы

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

Чтобы этого не произошло, всегда просматривайте или редактируйте двоичный файл программами, разработанными специально для этой цели. Большинство редакторов и просмотрщиков нормально обрабатывает двоичный файл, так что интерфейс не разрушается. Некоторые из них могут отображать сообщение, говорящее вам, что они не могут редактировать двоичный файл. Но использование "cat ...." или "cp .... /dev/tty .." где .... - двоичный файл, пошлет двоичный файл на терминал.

Порча может также случиться при использовании программы связи, когда удаленный компьютер может послать двоичный файл на ваш экран. Имеется множество других способов, как это может случается. Даже предполагаемый ASCII файл может содержать нежелательные управляющие коды.

Чтобы поправить эту проблему терминал сбрасывают. Может иметься клавиша, которая делает это непосредственно на терминале (возможно в режиме установки), или вы можете пробовать напечатать или "reset", или "setterm -reset" (хотя вы не можете видеть то, что вы печатаете). Это действие пошлет строку reset из записи terminfo на терминал.

Неправильный выход из программы

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

Когда вы приказываете такому приложению завершиться, прикладная программа первым делом восстановливает установки stty на те, что были перед началом работы прикладной программы. Если вы неправильно вышли из программы (может случиться так, что, то что вы печатаете больше не отображается на экране), тогда вы можете оказаться в командной строке будучи в "прозрачном режиме".

Выйти из прозрачного режима и восстановить нормальный тип установок stty можно напечатав "stty sane". Однако, вы должны напечатать это только после нажатия клавиши "возврат" и закончивть это нажатием "возврат". Но нажатие клавиши "возврат" не оказывает действия, так как код "возврат" больше не транслируется в символ новой строки, чего ждет оболочка. Поэтому вместо "возврат" ввоодите ^J (символ новой строки). "sane" интерфейс терминала может не быть таким же обычным, но обычно это работает. "stty sane" может быть также полезен для выхода из интерфейса, разрушенного по другим причинам.

14.5 Специальные (управляющие) символы

Число управляющих символов, которые вы можете напечатать на клавиатуре, "захватываются" драйвером терминала и выполняют различные задачи. Чтобы увидеть эти команды управления, напечатайте: stty -a и посмотрите строки 2-4. Они - разъяснены в man stty. Они могут быть изменены на различные управляющие символы или заблокированs, используя stty. Таким образом ваши управляющие символы могут быть отличны от тех, что описаны ниже.

Они используются для редактирования командной строки, прерывания, прокрутки, и для прозрачной передачи следующего символа.

Редактирование командной строки

В то время как драйвер терминала имеет несколько команд для редактирования командной строки, некоторые оболочки имеют встроенный реальный редактор (типа "readline" в оболочке bash). Такой редактор - обычно включен по умолчанию, так что вам не надо делать что-либо, чтобы включить его. Если он доступен, то вы не нужно учить множество следующих команд, хотя они часто все еще работают наряду с редактором командной строки. Наиболее важные из них - это ^C (прерывание), ^D и прокрутка.

  • Delete-клавиша (stty показывает ее как ^?) стирает последний символ
  • ^U удаляет строку
  • ^W удаляет слово назад
  • ^R перепечатывает строку. Полезно главным образом на устройствах выдачи твердых копий??

Прерывание (и выход, приостановка, конец файла, Flush)

  • ^C прерывание. Выходит из программы и возвращает Вас к подсказке командной строки.
  • ^/ выход. То же самое как прерывание ^C, но более слабое. Также формирует дамп "основного" файла (который вам вероятно не нужен) в вашем рабочем каталоге.
  • ^Z приостановка. Останавливает программу и переводит ее в фон. Напечатайте fg, чтобы перезапустить ее.
  • ^D конец файла. Если печатается в подсказке командной строки, выходит из оболочки и переходит в состояние, в которм вы находились перед запуском оболочки.
  • ^O flush. Не реализовано в Linux. Посылает вывод в /dev/null.

Прокрутка

Если, что вы хотите остановить прокрутку нижней части экрана, то вы можете послать сигнал "останова" (^S или Xoff) на хост (предполагается, что управление потоком данных" Xon-Xoff включено). Посылка "сигнала продолжения" (^Q или Xon) возобнавляет прокрутку. Некоторые терминалы имеют клавишу "No Scroll", которая поочередно посылает Xoff и Xon. Если у вас аппаратное управление потоком данных

  • ^S остановить прокрутку (Xoff)
  • ^Q продолжить вывод на экран (Xon)
Если вы хотите и остановить прокрутку, и выйти, используйте ^C. Если вы хотите остановить прокрутку, чтобы делать кое-что еще, но хотеть сохранить программу в памяти, так чтобы вы могли вернуться к ней попозже, то используйте ^Z для приостановки.

Альтернативный метод прокрутки - конвейерный вывод через программы pager, такие как more, less или most. Однако, вывод может производиться не только через поток стандартного вывода, но и серез поток вывода ошибок, который pager не распознает. Чтобы исправить это, вы можете использовать переадресацию "2>&1", тогда pager заработает правильно. Зачастую проще использовать ^S и ^Q, если вам не требуется листать в обратном направлении.

В консоли PC (эмуляция терминала) вы можете листать в обратном направлении, используя Shift-PageUp. Это часто необходимо, так как прокрутка идет слишком быстро, чтобы использовать ^S. Если вы листали в обратном направлении, то Shift- PageDown будет листать снова вперед.

Прозрачная передача следующего символа

^V посылает следующий печатаемый символ (обычно управляющий символ) через драйвер устройства непосредственно, т.е. без какого-либо действия или интерпретации.

На экране отображаются два символа ASCII типа ^C.

14.6 Проверка интерфейса

Эти утилиты будут выдавать информацию о интерфейсе терминала:

  • gitkeys: показывает, какой байт(ы) каждая клавиша посылает главной ЭВМ.
  • tty: показывает, с каким портом tty вы соединены.
  • set: показывает значение переменной TERM (имя записи terminfo)
  • stty -a: показывает все установки stty.
  • setserial -g /dev/tty?? (подставьте нужное число вместо ??) показывает тип UART, адрес порта и номер IRQ.
  • infocmp: показывает текущую запись terminfo (меньшее количество комментариев)

14.7 Изменение установок терминала

Установки терминала обычно устанавливаются один раз, когда терминал устанавливается, используя процедуры установки в руководстве терминала. Однако, некоторые установки могут быть изменены, когда терминал используется. обычно вы не даете команд "stty" "setserial", когда терминал используется, поскольку они, вероятно, разрушат интерфейс терминала. Однако, есть установки, которые вы можете производить для изменения вида экрана терминала, или изменения его поведения без того, чтобы нарушить целостность интерфейса. Иногда эти изменения делаются автоматически прикладными программами, так что вам возможно не нужно иметь дело с ними.

Один прямой метод создания таких изменений состоит в том, чтобы использовать клавишу установки в терминале и затем использовать меню или что-то подобное, чтобы сделать изменения. Для такой операции вам надо знать терминал.

Другие 3 метода, чтобы делать изменения, посылают escape-последовательность с компьютера на терминал. Эти 3 примера демострируют различные методы установки негативного изображения:

  setterm -reverse
  tput -rev
  echo ^[[7m

setterm

Это - самая простая в использовании команда. Она использует длинные опции (но не использует перед ними -- ) и консультируется с базой данных terminfo, чтобы определить, какой код послать. вы можете изменять цвет, яркость, перенос строк, повторение клавиатуры, вид курсора, и т.д.

tput

Команда "tput" подобна "setterm", но вместо того, чтобы использовать обычные слова как параметры, вы должны использовать сокращения, используемые terminfo. Многие из сокращений очень краткие и трудны для запоминания.

echo

В примере "echo ^[[7m", который устанавливает негативное изображение, ^[ - символ ESC. Чтоб ввести его, напечатйте ^V^ [(или ^V, сопровождаемый клавишей escape).

Чтобы использовать этот метод "echo", вы должны выяснить какой код использовать из вашего руководства терминала, или из terminfo или termcap. Проще использовать setterm или tput, хотя echo выполнится немного быстрее. Так что вы могли бы использовать echo ... в скриптах шелл, которые имеют дело только с одним типом терминала.

Сохранение изменений

Когда вы выключаете терминал, сделанные вами изменения теряются (если вы не сохранили их в энергонезависимой памяти терминала, нажимая некие клавиши на терминале). Если вы хотите использовать их снова, без того, чтобы заново вводить, поместите команды в скрипт, или сделайте это функцией шелл. Затем выполните его, когда хотите сделать изменения. Один способ сделать изменения полупостоянными состоит в том, чтобы поместить команды в файл, который выполняет каждый раз при входе в систему или запуске компьютера.


Next Previous Contents

Наш баннер
Вы можете установить наш баннер на своем сайте или блоге, скопировав этот код:
RSS новости