linux的dir命令详解

📅 2026/7/18 13:04:07
linux的dir命令详解
Linux dir 命令超详细详解dir是 Linux 系统中与ls功能几乎完全一致的目录列表命令最初是为了兼容 DOS/Windows 用户的使用习惯而设计。在 GNU/Linux 系统中dir与ls、vdir是同一个二进制文件的不同硬链接共享 99% 以上的参数和功能仅在默认输出行为上存在细微差异。⚠️ 核心结论绝大多数情况下dir可以完全替代ls反之亦然。了解两者的差异主要是为了避免踩坑和适应不同的使用习惯。一、核心定位与实现原理核心定位POSIX 标准定义的目录列表命令行为更规范、更可预测专为习惯 DOS/Windowsdir命令的用户设计输出更适合脚本处理默认转义特殊字符与ls完全兼容所有ls的参数都可以直接用于dir实现原理在 GNU coreutils 中dir、ls、vdir是同一个程序的三个不同入口bash运行# 查看三个命令的 inode 号完全相同 ls -i /bin/ls /bin/dir /bin/vdir # 输出示例123456 /bin/dir 123456 /bin/ls 123456 /bin/vdir程序通过判断argv[0]命令名来决定默认行为ls默认多列显示不转义特殊字符终端输出时启用颜色dir默认多列显示强制转义特殊字符默认不启用颜色vdir默认长格式显示相当于dir -l二、基础语法与默认行为基础语法bash运行dir [选项] [目录/文件路径]选项与ls完全相同所有ls的参数都可以直接使用目录 / 文件路径要列出的目录或文件默认为当前目录.默认行为与ls的核心差异表格行为dirls显示格式始终多列显示无论输出到终端还是文件终端输出多列管道 / 文件输出单列特殊字符默认转义所有不可打印字符-b默认直接显示不可打印字符可能导致终端乱码颜色输出默认不启用颜色终端输出时默认启用颜色隐藏文件默认不显示默认不显示排序方式按文件名升序按文件名升序简单来说dir等价于ls -C -b --colornever三、核心常用参数由于dir与ls参数完全兼容这里只列出最常用的参数完整参数请参考ls命令详解。1. 基础显示控制表格参数含义-a/--all显示所有文件包括隐藏文件和.、..-A/--almost-all显示所有隐藏文件但不显示.和..-l以长格式显示详细信息权限、所有者、大小、时间等-h/--human-readable以人类可读格式显示文件大小KB、MB、GB-1数字 1每行只显示一个文件-m以逗号分隔格式显示文件名2. 排序控制表格参数含义-t按修改时间降序排列最新的在前-S按文件大小降序排列最大的在前-r/--reverse反转排序顺序-v按版本号自然排序-X按文件扩展名排序3. 时间与详细信息表格参数含义-i/--inode显示文件的 inode 号-c显示状态改变时间ctime并按其排序-u显示访问时间atime并按其排序--full-time显示完整的时间戳精确到纳秒4. 目录与类型表格参数含义-d/--directory只显示目录本身不显示目录内容-R/--recursive递归列出所有子目录的内容-F/--classify在文件名后添加类型标识符号--colorauto启用彩色输出与ls相同的颜色规则四、dir vs ls 全面对比表格特性dirls设计初衷兼容 DOS/Windows 习惯Unix 原生目录列表命令默认输出ls -C -b --colornever终端ls -C --colorauto管道 / 文件ls -1特殊字符处理默认转义输出安全默认直接显示可能乱码颜色输出默认关闭终端默认开启输出一致性无论输出到哪里都是多列输出到终端多列管道 / 文件单列别名支持系统通常不预定义别名系统通常预定义ll、la等别名脚本适用性更适合脚本输出更可预测更适合日常交互使用跨平台兼容性POSIX 标准行为更统一不同 Unix 变体行为略有差异五、高频实战示例1. 基本使用与 ls 完全一致bash运行# 列出当前目录非隐藏文件 dir # 列出所有文件包括隐藏 dir -a # 长格式显示详细信息 dir -l # 长格式人类可读大小 dir -lh2. 启用彩色输出最常用由于dir默认没有颜色建议在别名中添加--colorautobash运行# 临时启用颜色 dir --colorauto # 永久设置别名添加到 ~/.bashrc echo alias dirdir --colorauto ~/.bashrc source ~/.bashrc3. 按时间和大小排序bash运行# 按修改时间降序最新的在前 dir -lt # 按修改时间升序最旧的在前 dir -ltr # 按文件大小降序最大的在前 dir -lhS # 按文件大小升序最小的在前 dir -lhSr4. 只显示目录本身bash运行# 查看 /var 目录的权限和属性 dir -ld /var # 只显示当前目录下的所有子目录 dir -d */5. 处理含特殊字符的文件名dir 的优势dir默认转义特殊字符输出更安全不会被 shell 误解析bash运行# 创建一个含空格和换行的文件 touch file with spaces$\nand newline # ls 的输出可能导致终端乱码无法直接复制 ls # 输出file with spaces?and newline # dir 的输出安全转义可以直接复制使用 dir # 输出file with spaces$\nand newline6. 递归列出所有文件bash运行# 递归列出当前目录及其所有子目录 dir -R # 递归显示所有文件的详细信息 dir -lR六、相关命令vdirvdir是dir的另一个变体默认以长格式显示相当于dir -lbash运行# 以下两个命令完全等价 vdir dir -lvdir同样与ls完全兼容所有参数都可以直接使用。七、避坑重点与最佳实践避坑重点默认没有颜色这是dir最容易被吐槽的地方建议在~/.bashrc中添加别名启用颜色bash运行alias dirdir --colorauto alias vdirvdir --colorauto输出始终多列当dir的输出通过管道传递给其他命令时仍然是多列格式可能导致解析错误。如果需要单列输出必须显式加-1参数bash运行# 错误多列输出无法正确统计行数 dir | wc -l # 正确强制单列输出 dir -1 | wc -l没有预定义别名系统通常不会为dir预定义ll、la等别名需要手动添加bash运行alias dldir -l alias dladir -la alias dltdir -lht最佳实践日常交互优先使用 lsls有默认颜色输出和丰富的预定义别名使用体验更好。脚本中优先使用 dirdir的输出更可预测默认转义特殊字符处理含空格、换行等特殊字符的文件名更安全。处理特殊文件名时使用 dir当目录中存在大量含特殊字符的文件时dir的输出比ls更清晰、更安全。跨平台脚本使用 dirdir是 POSIX 标准命令在不同 Unix 变体上的行为更统一而ls的某些参数是 GNU 扩展。八、常用组合速查表表格命令组合含义dir列出当前目录非隐藏文件多列转义特殊字符dir -a列出所有文件包括隐藏dir -l长格式显示非隐藏文件dir -lh长格式显示人类可读大小dir -lt按修改时间降序排列dir -lS按文件大小降序排列dir -ld /dir查看目录本身的详细信息dir -1强制单列输出适合脚本dir --colorauto启用彩色输出