Практика. Манипулирование файлами и каталогами
Взаимодействие с файловой системой
Все данные в классических операционных системах представлены в виде файлов. При работе с командным интерфейсом необходимо уметь выполнять любые операции над файлами: копировать, перемещать, переименовывать и так далее. Постараемся получить навыки и знания по данной тематике.
Создание и удаление каталогов
Документация
Для создания каталогов используется приложение mkdir
:
mkdir data images
Команда создаст каталоги data
и images
в текущем рабочем каталоге.
Полную информацию по использованию приложения mkdir
можно получить из документации.
Для удаления пустых каталогов используйте приложение rmdir
:
rmdir empty temp
Команда удалит пустые каталоги empty
и temp
в текущем рабочем каталоге.
Полную информацию по использованию приложения rmdir
можно получить из документации:
Задачи
- В домашнем каталоге пользователя создайте каталог
base
. - Внутри данного каталога создайте подкаталоги
make
,love
,not-war
. - Внутри каталога
make
создайте каталогit
. - Внутри каталога
love
создайте каталогit
. - Внутри каталога
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
являются пустыми текстовыми файлами.
- Скопируйте файл
three.txt
в каталогdata-two
. - Скопируйте файлы
first.txt
иsecond.txt
в каталогdata-two
. - Скопируйте все файлы из каталога
data-two
в каталогdata-one
. - Скопируйте каталог
data-two
в каталогdata-two-backup
. - Скопируйте каталог
data-one
в подкаталогdata-two-backup
. - Создайте каталог
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
являются пустыми текстовыми файлами.
- Перенесите файл
first.txt
в каталогdata-one
. - Переименуйте каталог
data-two
в каталогdata-three
. - Перенесите файл
three.txt
и файлsecond.txt
в каталогdata-three
. - Перенесите каталог
data-one
внутрь каталогаdata-three
.
Интерактивное приложение для манипулирования файлами
Для решения ряда задач иногда полезно прибегнуть к специализированным приложениям, которые предоставляют специализированный интерфейс для манипулирования файлами. Ввиду их специализации ряд действий над файлами в них производить проще по сравнению с командным интерфейсом. Рекомендуется добавить и их в арсенал доступных вам приложений.
Наиболее известным примером приложения является Midnight Commander, mc
. Можно прочитать документацию:
- Файловая оболочка MC: Midnight Commander
- Midnight Commander - консольный файловый менеджер под Linux
Для установки приложения в операционной системе Debian нужно:
- Авторизоваться в системе под учётной записью
root
. - Установить приложение, выполнив команду
apt-get install mc
.
Далее в курсе мы будем использовать обычные консольные приложения для манипулирования файлами, но также рекомендуется ознакомиться и с оболочками MC.
Закрепление материала по всем командам
Выполним ряд действий на манипулирование файлами. После выполнения каждого шага проверяйте содержимое каталога playground
и всех его внутренних каталогов, чтобы проверить корректность выполнения вами команд.
Использование классических приложений
- Создайте каталог
playground
в домашнем каталоге пользователя. - Внутри данного каталога создайте каталоги
dir1
иdir2
. - Скопируйте файл
/etc/passwd
в созданный каталогplayground
. - Повторите последнюю операцию, использовав параметр
-v
. - Повторите последнюю операцию, использовав параметр
-i
. - Переименуйте файл
passwd
вfun
. - Переместите файл
fun
в каталогdir1
. - Переместите файл
fun
в каталогdir2
. - Переместите файл
fun
в каталогdir1
. - Переместите каталог
dir1
в каталогdir2
. - Верните каталог
dir1
и файлfun
в каталогplayground
. - Удалите каталог
playground
.
Использование файловых менеджеров
Решите предыдущую задачу с помощью файлового менеджера Midnight Commander.