Добавить в цитаты Настройки чтения

Страница 9 из 113

-u, --update

При перемещении файлов из одного каталога в другой перемещать только файлы, отсутствующие в каталоге назначения или более новые

-v, --verbose

Выводить информационные сообщения в процессе перемещения

Таблица 4.7. Примеры использования команды mv

Команда

Результат

mv file1 file2

Переместит file1 в file2. Если file2 существует, он будет заменен на новый файл file1. Если file2 отсутствует, он будет создан. В любом случае появится новый файл file2

mv -i file1 file2

То же, что и выше, но если файл file2 существует, у пользователя будет запрошено подтверждение перед перезаписью файла

mv file1 file2 dir1

Переместит file1 и file2 в каталог dir1. Каталог dir1 должен существовать

mv dir1 dir2

Переместит каталог dir1 (и все его содержимое) в каталог dir2. Если каталог dir2 не существует, он будет создан и заполнен содержимым каталога dir1. Каталог dir1 будет удален

rm — удаление файлов и каталогов

Команда rm используется для удаления (remove) файлов и каталогов, например:

rm элемент...

где элемент — это один или несколько файлов или каталогов.

В табл. 4.8 и 4.9 перечислены некоторые параметры, наиболее часто используемые с командой rm.

Таблица 4.8. Параметры команды rm

Параметр

Значение

-i, --interactive

Запрашивать у пользователя подтверждение перед удалением существующего файла. Если этот параметр отсутствует, ­команда rm просто удалит существующие файлы

-r, --recursive

Рекурсивно удалить каталоги. То есть вместе с каталогом будут удалены все его подкаталоги. Это обязательный параметр при удалении каталогов

-f, --force

Игнорировать отсутствующие файлы и не запрашивать подтверждения. Этот параметр отменяет действие параметра --interactive

-v, --verbose

Выводить информационные сообщения в процессе удаления

будьте осторожны с командой rm!

Unix-подобные операционные системы, такие как Linux, не имеют команды, отменяющей удаление. Если вы что-то удалили командой rm, это исчезнет навсегда. Linux считает вас достаточно ответственным человеком, отдающим себе отчет в своих действиях.

Будьте особенно осторожны с групповыми символами. Рассмотрим следующий классический пример. Допустим, вы захотели удалить все файлы HTML в каталоге. Для этого вы вводите команду:

rm *.html

которая сделает именно то, что вам нужно, но если вы случайно вставите пробел между * и .html, как в следующей команде:

rm * .html

rm удалит все файлы в каталоге и затем сообщит, что не нашла файла .html.

Полезный совет: всякий раз, используя групповые символы с командой rm (помимо внимательной проверки ввода!), проверьте сначала аргумент с групповым символом с командой ls. Это позволит увидеть, какие файлы будут удалены. Затем нажмите клавишу со стрелкой вверх, чтобы восстановить команду из истории, и замените ls на rm.

Таблица 4.9. Примеры использования команды rm



Команда

Результат

rm file1

Просто удалит файл file1

rm -i file1

Перед удалением file1 запросит подтверждение у пользователя

rm -r file1 dir1

Удалит файл file1 и каталог dir1 со всем его содержимым

rm -rf file1 dir1

То же, что и выше, но в отсутствие file1 и/или dir1 просто продолжит работу, не выводя никаких сообщений

ln — создание ссылок

Команда ln применяется для создания жесткой или символической ссылки. Ее можно использовать одним из двух способов:

ln файл ссылка

создает жесткую ссылку.

ln -s элемент ссылка

создает символическую ссылку, где элементом может быть файл или каталог.

Жесткие ссылки

Жесткие ссылки — это первоначальный способ создания ссылок в Unix; символические ссылки — более позднее изобретение. По умолчанию каждый файл имеет одну жесткую ссылку, определяющую его имя. Создавая жесткую ссылку, мы создаем дополнительную запись в каталоге для файла. Жесткие ссылки имеют два важных ограничения.

• Жесткая ссылка не может указывать на файл за пределами собственной файловой системы. Это означает, что ссылка не может указывать на файл, находящийся в другом разделе диска.

• Жесткая ссылка не может указывать на каталог.

Жесткая ссылка неотличима от самого файла. В отличие от символических ссылок, при выводе списка с содержимым каталогов жесткие ссылки никак не выделяются. При удалении жесткой ссылки удаляется только сама ссылка, а файл остается на месте (то есть пространство, занимаемое файлом, не освобождается), пока не будут удалены все жесткие ссылки на файл.

Знать о существовании жестких ссылок важно, потому что они будут встречаться вам время от времени, но в современной практике предпочтение отдается символическим ссылкам, о которых рассказывается далее.

Символические ссылки

Символические ссылки были придуманы с целью преодолеть ограничения жестких ссылок. Когда создается символическая ссылка, в действительности создается файл особого типа, содержащий текстовый указатель на файл или каталог. В некотором отношении они действуют подобно ярлыкам в Windows, но, конечно же, появились задолго до ярлыков Windows. ;-)

Файл, на который указывает символическая ссылка, и сама символическая ссылка почти неотличимы друг от друга. Например, если попытаться что-то записать в символическую ссылку, запись будет выполнена в файл, на который она указывает. Однако при удалении символической ссылки удаляется только символическая ссылка, но не файл. Если удалить файл до того, как будет удалена символическая ссылка, ссылка останется на месте, но будет указывать в никуда. О таких ссылках говорят, что они «битые». Во многих реализациях команда ls выделяет битые ссылки цветом, например, красным, чтобы обратить на них внимание.

Идея ссылок может показаться странной и непонятной, но оставьте ее пока. Мы опробуем их на практике, и многое, возможно, для вас прояснится.

Давайте построим песочницу

Поскольку мы собираемся на практике опробовать некоторые операции с файлами, давайте выделим безопасный уголок для «игр» с командами управления файлами. Прежде всего нам понадобится каталог, в котором мы будем практиковаться. Создайте такой каталог в своем домашнем каталоге и назовите его playground.

Создание каталогов

Для создания каталогов используется команда mkdir. Чтобы создать каталог play­ground, проверьте сначала, находитесь ли вы в домашнем каталоге, и только потом создайте новый каталог:

[[email protected]/* */ ~]$ cd

[[email protected]/* */ ~]$ mkdir playground

Чтобы немножко украсить вашу песочницу, создайте внутри playground пару каталогов с именами dir1 и dir2. Для этого смените текущий рабочий каталог на playground и выполните еще одну команду mkdir:

[[email protected]/* */ ~]$ cd playground

[[email protected]/* */ playground]$ mkdir dir1 dir2

Обратите внимание, что команда mkdir может принимать несколько аргументов, это позволяет создать два каталога одной командой.

Копирование файлов

Далее, добавим немного данных в нашу песочницу. Для этого скопируем какие-нибудь файлы. Командой cp скопируйте файл passwd из каталога /etc в текущий рабочий каталог.

[[email protected]/* */ playground]$ cp /etc/passwd .