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路径。
在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脚本的进程号