Основы Slackware Linux

Wildcard Matching (шаблоны имён)


Практически любая оболочка позволяет использовать некоторые символы, подразумевая, ''здесь может быть всё что угодно''. Такие символы называются ''wildcards''; наиболее распространённые из них это ''*'' и ''?''. По соглашению, ''?'' обычно заменяет любой отдельный символ. Например, допустим у вас в каталоге есть файлы: example1.txt, example2.txt и example3.txt. Вы хотите скопировать все эти файлы (при помощи cp программы, которую мы опишем в разделе5.3 в другой каталог, скажем /tmp. Набирать cp example1.txt example2.txt example3.txt /tmp потребует слишком много усилий по печатанию всего этого текста. Гораздо проще написать cp example?.txt /tmp; ''?'' будет заменён на все встретившиеся символы ''1'', ''2'' и ''3''.

Что вы говорите? Всё равно слишком много надо печатать? Вы правы. Это ужасно; ведь у нас есть закон о труде, который защищает нас от таких ситуаций. Но к счастью, у нас в арсенале так же есть ''*''. Как уже упоминалось выше, ''*'' заменяет любое число символов, включая их отсутствие. Так что в случае, если кроме упомянутых выше файлов в каталоге ничего нет, мы можем просто сказать cp * /tmp и убьём их все одним выстрелом. Предположим теперь, что в том же каталоге есть файлы example.txt и hejaz.txt. И мы хотим скопировать фалы example, но не hejaz.txt; cp example*.txt /tmp сделает это для нас.

cp example?.txt /tmp, конечно, скопирует только наши первые три файла; в файле example.txt нет символа, подходящего под ''?'', так что этот файл будет оставлен в покое.



Содержание раздела