В данном контексте под обработкой файлов подразумевается копирование, перемещение и удаление файлов. Позже мы рассмотрим способы изменения атрибутов файлов (владелец, права доступа).
Команда mkdir (MaKe DIRectory - создать каталог) используется для создания каталогов. Ее синтаксис довольно прост:
mkdir [опции] <каталог> [каталог ...]
Только на одну опцию имеет смысл обратить
внимание: опция -p
. Она
выполняет два действия:
создаёт родительские каталоги, если они не существовали до этого. Без этой опции mkdir просто вызовет сбой, жалуясь на отсутствие заявленных каталогов;
молча завершит работу, если каталог,
который вы хотели создать, уже
существует. Для сравнения, если вы не
указали опцию -p
, mkdir
возвратит сообщение об ошибке, жалуясь
на то, что каталог уже существует.
Изначально команда touch предназначалась не для создания файлов, а для обновления времени последнего доступа к файлу и времени его изменения[35]. Однако 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
, принудительно удалит файлы
или каталоги, даже если у пользователя
нет доступа для записи в файлы[36].
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
в текущем каталоге.
[35]
В UNIX® для всех файлов существуют три
разных временных метки: дата последнего
доступа к файлу (atime
), т.е. дата,
когда в последний раз файл открывался
для чтения или записи; дата изменения
атрибутов inode (ctime
); и, наконец,
дата последнего изменения
содержимого файла
(mtime
).
[36] Для пользователя достаточно иметь доступ для записи в каталог, чтобы он мог удалять файлы в нем, даже если он не является владельцем файлов.