如何在Unix中将相对路径转换为绝对路径

qwa*_*ine 27 unix

我想转换

相对路径 - /home/stevin/data/APP_SERVICE/../datafile.txt

绝对路径 - /home/stevin/data/datafile.txt

在Unix中是否有内置工具可以执行此操作或有关如何实现此功能的任何好主意.

史蒂夫

twa*_*erg 31

readlink -f /home/stevin/data/APP_SERVICE/../datafile.txt应该做你想要的,假设你的Unix/Linux有readlink.

  • 什么分布?`readlink`通常是`coreutils`包的一部分,它通常默认安装.注意它全是小写的,不是`readLink`,而是`readlink` ...... (3认同)

Ult*_*nct 19

这样的东西可以帮助目录:(对于文件,追加basename)

echo $(cd ../dir1/dir2/; pwd)
Run Code Online (Sandbox Code Playgroud)

对于文件,

filepath=../dir1/dir2/file3
echo $(cd $(dirname $filepath); pwd)/$(basename $filepath)
Run Code Online (Sandbox Code Playgroud)


Ste*_*nto 17

我很惊讶没人提到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
Run Code Online (Sandbox Code Playgroud)