Linux шаблоны имен файлов

Linux шаблоны имен файлов

чБЦОПЕ УЧПКУФЧП ВПМШЫЙОУФЧБ ЛПНБОДОЩИ ПВПМПЮЕЛ УЙУФЕНЩ Linuxљ— УРПУПВОПУФШ ПВТБЭБФШУС Л ВПМЕЕ, ЮЕН ПДОПНХ ЖБКМХ РП ЙНЕОЙ У ЙУРПМШЪПЧБОЙЕН УРЕГЙБМШОЩИ УЙНЧПМПЧљ— ЫБВМПОПЧ. у РПНПЭША ЬФЙИ ЫБВМПОПЧ (wildcards) НПЦОП ПВТБЭБФШУС ЛП ЧУЕН ЖБКМБН, ЙНЕОБ ЛПФПТЩИ УПДЕТЦБФ, УЛБЦЕН, УЙНЧПМ n.

ыБВМПО * ПВПЪОБЮБЕФ МАВПК УЙНЧПМ ЙМЙ УФТПЛХ УЙНЧПМПЧ Ч ЙНЕОЙ ЖБКМБ. лПЗДБ Ч ЙНЕОЙ ЖБКМБ ЙУРПМШЪХЕФУС УЙНЧПМ *, ЛПНБОДОБС ПВПМПЮЛБ ЪБНЕОСЕФ ЕЗП ОБ ЧУЕЧПЪНПЦОЩЕ ЧБТЙБОФЩ, ЛПФПТЩЕ ЧУФТЕЮБЕФУС Ч ЙНЕОБИ ЖБКМПЧ Ч ТБУУНБФТЙЧБЕНПН ЛБФБМПЗЕ.

рТЙЧЕДЈН РТПУФПК РТЙНЕТ. дПРХУФЙН, Х РПМШЪПЧБФЕМС мБТТЙ Ч ФЕЛХЭЕН ЛБФБМПЗЕ ЙНЕАФУС ЖБКМЩ frog, joe Й stuff.

дМС ФПЗП, ЮФПВЩ ПВТБФЙФШУС ЛП ЧУЕН ЖБКМБН, Ч ЙНЕОЙ ЛПФПТЩИ УПДЕТЦЙФУС УЙНЧПМ o, ОБДП ЙУРПМШЪПЧБФШ ЛПНБОДХ

нПЦОП ЧЙДЕФШ, ЮФП ЧУСЛЙК ТБЪ, ЛПЗДБ Ч ЙНЕОЙ ЧУФТЕЮБЕФУС УЙНЧПМ *, ПО ЪБНЕОСЕФУС ЧУЕНЙ ЧПЪНПЦОЩНЙ ЧБТЙБОФБНЙ, ЛПФПТЩЕ ЧУФТЕЮБАФУС Ч ЙНЕОБИ ЖБКМПЧ Ч ФЕЛХЭЕН ЛБФБМПЗЕ.

ыБВМПО, УПУФПСЭЙК ЙЪ ЕДЙОУФЧЕООПЗП УЙНЧПМБ *, РПДИПДЙФ ЛП ЧУЕН ЙНЕОБН ЖБКМПЧ, РПУЛПМШЛХ ЬФПНХ ЫБВМПОХ РПДИПДСФ ЧУЕ РПУМЕДПЧБФЕМШОПУФЙ УЙНЧПМПЧ. рТЙНЕТ:

рТЙЧЕДЈН ЕЭЈ ОЕУЛПМШЛП РТЙНЕТПЧ:

