Из этого правила могут быть исключения. Есть команды, не имеющие опций (apropos), а другие – аргументов (formail). Команда archне имеет ни опций, ни аргументов.
Опции определяют условия выполнения команды, а аргументами могут быть разные объекты, на которые воздействует команда. Примерами последних являются: имена: файлов, каталогов, пользователей, узлов сети и многое другое. У команды useradd аргументом является имя_пользователя, а все остальное – опции. К примеру, одна из опций означает, что у нового пользователя домашний каталог будет иметь имя, записанное после -d.
Сделаем небольшое отступление, для тех, кто программирует на Си. Приведем фрагмент программы (позаимствованный из примеров среды разработки Borland Turbo C), распечатывающей аргументы функции main. Последняя определяется так.
int main(int argc, char *argv[], char *env[])
Три ее аргумента означают следующее:
argc – количество параметров, переданных при запуске программы, то есть записанных в командной строке. Они могут быть опциями и аргументами, задаваемыми при вызове системных утилит.
char *argv[]- значения параметров, переданных при запуске программы.
char *env[] - значения переменных окружения оболочки .
/* Program ARGS.C */
#include <stdio.h>
#include <stdlib.h>
int main(int argc, char *argv[], char *env[])
{
int i;
printf("The value of argc is %d \n\n", argc);
printf("These are the %d command-line arguments passed to"
" main:\n\n", argc);
for (i = 0; i < argc; i++)
printf(" argv[%d]: %s\n", i, argv[i]);
printf("\nThe environment string(s) on this system are:\n\n");
for (i = 0; env[i] != NULL; i++)
printf(" env[%d]: %s\n", i, env[i]);
return 0;
}
Теперь изучим общие правила задания опций. По способу их записи выделим две группы. Первые записываются одной буквой, перед которой ставиться один знак минус (дефис). Опции другой группы «наделяют» двумя такими знаками, после которых ставиться слово. Например, большинство команд с опцией -v или --version выводят на экран ее версию. Аналогично помощь по использованию некоторых команд можно получить, используя -h или --help. Однако это не является обязательным. Например, команда архивирования и разархивирования файлов gzip имеет такие два параметра (информация взята со страницы переведенных на русский язык man–страниц: http://www.opennet.ru/man.shtml?topic=gzip&category=1&russian=0):
-v, –verbose. Подробно. Показывать имя и уменьшения размера в процентах для каждого файла при сжатии или распаковке.
-V, –version.Версия. Показать номер версии и параметры сборки, затем выйти.
А рассматриваемая далее команда grep имеет такой параметр:
-v. Выдает все строки, за исключением содержащих образец.
Некоторые из команд имеют только однобуквенные опции, другие как в форме записи с одним дефисом, так и с двумя. Далее будет много раз встречаться команда ps. Ее опции следует давать без символа «-». Но если задать его так, будет выдано предупреждение, но команда все же выполнится.
Выше мы приводили формат строки, описывающей аргументы функции main. Первый и второй ее элементы связаны с параметрами, передаваемыми программе при ее запуске. Это определяет режимы работы программы.
Но возможность передать программе параметры при запуске существует не только для утилит командного режима. Также существуют параметры, передаваемые программам, запускаемым и в графическом режиме.
Вспомним, как изменялся вид окна программы Наутилус, в зависимости от параметров, записываемых в командной строке.