basename 用于去除绝对路径中的路径,取得最后一级的文件/目录名
basename /home/peterqi/303IT.sh
结果是:
303IT.sh
-----------------------------------------------------------------------------------------------------------------------------------
EXAMPLES
basename /usr/bin/sort
Output "sort".
basename include/stdio.h
.h
Output "stdio".
这个是man basename中的例子。第二个例子就是说,可以在去除前缀路径的同时,去除后面的一部分,比如扩展名。
格式就是使用basename 第二个参数
-----------------------------------------------------------------------------------------------------------------------------------
当我们使用的时候,通常是这样子的
filename=`
basename include/stdio.h .h`
注意一点的是,当我们把一个命令的返回值赋值给一个变量的时候,要使用``符号扩起来,注意这个地方不是单引号,而是键盘tap键上面那个键
-----------------------------------------------------------------------------------------------------------------------------------
dirname 这个命令是取得绝对路径的前缀路径,去除最后一级的目录或者文件
=========================================================================================
把一个目录下的 文件/目录 列表放到一个数组的方法。
array=(/home/peterqi/*)
如果是使用变量 比如DIR=/home/peterqi
那么我们使用的时候
array=($DIR*)
*前面不要加"/" 了DIR本身末尾就带了一个,不然数组成员会多一个"/" 比如/home/peterqi//backup
-----------------------------------------------------------------------------------------------------------------------------------
注意的一点是,数组成员的内容是文件/目录的绝对路径,如果只是想要最后一级的文件名字,如下代码所示
-
# get the file list,and store them in array
-
-
declare -a file_list
-
declare tmp_filename
-
file_list=($2*)
-
i=0
-
while [ $i -lt ${#file_list[*]} ]
-
do
-
tmp_filename=${file_list[$i]}
-
file_list[$i]=`basename ${tmp_filename%.*}`
-
i=$(($i+1))
-
done
=========================================================================================
关于数组的另外两点tip
打印数组成员列表
echo ${array[@]}
-----------------------------------------------------------------------------------------------------------------------------------
数组个数
echo ${#array[*]}
=========================================================================================
{var%/*} 表示从右边开始,删除第一个/号,一级右边字符
{var#*//}表示从左边开始,删除第一个//号,一级左边所有字符
=========================================================================================
关于 []的一个重要点。
我犯的错误, [ a=b ]
a,b之间和等号之间必须都有空格 []内部所有部件之间必须用空格隔开。
而当变量赋值的时候,a=xxxxx,等号两侧必须没有空格!!!
阅读(824) | 评论(0) | 转发(0) |