Манипулирование файлами и каталогами #
Все данные в классических операционных системах представлены в виде файлов. При работе с командным интерфейсом необходимо уметь выполнять любые операции над файлами: копировать, перемещать, переименовывать и так далее. Постараемся получить навыки и знания по данной тематике.
Создание и удаление каталогов #
Документация #
Для создания каталогов используется приложение mkdir:
mkdir data imagesКоманда создаст каталоги data и images в текущем рабочем каталоге.
Полную информацию по использованию приложения mkdir можно получить из документации.
Для удаления пустых каталогов используйте приложение rmdir:
rmdir empty tempКоманда удалит пустые каталоги empty и temp в текущем рабочем каталоге.
Полную информацию по использованию приложения rmdir можно получить из документации:
Задача № 1. Создание и удаление каталогов #
- В домашнем каталоге пользователя создайте каталог
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 и всё их содержимое.
Детали работы приложения можно узнать в документации:
Задача № 2. Создание каталогов и файлов #
Создайте следующую структуру из файлов и каталогов:
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 можно прочитать в документации:
Задача № 3. Копирование файлов и каталогов #
С помощью приложений 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 можно прочитать в документации:
Задача № 4. Перенос и переименование файлов #
В качестве основы для данного задания используйте начальное состояние:
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
Для установки приложения в операционной системе ALT Linux нужно:
- Авторизоваться в системе под учётной записью
root. - Обновить кеш пакетов для установки, выполнив комаду:
apt-get update. - Установить приложение, выполнив команду
apt-get install mc.
Для запуска приложения используйте команду mc.
Далее в курсе мы будем использовать обычные консольные приложения для манипулирования файлами, но также рекомендуется ознакомиться и с оболочками Midnight Commander.
Графические файловые менеджеры #
Помимо псевдографических приложений существует множество графических двухпанельных файловых менеджеров. Они отличаются как по способу представления информации, так и по способу взаимодействия с пользователями. Для ознакомления рекомендуется воспользоваться приложением Double Commander..
Для установки приложения в операционной системе ALT Linux нужно:
- Авторизоваться в системе с правами суперпользователя
root. - Обновить кеш пакетов для установки с помощью команды:
apt-get update. - Установить приложение, выполнив команду
apt-get install doublecmd-gtk.
Для запуска приложения используйте команду doublecmd.
Закрепление материала по всем командам #
Выполним ряд действий на манипулирование файлами. После выполнения каждого шага проверяйте содержимое каталога playground и всех его внутренних каталогов, чтобы проверить корректность выполнения вами команд.
Задача № 5. Использование приложений командного интерфейса #
- Создайте каталог
playgroundв домашнем каталоге пользователя. - Внутри данного каталога создайте каталоги
dir1иdir2. - Скопируйте файл
/etc/passwdв созданный каталогplayground. - Повторите последнюю операцию, использовав параметр
-v. - Повторите последнюю операцию, использовав параметр
-i. - Переименуйте файл
passwdвfun. - Переместите файл
funв каталогdir1. - Переместите файл
funв каталогdir2. - Переместите файл
funв каталогdir1. - Переместите каталог
dir1в каталогdir2. - Верните каталог
dir1и файлfunв каталогplayground. - Удалите каталог
playground.
Задача № 6. Использование файловых менеджеров #
Решите предыдущую задачу с помощью файлового менеджера Midnight Commander.