Linux中的dirname命令会打印出一个文件路径,并将其最后的组件删除。这基本上可以从文件路径中得到目录路径。
这在你想从长文件路径中提取目录路径的bash脚本中特别有用。
dirname 命令是 basename 命令的补充。basename命令从路径中提取文件名,而dirname则是提取目录路径。
下面用一些例子来告诉大家。
Dirname命令的例子
dirname命令的语法简单明了:
dirname OPTION PATH
将dirname命令与文件的绝对路径一起使用将给出目录路径:
dirname /home/user/data/filename.txt
/home/user/data
像basename命令一样,dirname命令实际上也是愚蠢的。它不能真正识别文件路径。它只查找斜杠(/)并打印最后一个斜杠之前的内容。基本上,您可以给它带/的任何字符串,并且可以在其上使用。
例如,我在这里使用一个随机字符串,其中没有文件名。您可以看到它仍然可以正常工作,并输出一个字符串,删除最后一个/及其后面的文本。
如果路径中没有斜线(/),它将输出一个点(.)表示当前目录。
你也可以使用多路径的dirname。它将在一个新的行中返回每个路径的输出。
您可以使用-z选项在同一行中获得结果,并以NULL字符分隔输出。
在bash脚本中使用目录名
让我们谈谈在bash脚本中使用目录名。
假设您有一个文件路径变量,并且想要获取包含该文件的目录的路径。这可能是一个简单的脚本:
pathname=”/home/dir/data/filename”
result=$(dirname “$pathname”)
echo $result
如前所述,dirname命令是basename命令的补充。与dirname不同,basename命令仅输出路径的最后一部分。