Манипулирование файлами и каталогами

Манипулирование файлами и каталогами #

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

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

Документация #

Для создания каталогов используется приложение mkdir:

mkdir data images

Команда создаст каталоги data и images в текущем рабочем каталоге.

Полную информацию по использованию приложения mkdir можно получить из документации.

Для удаления пустых каталогов используйте приложение rmdir:

rmdir empty temp

Команда удалит пустые каталоги empty и temp в текущем рабочем каталоге.

Полную информацию по использованию приложения rmdir можно получить из документации:

Задачи #

  1. В домашнем каталоге пользователя создайте каталог base.
  2. Внутри данного каталога создайте подкаталоги make, love, not-war.
  3. Внутри каталога make создайте каталог it.
  4. Внутри каталога love создайте каталог it.
  5. Внутри каталога not-war создайте каталог hidden weapon storage.

Для выполнения задачи не забывайте о возможности смены текущего рабочего каталога. Какой каталог будет наиболее эффективным для решения задачи?

Если вы случайно создали неправильный каталог, тогда удалите его с помощью rmdir.

В результате у вас должна получиться следующая структура каталогов:

base/
├── love/
│   └── it/
├── make/
│   └── it/
└── not-war/
    └── hidden weapon storage/

Для проверки структуры каталогов можно воспользоваться приложением ls с аргументом -R:

> ls -R base
base:
love  make  not-war

base/love:
it

base/love/it:

base/make:
it

base/make/it:

base/not-war:
'hidden weapon storage'

'base/not-war/hidden weapon storage':

По завершению задания удалите все созданные каталоги с помощью команды rmdir.

Создание пустых файлов и удаление файлов #

Документация #

Для создания пустых файлов используется приложение touch:

touch some/major-data.txt

Создаёт пустой файл major-data.txt в подкаталоге some текущего рабочего каталога.

Детали использования приложения можно узнать в официальной документации:

Для удаления файлов используется приложение rm:

rm file.txt info/some-document.doc

В результате выполнения команды будут удалены файлы file.txt и some-document.doc, находящийся в подкаталоге info.

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

rm -r data images

В результате выполнения команды будут удалены каталоги data, images и всё их содержимое.

Детали работы приложения можно узнать в документации:

Задача #

Создайте следующую структуру из файлов и каталогов:

test/
└── images/
    ├── 2015-05-30/
    │   ├── IMG-5357.JPG
    │   ├── IMG-5358.JPG
    │   └── IMG-5359.JPG
    └── 2016-09-10/
        ├── IMG-5935.JPG
        ├── IMG-5938.JPG
        └── IMG-5939.JPG

В примере только файлы с расширением JPG являются пустыми текстовыми.

После выполнения упражнения удалите все созданные каталоги и файлы рекурсивно.

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

Документация #

Для копирования файлов и каталогов используется приложение cp:

cp cat.png cute_cat.png

После выполнения команды будет создан файл cute_cat.png, являющийся копией cat.png.

Приложение cp может за одно действие также копировать несколько файлов в целевой каталог, а также манипулировать целыми каталогами. Для копирования набора файлов в целевой каталог применяется следующая форма вызова приложения:

cp cat.png dog.jpg raccon.jpg cute-animals

В результате выполнения команды изображения с животными будут перенесены в подкаталог cute-animals.

Ввиду особенностей применения cp: один или множество файлов, копирование файлов или директорий, существует или нет целевой каталог — передать семантику работы приложения достаточно сложно. Обычно поведение cp понятно, однако будьте аккуратны.

Более подробно о возможностях cp можно прочитать в документации:

Задачи #

С помощью приложений mkdir и touch создайте следующую структуру каталогов:

cp-test/
├── data-one/
│   └── three.txt
├── data-two/
├── first.txt
└── second.txt

Только файлы с расширением txt являются пустыми текстовыми файлами.

  1. Скопируйте файл three.txt в каталог data-two.
  2. Скопируйте файлы first.txt и second.txt в каталог data-two.
  3. Скопируйте все файлы из каталога data-two в каталог data-one.
  4. Скопируйте каталог data-two в каталог data-two-backup.
  5. Скопируйте каталог data-one в подкаталог data-two-backup.
  6. Создайте каталог all-data-backup. Скопируйте в него каталоги data-one и data-two.

Перенос и переименование файлов #

Документация #

Для переноса файлов и каталогов между каталогами используется приложение mv:

mv today-photos photos/2020-05-13

В результате выполнения команды каталог today-photos будет перемещён внутрь каталога photos и переименован в 2020-05-13.

Переименование является частным вариантом перемещения: внутри одного каталога перемещение файла фактически его переименовывает.

По сложности команда mv проще чем cp.

Подробно о возможностях приложения mv можно прочитать в документации:

Задачи #

В качестве основы для данного задания используйте начальное состояние:

cp-test/
├── data-one/
│   └── three.txt
├── data-two/
├── first.txt
└── second.txt

Только файлы с расширением txt являются пустыми текстовыми файлами.

  1. Перенесите файл first.txt в каталог data-one.
  2. Переименуйте каталог data-two в каталог data-three.
  3. Перенесите файл three.txt и файл second.txt в каталог data-three.
  4. Перенесите каталог data-one внутрь каталога data-three.

Интерактивное приложение для манипулирования файлами #

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

Наиболее известным примером приложения является Midnight Commander, mc. Можно прочитать документацию:

Для установки приложения в операционной системе ALT Linux нужно:

  1. Авторизоваться в системе под учётной записью root.
  2. Обновить кеш пакетов для установки, выполнив комаду: apt-get update.
  3. Установить приложение, выполнив команду apt-get install mc.

Для запуска приложения используйте команду mc.

Далее в курсе мы будем использовать обычные консольные приложения для манипулирования файлами, но также рекомендуется ознакомиться и с оболочками Midnight Commander.

Графические файловые менеджеры #

Помимо псевдографических приложений существует множество графических двухпанельных файловых менеджеров. Они отличаются как по способу представления информации, так и по способу взаимодействия с пользователями. Для ознакомления рекомендуется воспользоваться приложением Double Commander..

Для установки приложения в операционной системе ALT Linux нужно:

  1. Авторизоваться в системе с правами суперпользователя root.
  2. Обновить кеш пакетов для установки с помощью команды: apt-get update.
  3. Установить приложение, выполнив команду apt-get install doublecmd-gtk.

Для запуска приложения используйте команду doublecmd.

Закрепление материала по всем командам #

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

Использование приложений командного интерфейса #

  1. Создайте каталог playground в домашнем каталоге пользователя.
  2. Внутри данного каталога создайте каталоги dir1 и dir2.
  3. Скопируйте файл /etc/passwd в созданный каталог playground.
  4. Повторите последнюю операцию, использовав параметр -v.
  5. Повторите последнюю операцию, использовав параметр -i.
  6. Переименуйте файл passwd в fun.
  7. Переместите файл fun в каталог dir1.
  8. Переместите файл fun в каталог dir2.
  9. Переместите файл fun в каталог dir1.
  10. Переместите каталог dir1 в каталог dir2.
  11. Верните каталог dir1 и файл fun в каталог playground.
  12. Удалите каталог playground.

Использование файловых менеджеров #

Решите предыдущую задачу с помощью файлового менеджера Midnight Commander.

© A. M. Васильев, 2022, CC BY-SA 4.0, andrey@crafted.su