рТПГЕУУ ЪБНЕОЩ УЙНЧПМБ * ОБ РПУМЕДПЧБФЕМШОПУФШ ЙНЈО ЖБКМПЧ ОБЪЩЧБЕФУС ТБУЫЙТЕОЙЕН ЫБВМПОБ (wildcard expansion). тБУЫЙТЕОЙЕ ЫБВМПОБ РТПЙЪЧПДЙФУС ЛПНБОДОПК ПВПМПЮЛПК. пЮЕОШ ЧБЦОП ЪОБФШ, ЮФП ПФДЕМШОБС ЛПНБОДБ, ФБЛБС ЛБЛ ls , ОЙЛПЗДБ ОЕ « ЧЙДЙФ » УЙНЧПМ * Ч УРЙУЛБИ УЧПЙИ РБТБНЕФТПЧ. йНЕООП ЛПНБОДОБС ПВПМПЮЛБ РТПЙЪЧПДЙФ ТБУЫЙТЕОЙЕ ЫБВМПОБ ФБЛЙН ПВТБЪПН, ЮФП ВХДХФ РЕТЕЮЙУМЕОЩ ЧУЕ ХДПЧМЕФЧПТСАЭЙЕ ЫБВМПОХ ЙНЕОБ ЖБКМПЧ. фБЛЙН ПВТБЪПН, ЛПНБОДБ

ТБУЫЙТСЕФУС ЛПНБОДОПК ПВПМПЮЛПК Ч ЛПНБОДХ

уДЕМБЕН ЧБЦОПЕ ЪБНЕЮБОЙЕ П ЫБВМПОЕ *: ПО ОЕ ТБУРПЪОБЕФ ЙНЕОБ ЖБКМПЧ, ЛПФПТЩЕ ОБЮЙОБАФУС У ПДОПК ФПЮЛЙ ( .). ьФЙ ЖБКМЩ ТБУУНБФТЙЧБАФУС ЛБЛ УЛТЩФЩЕ (hidden). уЛТЩФПУФШ ЬФЙИ ЖБКМПЧ ЪБЛМАЮБЕФУС Ч ФПН, ЮФП ПОЙ ОЕ ЧЛМАЮБАФУС Ч УРЙУПЛ, ЧЩДБЧБЕНЩК ПВЩЮОЩНЙ ЛПНБОДБНЙ ls , Й ОЕ ТБУРПЪОБАФУС ЫБВМПОБНЙ, УПДЕТЦБЭЙНЙ УЙНЧПМ *.

рТЙЧЕДЈН РТЙНЕТ. тБОШЫЕ НЩ ЗПЧПТЙМЙ, ЮФП Ч ЛБЦДПН ЛБФБМПЗЕ ЕУФШ ДЧБ УРЕГЙБМШОЩИ ЬМЕНЕОФБ: ЬМЕНЕОФ . ПВПЪОБЮБЕФ ФЕЛХЭЙК ЛБФБМПЗ, Б ЬМЕНЕОФ .. ПВПЪОБЮБЕФ ТПДЙФЕМШУЛЙК ЛБФБМПЗ. пДОБЛП, РТЙ ЙУРПМШЪПЧБОЙЙ ЛПНБОДЩ ls ЬФЙ ДЧБ ЬМЕНЕОФБ Ч УРЙУЛЕ ОЕ РПСЧМСАФУС:

пДОБЛП, ЕУМЙ У ЛПНБОДПК ls ЙУРПМШЪПЧБФШ ПРГЙА -a, ФП ЙНЕОБ ЖБКМПЧ, ОБЮЙОБАЭЙИУС У УЙНЧПМБ ., ПЛБЦХФУС Ч УРЙУЛЕ. рПРТПВХЕН ЬФХ ПРГЙА:

ьФПФ УРЙУПЛ УПДЕТЦЙФ ДЧБ УРЕГЙБМШОЩИ ЬМЕНЕОФБ: . Й .., Б ФБЛЦЕ ДЧБ ДТХЗЙИ « УЛТЩФЩИ » ЖБКМБ: .bash_profile Й .bashrc. ьФЙ ДЧБ ЖБКМБ СЧМСАФУС ЖБКМБНЙ ОБЮБМШОПК ЛПОЖЙЗХТБГЙЙ ДМС ЛПНБОДОПК ПВПМПЮЛЙ bash Й ЮЙФБАФУС РТЙ ЧИПДЕ РПМШЪПЧБФЕМС larry Ч УЙУФЕНХ.

