Skip to content

fenrir-create/conf_dz_1

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

3 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Этот код на Python представляет собой эмулятор командной оболочки с графическим интерфейсом, использующим библиотеку tkinter.

1. Чтение конфигурационного файла

Функция load_config(config_path) читает XML-файл конфигурации, который содержит два параметра:

1. username — имя пользователя, которое будет отображаться в командной строке.

2. tarpath — путь к архиву TAR, который эмулируется как файловая система.

Функция использует xml.etree.ElementTree для парсинга XML-файла и возвращает извлеченные параметры.

2. Класс эмулятора командной оболочки (ShellEmulator)

Этот класс реализует логику эмуляции работы оболочки, с несколькими командами для работы с виртуальной файловой системой, которая загружается из TAR-архива.

Конструктор (init)

  • Получает имя пользователя и путь к архиву TAR.
  • Инициализирует текущую директорию как корневую (/).
  • Создает словарь file_system, в котором хранится информация о файлах и директориях из TAR-архива.
  • Вызывает метод load_tar_file() для загрузки содержимого архива.

Метод load_tar_file()

  • Открывает TAR-архив и сохраняет метаданные о его содержимом в file_system (имена файлов и папок как ключи и соответствующие объекты в качестве значений).

Команды оболочки:

  • ls(): Выводит список файлов и папок в текущей директории. Работает с путями в архиве, имитируя файловую систему.

  • cd(path): Меняет текущую директорию на ту, которая указана в path. Если такой директории нет, возвращает ошибку "No such directory".

  • head(file_name): Выводит первые 10 строк указанного файла.

  • du(): Выводит общий размер файлов в текущей директории (считает общий объем всех файлов в архиве TAR).

  • whoami(): Выводит текущего пользователя.

3. Графический интерфейс (ShellGUI)

Класс ShellGUI реализует интерфейс с использованием библиотеки tkinter. Он создает окно с текстовым полем для вывода результатов команд и строкой для ввода пользовательских команд.

Конструктор (init)

  • Инициализирует окно и передает в него экземпляр ShellEmulator.
  • Вызывает метод create_gui() для создания компонентов интерфейса.

Метод create_gui()

  • Создает прокручиваемую текстовую область (ScrolledText) для вывода.
  • Создает поле для ввода команд (Entry).
  • Привязывает к полю ввода событие нажатия клавиши Enter для обработки введенной команды (вызывает метод handle_command()).

Метод handle_command()

  • Читает команду из поля ввода и удаляет ее.
  • Выводит введенную команду на экран.
  • Вызывает метод execute_command() для выполнения команды.

Метод execute_command()

  • Разбирает введенную команду и вызывает соответствующие методы ShellEmulator для выполнения (например, ls, cd, head, и т.д.).
  • Выводит результат выполнения команды в текстовой области.

About

Конфигурационное управление дз 1

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors

Languages