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