ъБНЕФЙН, ЮФП ЛПЗДБ НЩ ЙУРПМШЪПЧБМЙ ЫБВМПО *, Ч УРЙУЛЕ ОЕ РПСЧЙМПУШ ОЙ ПДОПЗП ЖБКМБ, ЙНС ЛПФПТПЗП ОБЮЙОБМПУШ У УЙНЧПМБ ..

ьФП РТЕДХУНПФТЕОП НЕИБОЙЪНПН ВЕЪПРБУОПУФЙ: ЕУМЙ ВЩ ЫБВМПО * РПДИПДЙМ ВЩ Й Л ЙНЕОБН ЖБКМПЧ, ОБЮЙОБАЭЙИУС УЙНЧПМПН ., ПО ВЩ ФБЛЦЕ РПДИПДЙМ Й Л ЙНЕОБН ЛБФБМПЗПЧ . Й ... ьФП ВЩМП ВЩ ПРБУОП РТЙ ЙУРПМШЪПЧБОЙЙ ОЕЛПФПТЩИ ЛПНБОД.

еЭЈ ПДОЙН УРЕГЙБМШОЩН УЙНЧПМПН Ч ЫБВМПОБИ СЧМСЕФУС УЙНЧПМ ?. ыБВМПО ? ТБУЫЙТСЕФУС ДП ТПЧОП ПДОПЗП УЙНЧПМБ. фБЛЙН ПВТБЪПН, ЛПНБОДБ ls ? ЧЩЧЕДЕФ УРЙУПЛ ЧУЕИ ЖБКМПЧ, ЙНЕОБ ЛПФПТЩИ УПУФПСФ ЙЪ ПДОПЗП УЙНЧПМБ. лПНБОДБ ls termca? ЧЛМАЮЙФ Ч УРЙУПЛ ЖБКМ termcap, ОП ОЕ ЧЛМАЮЙФ ЖБКМ termcap.backup. рТЙЧЕДЈН ЕЭЈ ПДЙО РТЙНЕТ:

лБЛ НЩ ЧЙДЙН, ЫБВМПОЩ РПЪЧПМСАФ ПВТБЭБФШУС УТБЪХ Л ОЕУЛПМШЛЙН ЖБКМБН. оБРТЙНЕТ, ЧЩЫЕ ХЦЕ ЗПЧПТЙМПУШ, ЮФП ЛПНБОДЩ cp Й mv Ч ДЕКУФЧЙФЕМШОПУФЙ НПЗХФ ЛПРЙТПЧБФШ ЙМЙ РЕТЕОПУЙФШ ВПМШЫЕ ПДОПЗП ЖБКМБ ЪБ ПДЙО ТБЪ. оБРТЙНЕТ, ЛПНБОДБ

ЛПРЙТХЕФ ЧУЕ ЖБКМЩ Ч ЛБФБМПЗЕ /etc, ЙНС ЛПФПТЩИ ОБЮЙОБЕФУС У УЙНЧПМБ s, Ч ЛБФБМПЗ /home/larry. ч ДЕКУФЧЙФЕМШОПУФЙ, ЖПТНБФ ЛПНБОДЩ cp СЧМСЕФУС УМЕДХАЭЙН:

ЗДЕ filesљ— УРЙУПЛ ЙНЈО ЖБКМПЧ, ЛПФПТЩЕ ОБДП ЛПРЙТПЧБФШ, Б destinationљ— ЖБКМ ЙМЙ ЛБФБМПЗ, ЛХДБ ОБДП ЛПРЙТПЧБФШ. лПНБОДБ mv ЙНЕЕФ БОБМПЗЙЮОЩК УЙОФБЛУЙУ.

Читайте также:  Иконка представление задач windows 10

рТЙ ЛПРЙТПЧБОЙЙ ЙМЙ РЕТЕОПУЕ ВПМЕЕ ЮЕН ПДОПЗП ЖБКМБ БТЗХНЕОФ destination ДПМЦЕО ВЩФШ ЙНЕОЕН ЛБФБМПЗБ. фПМШЛП ТПЧОП ПДЙО ЖБКМ НПЦЕФ ВЩФШ УЛПРЙТПЧБО ЙМЙ РЕТЕОЕУЈО Ч ДТХЗПК ЖБКМ.

