命令dirname

79 阅读1分钟

dirname 是一个用于提取路径中的目录部分的命令。在 Linux 和类 Unix 系统中,它通常用于处理文件路径,特别是在脚本中处理路径时非常有用。

基本用法

dirname [OPTION] NAME...

示例

  1. 提取目录路径

    dirname /usr/local/bin/script.sh
    

    输出:

    /usr/local/bin
    
  2. 处理多个路径

    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
  1. 结合 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 命令,可以方便地分离路径和文件名。