侧边栏壁纸
Linux入门自学网博主等级

每日学一条Linux命令,终成Linux大神

  • 累计撰写 725 篇文章
  • 累计创建 143 个标签
  • 累计收到 0 条评论

目 录CONTENT

文章目录

Linux dirname命令教程:如何从给定的路径或文件名中提取目录(附实例用法详解和注意事项)

Linux dirname命令介绍

dirname是Linux和类Unix操作系统中的一个内置命令,它用于从一个包含文件或目录路径的字符串中删除最后一个斜杠(/)后面的部分,然后打印剩余的部分作为该文件或目录所在的目录的名称。如果参数NAME不包含斜杠(/),那么它只会打印一个点(.)。换句话说,我们可以说dirname命令是一个用于从给定的路径或文件名中提取目录部分的有用工具。dirname命令是basename命令的补充。basename命令从路径中提取文件名,而dirname命令提取目录路径。

Linux dirname命令适用的Linux版本

dirname命令可以在大多数Linux发行版中使用,比如Ubuntu、Debian、Fedora、CentOS等。dirname命令是一个内置命令,所以不需要安装。

Linux dirname命令的基本语法

dirname命令的基本语法如下:

dirname [选项] NAME

其中,NAME是指要提取目录名称的文件或目录的路径。

Linux dirname命令的常用选项或参数说明

dirname命令有以下选项或参数,可以用来控制其行为和输出:

选项或参数说明
-z 或 --zero用空字符而不是换行符来结束每一行的输出¹
--help显示帮助信息¹
--version显示版本信息¹

Linux dirname命令的实例

下面是一些使用dirname命令的实例,展示了它的用法和效果。

实例1:如何从绝对路径中提取目录名称

要从绝对路径中提取目录名称,可以直接使用dirname命令,指定要提取的文件或目录的路径,如下所示:

[linux@bashcommandnotfound.cn ~]$ dirname /home/user/data/filename.txt
/home/user/data

实例2:如何从相对路径中提取目录名称

要从相对路径中提取目录名称,可以直接使用dirname命令,指定要提取的文件或目录的路径,如下所示:

[linux@bashcommandnotfound.cn ~]$ dirname data/filename.txt
data

实例3:如何从没有路径的文件名中提取目录名称

要从没有路径的文件名中提取目录名称,可以直接使用dirname命令,指定要提取的文件名,如下所示:

[linux@bashcommandnotfound.cn ~]$ dirname filename.txt
.

这里的输出是一个点(.),表示当前目录。

实例4:如何使用空字符而不是换行符来结束每一行的输出

要使用空字符而不是换行符来结束每一行的输出,可以使用-z或--zero选项,如下所示:

[linux@bashcommandnotfound.cn ~]$ dirname -z /home/user/data/filename.txt data/filename.txt filename.txt
/home/user/data data .

这里的输出是三个目录名称,用空字符分隔,而不是换行。

实例5:如何查看帮助信息

要查看帮助信息,可以使用--help选项,如下所示:

[linux@bashcommandnotfound.cn ~]$ dirname --help
Usage: dirname NAME
  or:  dirname OPTION
Output each NAME with its last non-slash component and trailing slashes
removed; if NAME contains no /'s, output '.' (meaning the current directory).

  -z, --zero     end each output line with NUL, not newline
      --help     display this help and exit
      --version  output version information and exit

Examples:
  dirname /usr/bin/          -> "/usr"
  dirname dir1/str dir2/str  -> "dir1" followed by "dir2"

GNU coreutils online help: <https://www.gnu.org/software/coreutils/>
Full documentation <https://www.gnu.org/software/coreutils/dirname>
or available locally via: info '(coreutils) dirname invocation'

实例6:如何查看版本信息

要查看版本信息,可以使用--version选项,如下所示:

[linux@bashcommandnotfound.cn ~]$ dirname --version
dirname (GNU coreutils) 8.32
Packaged by Gentoo (8.32 (p1))
Copyright (C) 2020 Free Software Foundation, Inc.
License GPLv3+: GNU GPL version 3 or later <https://gnu.org/licenses/gpl.html>.
This is free software: you are free to change and redistribute it.
There is NO WARRANTY, to the extent permitted by law.

Written by David MacKenzie.

Linux dirname命令的注意事项

  • dirname命令不会检查文件或目录是否存在,它只是根据斜杠(/)来处理字符串。
  • dirname命令不会解析符号链接,它只是根据斜杠(/)来处理字符串。
  • dirname命令不会处理空格或特殊字符,它只是根据斜杠(/)来处理字符串。
  • 如果没有安装dirname命令,可以使用以下命令来模拟它的功能:
[linux@bashcommandnotfound.cn ~]$ echo ${NAME%/*}

其中,NAME是指要提取目录名称的文件或目录的路径。

  • 如果遇到bash: dirname: command not found的错误,可以使用以下命令来安装dirname命令:
[linux@bashcommandnotfound.cn ~]$ sudo apt install coreutils # Debian/Ubuntu
[linux@bashcommandnotfound.cn ~]$ sudo yum install coreutils # CentOS/RHEL
[linux@bashcommandnotfound.cn ~]$ sudo pacman -S coreutils # Arch Linux
0

评论区