Источник

Фундаментальные основы Linux. Часть III. Раскрытие команд командной оболочкой

Глава 15. Формирование списков имен файлов на основе шаблонов

Командная оболочка также ответственна за формирование списков имен файлов на основе шаблонов (или динамическую генерацию списков имен файлов). В данной главе даются пояснения относительно работы данного механизма.

Звездочка (*)

Знак вопроса (?)

Квадратные скобки ([])

Диапазоны a-z и 0-9

Переменная окружения $LANG и квадратные скобки

В том случае, если в вашей системе устанавливается значение переменной окружения $LC_ALL , оно также должно быть сброшено для осуществления корректной генерации списков имен файлов.

Предотвращение формирования списков имен файлов на основе шаблонов

Практическое задание: формирование списков имен файлов на основе шаблонов

1. Создайте тестовую директорию и перейдите в нее.

(Имя последнего файла состоит из 6 символов, включая пробел).

3. Выведите список всех имен файлов (с помощью команды ls), которые начинаются с строки file.

4. Выведите список всех имен файлов (с помощью команды ls), которые начинаются с строки File.

5. Выведите список всех имен файлов (с помощью команды ls), которые начинаются с строки file и заканчиваются числовым символом.

6. Выведите список всех имен файлов (с помощью команды ls), которые начинаются с строки file и заканчиваются буквенным символом.

7. Выведите список всех имен файлов (с помощью команды ls), которые начинаются с строки File и имеют пятый числовой символ.

8. Выведите список всех имен файлов (с помощью команды ls), которые начинаются с строки File, имеют пятый числовой символ и никаких символов более.

9. Выведите список всех имен файлов (с помощью команды ls), которые начинаются с буквенного символа и заканчиваются числовым символом.

10. Выведите список всех имен файлов (с помощью команды ls), которые состоят ровно из пяти символов.

11. Выведите список всех имен файлов (с помощью команды ls), которые начинаются с символа f или F и оканчиваются символом 3 или A.

12. Выведите список всех имен файлов (с помощью команды ls), которые начинаются с символа f и оканчиваются числовым символом, причем вторым символом является символ i или R.

13. Выведите список всех имен файлов (с помощью команды ls), которые не начинаются с символа F.

14. Скопируйте значение переменной окружения $LANG в значение переменной окружения $MyLANG.

15. Продемонстрируйте влияние значения переменной окружения $LANG на вывод имен файлов с буквенными символами из диапазонов A-Z или a-z.

16. Вы получили информацию о том, что один из ваших серверов был взломан, причем взломщик, вероятнее всего, подменил бинарный файл с реализацией команды ls . Вы знаете о том, что использование команды echo не несет опасности. Можно ли заменить команду ls командой echo ? Как вы будете выводить список файлов в текущей директории с помощью команды echo ?

17. Существуют ли другие команды, помимо cd, предназначенные для изменения текущей директории?

Корректная процедура выполнения практического задания: формирование списков имен файлов на основе шаблонов

1. Создайте тестовую директорию и перейдите в нее.

(Имя последнего файла состоит из 6 символов, включая пробел).

3. Выведите список всех имен файлов (с помощью команды ls), которые начинаются с строки file.

4. Выведите список всех имен файлов (с помощью команды ls), которые начинаются с строки File.

5. Выведите список всех имен файлов (с помощью команды ls), которые начинаются с строки file и заканчиваются числовым символом.

6. Выведите список всех имен файлов (с помощью команды ls), которые начинаются с строки file и заканчиваются буквенным символом.

7. Выведите список всех имен файлов (с помощью команды ls), которые начинаются с строки File и имеют пятый числовой символ.

8. Выведите список всех имен файлов (с помощью команды ls), которые начинаются с строки File, имеют пятый числовой символ и никаких символов более.

Читайте также:  Приложение мой календарь для windows

