TGViewer
LinuxCamp | DevOps LinuxCamp | DevOps @linuxcamp_tg · 13.6K subscribers
Post #156 6.89K
Набираем обороты с pattern matching

Чтобы повысить продуктивность, оболочка предусматривает ряд спецсимволов для оптимизации работы и выполнения ряда задач.

Концепция работы с символами: *, ?, [], называется сопоставлением с шаблоном (pattern matching).

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


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


$ ls *.py
data.py main.py user_interface.py


Этот символ обрабатывается командной оболочкой, а не программой ls. Оболочка заменяет выражение "*.py" списком имен подходящих файлов еще до запуска программы ls.

Иными словами, ls не увидит символ групповой операции. С точки зрения утилиты, вы ввели команду следующего вида:


$ ls data.py main.py user_interface.py


Символ * соответствует любой последовательности из символов в путях к файлам или каталогам.

Например, гораздо проще и быстрее, вместо прямого перечисления:


$ grep Linux chapter1 chapter2 chapter3 chapter4 chapter5...


Использовать базовый шаблон:


$ grep Linux chapter*


Остается за кадром, как командная оболочка (не программа grep) преобразует шаблон "chapter*" в список подходящих имен файлов. И только после этого оболочка запускает grep.

Если шаблон не соответствует ни одному файлу, оболочка передает его в качестве аргумента команды:


$ grep Linux chapter*
grep: chapter*: No such file or directory


Еще бывает полезно использовать знак ?, который соответствует любому единичному символу. Например, вы можете выполнить поиск слова Linux в главах с 1 по 9, используя ? для поиска совпадений:


$ grep Linux chapter?


Для поиска в главах с 10 по 99 придется использовать "??":


$ grep Linux chapter??


Менее известно использование скобок [] для запроса у оболочки соответствия одному из символов набора. Например, вы можете искать только в первых 3 главах:


$ grep Linux chapter[123]
$ grep Linux chapter[1-3]


Любые символы, не только цифры, могут быть помещены в квадратные скобки для сопоставления.

Например, следующая команда заставит оболочку искать имена файлов, начинающиеся с заглавной буквы, содержащие символ _ и заканчивающиеся символом @:


$ ls [A-Z]*_*@


LinuxCamp
  • 👍 38
  • 🔥 15
  • ❤‍🔥 3
More from @linuxcamp_tg
  1. Sep 28, 2026Проекту GNU вчера исполнилось 43 года 1983 год: Ричард Столлман объявил планы разработать…
  2. Sep 25, 2026Linux будет работать на ноутах с Snapdragon X2. Qualcomm добавляет полноценную поддержку L…
  3. Sep 24, 2026Так все по делу)) Советует же самый быстрый фикс LinuxCamp | #memes
  4. Sep 23, 2026Планы на 3 октября — прийти на RWB Infra x Security Meetup Мы направим прожекторы на инфра…
  5. Sep 22, 2026Ещё одна рекордная неделя для AI-разработки в Linux. На прошлой неделе в ядро попало 1 634…
  6. Sep 17, 2026Открыл плейлист, а как выйти - непонятно 😁 LinuxCamp | #memes
Threads Profile ViewerView any public Threads profile without an account.Open ThreadLook →Writing with AI? Make it sound human.Metric37 rewrites AI drafts so they read naturally. Free AI detector, 1,500 words free.Try Metric37 →