basename 是去除目录后剩下的名字
example:shell>temp=/home/temp/1.test
shell>base=`basename $temp`(反引号)
shell>echo $base
结果为:1.test
dirname 是取目录
example:shell>temp=/home/temp/1.test
shell>dir=`dirname $temp`
shell>echo $dir
结果为:/home/temp
另一种实现的方法:
${var##*/} 就是把变量var最后一个/以及左边的内容去掉
${var%/*} 就是把变量var最后一个/以及右边的内容去掉
example:shell>temp=/home/temp/1.test
shell>base=`basename $temp`(反引号)
shell>echo $base
结果为:1.test
dirname 是取目录
example:shell>temp=/home/temp/1.test
shell>dir=`dirname $temp`
shell>echo $dir
结果为:/home/temp
另一种实现的方法:
${var##*/} 就是把变量var最后一个/以及左边的内容去掉
${var%/*} 就是把变量var最后一个/以及右边的内容去掉
dirname:
aguo@auto-test:~> a=/home/aguo/insert.sql
aguo@auto-test:~> echo ${a%/*}
/home/aguo
basename:
aguo@auto-test:~> a=insert.test.sql
aguo@auto-test:~> echo ${a%%.*}
insert
复杂点儿的
##只取出不带路径,不带.的文件。
a=${a%%.*} && a=${a##*/} && echo $a
本文介绍如何使用Shell内置命令basename和dirname进行文件名和路径的处理。通过实例展示了如何获取文件的完整名称、去除路径和扩展名等常见需求,并提供了变量扩展的替代方案。
1万+

被折叠的 条评论
为什么被折叠?



