package main import ( "fmt" "os" ) // 显示目录内容 func cmd_dir(fields []string, stdin *os.File, stdout *os.File, stderr *os.File) { if len(fields) == 1 { // 如果没有指定目录,则显示当前目录 fields = []string{fields[0], "."} } for i, dir := range fields[1:] { // 遍历参数 files, err := os.ReadDir(dir) // 获取目录内容 if err != nil { panic(err) } if len(fields) > 2 { // 如果要显示多个目录 if i > 0 { fmt.Fprintln(stdout) } fmt.Fprintf(stdout, "%s:\n", dir) // 则输出提示 } for _, file := range files { // 遍历文件 info, err := file.Info() // 获取文件信息 if err != nil { panic(err) } if info.IsDir() { // 根据文件信息显示不同颜色 fmt.Fprintf(stdout, "\033[94m%s\033[0m\n", file.Name()) } else if info.Mode()&0111 > 0 { fmt.Fprintf(stdout, "\033[92m%s\033[0m\n", file.Name()) } else { fmt.Fprintln(stdout, file.Name()) } } } }