我想转换
相对路径 - /home/stevin/data/APP_SERVICE/../datafile.txt
到
绝对路径 - /home/stevin/data/datafile.txt
在Unix中是否有内置工具可以执行此操作或有关如何实现此功能的任何好主意。
-Steve
答案 0 :(得分:31)
readlink -f /home/stevin/data/APP_SERVICE/../datafile.txt
, readlink
应该做你想要的。
答案 1 :(得分:19)
这样的东西可以帮助目录:(对于文件,附加basename
)
echo $(cd ../dir1/dir2/; pwd)
对于文件,
filepath=../dir1/dir2/file3
echo $(cd $(dirname $filepath); pwd)/$(basename $filepath)
答案 2 :(得分:14)
我很惊讶没人提到realpath
。将您的路径传递给realpath
,它会将它们标准化。
$ ls
Changes
dist.ini
$ ls | xargs realpath
/home/steven/repos/perl-Alt-Module-Path-SHARYANTO/Changes
/home/steven/repos/perl-Alt-Module-Path-SHARYANTO/dist.ini
答案 3 :(得分:1)
基于Thrustmaster's answer但纯粹的bash:
THING="/home/stevin/data/APP_SERVICE/../datafile.txt"
echo "$(cd ${THING%/*}; pwd)/${THING##*/}"
当然cd
需要实际存在的路径,这可能并非总是如此 - 在这种情况下,通过编写一个小的Python脚本,你可能会有更简单的生活......