概述
basename
命令用于打印目录或者文件的基本名称。通常在 shell 脚本中用于获取文件名或目录名。
注:
basename
命令不会关注路径是否真实有效,是给basename
指定一个路径,basename
命令会删掉所有的前缀包括最后一个‘/’
字符,然后将后缀的字符串显示出来。
语法
basename
命令的语法如下:
basename 路径 [后缀]
# 或
basename 选项... 路径...
其中 basename
命令支持的选项有:
选项 | 说明 |
---|---|
-a | 表示支持多个求多个路径的名字 |
-s | 表示移除后缀 |
-z | 表示输出不换行 |
–help | 查看帮助信息 |
–version | 输出版本信息 |
使用
获取文件名
可以在 basename
命令后面跟一个文件的绝对路径,就可以获取到名字了,例如:
# 语法
basename 文件路径
# 示例
basename /root/home/test.txt
注:无论这个路径是否真的存在,都会输出名字。
获取目录名
同样可以在 basename
命令后面跟一个目录的绝对路径,就可以获取到目录名了。语法如下:
# 语法
basename 目录路径
# 示例
basename /root/home/hello
去掉文件后缀
默认是会连同文件后缀一起输出的,例如 basename /root/test.txt
就会输出 test.txt
,如果我们不想要文件后缀,可以有如下两种做法:
# 语法一
basename 带后缀的文件路径 后缀
# 示例一
basename /root/test.txt .txt
# 语法二
basename -s 后缀 带后缀的文件路径
# 示例二
basename -s .txt /root/test.txt
获取多个路径的名字
可以同时获取多个文件路径或目录文件的名字:
# 语法
basename -s 路径1 路径2 路径3 ...
# 实例
basename -a /root/abc.txt /root/home /home/db.log
输出路径不换行
语法如下:
basename -z 路径