1. Утилиты обработки файлов

В данном контексте под обработкой файлов подразумевается копирование, перемещение и удаление файлов. Позже мы рассмотрим способы изменения атрибутов файлов (владелец, права доступа).

1.1. mkdir, touch: Создание пустых каталогов и файлов

Команда mkdir (MaKe DIRectory - создать каталог) используется для создания каталогов. Ее синтаксис довольно прост:

mkdir [опции] <каталог> [каталог ...]

Только на одну опцию имеет смысл обратить внимание: опция -p. Она выполняет два действия:

  1. создаёт родительские каталоги, если они не существовали до этого. Без этой опции mkdir просто вызовет сбой, жалуясь на отсутствие заявленных каталогов;

  2. молча завершит работу, если каталог, который вы хотели создать, уже существует. Для сравнения, если вы не указали опцию -p, mkdir возвратит сообщение об ошибке, жалуясь на то, что каталог уже существует.

Вот несколько примеров:

  • mkdir foo: создает каталог foo в текущем каталоге;

  • mkdir -p images/misc docs: создает каталог misc в каталоге images. Сначала создается последний каталог, если такой не существует (-p); также создается каталог с именем docs в текущем каталоге.

Изначально команда touch предназначалась не для создания файлов, а для обновления времени последнего доступа к файлу и времени его изменения[12]. Однако touch создаст перечисленные пустые файлы, если они не существуют. Ее синтаксис:

touch [опции] файл [файл...]

Таким образом, выполнение команды:

touch file1 images/file2

создаст в текущем каталоге пустой файл с именем file1 и пустой файл file2 в каталоге images, если ранее эти файлы не существовали.

1.2. rm: Удаление файлов или каталогов

Команда 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.

[Внимание]Внимание

При использовании rm файлы удаляются безвозвратно. Способа для их восстановления не существует! (Ну, вообще-то для этого всё-таки есть несколько способов, но это нетривиальная задача и обычно используется предупреждение удаления файлов.) Не раздумывайте при использовании опции -i, чтобы убедиться в том, что вы не удалите по ошибке что-нибудь важное.

1.3. mv: Перемещение или удаление файлов

Синтаксис команды 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/, и показывает порядок выполнения каждой операции.

1.4. cp: Копирование файлов и каталогов

Команда 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 в текущем каталоге.



[12] В UNIX® для всех файлов существуют три разных временных метки: дата последнего доступа к файлу (atime), т.е. дата, когда в последний раз файл открывался для чтения или записи; дата изменения атрибутов inode (ctime); и, наконец, дата последнего изменения содержимого файла (mtime).

[13] Для пользователя достаточно иметь доступ для записи в каталог, чтобы он мог удалять файлы в нем, даже если он не является владельцем файлов.