Вопросительный символ подстановки
Часть раздела Основы путешествия по Terminal на Coddy — урок 26 из 82.
Подстановочный символ знака вопроса ? соответствует ровно одному символу. В отличие от *, который соответствует любому количеству символов, ? более точен — каждый ? представляет позицию одного символа.
Например, если у вас есть эти файлы:
file1.txt
file2.txt
file3.txt
file10.txt
notes.txtИспользование ? для сопоставления файлов с ровно одним символом после file:
ls file?.txtВывод:
file1.txt
file2.txt
file3.txtОбратите внимание, что file10.txt не соответствует, потому что 10 состоит из двух символов, а не одного.
Использование нескольких знаков вопроса:
Каждый ? соответствует ровно одному символу, поэтому их можно использовать последовательно:
ls file??.txt # matches file10.txt, file23.txt etc.Смешивание с другими символами:
ls ???.txt # matches any .txt file with exactly 3-character name
ls img_?.jpg # matches img_1.jpg, img_2.jpg but NOT img_10.jpgКогда использовать ? против *:
- Используйте
?, когда вы точно знаете, сколько символов варьируется - Используйте
*, когда количество варьирующихся символов неизвестно
Задание
НовичокИспользуйте подстановочный символ ? для вывода только тех файлов, которые соответствуют file?.txt — файлов с именем file, за которыми следует ровно один символ и заканчивающихся на .txt.
Подсказка:
file10.txtне должен появляться в ваших результатах, потому что10— это два символа. Подстановочный символ?соответствует только одному символу за раз.
Шпаргалка
Подстановочный символ вопросительного знака ? соответствует ровно одному символу. В отличие от *, который соответствует любому количеству символов, ? более точен — каждый ? представляет одну позицию символа.
Пример соответствия файлам с ровно одним символом после file:
ls file?.txtИспользование нескольких вопросительных знаков:
Цепочкой соединяйте несколько ? для соответствия нескольким символам:
ls file??.txt # matches file10.txt, file23.txt etc.Смешивание с другими символами:
ls ???.txt # matches any .txt file with exactly 3-character name
ls img_?.jpg # matches img_1.jpg, img_2.jpg but NOT img_10.jpgКогда использовать ? вместо *:
- Используйте
?, когда вы точно знаете, сколько символов варьируется - Используйте
*, когда количество варьирующихся символов неизвестно
Попробуйте сами
В этом уроке есть небольшой тест. Начните урок, чтобы ответить на вопросы и сохранить прогресс.
Все уроки раздела Основы
4Каталоги
Создать каталогСкопировать каталогПереместить и переименовать каталогУдалить каталогИтог - Операции с каталогами7Содержимое файлов
Head и TailПодсчёт словКоманда sortКоманда uniqОсновы grepGrep с флагамиПовторение - Текстовый детектив10Проект анализатора логов
Обзор проектаПросмотр файла лога2Навигация
Вывод текущей рабочей директорииСписок файловСмена директорииАбсолютные и относительные путиДомашняя и корневая директорииИтог - Найди свой путь8Перенаправление
Стандартный выводПерезапись в файлДописывание в файлСтандартный вводСтандартная ошибкаПовторение - Сборщик логов11Права доступа
Понимание прав доступаЧтение прав доступаChmod с числамиChmod с символамиВладение файламиПовторение - Заблокируйте доступ14Проект скрипта резервного копирования
Обзор проектаПолучение пути к источнику3Файлы
Создать файлПрочитать файлСкопировать файлПереместить и переименовать файлУдалить файлПовторение - Операции с файлами6Символы подстановки и шаблоны
Звёздный символ подстановкиВопросительный символ подстановкиСкобочные символы подстановкиКомбинирование символов подстановкиПовторение - выборочные операции9Каналы
Что такое каналЦепочка двух командЦепочка нескольких командКанал с grepИтог - Конвейер данных