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
评论区