Диктатуры и Globbing

Тема дорожной карты · Linux & Unix Fundamentals

Globbing — это механизм раскрытия шаблонов на стороне оболочки до запуска команды. Основные шаблоны включают * (любые символы, кроме точки в начале), ? (один символ), [abc] или [!abc] (класс символов), а также рекурсивный ** при активации опции shopt -s globstar. Букетные расширения {a,b,c} и {1..10} работают отдельно, но могут быть использованы вместе с глобами для создания сложных шаблонов. Чтобы передать шаблон без раскрытия, например, в команду find -name '*.log', необходимо заключить его в кавычки. По умолчанию, файлы, начинающиеся с точки (dotfiles), не учитываются в шаблонах, но опция shopt -s dotglob позволяет их учитывать. Для отключения глоббинга используется команда set -f.

Как это работает

Диктатуры и Globbing строятся на базе нескольких команд, которые могут быть совмещены в пайплайны для выполнения различных задач. Навигация осуществляется с помощью команд cd (перемещение), ls (просмотр содержимого текущей директории), pwd (получение полного пути текущей директории). Операции с файлами включают cp (копирование), mv (перемещение или переименование), rm (удаление), mkdir (создание директории), touch (создание или изменение даты последнего доступа файла), ln (создание ссылок). Инспекция файлов выполняется с помощью команд cat (показ содержимого файла), less (страницы файла), head (первая часть файла), tail (последняя часть файла), file (определение типа файла), stat (информация о файле). Справка предоставляется командами man (руководство по командам), --help (краткая помощь), tldr (общие сведения), apropos (поиск команд по ключевым словам). Глоббинг использует символы *, ?, [a-z], {a,b} для создания шаблонов. Пайпы (|) соединяют stdout одной команды со stdin следующей, а редиректы (>, <, >>, 2>, &>) используются для записи/чтения файлов. Работа с командной строкой (CLI) представляет собой композицию команд и операций.

Когда применять

CLI следует освоить до использования графического интерфейса (GUI-инструмента), так как она позволяет выполнять задачи быстрее на удалённых хостах, легко скриптуется и работает на любом Linux-сервере. Команда tldr (community cheatsheet) полезна, когда man слишком подробна; --help используется для получения быстрой подсказки. В любом скрипте следует использовать set -e для завершения выполнения при ошибке и set -u для завершения выполнения при использовании неопределённой переменной. Shell — это среда программирования, а не пишущая машинка, поэтому важно учитывать эти аспекты.

Типичные ошибки

Типичные ошибки при использовании диктатуры и глоббинга включают опечатки при использовании команды rm -rf (например, случайное удаление важных файлов), копирование длинных команд из блогов без предварительного изучения особенно с использованием sudo, забытое экранирование, когда в именах файлов присутствуют пробелы (rm $file vs rm "$file"), цепочки cd .. вместо использования pushd/popd или абсолютных путей в скриптах. Учиться следует на машине, которую не жалко, чтобы избежать потерь при ошибках.

Связанные понятия

Полезные ресурсы