Библиотека сайта rus-linux.net
Утилиты обработки Файлов |
||
---|---|---|
Глава 3. Введение в командную строку |
Утилиты обработки Файлов
В этом контексте под обработкой файлов подразумевается копирование, перемещение и удаление файлов. Позже мы рассмотрим способы изменения атрибутов файлов (владельцев, разрешения).
mkdir, touch: Создание пустых каталогов и файлов
Команда mkdir (MaKe DIRectory - создать каталог) используется для создания каталогов. Ее синтаксис довольно прост:
mkdir [опции] <каталог> [каталог ...] |
Только одна опция
ничего не стоит: опция -p
.
Она выполнит два действия:
- создаст родительские каталоги, если они не существовали до этого. Без этой опции mkdir просто вызовет сбой, жалуясь на отсутствие заявленных каталогов;
- молча
выполнит возврат, если каталог, который вы хотели создать, уже
существует. Для сравнения, если вы не указали опцию
-p
, mkdir возвратит сообщение об ошибке, жалуясь на то, что каталог уже существует.
- mkdir
foo: создает каталог
foo
в текущем каталоге; - mkdir -p
images/misc docs: создает каталог
misc
в каталогеimages
. Сначала создается последний каталог, если такой не существует (-p
); также создается каталог с именемdocs
в текущем каталоге.
Изначально команда touch предназначалась не для создания файлов, а для обновления времени последнего доступа к файлу и времени его изменения[3]. Однако touch создаст пустые файлы, если они не существуют. Ее синтаксис:
touch [опции] файл [файл...] |
Таким образом, выполнение команды:
touch file1 images/file2 |
создаст в
текущем каталоге пустой файл с именем file1
и пустой файл file2
в каталоге images
,
если ранее эти файлы не существовали.
rm: Удаление файлов или каталогов
Команда 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: Перемещение или удаление файлов
Синтаксис команды 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: Копирование файлов и каталогов
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] Для пользователя достаточно иметь доступ для записи в каталог, чтобы он мог удалять файлы в нем, даже если он не является владельцем файлов.
Глава 3. Введение в командную строку |
Обработка атрибутов файлов |