Add not builtin command - ls
This commit is contained in:
parent
c967591855
commit
d8f629df49
|
@ -0,0 +1,36 @@
|
||||||
|
use std::env;
|
||||||
|
use std::fs;
|
||||||
|
|
||||||
|
fn main(){
|
||||||
|
let args: Vec<String> = env::args().collect();
|
||||||
|
let pwd = env::current_dir().unwrap();
|
||||||
|
let mut show_hidden = false;
|
||||||
|
if args.len() == 1 {
|
||||||
|
list_dir(pwd.display().to_string(), show_hidden);
|
||||||
|
} else {
|
||||||
|
for arg in 1..args.len() {
|
||||||
|
match args[arg].as_str() {
|
||||||
|
"--help" => {
|
||||||
|
println!("List files in directory");
|
||||||
|
},
|
||||||
|
"-a" | "--all" => {
|
||||||
|
show_hidden = true;
|
||||||
|
},
|
||||||
|
arg => {
|
||||||
|
list_dir(arg.to_string(), show_hidden);
|
||||||
|
},
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
fn list_dir(arg: String, show_hidden: bool) {
|
||||||
|
let files = fs::read_dir(arg.clone()).unwrap();
|
||||||
|
for entry in files {
|
||||||
|
let path = entry.unwrap().path();
|
||||||
|
let file = path.strip_prefix(arg.clone());
|
||||||
|
if file.clone().unwrap().display().to_string().starts_with('.') && !show_hidden{
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
println!("{}", file.unwrap().display());
|
||||||
|
}
|
||||||
|
}
|
|
@ -9,16 +9,16 @@ fn main(){
|
||||||
"--help" => {
|
"--help" => {
|
||||||
println!("Usage: mkdir [OPTIONS] DIRECTORY");
|
println!("Usage: mkdir [OPTIONS] DIRECTORY");
|
||||||
return;
|
return;
|
||||||
}
|
},
|
||||||
"-v" | "--verbose" => {
|
"-v" | "--verbose" => {
|
||||||
verbose_flag = true;
|
verbose_flag = true;
|
||||||
}
|
},
|
||||||
arg => {
|
arg => {
|
||||||
fs::create_dir_all(arg.to_string());
|
fs::create_dir_all(arg.to_string());
|
||||||
if verbose_flag {
|
if verbose_flag {
|
||||||
println!("mkdir: created directory '{}'", arg);
|
println!("mkdir: created directory '{}'", arg);
|
||||||
}
|
}
|
||||||
}
|
},
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue