В данном контексте под обработкой файлов подразумевается копирование, перемещение и удаление файлов. Позже мы рассмотрим способы изменения атрибутов файлов (владелец, права доступа).
Команда mkdir (MaKe DIRectory - создать каталог) используется для создания каталогов. Ее синтаксис довольно прост:
mkdir [опции] <каталог> [каталог ...]
Только на одну опцию имеет смысл обратить
внимание: опция -p. Она
выполняет два действия:
создаёт родительские каталоги, если они не существовали до этого. Без этой опции mkdir просто вызовет сбой, жалуясь на отсутствие заявленных каталогов;
молча завершит работу, если каталог,
который вы хотели создать, уже
существует. Для сравнения, если вы не
указали опцию -p, mkdir
возвратит сообщение об ошибке, жалуясь
на то, что каталог уже существует.
Изначально команда touch предназначалась не для создания файлов, а для обновления времени последнего доступа к файлу и времени его изменения[12]. Однако touch создаст перечисленные пустые файлы, если они не существуют. Ее синтаксис:
touch [опции] файл [файл...]
Таким образом, выполнение команды:
touch file1 images/file2
создаст в текущем каталоге пустой файл с
именем file1 и пустой файл
file2 в каталоге
images, если ранее эти файлы не
существовали.
Команда rm (ReMove - удалить) является аналогом команд DOS del и deltree, и содержит дополнительные опции. Её синтаксис выглядит следующим образом:
rm [опции] <файл|каталог> [файл|каталог...]
-r или
-R: рекурсивное удаление. Эта
опция является обязательной
для удаления каталога, пустого или нет.
Однако для удаления пустых каталогов вы
также можете воспользоваться командой
rmdir.
-i: запрос подтверждения перед
каждым удалением. Обратите внимание, что
по умолчанию в Mandriva Linux, rm по
соображениям безопасности - это
алиас
команды rm -i (похожие алиасы
существуют для cp и
mv). Однако ваше мнение
относительно полезности этих алиасов
может измениться. Если вы хотите удалить
их, вы можете создать пустой файл
~/.alias, который предотвратит
использование общесистемных алиасов. Или
же вы можете отредактировать свой файл
~/.bashrc для отключения
некоторых общесистемных алиасов путем
добавления этой строки: unalias rm cp
mv
-f, как противоположность
-i, принудительно удалит файлы
или каталоги, даже если у пользователя
нет доступа для записи в файлы[13].
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 [опции] <файл|каталог> [файл|каталог ...] <назначение>
-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 в текущем каталоге.
[12]
В UNIX® для всех файлов существуют три
разных временных метки: дата последнего
доступа к файлу (atime), т.е. дата,
когда в последний раз файл открывался
для чтения или записи; дата изменения
атрибутов inode (ctime); и, наконец,
дата последнего изменения
содержимого файла
(mtime).
[13] Для пользователя достаточно иметь доступ для записи в каталог, чтобы он мог удалять файлы в нем, даже если он не является владельцем файлов.