Запуск программы через терминал командой: python -m src.main, тесты: pytest
Оболочка работает на Windows и Linux, на Windows может быть некорректный вывод прав доступа при использовании команды ls -l, хотя это было частично исправлено в функции format_permissions в ls.py
- main.py является точкой входа в программу
- shell.py - основной класс оболочки, разбирает пользовательский ввод и обрабатывает введенные команды
- logger.py отвечает за логирование всех команд, результатов работы и ошибок, создает отдельный файл shell.log c кодировкой UTF-8 для записи логов
- Имеются unittest'ы в файле tests/test_commands для проверки корректности работы оболочки
- В папке commands есть файл resolve_path, который служит для правильной обработке путей (например "~"), переделывая относительные пути в абсолютные
- cd - смена текущей рабочей директории на указанную
- ls - показывает список файлов и директорий в столбец, если ничего не указано, то текущей рабочей директории, либо файлов или папках, указанных в аргументе paths(поддерживается указание нескольких путей)
- при записи флага -l подробно отображает свойства файлов и директорий(права доступа, размер, время изменения и имя)
 
- cat - отображение содержимого файлов, поддерживает несколько кодировок и обработку нескольких файлов одновременно
- cp - копирование файлов, обработка множества исходных файлов
- cp -r позволяет рекурсивно копировать директории, если каталога, куда копируется папка, не существует, но существует родительская, создается новая с указанным названием
 
- mv - перемещение и переименование файлов/директорий, поддержка перемещения сразу нескольких объектов, если место куда перемещается файл/каталоги является директорией
- rm - безопасное удаление файлов и директорий, поддержка массового удаления, есть защита от удаления корневой директории
- rm -r позволяет рекурсивно удалять директории, для удаления каталогов требуется подтверждение
 
- zip/unzip - создание и распаковка ZIP-архивов, создает и распаковывает ZIP-архив в каталог, в котором находится архив, при создании архива автоматически добавляет .zip, если это не указано
- tar/untar - создание и распаковка TAR-архивов, создает и распаковывает TAR-архив в каталог, в котором находится архив, при создании архива автоматически добавляет .tar.gz, если это не указано
- grep - поиск строк, соответствующих шаблону, указанному при вызове команды(формат: grep <шаблон> <пути>), есть поддержка нескольких путей
- grep -r позволяет делать рекурсивный поиск в подкаталогах
- grep -i поиск без учета регистра
- флаги -r и -i можно писать вместе одновременно и в любом порядке
 
 
- Ошибки выводятся в том же стиле, как и в настоящих оболочках
- Непредвиденные ошибки и исключения обрабатываются с помощью try/except в shell.py
- Есть поддержка относительных и абсолютных путей
- Весь код реализован с помощью стандартных библиотек Python
- Пути с пробелами следует писать в кавычках