Linux dirname命令详解

dirname 命令是一个用于处理文件路径的纯文本工具,它不涉及文件系统操作,只负责提取字符串中最后一个分隔符 '/' 之前的部分。

📝 基本用法

dirname 的核心功能非常简单:它会去掉路径字符串的最后一个组成部分(即文件名或最后一级目录名),并输出剩下的目录路径。

  • 提取目录 :dirname <文件路径>。例如,dirname /home/user/file.txt 会输出 /home/user。
  • 处理当前目录 :如果路径中没有斜杠 /,它会输出 .,表示当前目录。
  • 处理根目录 :如果路径是根目录 /,它会输出 /。
  • 处理多个路径 :可以一次处理多个路径,结果会分行显示。
  • 处理末尾斜杠 :它会智能地忽略路径末尾的斜杠 /。

🔧 语法与选项

dirname 的语法非常简洁,基本格式为:

bash

复制代码
dirname [选项] 名称...

其支持的选项如下:

选项 描述
-z, --zero 使每一行输出以空字符 (NUL) 结尾,而不是换行符 (newline)。这在处理包含换行符的奇怪文件名时很有用。
--help 显示帮助信息并退出。
--version 输出版本信息并退出。

📖 核心使用场景与示例

场景一:作为 basename 命令的互补

dirname 与 basename 命令经常一起出现,basename 用于提取路径的最后一个组件,两者互补。

bash

复制代码
#假设文件路径为/home/user/script.sh
复制代码
复制代码
# basename提取文件名
复制代码
$ basename /home/user/script.sh
复制代码
script.sh
复制代码
复制代码
# dirname提取目录部分
复制代码
$ dirname /home/user/script.sh
复制代码
/home/user

" 不能做的 " :dirname 不会检查路径是否存在或有效。无论文件或目录是否存在,它都会返回计算结果。

相关推荐
ltl1 天前
大多数「无锁」代码其实不是无锁的
linux
ltl1 天前
Linux 内核的内存屏障:一个让我调了三天的 bug
linux
Dontla1 天前
预置known_hosts如何防止中间人攻击(MITM)?(服务器公钥、服务器私钥)Runner、DNS污染、BGP劫持、同网络ARP欺骗、SSH握手
服务器·网络·ssh
Lonely 净土1 天前
Rocky Linux 安装教程
linux·运维·服务器
光影少年1 天前
RN的Fabric 渲染流程
运维·前端·javascript·react native·react.js·fabric
A 糖醋排骨1 天前
grafana loki alloy轻量级日志采集
运维·grafana·loki
林间码客1 天前
从DevOps到DevSecOps:构建现代软件交付的基石与护城河
大数据·运维·devsecops·devops
李白你好1 天前
Windows 离线 Linux 提权辅助查询工具
linux
Lust Dusk1 天前
记一次Linux应急响应题目解析
linux·运维·服务器·网络·安全·网络安全
ShineWinsu1 天前
对于Linux:五种IO模型以及非阻塞IO的详细解析
linux·c++·面试·io·阻塞·非阻塞·fcntl