dirname 命令是一个用于处理文件路径的纯文本工具,它不涉及文件系统操作,只负责提取字符串中最后一个分隔符 '/' 之前的部分。
📝 基本用法
dirname 的核心功能非常简单:它会去掉路径字符串的最后一个组成部分(即文件名或最后一级目录名),并输出剩下的目录路径。
- 提取目录 :dirname <文件路径>。例如,dirname /home/user/file.txt 会输出 /home/user。
- 处理当前目录 :如果路径中没有斜杠 /,它会输出 .,表示当前目录。
- 处理根目录 :如果路径是根目录 /,它会输出 /。
- 处理多个路径 :可以一次处理多个路径,结果会分行显示。
- 处理末尾斜杠 :它会智能地忽略路径末尾的斜杠 /。
🔧 语法与选项
dirname 的语法非常简洁,基本格式为:
bash
dirname [选项] 名称...
其支持的选项如下:
| 选项 | 描述 |
|---|---|
| -z, --zero | 使每一行输出以空字符 (NUL) 结尾,而不是换行符 (newline)。这在处理包含换行符的奇怪文件名时很有用。 |
| --help | 显示帮助信息并退出。 |
| --version | 输出版本信息并退出。 |
📖 核心使用场景与示例
场景一:作为 basename 命令的互补
dirname 与 basename 命令经常一起出现,basename 用于提取路径的最后一个组件,两者互补。
bash
#假设文件路径为/home/user/script.sh
# basename提取文件名
$ basename /home/user/script.sh
script.sh
# dirname提取目录部分
$ dirname /home/user/script.sh
/home/user
" 不能做的 " :dirname 不会检查路径是否存在或有效。无论文件或目录是否存在,它都会返回计算结果。