# simulateExt2Fs **Repository Path**: lluo/simulate-ext2-fs ## Basic Information - **Project Name**: simulateExt2Fs - **Description**: 操作系统课设-类Unix文件系统 - **Primary Language**: Unknown - **License**: Not specified - **Default Branch**: main - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2022-06-27 - **Last Updated**: 2022-06-28 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # 操作系统课程设计 > 多用户 / 多目录文件系统 (Unix) 支持用户添加/删除,文件读写,权限控制等功能。 ## 代码结构 ``` src ├── fs │ ├── constant.rs // 定义了一些文件系统的常量,如块大小、磁盘大小等 │ ├── core // 核心数据结构,磁盘块的管理 │ │ ├── file.rs // 处理文件权限 │ │ ├── fs.rs // 整个文件系统 Fs 的定义,磁盘块的回收/删除 │ │ ├── inode.rs // inode 结点 │ │ ├── iter.rs // 实现对 DirEntry 的迭代 │ │ ├── mod.rs │ │ ├── traits.rs // 将 Inode / DirEntry 转换成字节数组的 trait │ │ └── utils.rs // 常用函数,如字符串与字节数组的转换 │ ├── func // 拓展文件系统的功能,提供常用的接口 │ │ ├── chdir.rs // 更改当前目录 │ │ ├── chmod.rs // 修改权限 │ │ ├── chown.rs // 修改文件拥有者 │ │ ├── close.rs // 关闭文件 │ │ ├── create.rs // 创建文件 / 创建文件夹 │ │ ├── format.rs // 格式化文件系统 │ │ ├── init.rs // 从磁盘初始化文件系统 │ │ ├── login.rs // 登录 / 切换用户 │ │ ├── mod.rs │ │ ├── open.rs // 打开文件 │ │ ├── passwd.rs // 修改密码 │ │ ├── path.rs // 简单的路径解析器,实现通过路径查找文件/文件夹 │ │ ├── pwd.rs // 查看当前目录的绝对路径 │ │ ├── read.rs // 读文件 │ │ ├── rm.rs // 删除文件 │ │ ├── rmdir.rs // 删除空文件夹 │ │ ├── seek.rs // 修改文件指针 │ │ ├── useradd.rs // 添加用户 │ │ ├── userdel.rs // 删除用户 │ │ └── write.rs // 写文件 │ └── mod.rs ├── lib.rs ├── main.rs ├── shell // 模拟一个 shell,使用文件系统提供的接口 │ ├── cmd // shell 支持的命令 │ │ ├── cat.rs // 显示文件内容 │ │ ├── cd.rs // 修改当前目录 │ │ ├── chmod.rs // 修改文件权限 │ │ ├── chown.rs // 修改文件拥有者 │ │ ├── cp.rs // 复制文件 │ │ ├── exit.rs // 退出终端 │ │ ├── format.rs // 格式化 │ │ ├── help.rs // 显示帮助信息 │ │ ├── login.rs // 切换用户 │ │ ├── ls.rs // 显示目录信息 │ │ ├── mkdir.rs // 创建文件夹 │ │ ├── mod.rs │ │ ├── passwd.rs // 修改密码 │ │ ├── pwd.rs // 查询当前目录 │ │ ├── rm.rs // 删除文件 / 文件夹 │ │ ├── rmdir.rs // 删除空文件夹 │ │ ├── touch.rs // 创建文件 │ │ ├── useradd.rs // 添加用户 │ │ ├── userdel.rs // 删除用户 │ │ ├── users.rs // 显示用户/密码 │ │ ├── whoami.rs // 显示当前用户 │ │ └── write.rs // 写文件 │ └── mod.rs └── utils.rs ``` ## 编译运行 1. 安装 Rust: - Linux / Macos ``` curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh ``` - Windows [安装 Rustup](https://forge.rust-lang.org/infra/other-installation-methods.html#other-ways-to-install-rustup) 2. 却换到这个目录后运行 `cargo run` ## 开发环境 Visual Studio Code. ## 文档编译 cargo doc --no-deps --document-private-items --release --open