"Уайлдкард" - "дикая карта" - часть 2
Одно важное замечание относительно ``*'' уайлдкард.
Использование этой уайлдкард не даст совпадения с именами файлов,
которые начинаются с точки (``.''). Эти файлы воспринимаются как
"спрятанные", хотя на самом деле их никуда не прятали. Они не
показываются в списке, выдаваемом нормальной командой ls и не
выбираются при использовании ``*'' уайлдкард.
Вот пример. Мы уже упоминали, что каждый каталог имеет
два специальных файла: ``.'' - указание на текущий каталог и
``..'' - указание на родительский каталог. Однако, если вы
используете команду ls, эти два файла не будут отображены.
/home/larry# ls
frog joe stuff
/home/larry#
Если вы используете опцию -a в команде ls, то вы сможете
отобразить имена, начинающиеся на ``.'':
/home/larry# ls -a
. .. .bash_profile .bashrc frog joe
stuff
/home/larry#
Как видим, два специальных файла ``.'' и ``..'', также,
как два других "спрятанных" файла - .bash_profile и .bashrc. Эти
два файла используются при входе larry в систему. Более подробно
о них в Разделе 3.13.3.
Обратите внимание, что когда мы используем ``*'' уайлдкард,
ни один из файлов, с именами, начинающимися на ``.'' не
отображается.
/home/larry# ls *
frog joe stuff
/home/larry#
Это мера предосторожности: если ``*'' уайлдкард выбирала бы
имена файлов, начинающиеся на ``.'', она бы также выбрала имена
``.'' и ``..''. Но это может быть опасно при выполнении ряда
команд.
Другой уайлдкард является ``?''. ``?'' уайлдкард позволяет
подставить строго один символ. Так ``ls ?'' выдаст на только
имена файлов, состоящие из одного символа, а ``ls termca?''
выдаст ``termcap'', но не выдаст на экран ``termcap.backup''. Вот
еще один пример:
/home/larry# ls j?e
joe
/home/larry# ls f??g
frog
/home/larry# ls ????f
stuff
/home/larry#
Как видите, уайлдкард позволяет описывать много файлов за
один раз. При обзоре простейших команд в Разделе 3.4 мы говорили,
что команды cp и mv могут копировать или перемещать множества
файлов за один раз. Например,
/home/larry# cp /etc/s* /home/larry
скопирует все файлы в /etc , начиная с ``s''в каталог
/home/larry. Формат команды cp на самом деле
cp <file1> ... <fileN> <destination>
где <file1> ... <fileN> - список копируемых файлов, а
<destination> это файл или каталог, в который производится
копирование. mv имеет аналогичный синтаксис.
Обратите внимание, что если производится копирование или
перемещение более, чем одного файла, <destination> должен быть
каталогом. В файл скопировать или переместить можно только один
файл.