diff --git a/rust-dnf/.keep b/rust-dnf/.keep new file mode 100644 index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 diff --git "a/rust-dnf/6\347\272\247425-dnf/.keep" "b/rust-dnf/6\347\272\247425-dnf/.keep" new file mode 100644 index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 diff --git "a/rust-dnf/6\347\272\247425-dnf/bang.rs" "b/rust-dnf/6\347\272\247425-dnf/bang.rs" new file mode 100644 index 0000000000000000000000000000000000000000..80b959d1542069bc7c7b71ef0dad0cb36b2f9c5c --- /dev/null +++ "b/rust-dnf/6\347\272\247425-dnf/bang.rs" @@ -0,0 +1,61 @@ +//help.txt存放于包的根目录下 +//use std::io::stdin;//从命令行输入命令的库 +use std::fs; +use std::io::prelude::*; +use std::fs::File; +use std::io::BufReader; +pub struct Bang{ } +impl Bang{ + + pub fn new() -> Bang{ + return Bang{}; + } + pub fn help(&mut self,str_buf:String) { + + let a=String::from("help"); + + //trim()将stdin().read_line输入读取的头尾符删除 + if str_buf.trim()==a { + + //将命令及作用所在txt文件中所有内容赋予 bangzhu + let bangzhu = fs::read_to_string("help.txt").unwrap(); + //输出所有命令及其作用 + println!("{}", bangzhu); + + } + + else { + let mut buer=0;//用于判断是否有所查询命令命令 + + //打开命令及作用所在txt文件以供读取 + let file = File::open("help.txt").unwrap(); + + //读取txt文件中内容 + let fin = BufReader::new(file);//fin前移除了mut + + let _ml=&str_buf[5..];//将用户输入help <命令名> 中的help以及空格切掉 + let _ml4=_ml.trim();//将命令行读取时读取到的换行符切掉 + + //逐行读取 fin所读取到的txt的内容 + //注意 line的格式并非String而是结构体 Result;是lines()函数的返回值 + let mut num=0; + for line in fin.lines() { + + //将line读取到的每行的内容以String形式赋值给kknd + //注意使用clone()来传递变量,避免无效化 + let kknd = line.unwrap().clone(); + + //用starts_with()函数匹配命令并输出 + if kknd.starts_with(&_ml4) { + num += 1; + println!("\n{}.{}\n", num,kknd); + buer+=1; + } + //用starts_with()函数匹配命令并输出 + + } + //如果没有查询到命令就输出提示 + if buer==0{println!("There is no such command.")} + } +} +} diff --git "a/rust-dnf/6\347\272\247425-dnf/help.txt" "b/rust-dnf/6\347\272\247425-dnf/help.txt" new file mode 100644 index 0000000000000000000000000000000000000000..0f4dc0c5c36d2444536a6136d8ebe55c5e37f06d --- /dev/null +++ "b/rust-dnf/6\347\272\247425-dnf/help.txt" @@ -0,0 +1,22 @@ +repolist 显示系统中可用的 DNF 软件库 +list 列出用户系统上的所有来自软件库的可用软件包和所有已经安装在系统上的软件包 +search <包名> 搜索软件库中的软件包 +provides <路径> 查找某一文件的提供者 +info <包名> 查看软件包详情 +install <包名> 安装软件包 +update <包名> 升级软件包 +check-update 检查系统软件包的更新 +update 升级所有系统软件包 +remove 删除软件包 +autoremove 删除无用孤立的软件包 +clean all 删除缓存的无用软件包 +help <命令名> 获取有关某条命令的使用帮助 +help 查看所有的dnf命令及其用途 +history 查看dnf命令的执行历史 +grouplist 查看所有的软件包组 +groupinstall <软件包组名称> 安装一个软件包组 +groupupdate <软件包组名称> 升级一个软件包组中的软件包 +groupremove <软件包组名称> 删除一个软件包组 +distro-sync 更新软件包到最新的稳定发行版 +reinstall <包名> 重新安装特定软件包 +downgrade <包名> 回滚某个特定软件的版本 \ No newline at end of file diff --git "a/rust-dnf/6\347\272\247425-dnf/main.rs" "b/rust-dnf/6\347\272\247425-dnf/main.rs" new file mode 100644 index 0000000000000000000000000000000000000000..7e59034fbbd0edcc81cea34590069f734eff6a54 --- /dev/null +++ "b/rust-dnf/6\347\272\247425-dnf/main.rs" @@ -0,0 +1,29 @@ +mod bang; +use std::io::stdin;//从命令行输入命令的库 +fn main() { + println!("请输入命令并按下回车以执行"); + loop { + + //从命令行读入命令并赋值给str_buf + let mut str_buf = String::new(); + stdin().read_line(&mut str_buf) + .expect("Failed to read line."); + //从命令行读入命令并赋值给str_buf + + //输入c则结束程序 + if str_buf.trim()==String::from("c") {break;} + + //调用另一文件中的结构体函数,将c设置为该函数文件中的结构体 + let mut c=bang::Bang::new(); + + if str_buf.starts_with("help"){ + + //调用另一文件中的结构体函数 + c.help(str_buf); + } + else { + print!("没有\"{}\"命令:", str_buf.trim()); + } + println!("继续输入命令或输入“c”并按下回车以结束程序"); + } +}