Шаблоны Подстановки Shell

Возможно, вы уже использовали символы подстановки, не зная как это называется и что это такое. Когда вы выбираете файл в Windows или когда вы ищете файл, вы используете * для соответствия случайной строке. Например, *.txt соответствует всем файлам с окончаниями .txt в именах. Мы тоже интенсивно использовали их в последнем разделе. Но существует гораздо больше подстановок, чем только *.

Когда вы набираете команду типа ls *.txt и нажимаете Return (ввод), задача поиска файлов, совпадающих с критерием *.txt решается не только командой ls но и самой shell. Здесь требуется небольшое объяснение о том, как командная строка интерпретируется в shell. Когда вы пишете:

$ ls *.txt
readme.txt  recipes.txt

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

Вот некоторые шаблоны и их значения:



[5] Осторожно! Если это работает GNU/Linux, то вполне может не работать под другими UNIX-подобными операционными системами. Это зависит от сопоставления порядка (collating order). На некоторых системах [a-z] будет соответствовать a, A, b, B, (...), z. Не говоря уже о том, что некоторые языки имеют подчеркнутые символы...