Ответ прост: потому что они обладают мощностью и гибкостью. Несмотря на то что простые операции с файлами легко выполняются в диспетчере файлов с графическим интерфейсом, сложные задачи проще решать с помощью программ командной строки. Например, как скопировать файлы HTML из одного каталога в другой, причем только те, что отсутствуют в каталоге назначения или имеют более позднюю дату последнего изменения? Сделать это в диспетчере файлов очень сложно, но легко в командной строке:
cp -u *.html destination
Групповые символы
Прежде чем приступать к использованию обсуждаемых команд, необходимо сначала поговорить об одной особенности командной оболочки, которая делает эти команды такими мощными. Так как имена файлов используются в командной оболочке повсеместно, она поддерживает специальные символы, помогающие быстро определять группы имен файлов. Эти специальные символы называют
Таблица 4.1. Групповые символы
Групповой символ
Соответствует
*
Любая последовательность любых символов
?
Любой один символ
[
Любой один символ из указанного множества
[!
Любой один символ, не принадлежащий указанному множеству
[[:
Любой один символ, принадлежащий указанному
В табл. 4.2 представлены наиболее часто используемые классы символов.
Таблица 4.2. Наиболее часто используемые классы символов
Класс символов
Соответствует
[:alnum:]
Любой алфавитно-цифровой символ
[:alpha:]
Любой алфавитный символ
[:digit:]
Любой цифровой символ
[:lower:]
Любая буква в нижнем регистре
[:upper:]
Любая буква в верхнем регистре
диапазоны символов
Если у вас уже есть опыт работы с другим Unix-подобным окружением или вам приходилось читать другие книги по этой теме, вы встречали форму записи диапазонов символов [A-Z] или [a-z]. Это традиционные для Unix формы записи, и они прекрасно работают в старых версиях Linux. Более того, они все еще работают в новых версиях, но будьте очень осторожны при их использовании, потому что они не всегда дают ожидаемый результат без правильной настройки. А вообще, старайтесь избегать их и использовать классы символов.
Групповые символы позволяют конструировать сложные критерии выбора имен файлов. В табл. 4.3 перечислены некоторые примеры шаблонов и их соответствия.
Таблица 4.3. Примеры использования групповых символов
Шаблон
Соответствует
*
Все имена файлов
g*
Все имена файлов, начинающиеся с символа «
b*.txt
Все имена файлов, начинающиеся с символа «
Data???
Все имена файлов, начинающиеся с символов «
[abc]*
Все имена файлов, начинающиеся с символа «
BACKUP.[0-9][0-9][0-9]
Все имена файлов, начинающиеся с символов «
[[:upper:]]*
Все имена файлов, начинающиеся с буквы в верхнем регистре
[![:digit:]]*
Все имена файлов, не начинающиеся с цифры
*[[:lower:]123]
Все имена файлов, заканчивающиеся буквой в нижнем регистре или цифрой «
Групповые символы можно использовать с любыми командами, принимающими имена файлов в виде аргументов, но подробнее об этом мы поговорим в главе 7.
групповые символы также действуют в графическом интерфейсе
Групповые символы имеют особую ценность не только потому, что часто используются в командной строке, но и потому, что поддерживаются некоторыми диспетчерами с графическим интерфейсом.
• В Nautilus (диспетчер файлов для GNOME) можно выбирать файлы с помощью диалога Edit (Правка) —> Select Pattern (Выделить по шаблону). Просто введите шаблон для выбора файлов с групповыми символами, и в текущем каталоге будут выделены файлы, соответствующие шаблону.
• В некоторых версиях Dolphin и Konqueror (диспетчеры файлов для KDE) групповые символы можно вводить непосредственно в адресную строку. Например, если понадобится увидеть все файлы с именами, начинающимися с буквы «
Большинство идей, первоначально реализованных в интерфейсе командной строки, перекочевали и в графический интерфейс. Это одно из множества обстоятельств, которые делают настольный компьютер с Linux таким мощным инструментом.
mkdir — создание каталогов
Команда mkdir используется для создания каталогов. Вызывается она следующим образом:
mkdir