Манипулирование файлами и каталогами #
Все данные в классических операционных системах представлены в виде файлов. При работе с командным интерфейсом необходимо уметь выполнять любые операции над файлами: копировать, перемещать, переименовывать и так далее. Постараемся получить навыки и знания по данной тематике.
Создание и удаление каталогов #
Документация #
Для создания каталогов используется приложение 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
 
Для установки приложения в операционной системе 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 и всех его внутренних каталогов, чтобы проверить корректность выполнения вами команд.
Использование приложений командного интерфейса #
- Создайте каталог 
playgroundв домашнем каталоге пользователя. - Внутри данного каталога создайте каталоги 
dir1иdir2. - Скопируйте файл 
/etc/passwdв созданный каталогplayground. - Повторите последнюю операцию, использовав параметр 
-v. - Повторите последнюю операцию, использовав параметр 
-i. - Переименуйте файл 
passwdвfun. - Переместите файл 
funв каталогdir1. - Переместите файл 
funв каталогdir2. - Переместите файл 
funв каталогdir1. - Переместите каталог 
dir1в каталогdir2. - Верните каталог 
dir1и файлfunв каталогplayground. - Удалите каталог 
playground. 
Использование файловых менеджеров #
Решите предыдущую задачу с помощью файлового менеджера Midnight Commander.