В данном контексте под обработкой файлов подразумевается копирование, перемещение и удаление файлов. Позже мы рассмотрим способы изменения атрибутов файлов (владелец, права доступа).
Команда 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 (ctime
); и, наконец, дата последнего
изменения содержимого файла
(mtime
).
[4] Для пользователя достаточно иметь доступ для записи в каталог, чтобы он мог удалять файлы в нем, даже если он не является владельцем файлов.