Linux 中的 dirname 命令打印删除了最终组件的文件路径。 这基本上为您提供了文件路径中的目录路径。
这在 bash 要从长文件路径中提取目录路径的脚本。
dirname 命令是对 basename 命令的补充。 basename 命令从路径中提取文件名,而 dirname 命令提取目录路径。
让我用一些例子向你展示。
目录名命令示例
dirname 命令语法简单。
dirname OPTION PATH
使用带有文件绝对路径的 dirname 命令将给出目录路径:
dirname /home/user/data/filename.txt
/home/user/data
与 basename 命令一样,dirname 命令实际上也很愚蠢。 它并不能真正识别文件路径。 它只是查找斜杠 (/) 并打印最后一个斜杠之前的内容。 基本上,你可以给它任何带有 / 的字符串,它会在它上面工作。
为了 example,我在这里使用一个没有文件名的随机字符串。 您可以看到它仍然可以正常工作,并输出一个字符串,删除最后一个 / 和它后面的文本。
如果路径中没有斜杠 (/),它将输出一个点 (.),表示当前目录。

您也可以将 dirname 与多个路径一起使用。 它将在新行中返回每个路径的输出:

您可以使用 -z 选项在同一行中获取结果,输出由 NULL 字符分隔。
在中使用目录名 bash 脚本
我展示了 dirname 命令的一些示例。 我们来谈谈使用 dirname in bash 脚本。
假设您有一个文件路径变量,并且您想要获取包含该文件的目录的路径。 这可能是一个简单的脚本:
pathname="/home/dir/data/filename"
result=$(dirname "$pathname")
echo $result
正如我之前提到的,dirname 命令与 basename 命令相辅相成。 与 dirname 不同,basename 命令仅打印路径的最后一个组成部分。
我希望你喜欢这个教程。 与往常一样,请随时在评论部分提出问题或提供建议。
喜欢这篇文章吗? 请分享它并帮助我们成长:)