dirname 是一个用于提取路径中的目录部分的命令。在 Linux 和类 Unix 系统中,它通常用于处理文件路径,特别是在脚本中处理路径时非常有用。
基本用法
dirname [OPTION] NAME...
示例
-
提取目录路径
dirname /usr/local/bin/script.sh输出:
/usr/local/bin -
处理多个路径
dirname /usr/local/bin/script.sh /etc/nginx/nginx.conf输出:
/usr/local/bin /etc/nginx
shell脚本中使用
cat first.sh
#!/bin/bash
echo dirname : $(dirname $0)
echo pwdd : $(pwd)
执行命令 ./first.sh
输出
dirname : .
pwdd : /Users/zhaojingchun
-
结合
basename使用basename命令用于提取路径中的文件名部分,结合dirname可以方便地分离路径和文件名:path="/usr/local/bin/script.sh" dir=$(dirname "$path") file=$(basename "$path") echo "Directory: $dir" echo "File: $file"输出:
Directory: /usr/local/bin File: script.sh
常用选项
-z, --zero:以 NUL 字符(而不是换行符)分隔输出。
例如:
dirname -z /usr/local/bin/script.sh
输出(注意这里看不到 NUL 字符):
/usr/local/bin
注意事项
dirname处理路径时不会检查路径是否实际存在,它只是单纯地进行字符串操作。- 如果路径中没有目录部分(例如,只有文件名),
dirname会返回.表示当前目录。
例如:
dirname script.sh
输出:
.
总结
dirname 是一个简单但非常有用的命令,特别是在处理文件路径时。它可以帮助你轻松提取路径中的目录部分,结合 basename 命令,可以方便地分离路径和文件名。