Простая команда

Простая команда – это строка, состоящая из:

(необязательных) присвоений значений переменным окружения команды;

(необязательного) имени команды;

(необязательных и допустимых только после имени команды) аргументов команды.

Эти три части команды разделяются промежутками, в качестве которых обычно выступает символ пробела[16]. Отдельные аргументы также разделяются промежутками. Промежутки в начале и конце строки игнорируются, так же, как и дополнительные промежутки (например, второй идущий подряд знак пробела).

Выше мы уже познакомились с командой «exit», которая подавалась (вводилась) без аргументов. Вот еще две команды, которые могут подаваться без аргументов: «date», «cal». Обе они относятся к датам календаря.

Команда «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 по умолчанию выводит календарь на текущий месяц.