Поддерживает базовые команды оболочки для навигации и работы с файлами/папками.
- Иерархия каталогов и файлов в памяти
- Команды:
pwd,ls,mkdir,touch,cd,cd ..,write,cat,rm,tree,mv,cp,help,exit - Рекурсивное удаление директорий
- Перемещение и копирование файлов/папок
- Простая обработка кавычек для текста команды
write
git clone <this-repo-or-unzip>
cd cpp-vfs-project
cmake -S . -B build
cmake --build build --config Release
./build/vfs # Windows: .\build\Release\vfs.exeЕсли у вас Visual Studio, можно открыть папку как CMake-проект или запускать cmake из терминала разработчика.
> help
> mkdir docs
> cd docs
> touch readme.txt
> write readme.txt "Hello VFS!"
> cat readme.txt
> cd ..
> ls
> tree
> mkdir src
> mv docs/readme.txt src/readme_copy.txt
> cp src/readme_copy.txt docs/readme2.txt
> rm docs -r
> exit
- Имена в пределах одной директории уникальны.
rm <path>удаляет файл; для директорий требуется флаг-rили--recursive.mvиcpработают как с файлами, так и с директориями (для директорий копирование/перемещение — рекурсивные).- Пути поддерживают как относительные, так и абсолютные (начинающиеся с
/). Разделитель —/.
Node— базовый абстрактный класс дляFileиDirectory.Directoryхранит детей вstd::unordered_map<std::string, std::unique_ptr<Node>>.- Для навигации у узлов есть указатель на родителя (не-владеющий).
- Вся память управляется через
std::unique_ptr, утечек нет. - Парсер команд — простой: первая лексема — команда, далее аргументы. Для
writeподдерживаются кавычки (одинарные/двойные).