basename 与 dirname:拆分路径中的文件名和目录

在 Linux shell 脚本中用 basename(可去后缀)和 dirname 拆解文件路径。

LinuxShell脚本路径低风险
basename 路径 [后缀] 取最后的文件名并可去掉后缀,dirname 路径 取所在目录。

01命令

命令
$ basename /var/log/syslog .log && dirname /etc/nginx/sites/default.conf

02作用说明

这两个小工具是脚本里拆分路径的可移植方案:basename 去掉最后一个斜杠前的所有内容(还能去掉结尾的 .log 之类后缀),dirname 去掉最后一个路径分量。${var%/*} 和 ${var##*/} 的参数展开写法不用额外进程,但 basename/dirname 能正确处理不带斜杠等边界情况,且在任何 POSIX 系统上都可用。

03风险

风险低风险
!注意: basename 只在后缀完全匹配时才去除,并不会校验扩展名是否真实存在。

04撤销

✓无需撤销——该命令不会改变持久状态。

05来源

最后验证: 2026-09-17 · 分类: 文件与文件夹