Шаблоны подстановки и перечисление
Оболочки специальным образом интерпретируют некоторые метасимволы, например, *, подставляя вместо них имена файлов. Такие метасимволы назы- ваются шаблонами подстановки. Символы подстановки позволяют оболочке произвести поиск файлов, имена которых удовлетворяют шаблону, и подста- вить их в командную строку.
В качестве команды для испытания шаблонов подстановки можно использо- вать команду echo, которая просто выводит на экран то, что ей задано в каче- стве аргумента.
Символ "звездочка" (*) является шаблоном для любого количества любых символов в именах файлов и даже для их отсутствия. Единственный символ, который не удовлетворяет этому шаблону, — лидирующая точка в именах скрытых файлов. Таким образом, подставив звездочку в качестве аргумента команде echo, мы либо увидим в результате саму звездочку, если в каталоге нет файлов, либо оболочка подставит команде echo имена всех файлов в ка- талоге в командную строку (пример 2.35).
Пример 2.35. Шаблон * |
$ cd /etc/xinetd.d
$ echo *
amanda amandaidx amidxtape chargen chargen-udp cvs daytime daytime-udp echo echo-udp eklogin ekrb5-telnet gssftp klogin krb5-telnet kshell ktalk rsync telnet tftp time time-udp uucp
В примере 2.35 производится переход в каталог /etc/xinetd.d, в котором есть несколько файлов, имена которых подставляются оболочкой в виде аргумен- тов команде echo, т. к. они удовлетворяют шаблону *.
Имеются особенные имена файлов, начинающиеся с точки, например,
.bashrc. Такие файлы называются скрытыми, т. к. их имена не выводятся ко- мандой ls без специальных опций. Шаблоном для имен скрытых файлов яв- ляется .* (точка и звездочка). Вообще, любые шаблоны для скрытых файлов должны начинаться с символа "точка".
Символ ? заменяет один символ в имени файла, который должен находиться в той позиции, где находится знак вопроса (пример 2.36).
Пример 2.36. Шаблон ? |
$ echo .??????
.bashrc .config .emacs~ .gconfd .gnome2 .isotmp .mcoprc .themes
В примере 2.36 получен список скрытых файлов (имена начинаются с точки), в именах которых после точки имеется шесть любых символов.
Можно еще более сузить диапазон поиска, используя набор символов, за- ключенных в квадратные скобки. Применение такого шаблона обозначает, что в данном месте должен находиться один любой символ из заданного множества. Для того чтобы указать допустимый диапазон символов в шабло- не, необходимо использовать квадратные скобки, а в них — требуемый диа- пазон. Например, [0-9] — шаблон подходит для любых цифр, а [a-zA-Z] — шаблон для букв английского.
Пример 2.37. Шаблон множества |
$ echo .[bcd]*
.bash_history .bash_logout .bash_profile .bashrc .cshrc .ddd
Пример 2.37 демонстрирует вывод имен скрытых файлов, в именах которых после точки стоит символ b, c или d.
Если необходимо указать набор символов, не входящих во множество, следу- ет установить знак восклицания после открывающей скобки. Например, [!abc] — множество любых символов, кроме a, b или c.
Очень удобен, хотя и не относится к шаблонам, механизм перечисления Bash. Он позволяет задать множество вариантов, которое должна перебрать обо- лочка, составляя последовательно все варианты, заданные в фигурных скоб- ках (пример 2.38).
Пример 2.38. Перечисление |
$ echo .bash{rc,_profile}
.bashrc .bash_profile
В примере 2.38 использован механизм перечисления для обращения к двум файлам: .bashrc и .bash_profile. Имена этих файлов имеют общую подстроку
.bash, коротая вынесена за фигурные скобки. В фигурных скобках через за- пятую перечислены варианты продолжения: rc и _profile.
Дата добавления: 2015-06-12; просмотров: 888;