在 Linux 中处理文件路径时,经常会遇到这样的需求:/home/user/scripts/test.sh如果用字符串处理会很麻烦,但 Linux 提供了专门的工具:basename 用于获取文件名,dirname 用于获取目录路径
一、basename 命令详解
1️⃣ 基本用法
basename /home/user/test.sh
2️⃣ 去掉后缀
3️⃣ 结合变量使用(脚本常用)
file="/home/user/demo.log"basename $file
二、dirname 命令详解
1️⃣ 基本用法
dirname /home/user/test.sh
2️⃣ 当前目录特殊情况
三、basename + dirname 组合使用
path="/home/user/test.sh"echo "文件名: $(basename $path)"echo "目录: $(dirname $path)"
四、实战:脚本获取自身路径
#!/bin/bashscript_path=$(realpath $0)script_dir=$(dirname $script_path)echo "脚本路径: $script_path"echo "所在目录: $script_dir"
脚本路径: /home/user/script.sh五、批量处理文件名
for f in /var/log/*.log; do basename $fdone
六、常见错误示例
七、与 cut/awk 的对比
echo "/home/user/test.sh" | cut -d '/' -f4
八、实际应用场景
九、常用命令总结
basename /path/file.txtdirname /path/file.txtbasename file.txt .txt
$(basename $file)$(dirname $file)
十、小结
basename 和 dirname 是 Linux 中非常基础但重要的工具。一句话总结:basename 取文件名,dirname 取目录名。路径拆分不用愁
basename 取文件
dirname 取目录