Выбрать главу

Команда «date» (Рис. 1-3) выводит текущую дату и время.

Рис. 1-3

Команда «cal» выводит календарь (Рис. 1-4).

Рис. 1-4

Поданная без аргументов, команда «cal» выводит календарь на текущий месяц. Однако она может вывести календарь и на другой месяц, а также на целый год (Рис. 1-5).

Рис. 1-5

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

Синтаксис (допустимые значения и, во многих случаях, порядок следования) аргументов зависит от конкретной команды, так же, как их семантика (смысл).

Нарушение синтаксиса (синтаксическая ошибка оператора) влечет за собой сообщение об ошибке (Рис. 1-6).

Рис. 1-6

Иногда оператор может ввести команду, корректную синтаксически, но не соответствующую задаче, то есть совершить семантическую ошибку. В следующем примере (Рис. 1-7) Алиса хотела получить календарь на апрель пятого года, но перепутала порядок следования аргументов.

Рис. 1-7

Результатом выполнения команды стал вывод календаря за май 4 г. У программы, исполняющей команду, во многих случаях нет шанса «догадаться» о семантической ошибке. В данном случае Алиса, возможно, заметит свою ошибку, поскольку календарь предваряется названием месяца и года, но далеко не всегда ошибка будет такой очевидной17.

Ситуация, когда команда, допускающая передачу ей параметров, предполагает некоторые значения этих параметров, если они ей не переданы явно, достаточно типична. В этом случае говорят о поведении команды по умолчанию18. Например, команда cal по умолчанию выводит календарь на текущий месяц.

Страницы руководства по простым командам

Текущая версия стандарта на ОС описывает 176 команд. В различных системах их доступно от нескольких десятков до нескольких тысяч, и выучить детали синтаксиса и семантики каждой практически невозможно. Поэтому для систем, поддерживающих мобильность пользователей, стандартом предусмотрена выдача электронных страниц руководства по команде «man»19. Например, «man cal» должна вывести информацию, соответствующую приведенной для команды «cal» в Справочных материалах.

В некоторых случаях названия сущностей, описанных в различных страницах руководства, совпадает. Например, названию «link» соответствует не только команда операционной системы, но и системный вызов (используемый программистами). В таком случае можно явно указать номер требуемого раздела. Команды ОС описаны в разделе 1, соответственно, получить страницу руководства по команде «link» можно командой «man 1 link»20.

В большинстве случаев вывод «man» не поместится на экране терминала. В этом случае вывод будет автоматически пропущен через так называемый фильтр постраничного вывода.

Подобно текстовому редактору, фильтр постраничного вывода отображает текст на экране, позволяет «пролистывать» его вверх или вниз, но без возможности редактирования. В большинстве случаев в качестве фильтра будет выступать либо стандартная команда «more», либо команда «less». В любой из них прекратить отображение можно нажатием клавиши «q», пролистнуть текст на экран вперед – клавишей «f», на экран назад – «b».

1.5 Файлы и файловые структуры

Создание и удаление файлов

Именем файла в открытой ОС может быть любая строка поддерживаемых символов, не содержащая нулевого символа21 и символа косой черты («/»), но рекомендуется ограничиться символами, входящими в переносимый набор символов имен файлов. Регистр (заглавность или строчность) букв является значимым.

Рис. 1-8

Далее Алиса будет применять имена из символов, входящих в переносимый набор, а также кириллических букв, входящих в русский алфавит (Рис. 1.8).

Создать файл можно командой «touch», указав ей в качестве аргумента имя несуществующего файла. До этого стоит удостовериться, что такого файла действительно не существует, с помощью команды «ls» (сокращение от английского «list» («перечислить»)), выводящей список файлов (если они существуют), имена которых перечислены в качестве ее аргументов (Рис. 1-9).

Рис. 1-9

На Рис. 1-10 среди аргументов, указанных в командной строке, присутствует «-l» («эль»). Аргумент, начинающийся с дефиса, называется ключом команды. Большинство стандартных команд могут применяться с ключами, модифицирующими их действие. Аргумент, не являющийся ключом, называется операндом.

Рис. 1-10

Ключ «-l» задает «длинный» формат вывода команды. Перед списком файлов выводится строка с количеством блоков (обычно 512-байтных), занимаемых перечисленными файлами. Файлу соответствует при этом строка-список из семи полей (они разделены символом табуляции, отображаемым при выводе на экран пробелом или серией пробелов), перечисленных в таблице на Рис. 1-11.

Рис. 1-11

Поле «размер» – это размер или длина файла в байтах. Алиса лишь создала файл, но ничего не записала в него; такой файл имеет нулевую длину и называется пустым файлом.

Тем не менее, у него есть все атрибуты файла, включая время последней модификации (в данном случае «последней модификацией» явилось само создание файла) и собственно имя.

Удалить существующий файл можно командой «rm» с именем файла в качестве аргумента (Рис. 1-12).

вернуться

17 По поводу приведенного примера заметим еще, что год «4» соответствует не две тысячи четвертому, и не тысяча девятьсот четвертому годам, а ровно четвертому году от Р.Х.

вернуться

18 «By default», т.е. «при отказе» от явного указания параметров.

вернуться

19 Сокр. от англ. manual – «руководство».

вернуться

20 В документации, литературе и переписке часто имена команд ОС указываются с цифрой 1 в скобках, т.е. вместо «команда “link”» пишут «link(1)». Поскольку мы (почти) не обсуждаем сущностей, могущих оказаться омонимичными именам команд, мы такого соглашения не принимаем.

вернуться

21 Нулевой символ не может быть так просто введен с клавиатуры, поэтому сейчас вам не нужно об этом беспокоиться.