Структура команды

Кроме ряда символа, которые являются специальными про вводе, некоторые являются специальными при выводе: переставляет курсор, прекрашивает буквы, и так далее. Такие управляющие последовательности (будем отличать их от упр. символов) вводятся для того, чтобы не отменять того, что терминал тупой. Терминал --- такая штука навроде телетайпной ленты. То, что некоторые последовательности к чему-то приводят, терминалу неинтересы, они интересны атворам программ. Таки образом, мы сравнительно за недорого можем первратить терминал из интерфейса коммандной строки в интерфейс как формочки. Многие знают про mc. mc не пользуется никакими графическими примочками, и тот псевдографич. вывод определённых байтиков в опр. места. И лектор говорил, что есть дона беда с упр. посл. --- у разных терминалов они разные. Дело в том, что раньше терминалы были не программами а железаками, делали их те, кто по совместительству делал ..., и понапридумывали их все. И для того, чтобы свести это к единому знаменателю, придумали это понаписать в одну БД. Для справки, в линуксе все те эмуляторы терминала, будут примерно одного типа --- vt100. vt100 --- базовый тип, над ним нарастают разные vt200, xterm, linux. И хоть железяки такие не выпускают, эмуляторы могут отличаться.

Идея интерфеса командной строки состоит в том, что вводим некоторые высказывания, состоящие из слов, команда состоит из операции и необязательных параметров.

Это то, что вы вводите в командной строке. Если вы говрите ls -s a*, то ls --- операция, -s, a* --- параметры, причём a* раскрывается в несколько параметров.

Операции могут быть двух видов: команда самого шелла, для команды никакой новый процесс запускать не надо. Второй вид --- программа. Что касается параметров, они отже двух видов: объекты и ключи. В приведённом примере параметр-объект --- file, параметр-ключ --- -s. Между ними будут разделители. Командная строка читается как предложения, предложения состоят из слов, слово --- посл. символов, не явл. разделителем. У этой команды два параметр. В чём разница? Что касается параметров-объектов, то это такие ..., это просто некие объекты для нашей программы. Для ls --- имена файлов, для которых надо выводит информацию Для echo --- объекты --- строки, которые надо вывести. Параметр-объект именует объект, с которым будет работать программа. Ключ имеет несколько наукообразное название --- модификатор выполнения. ls выводит информацию о файлах, и если ключей нет, то выводит только имена. Ключ -s указывает, что нужно выводить некоторую дополнительную информацию --- размер файла в блоках.

Традиционно договорились, что ключи в unix начинаются на минус. Ключи бывают двух видов, во-первых, однобуквенные. Чем хороши однобуквенные ключи? Если использовать принцип аббревиативности (ключ начинается на ту же букву, что и слово, которое он символизирует), то их достаточно просто запомнить и достаточно легко вписать в командную строку. Клчюей у ls много. Кроме того, можно склеить несколько ключей, указав их с одним минусом: -saF. Но принцип аббревиативности тяжело соблюдать, т.к. букв много и они часто бывают заняты, в итоге ключи уже плохо запоминаются. Поэтому ещё есть полнословные ключи, т.н. gnu-style. Такой ключ предваряется двумя минусами, дальше идет целое слово или даже несколько слов. Писать всё это безобразие руки отвалятся, но понятно, что если написано –-long, то понятно, о чёми речь, а если -l, то не сразу. В силу того, что есть удобные библиотеки для разбора командной строки, большинство программ имеет и такие, и сякие ключи. Обычно, весь набор ключей представлен в полнословном варианте и некоторое подмножество --- однобуквенными эквивалентами. . Итак, когда мы выводим команду, она является некоей операцией, остальное будут параметрами, ключи бывают тоже двух видов. Лектор надеется в ближайшее время делать страничку, посвящённую лекциям, и там он сошлётся на учебник, где есть больше. Этот вопрос пока закрыли.

Лектор хочет рассмотреть. тему, связанную с перенаправлением ввода-вывода. Просто здесь, по нормальному плану, надо бросить всё и рассказать про то, как ман читать. Но сегодня всё-таки про терминалы.

Дело в том, что некоторые символы в командной строке интерпретируются самим шеллом и не являются командой в командной строке. На самом деле шелл разделяет символы на три класса: разделители, неспециальные символы, специальные символы. Один символ лектор уже упомянул, это символ *.


Сведения о ресурсах

Готовность (%)

Продолжительность (ак. ч.)

Подготовка (календ. ч.)

Полный текст (раб. д.)

Предварительные знания

Level

Maintainer

Start date

End date

0

1

1

1

1

ConstantinYershow, ОльгаТочилкина, MaximByshevskiKonopko


CategoryLectures CategoryCmc CategoryUneex

LecturesCMC/LinuxShell2008/02/01CommandStructure (last edited 2008-07-24 22:12:45 by eSyr)