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





Голосование
Реклама от Google:
Гл. 7. Команды и оболочка 103
14.06.2012 18:13
|
Пример 6 rm * уничтожает все файлы в текущем каталоге. Пример 7 rm /usr/aper/* удаляет все файлы пользователя aper при том условии, конечно, что у вас есть разрешение на их удаление. Этот пример показывает, что можно применять механизм металитер ко всем каталогам, а не только к текущему. Отметим, что списки имен файлов, порождаемые оболочкой, упорядочены в алфавитном и числовом порядке (например, Ь следует за а, а 2 — за 1). Строго говоря, порядок определяется кодом ASCII или каким-либо другим кодом, используемым в вашей системе литер. Такое упорядочение вполне естественно, поскольку оно точно такое же, как и упорядочение, используемое командой ls. Отметим также, что оболочка пытается расширять металитеры во всех аргументах — она не знает, какие из аргументов будут именами файлов. Поэтому, если вы напишите grep с* advice чтобы найти вхождения цепочки с* в файле advice, то оболочка автоматически превратит это в grep commentl comment2 comment3 commerce advice
затем grep будет прилежно искать слово commentl в каждом из четырех специфицированных файлов. Скорее всего она его не найдет, и поэтому, верная традиции UNIX, ничего не ответит. Результатом этого является то, что если вы ясно не представляете, какую закулисную работу выполняет оболочка, то останетесь при мнении, что цепочка с* не содержится в файле advice, а это может быть далеко от истины. Итак, бывают случаи, когда желательно, чтобы оболочка оставила вас в покое, и оболочка милостиво предоставляет механизм для осуществления этого. Все, что заключено в кавычки, трактуется оболочкой буквально. Поэтому нам следовало записать исходную команду grep в виде grep 'с*' advice Использование кавычек позволяет преодолеть еще одну проблему. Если бы вы захотели найти слова he said (он сказал) в файле articlel, то команда |