Для перемещения файлов и каталогов предназначена утилита mv
(сокращение от англ. «move» — «перемещать»). У mv
два обязательных параметра: первый — перемещаемый файл или каталог, второй — файл или каталог назначения. Имена файлов и каталогов могут быть заданы в любом допустимом виде: при помощи полного или относительного пути. Кроме того, mv
позволяет перемещать не только один файл или каталог, а сразу несколько. За подробностями о допустимых параметрах и ключах следует обратиться к руководству по mv
.
[methody@localhost methody]$ mv -- -filename-with- examples/
[methody@localhost methody]$ cd examples
[methody@localhost examples]$ mv ../text .
[methody@localhost examples]$ ls
-filename-with- text
[methody@localhost examples]$
Пример 10. Перемещение файлов
Мефодий сначала переместил в каталог «examples
» файл «-filename-with-
», поскольку имя этого файла начинается с «-
», ему потребовалось предварить его ключом «--
», чтобы следующее слово было воспринято комадной оболочкой как параметр (этот приём был описан в лекции Терминал и командная строка). Затем он перешёл в каталог «examples
» и переместил из родительского каталога («../
») файл «text
» в текущий каталог («.
»). Теперь в каталоге «examples
» два файла с примерами.
Перемещение файла внутри одной файловой системы в действительности равнозначно его переименованию: данные самого файла при этом остаются на тех же секторах диска, изменяются каталоги, в которых произошло перемещение. Перемещение предполагает удаление ссылки на файл из того каталога, откуда он перемещён, и добавление ссылки на этот самый файл в тот каталог, куда он перемещён. В результате изменяется полное имя файла — полный путь, т. е. положение файла в файловой системе.
Иногда требуется создать копию файла: для большей сохранности данных, для того, чтобы создать модифицированную версию файла и т. п. В Linux для этого предназначена утилита cp
(сокращение от англ. «copy» — «копировать»). Утилита cp
требует присутствия двух обязательных параметров: первый — копируемый файл или каталог, второй — файл или каталог назначения. Как обычно, в именах файлов и каталогов можно использовать полные и относительные пути. Есть несколько возможностей при комбинации файлов и каталогов в параметрах cp
— о них можно прочесть в руководстве.
[methody@localhost examples]$ cp text text.bak
[methody@localhost examples]$ ls
-filename-with- text text.bak
Пример 11. Копирование файлов
Мефодий решил создать резервную копию файла «text
», «text.bak
» в том же каталоге, что и исходный файл. Для этой простейшей операции копирования достаточно передать cp
в качестве двух параметров имя исходного файла и имя копии. По умолчанию cp
, как и многие другие утилиты, будет работать с файлами в текущем каталоге.
Нужно иметь в виду, что в Linux утилита cp
нередко настроена таким образом, что при попытке скопировать файл поверх уже существующего не выводится никакого предупреждения. В этом случае файл будет просто перезаписан, а данные, которые содержались в старой версии файла, бесповоротно потеряны. Поэтому при использовании cp
следует всегда быть внимательным и проверять имена файлов, которые нужно скопировать.
Говоря о копировании, уместно вспомнить широко известное высказывание, приписываемое Уильяму Оккаму: «Не следует умножать сущности сверх необходимого». Созданная при помощи cp
копия файла связана с оригиналом только в воспоминаниях пользователя, в файловой системе исходный файл и его копия — две совершенно независимые и ничем не связанные единицы. Поэтому при наличии нескольких копий одного и того же файла в рамках одной файловой системы повышается вероятность запутаться в копиях или забыть о некоторых из них. Если задача состоит в том, чтобы обеспечить доступ к одному и тому же файлу из разных точек файловой системы, нужно использовать специально предназначенный для этого механизм файловой системы Linux — ссылки.