Программа-аналог терминала с базовыми файловыми командами. Реализована вся часть easy и работа с архивами. Запуск программы производится через файл main в папке src.
Команда cd - cмена текущей директории.
Аргументы:
путь- целевая директория для перехода..- переход на уровень вверх (родительская директория)~- переход в домашнюю директорию
Команда ls - вывод списка файлов и папок.
Аргументы:
-l- флаг для подробного вывода (права доступа, размер, дата изменения)path- опциональный путь к целевой директории (по умолчанию - текущая)
Команда cat - вывод содержимого файла в терминал.
Аргументы:
path- обязательный путь к файлу для чтения
Команда cp - копирование файлов и директорий.
Аргументы:
-r- флаг для рекурсивного копирования директорийsource- путь к копируемому файлу или директорииtarget- путь назначения для копирования
Команда mv - перемещение или переименование файлов и директорий.
Аргументы:
source- исходный путь к файлу или директорииtarget- целевой путь для перемещения или новое имя
Команда rm - удаление файлов и директорий. Спрашивает подтверждение от пользователя.
Аргументы:
-r- флаг для рекурсивного удаления директорий с содержимымpath- путь к удаляемому файлу или директории
Команда zip - создание zip-архива
Аргументы:
source- директория для запаковкиtarget- имя создаваемого zip-архива (без расширения .zip)
Команда unzip - распаковка zip-архива
Аргументы:
source- ZIP-архив для распаковкиtarget- директория для распаковки
Команда tar - создание tar.gz-архива
Аргументы:
source- директория для запаковкиtarget- имя создаваемого tar.gz-архива (без расширения .tar.gz)
Команда untar - распаковка tar.gz-архива
Аргументы:
source- tar.gz-архив для распаковкиtarget- директория для распаковки
Команда exit - закрывает программу. Аргументы отсутствуют. Аргументы не принимаются, однако их ввод не приведёт к ошибке, так как команда не обрабатывается через argparse. Также отсутствует флаг --help.
Для деления на аргументы используется метод shlex.split(), который работает с экранированием пробелов. Далее каждая функция команды обрабатывает полученные в разделенном виде аргументы с помощью библиотеки argparse. Для каждой команды, кроме exit, доступен флаг -h или --help для вывода помощи.
Все ошибки вызываются системой и обрабатываются единой функцией, которая запускает команды. Ситуации, такие как удаление родительской директории, становятся невозможными из-за запрета системы на это действие.
В логах записывается информация о том, какие команды ввел пользователь, и статус выполнения команды (выполнена/отменена/ошибка). Пример записи:
2025-11-03 20:23:21,686 - [INFO] - cd ..
2025-11-03 20:23:21,687 - [INFO] - cd: command performed
2025-11-03 20:23:36,950 - [INFO] - rm -r src
2025-11-03 20:23:38,735 - [INFO] - rm: command cancelled
2025-11-03 20:23:44,531 - [INFO] - azaza
2025-11-03 20:23:44,531 - [ERROR] - unknown command