在使用 Ubuntu 或其他 Linux 系统时,我们经常需要从一个完整的文件路径中提取出它所在的目录路径。比如,你有一个文件路径
/home/user/documents/report.txt,而你只想知道这个文件位于哪个目录下(即
/home/user/documents)。这时候,dirname 命令就派上用场了!
什么是 dirname 命令?
dirname是 Linux 和 Unix 系统中的一个标准命令行工具,用于从给定的文件路径中提取目录部分,并忽略最后的文件名或子目录名。
基本语法
使用方式非常简单:
dirname [选项] 路径
实际使用示例
假设我们有以下路径:
/var/log/nginx/access.log,我们想获取它的目录路径。
$ dirname /var/log/nginx/access.log/var/log/nginx
可以看到,
dirname成功去掉了最后的文件名
access.log,只返回了目录路径。
多个路径同时处理
你也可以一次传入多个路径:
$ dirname /home/user/file1.txt /opt/app/config.ini/home/user/opt/app
在 Shell 脚本中使用 dirname
在编写自动化脚本时,
dirname非常有用。例如,你想让脚本知道它自己存放在哪个目录:
#!/bin/bashSCRIPT_DIR=$(dirname "$0")echo "当前脚本所在目录:$SCRIPT_DIR"
这里
$0表示当前脚本的路径,
dirname "$0"就能准确获取其所在目录。这是 Linux shell 脚本开发中的常见技巧。
常见误区与注意事项
如果路径以斜杠结尾(如/home/user/),
dirname会将其视为目录,并继续向上提取:
dirname /home/user/的结果是
/home。 对于根目录
/,
dirname /的结果仍然是
/。 路径中包含空格时,记得用引号包裹路径,避免解析错误。
总结
dirname是一个轻量但极其实用的命令,特别适合在 Ubuntu 提取目录路径、Linux 路径操作 或编写 shell 脚本获取目录名 时使用。掌握它,能让你在终端和脚本中更高效地处理文件路径。
无论你是刚接触 Linux 的小白,还是有一定经验的开发者,理解并熟练使用
dirname命令都会对你的日常工作大有帮助。快打开终端试试吧!
