Linux 的 basename 命令
Linux 的basename命令是一个用于提取路径中文件名或目录名的实用工具。它能够从给定的文件路径中去除目录前缀和后缀扩展名,返回最基础的名称部分。
基本语法
0basename [选项] 路径名 [后缀]
主要功能
提取文件名:
从完整路径中提取最后的文件名部分
示例:basename /home/user/file.txt返回file.txt
去除扩展名:
可选的第二个参数可指定要去除的后缀
示例:basename /home/user/file.txt .txt返回file
常用选项
-a
:支持多个参数处理
-s
:指定要删除的后缀(替代第二个参数方式)
-z
:使用空字符分隔输出(而非换行符)
实际应用场景
脚本编程:
0# 获取当前脚本名称
1script_name=$(basename"$0")
批量处理文件:
0# 批量去除文件扩展名
1for file in *.log; do
2 name=$(basename"$file" .log)
3echo"Processing $name"
4done
路径处理:
0# 获取目录中的文件名
1find /var/log -type f | whileread path; do
2echo"Found file: $(basename "$path")"
3done
注意事项
路径中的斜杠会被正确处理(支持/和\)
如果路径以斜杠结尾,返回空字符串
在管道中使用时,建议用引号包裹变量防止空格问题
与dirname的对比
basename与dirname命令常常配合使用:
basename
:获取路径的最后部分
dirname
:获取路径的目录部分
示例:
0path="/usr/local/bin/python"
1echo"Directory: $(dirname "$path")"# 输出/usr/local/bin
2echo"Filename: $(basename "$path")"# 输出python