9. Выведите список всех имен файлов (с помощью команды ls), которые начинаются с буквенного символа и заканчиваются числовым символом.

10. Выведите список всех имен файлов (с помощью команды ls), которые состоят ровно из пяти символов.

11. Выведите список всех имен файлов (с помощью команды ls), которые начинаются с символа f или F и оканчиваются символом 3 или A.

12. Выведите список всех имен файлов (с помощью команды ls), которые начинаются с символа f и оканчиваются числовым символом, причем вторым символом является символ i или R.

13. Выведите список всех имен файлов (с помощью команды ls), которые не начинаются с символа F.

14. Скопируйте значение переменной окружения $LANG в значение переменной окружения $MyLANG.

15. Продемонстрируйте влияние значения переменной окружения $LANG на вывод имен файлов с буквенными символами из диапазонов A-Z или a-z.

Обратитесь к примеру в книге.

16. Вы получили информацию о том, что один из ваших серверов был взломан, причем взломщик, вероятнее всего, подменил бинарный файл с реализацией команды ls . Вы знаете о том, что использование команды echo не несет опасности. Можно ли заменить команду ls командой echo ? Как вы будете выводить список файлов в текущей директории с помощью команды echo ?

17. Существуют ли другие команды, помимо cd, предназначенные для изменения текущей директории?

Источник

Шаблоны имен файлов

Bash, а также другие командные оболочки Linux и средства языков программирования позволяют находить в структуре дерева каталогов те файлы, имена которых соответствуют определенному шаблону имени файла. В случае командной оболочки именно она сравнивает с шаблоном имя очередного файла. Если оно соответствует шаблону, то файл будет учтен, если нет – будет пропущен. Шаблон можно сравнить с коробкой, в которую влезет не каждый объект. Не только из-за размеров, также из-за несовпадения формы коробки и предмета.

Зачем нужны шаблоны имен? Часто требуется выполнить однотипные действия над группой файлов. Описывать эти действия по отношению к каждому отдельному файлу было бы трудоемкой задачей. Таким образом, шаблоны позволяют выделить группу файлов, чьи имена удовлетворяют определенным условиям, из общей массы.

Кроме того, шаблоны часто используют для поиска файлов.

Шаблоны имен файлов и каталогов задаются с помощью специальных символов. Чаще используются два: * – звездочка, ? – знак вопроса.

Звездочкой (*) в шаблоне обозначают любую группу символов. Их количество роли не играет. Это могут быть пять, десять, один символ или даже ни одного. Так, например, шаблону, состоящему всего из одного символа * , будет соответствовать абсолютно любой файл. Использование шаблона *.html позволит выделить все html-файлы, а шаблон my*.odt – файлы, начинающиеся с «my» и оканчивающиеся на «.odt». Шаблон *2010* определяет все файлы, в именах которых присутствует группа символов 2010.

Знаком вопроса (?) в шаблоне обозначают любой один символ. Например, под шаблон otchet. подойдут файлы, имеющие расширение из любых трех букв, но начинающиеся именно так, как задано в шаблоне. Шаблону descrip?ion.pdf будут соответствовать файлы с заданным именем, но вместо знака вопроса может стоять любой символ.

Кроме символов звезды и вопроса, существуют более сложные правила записи шаблонов. Так использование квадратных скобок [ ] со списком вложенных значений позволяет осуществлять более гибкий поиск файлов. Пусть требуется найти все файлы, имена которых начинаются с буквы m, при этом регистр не учитывается. Шаблон будет выглядеть так: [mM]* .

Если надо одновременно найти файлы, начинающиеся на буквы, идущие подряд в алфавите, то задается диапазон. Например, под шаблон [m-pM-P]. png подойдут все файлы с расширением png, имена которых состоят из четырех букв, причем первая буква m или n или o или p без учета регистра.

Понятно, что в одном шаблоне имени файла можно использовать разные специальные символы. Например, [aA]*. .

В Bash шаблоны имен используются с командами, которые в качестве аргументов принимают имена файлов. Например, ls – просмотр каталогов, cp – копирование файлов, find – поиск файлов и др. Однако на самом деле командам передается не шаблон, а уже подошедшие под него файлы. Определением подходящих под шаблон объектов занимается сама командная оболочка Linux, в данном случае Bash.

