[转]Linux下使用dirname命令

http://www.linuxidc.com/Linux/2008-09/15517.htm

Linux下获得目录路径比较常用的是pwd命令和getcwd()函数了,但是有时候并不能很容易的match一些比较常用的需求。问题来自闪电的一个问题,他写了一个程序放在一个文件夹里面交给客户,这个文件夹里面有若干应用程序和若干文件,客户可以把这个文件夹放在任意的目录,然后客户使用绝对路径跑文件夹里面的一个程序:/program/a/b/c/d/e/folder/fgh.sh,在客户跑的fgh.sh这个程序里要用到和它在同一个文件夹的其他文件:/program/a/b/c/d/e/folder/1.txt。

 

  这样就需要在fgh.sh这个程序里面得到它所在目录的绝对路径:/program/a/b/c/d/e/folder。pwd命令只能得到当前目录,也就是跑程序时所在的目录,但不能得到程序所在的目录。dirname恰好就能实现这个功能,使用dirname $0就可以解析出所要的绝对路径/program/a/b/c/d/e/folder。

  后来有想了一下,dirname这个命令实在是不太常用,很难想起。常规一点,其实也可以在程序里面做判断,如果客户使用的是绝对路径跑程序,可以得到参数,就是那一长串的东西/program/a/b/c/d/e/folder/fgh.sh,然后从这个参数解析出所要的路径名:

  filename=/program/a/b/c/d/e/folder/fgh.sh

  filedirectory=${filename%/*.*}

 

http://www.linuxforum.net/forum/showflat.php?Cat=&Board=vrml&Number=407084&page=46&view=expanded&sb=5&o=all

 

整理的一些相关资料。

问:

比如有 shell 文件,kk.sh,它有可能在不同的目录下执行, 
我希望: 
如果是 执行 /usr/bin/kk.sh ,希望返回 /usr/bin 

如果是 执行 /usr/sbin/kk.sh, 希望返回 /usr/sbin, 

请问以下,如何编写 文件 kk.sh呢? 

答:

用/usr/bin/dirname解析目录名

[xyb@test test]$ cat d.sh 
#!/bin/sh 

TEXTFILE=`dirname $0`/hello.txt 
echo $TEXTFILE 
[xyb@test test]$ ./d.sh 
./hello.txt 
[xyb@test test]$ mkdir adir 
[xyb@test test]$ cp d.sh adir/ 
[xyb@test test]$ adir/d.sh 
adir/hello.txt 
[xyb@test test]$ 


vardir =`dirname $0` 
或者 
varpath r=$0 

转载于:https://www.cnblogs.com/APTX4869/archive/2011/02/05/1949248.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值