Интерфейс командной строки
Речь идёт о чём: речь идёт о таких вещах, которые некоторым и объяснять-то не надо. Это место, которое совмещает интерфейс данных и инт. упр., причём интерфейс текстовый.
Процесс состоит в том, что мы подаём некий текст, в ответ приходит текстовая же диагностика. Текст этот представляет собой апелляцию к имеющемуся инструментарию. Единый терминал, объект инт. упр. и данных.
Команда --- представляет собой апелляцию к имеющемуся инстр. В случае, кода речь идёт о ИКС, то вид у неё <утилита> <параметры>. Что такое утилита? утилита --- некая программа, которая где-то там лежит, и когда вводится имя, то интерпретатор понимает, что надо её запустить. Команды могут быть встроенными.
Встроенные команды. Тем самым мы начинаем вести борьбу с удвоением сущностей. Когда работаем в ком. строкой, не задумываемся, что вызываем, утилиту или встроенную команду. Не задумываемся, потому что имеют единый интерфейс, и важны различия в тех же деталях.
Остаётся суперпозиция. Можно объединять команды, имеется алгоритмически полный язык, кроме того, он насыщен возможностями, специфичными для интерпретаторы командной строки.
Пример: попробовать написать программу, которая деалет ls | wc. Что делает эта команда: ls выдаёт список файлов, а wc считает количество строк, слов и символов в выдаче.
Всё это будет впереди.
Наконец, чтобы работать с шеллом было эффективно, мы не забываем, что эта штука обеспечивает взаимодействие человека и компьютера, и в таком устройстве должно быть предусмотрены функции для эффективной работы.
Помимо того, что шелл является ЯП, он является средством редактирования командной строки.
Для тех, кто совсем не в танке: для того, чтобы управление происходило компьютером, некоторые вводимые с клавиатуры символы должны воспр. не как текст, а как упр. символы. Например: вводим командную строку, как понять, когда он должен начать интерпретировать. Для этого есть специальный символ: перевод строки. Обычно эти спецсимволы перед. для упр. интерпретаторам, иногда, для управления системой. Пример: запустили что-то, интерпретатор ждёт, программа работает, тогда посылаем Ctrl-C.
... Тем самым мы придерживаемся условия, что интерфейс управления --- текстовый.
Это было краткое введение по всему этому многообр., по нему будем расск. в ближайшее время.
Осталось 15 минут, и лектор хочет посвятить их проблемам, которые интересны меньшинству:
terminal capabilities
Год назад была лекция, где описывались виды инт., и там разделялся ИКС и терминальный.
В ИКС нет никакого квадратика, есть точка, в которую мы вводим команды, но у нас есть терминал, и он представляет собой прямоугольник.
... и Интерфейсом терминальным, который предст. собой матрицу знакомест. Вопрос: мы вроде только что договорились, что наше терм. устройство умеет передавать байты, то есть, что это точка, а не матрица. Мы ничего не говорили про координаты. Как нам теперь от этого избавиться: избавиться можно, введя две хитрых сущности: первая сущность называется курсор. Что такое курсор: это индикатор того места, куда введётся символ. Второе: помимо наличия курсора, договариваемся, как некоторые символы являются упр для компьютера, так и некоторые выводимые символы управляют терминалом. То есть, есть символы двух родов: управляют компьютером и терминалом. Например, перевод строки он не символ, он переводит строку. Существуют гораздо более хитрые символы: переместить курсор в координаты 20,10. Зачем это нужно: устройство продолжает оставаться тупым. Тем самым, вводя понятие упр. символов терминала, мы избегаем дополнительных апп. ухищрений за искл. того, что терминал должен уметь распознавать символы. Но поскольку байтов разных мало, то есть управляющие последовательности. Есть специальный символ "начало упр. посл.", а за ним могут идти обыкновенные символы, но они интерп. как упр. послед. И вывод упр. последовательности приведёт, например, к изменению цвета или к перемещению курсора. Таких последовательностей чёртова прорва. Хуже всего, что за время сущ. терминалов их накопилось несколько сотен, и в каждом из них упр. посл. разные. Для того, чтобы этим как-то управлять, есть две БД терминалов, termcap и terminfo, в них описаны всевозможные функции терминалов, и какие можно выполнять дейтсвия. Кроме того, у термкапа есть язык программирования свой. Для того, чтобы посмотреть, что умеет конкретно ваш терминал, есть infocmp ,tset. Для того, что бы непоср. в шелле спозиц. курсор, то есть tput, после которого идёт termnfo/termcap capability. Терминал определён в $TERM. Для использования этого в программировании есть библиотека ncurses.
Сведения о ресурсах
Продолжительность (ак. ч.) |
Подготовка (календ. ч.) |
Полный текст (раб. д.) |
Предварительные знания |
Level |
1 |
1 |
1 |
|
1 |