Читайте также:  Защитник windows security essential

Курс с ответами к заданиям и дополнительными уроками:
android-приложение, pdf-версия.

Источник

Шаблоны имён файлов

Важное свойство большинства командных оболочек системы Linux — способность обращаться к более, чем одному файлу по имени с использованием специальных символов — шаблонов. С помощью этих шаблонов (wildcards) можно обращаться ко всем файлам, имена которых содержат, скажем, символ n.

Шаблон * обозначает любой символ или строку символов в имени файла. Когда в имени файла используется символ *, командная оболочка заменяет его на всевозможные варианты, которые встречается в именах файлов в рассматриваемом каталоге.

Приведём простой пример. Допустим, у пользователя Ларри в текущем каталоге имеются файлы frog, joe и stuff.

Для того, чтобы обратиться ко всем файлам, в имени которых содержится символ o, надо использовать команду

Можно видеть, что всякий раз, когда в имени встречается символ *, он заменяется всеми возможными вариантами, которые встречаются в именах файлов в текущем каталоге.

Шаблон, состоящий из единственного символа *, подходит ко всем именам файлов, поскольку этому шаблону подходят все последовательности символов. Пример:

Приведём ещё несколько примеров:

Процесс замены символа * на последовательность имён файлов называется расширением шаблона (wildcard expansion). Расширение шаблона производится командной оболочкой. Очень важно знать, что отдельная команда, такая как ls , никогда не « видит » символ * в списках своих параметров. Именно командная оболочка производит расширение шаблона таким образом, что будут перечислены все удовлетворяющие шаблону имена файлов. Таким образом, команда

расширяется командной оболочкой в команду

Сделаем важное замечание о шаблоне *: он не распознает имена файлов, которые начинаются с одной точки (.). Эти файлы рассматриваются как скрытые (hidden). Скрытость этих файлов заключается в том, что они не включаются в список, выдаваемый обычными командами ls , и не распознаются шаблонами, содержащими символ *.

Приведём пример. Раньше мы говорили, что в каждом каталоге есть два специальных элемента: элемент . обозначает текущий каталог, а элемент .. обозначает родительский каталог. Однако, при использовании команды ls эти два элемента в списке не появляются:

Однако, если с командой ls использовать опцию -a, то имена файлов, начинающихся с символа ., окажутся в списке. Попробуем эту опцию:

Этот список содержит два специальных элемента: . и . а также два других « скрытых » файла: .bash_profile и .bashrc. Эти два файла являются файлами начальной конфигурации для командной оболочки bash и читаются при входе пользователя larry в систему.

Заметим, что когда мы использовали шаблон *, в списке не появилось ни одного файла, имя которого начиналось с символа ..

Это предусмотрено механизмом безопасности: если бы шаблон * подходил бы и к именам файлов, начинающихся символом ., он бы также подходил и к именам каталогов . и . Это было бы опасно при использовании некоторых команд.

Ещё одним специальным символом в шаблонах является символ ?. Шаблон ? расширяется до ровно одного символа. Таким образом, команда ls ? выведет список всех файлов, имена которых состоят из одного символа. Команда ls termca? включит в список файл termcap, но не включит файл termcap.backup. Приведём ещё один пример:

Как мы видим, шаблоны позволяют обращаться сразу к нескольким файлам. Например, выше уже говорилось, что команды cp и mv в действительности могут копировать или переносить больше одного файла за один раз. Например, команда

копирует все файлы в каталоге /etc, имя которых начинается с символа s, в каталог /home/larry. В действительности, формат команды cp является следующим:

где files — список имён файлов, которые надо копировать, а destination — файл или каталог, куда надо копировать. Команда mv имеет аналогичный синтаксис.

При копировании или переносе более чем одного файла аргумент destination должен быть именем каталога. Только ровно один файл может быть скопирован или перенесён в другой файл.

Источник

Оцените статью