# 用rust写个能再DragonOS上跑的简易命令行程序 **导师:** [val213](https://github.com/val213), Sig-Main, 1042594899@qq.com **bbs链接:** https://bbs.dragonos.org.cn/t/topic/371 > v0.1.0,后续需要的话可能会有补充 > 这是一个相对灵活的任务,你可以尽情探索每个命令的高级用法和各种参数的灵活配置,依照工具的官方文档(例如Gnu xxx Manul),尽可能的实现该工具的各种参数。 ## 前置知识 - 如何配置和启动DragonOS - Rust 基本语法 - 对于常见系统调用的基本了解 - RTFM & STFW ## 具体要求 首先你需要参照官方文档:如何为 DragonOS 创建一个Rust 应用: [Rust应用开发快速入门 — DragonOS dev 文档](https://docs.dragonos.org.cn/userland/appdev/rust-quick-start.html) 然后使用 rust 编写一个 用户空间程序,并为其编写测试样例脚本或者程序,展示其效果。 ## 开发目标以及建议 DragonOS 现有的命令可以进系统后在 `/usr/local/bin` 中 查看,不过由于这部分命令没有进行完备的测试,有可能存在错误或者未实现的命令。如果你有兴趣也可以进行测试并找到存在bug(与预期不符合的命令)的命令并试着找出问题所在和可能的解决方法。 以下是我们暂时还没有实现但是 Linux 中又很常用的命令,可供你参考。如果你有别的自己想开发的命令行工具也可以。比如一个相对更加复杂的DNS解析命令行工具。 > 注意,在开始之前,你需要先调研并确定你所需要的系统调用,在当前主线最新版本的 DragonOS 中是被支持的。 - grep - 从文件或标准输入中搜索并匹配特定的文本模式。 - find - 在目录中查找符合特定条件的文件或目录。 - file - 用于识别文件类型。 - ps - 显示当前运行的进程及其相关信息,如进程ID、状态、CPU/内存占用等。 ## 考察点 1. 能够通过编译器的检查,并通过 DADK 部署到 DragonOS 上 2. 在 DragonOS 上能够跑起来,但是部分功能不符合预期/跟Linux不一致 3. 在 DragonOS 上能够跑起来,且功能符合预期,与Linux一致 > 注:你有可能会遇到部分功能可以通过调用外部 crate 实现的情况,例如`grep` 本身的模式匹配(如正则表达式匹配)通常是通过编写程序逻辑来实现,而非依赖内核的直接支持。Rust 可以使用 crates(例如 `regex`)实现这一部分的逻辑。