Skip to content

drra1nee/bash

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

31 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Мини-оболочка с файловыми командами

Запуск программы через терминал командой: 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, который служит для правильной обработке путей (например "~"), переделывая относительные пути в абсолютные

Описание поддерживаемых команд

  1. cd - смена текущей рабочей директории на указанную
  2. ls - показывает список файлов и директорий в столбец, если ничего не указано, то текущей рабочей директории, либо файлов или папках, указанных в аргументе paths(поддерживается указание нескольких путей)
    • при записи флага -l подробно отображает свойства файлов и директорий(права доступа, размер, время изменения и имя)
  3. cat - отображение содержимого файлов, поддерживает несколько кодировок и обработку нескольких файлов одновременно
  4. cp - копирование файлов, обработка множества исходных файлов
    • cp -r позволяет рекурсивно копировать директории, если каталога, куда копируется папка, не существует, но существует родительская, создается новая с указанным названием
  5. mv - перемещение и переименование файлов/директорий, поддержка перемещения сразу нескольких объектов, если место куда перемещается файл/каталоги является директорией
  6. rm - безопасное удаление файлов и директорий, поддержка массового удаления, есть защита от удаления корневой директории
    • rm -r позволяет рекурсивно удалять директории, для удаления каталогов требуется подтверждение
  7. zip/unzip - создание и распаковка ZIP-архивов, создает и распаковывает ZIP-архив в каталог, в котором находится архив, при создании архива автоматически добавляет .zip, если это не указано
  8. tar/untar - создание и распаковка TAR-архивов, создает и распаковывает TAR-архив в каталог, в котором находится архив, при создании архива автоматически добавляет .tar.gz, если это не указано
  9. grep - поиск строк, соответствующих шаблону, указанному при вызове команды(формат: grep <шаблон> <пути>), есть поддержка нескольких путей
    • grep -r позволяет делать рекурсивный поиск в подкаталогах
    • grep -i поиск без учета регистра
      • флаги -r и -i можно писать вместе одновременно и в любом порядке

Допущения и ограничения в коде

  • Ошибки выводятся в том же стиле, как и в настоящих оболочках
  • Непредвиденные ошибки и исключения обрабатываются с помощью try/except в shell.py
  • Есть поддержка относительных и абсолютных путей
  • Весь код реализован с помощью стандартных библиотек Python
  • Пути с пробелами следует писать в кавычках

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages