Служба поддержки:
Реквизиты оплаты:





Голосование
Реклама от Google:
98 Часть II. Приложение идеи
14.06.2012 02:50
|
Первый аргумент команды grep (не считая в данный момент опций), который служит образцом для поиска, должен быть задан всегда. Поэтому аргумент kill не интерпретируется как имя файла, даже если у нас оказался бы файл с таким же именем. Если бы, однако, аргумент kill был необязательным, то возникла бы проблема двусмысленности. Более того, такой необязательный аргумент не может быть представлен одиночной литерой и поэтому не может быть задан непосредственно через механизм опций. В UNIX нет единого соглашения для разрешения этой двусмысленности. Однако наиболее популярный способ — это использовать механизм опций для указания наличия далее определенных аргументов. Все это звучит сложно, поэтому лучше привести пример. Мы выберем средство, вынашиваемое нами в мечтах о системе UNIX будущего. Им является оружие, позволяющее искоренять авторов, пользующихся определенными словами, которые нас раздражают. Это оружие представляет собой необязательное вредное слово (hated-word), которое можно задавать в качестве аргумента команды гш. Если вы наберете:
то эта новая команда rm проверит, содержит ли файл document в личном каталоге пользователя crass слово conceptualize, и если да, то не только уничтожает этот порочный файл, но также уничтожает все другие файлы в личном каталоге crass — независимо от установленных для них полномочий. Хорошо бы еще, чтобы эта воображаемая команда rm изменяла пароль пользователя crass на случайную комбинацию, так чтобы он уже никогда больше не мог войти в систему. В данный момент эта команда rm имеет один недостаток: ее синтаксис двусмысленный, поскольку аргумент вредное слово — необязательный. Поэтому неясно, является лп conceptualize именем файла или вредным словом. Чтобы разрешить эту двусмысленность, представим синтаксис команды в виде
Опция —h указывает, что следующим аргументом является вредное слово, а не имя файла. (Заключительная мысль по этому поводу: теперь эта книга содержит слово conceptualize — оно встречается даже несколько раз. Нам следует быть более осторожными, когда осуществятся наши мечты о новой команде rm, а также когда будет реализована новая команда spell.) |