В этом контексте под обработкой файлов подразумевается копирование, перемещение и удаление файлов. Позже мы рассмотрим способы изменения атрибутов файлов (владельцев, разрешения).
Команда mkdir (MaKe DIRectory - создать каталог) используется для создания каталогов. Ее синтаксис довольно прост:
mkdir [опции] <каталог> [каталог ...] |
Только одна опция ничего не стоит: опция -p. Она выполнит два действия:
создаст родительские каталоги, если они не существовали до этого. Без этой опции mkdir просто вызовет сбой, жалуясь на отсутствие заявленных каталогов;
молча выполнит возврат, если каталог, который вы хотели создать, уже существует. Для сравнения, если вы не указали опцию -p, mkdir возвратит сообщение об ошибке, жалуясь на то, что каталог уже существует.
Изначально команда touch предназначалась не для создания файлов, а для обновления времени последнего доступа к файлу и времени его изменения[3]. Однако touch создаст пустые файлы, если они не существуют. Ее синтаксис:
touch [опции] файл [файл...] |
Таким образом, выполнение команды:
touch file1 images/file2 |
создаст в текущем каталоге пустой файл с именем file1 и пустой файл file2 в каталоге images, если ранее эти файлы не существовали.
Команда rm (ReMove - удалить) является аналогом команд DOS del и deltree, и содержит дополнительные опции. Ее синтаксис выглядит следующим образом:
rm [опции] <файл|каталог> [файл|каталог...] |
Опции включают:
-r или -R: рекурсивное удаление. Эта опция является обязательной для удаления каталога, пустого или нет. Однако для удаления пустых каталогов вы также можете воспользоваться командой rmdir.
-i: запрос подтверждения перед каждым удалением. Обратите внимание, что по умолчанию в Mandrakelinux, rm по соображениям безопасности - это алиас команды rm -i (похожие алиасы существуют для cp и mv). Однако ваше мнение относительно полезности этих алиасов может измениться. Если вы хотите удалить их, вы можете создать пустой файл ~/.alias, который предотвратит установку общесистемных алиасов. Или же вы можете отредактировать свой файл ~/.bashrc для отключения некоторых общесистемных алиасов путем добавления этой строки: unalias rm cp mv
-f, как противоположность -i, принудительноудалит файлы или каталоги, даже если у пользователя нет доступа для записи в файлы[4].
rm -i images/*.jpg file1: удаляет все файлы с именами, заканчивающимися на .jpg, в каталоге images и удаляет file1 в текущем каталоге, запрашивая подтверждение на удаление каждого файла. Отвечайте y для подтверждения удаления и n для отмены.
rm -Rf images/misc/ file*: удаляет без запроса подтверждения весь каталог misc/ в каталоге images/ вместе со всеми файлами в текущем каталоге, чьи имена начинаются с file.
Синтаксис команды mv (MoVe - переместить) следующий:
mv [опции] <файл|каталог> [файл|каталог ...] <назначение> |
-f: форсирование операции –– предупреждение не выводится, если перезаписывается существующий файл.
-i: противоположное действие. У пользователя спрашивается подтверждение перед перезаписью существующего файла.
-v: подробный режим, сообщает обо всех изменениях и действиях.
mv -i /tmp/pics/*.png .: перемещает все файлы из каталога /tmp/pics/, чьи имена заканчиваются на .png, в текущий каталог (.), но запрашивает подтверждение перед перезаписью в нем любых файлов.
mv foo bar: переименовывает файл foo в bar. Если каталог bar уже существовал, результатом выполнения этой команды будет перемещение файла foo или всего каталога (самого каталога плюс всех файлов и каталогов в нем, рекурсивно) в каталог bar.
mv -vf file* images/ trash/: перемещает без запроса подтверждения все файлы из текущего каталога с именами, начинающимися с file, вместе со всем каталогом images/ в каталог trash/, и показывает порядок выполнения каждой операции.
cp (CoPy - копировать) является аналогом команд DOS copy и xcopy и содержит дополнительные опции. Ее синтаксис выглядит следующим образом:
cp [опции] <файл|каталог> [файл|каталог ...] <назначение> |
cp имеет много опций. Вот самые общие из них:
-R: рекурсивное копирование; обязательна для копирования каталога, даже если он пуст.
-i: запрос подтверждения перед перезаписью любых файлов, которые могут быть перезаписаны.
-f: противоположность -i, заменяет любые существующие файлы без запроса подтверждения.
-v: подробный режим, сообщает обо всех действиях, выполняемых cp.
cp -i /timages/* images/: копирует все файлы из каталога /timages/ в каталог images/, находящийся в текущем каталоге. Запрашивается подтверждение, если должен быть перезаписан файл.
cp -vR docs/ /shared/mp3s/* mystuff/: копирует весь каталог docs, плюс все файлы из каталога /shared/mp3s в каталог mystuff.
cp foo bar: делает копию файла foo в файл с именем bar в текущем каталоге.
[3] В UNIX® для всех файлов существуют три разных временных метки: дата последнего доступа к файлу (atime), т.е. дата, когда в последний раз файл открывался для чтения или записи; дата последнего изменения атрибутов inode (mtime); и, наконец, дата последнего изменения содержимого файла (ctime).
[4] Для пользователя достаточно иметь доступ для записи в каталог, чтобы он мог удалять файлы в нем, даже если он не является владельцем файлов.