鉴于该realpath
命令不存在于每个 UNIX 平台,我想realpath
用readlink
命令替换,以使我的 shell 脚本尽可能跨平台。
问题是它realpath
具有--relative-to
我的情况所需的参数:
$ realpath bdd/full --relative-to bdd
full
另一方面,readlink
似乎只提供命令的主要功能realpath
:
$ readlink -f bdd/full
/home/user/bdd/full
读完后手册页,我找不到任何类似的参数--relative-to
。
您是否知道是否readlink
支持--relative-to
类似功能,如果不支持,是否有任何“干净”的方法可以使用readlink
或任何其他跨平台命令来实现此类功能?
更新:
就我而言,--relative-to
出于日志记录的目的,在我的 shell 脚本中,用户传递两个相对路径:基本文件夹的相对路径和将执行操作的文件的相对路径。为了打印更人性化的日志条目,我想从基本文件夹路径打印文件的相对路径。
我目前正在使用以下函数来实现我的目标:
get_relative_path () {
if command -v realpath &> /dev/null
then
realpath --relative-to="${2-$PWD}" "$1"
else
python -c 'import os.path, sys;print os.path.relpath(sys.argv[1],sys.argv[2])' "$1" "${2-$PWD}"
fi
}