basename命令dirname命令和readlink -f命令的使用

1、basename的使用--------------->与dirname相反

获取文件名

格式:

1)basename [pathname] [suffix]

2)basename [string] [suffix]

suffix为后缀,若指定了suffix,basename会将pathname或string中的suffix去掉。

basename会将/即/之前的内容全都去掉,只保留最后的文件名,如果指定到了 suffix (要去掉的后缀)会将后缀也会去掉;

例1: basename  ~/TEST/file.sh                     ------------>得到file.sh

例2:basename ~/TEST/file.sh  .sh                ---------------->得到file

例3: basename $1

./test.sh aa         --------------------------------------->得到aa

2、dirname的使用----->与basename相反

dirname命令可以取给定路径的目录部分,如果给定的参数本身为一个目录,那就取当前目前的上一层目录。这个命令很少直接在shell命令行中使用,一般把它用在shell脚本中,用于取得脚本文件所在目录,然后将当前目录切换过去。

获取文件的目录,去掉文件名和最后一个/

如果只有文件名,则输出.

如果没有文件,则去掉最后一个目录及/

示例:

1) dirname /usr/bin/sort               -------------------->结果  /usr/bin

2) dirname stdio.h                 ------------------>结果 .

3) dirname /usr/bin                 ---------------->结果 /usr
4) dirname /usr/bin/               ------------------->结果 /usr                    ----------->比较特殊

5) 先cd到当前路径然后pwd,打印成绝对路径(打印绝对路径的方法1)

path=$(cd `dirname $0`;pwd)

 dirname $0 只是获取的当前脚本的相对路径.--------------------结果为.
cd `dirname $0`;pwd  先cd到当前路径然后pwd,打印成绝对路径

6)当前路径的上一级路径

script_path=`readlink -f $0`
script_dir=`dirname $script_path` 

3、readlink -f  /home/test/log 

当 /home/test/log 是个连接的话,会指向连接的文件;如  /home/test/mylink

当 /home/test/log 不是连接的话,会显示本身的绝对路径  /home/test/log

打印绝对路径的方法2----------->使用readlink -f

path=$(dirname $0)
path2=$(readlink -f $path)

 echo path   ---------------->  打印结果为 .

ehcho path2   --------------->打印结果为绝对路径

或者一下写法也行:

path=$(readlink -f $0)
  • 3
    点赞
  • 22
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值