shell 中获取文件真实路径(绝对路径)

来源:互联网 发布:舆情分析研判数据 编辑:程序博客网 时间:2024/05/19 01:30

shell 脚本中,通常会使用相对路径来做处理,但有时候,我们也许需要用到绝对路径。
在shell怎么获取一个文件或目录的绝对路径呢?
也许你会立马想到realpath(如果你写过php的话),那么shell支持这个命令吗?看一下这里你就知道了。
Realpath appears to come from debian, and is not part of coreutils,Realpath appears not to be standard issue.
这个命令并不是总是可用的。 其实我们可以使用readlink命令:readlink -f  file_path
file_real_path=$(readlink -f .)    获取当前的真实路径
file_real_path=$(readlink -f ../..)    获取上上一级的真实路径
这样就可以获得文件的绝对路径了,readlink的具体用法请自行man readlink!

Readlink对于softlink的处理拿到的是实际的文件路径,而不是softlink路径。

更好用的获取当前执行脚本的路径的方法为: 

CURDIR=$(cd $(dirname ${BASH_SOURCE[0]}); pwd )

echo $CURDIR 


其他的常用路径有:

获取当前执行脚本的路径 
filepath=$(cd "$(dirname "$0")"; pwd) 

echo "$(basename $0) $(dirname $0) -- $filepath " 
脚本文件的绝对路径存在了环境变量filepath中,可以用echo $filepath  


$0: 获取当前脚本的名称 
$#: 传递给脚本的参数个数 
$$: shell脚本的进程号



0 0
原创粉丝点击