| 123456789101112131415161718192021222324252627282930313233343536373839404142 |
- 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())
- }
- }
- }
- }
|