# test **Repository Path**: scu-oop-10/test ## Basic Information - **Project Name**: test - **Description**: No description available - **Primary Language**: Unknown - **License**: Not specified - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2022-03-28 - **Last Updated**: 2022-03-31 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # 文件系统 第10组作品 test2 ## 程序说明 本程序实现了一个简单的 Bash 模拟器,来虚拟出与文件系统的交互。 - 文件(file)是数据存储的最小单位。文件名长度**不能超过 255**。一个文件可能具有 directory 属性和 hidden 属性。 - 目录(directory) 大小为 $0$,具有 directory 属性的文件,里面可以保存任意数量的目录和文件。空文件系统只有一个文件,叫做“根目录”。在任意时刻,有一个称为“当前目录”的目录。Bash 启动时,当前目录就是根目录。 指令中引用文件的时候,可以使用绝对路径或者相对路径。绝对路径以字符 `/` 开头,如 `/home/scu/java` ;相对路径不以字符 `/` 开头,当前目录和根目录分别用 `.` 和 `..` 表示。 本 Bash 模拟器支持 $7$ 个命令,具体如下表所示。 | 用法 | 描述 | | --------------------------------- | :----------------------------------------------------------- | | **cd** path | 改变当前目录。path 可以是相对路径,也可以是绝对路径。如果目录不存在或名称不合法,输出 `path not found` 。 | | **touch** filename [-size] [-h] | 修改文件。filename 的最后一部分应该是合法的文件名,否则输出 `bad usage`。文件名之前的部分应当是文件系统中存在的目录,否则输出 `path not found` 。在正常情况下,同名文件(如果有的话)应当先被删除,然后新建文件。文件的大小由 -size 参数给出(默认为0),参数-h表示创建隐藏文件。如果存在同名的目录,输出 `a dretory with the same name exists` 。用户不会指定多个 -size 参数。 | | **mkdir** path [-h] | 创建目录。path 的最后一部分应该是 合法的文件名,否则输出 `bad usage` 。文件名之前的部分应当是文件系统中存在的目录,否则输出 `path not found`。参数 -h 表示创建隐藏目录。如果存在一个同名目录或文件,输出 `file or directory with the same name exists` 。 | | **ls** [path] [-h] [-r] [-f] [-d] | 没有参数的情况下,Is 命令列出当前目录的所有非隐藏文件。对于输出的每个文件,输出单独的一行,依次包含带绝对路径的文件名、文件大小,以及 hidden (如果有隐藏属性)、 dir (如果是目录).如果没有一个需要输出的内容,输出 `[empty]`。如果path是文件系统中存在的目录,则列出该目录(而非当前目录)中的文件。如果指定了 path 參数但 path 不是一个合法的路径,则输出 `path not found` 。 -h 表示要列出隐藏文件(默认不显示),-r 表示递归列出所有子目录的文件(即使未指定 -h 也需要进入隐藏目录递归),-d 表示只列出目录,-f 表示只列出非目录 。 | | **rm** [path] | 删除文件或文件夹,如果删除的目录为根目录,输出 `cannot remove root` | | **pwd** | 输出当前目录的绝对路径 | | **exit** | 退出 bash | ## 运行截图 ![image-20220327225631143](readme.assets/image-20220327225631143.png)![image-20220327225646171](readme.assets/image-20220327225646171.png) ## UML 类图 ![image-20220327233616269](readme.assets/image-20220327233616269.png) ## 温馨提示 项目使用 IDEA 进行编程,并导出 eclipse 兼容格式, eclipse 兼容格式已经过测试,可能会产生编码错误,不会产生文件路径错误。 如果遇到编码错误,请选择 `UTF-8` 编码,方法: windows->preferences->general->workspace 在下面编码选择other->UTF-8应用。 请运行 `Main` 类。