Chinaunix首页 | 论坛 | 博客
  • 博客访问: 384050
  • 博文数量: 138
  • 博客积分: 0
  • 博客等级: 民兵
  • 技术积分: 1620
  • 用 户 组: 普通用户
  • 注册时间: 2013-03-10 16:55
个人简介

当你比别人优秀一点点,别人会嫉妒你。当你比别人优秀很多,别人会羡慕你。

文章分类

全部博文(138)

文章存档

2016年(2)

2015年(2)

2014年(15)

2013年(119)

我的朋友

分类: LINUX

2013-04-07 15:05:22

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
-----------------------------------------------------------------------------------------------------------------------------------
注意的一点是,数组成员的内容是文件/目录的绝对路径,如果只是想要
最后一级的文件名字,如下代码所示


点击(此处)折叠或打开

  1. # get the file list,and store them in array

  2.         declare -a file_list
  3.         declare tmp_filename
  4.         file_list=($2*)
  5.         i=0
  6.         while [ $i -lt ${#file_list[*]} ]
  7.         do
  8.                 tmp_filename=${file_list[$i]}
  9.                 file_list[$i]=`basename ${tmp_filename%.*}`
  10.                 i=$(($i+1))
  11.         done

=========================================================================================

关于数组的另外两点tip

打印数组成员列表
echo ${array[@]}
-----------------------------------------------------------------------------------------------------------------------------------

数组个数
echo ${#array[*]}

=========================================================================================
{var%/*}
表示从右边开始,删除第一个/号,一级右边字符
{var#*//}表示从左边开始,删除第一个//号,一级左边所有字符


=========================================================================================
关于 []的一个重要点。

我犯的错误, [ a=b ] 
a,b之间和等号之间必须都有空格 []内部所有部件之间必须用空格隔开。


而当变量赋值的时候,a=xxxxx,等号两侧必须没有空格!!!



阅读(801) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~