首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >使用Bash将给定的当前目录的绝对路径转换为相对路径

使用Bash将给定的当前目录的绝对路径转换为相对路径
EN

Stack Overflow用户
提问于 2010-04-02 09:42:39
回答 16查看 150.6K关注 0票数 306

示例:

代码语言:javascript
复制
absolute="/foo/bar"
current="/foo/baz/foo"

# Magic

relative="../../bar"

我如何创造魔力(希望代码不要太复杂……)?

EN

回答 16

Stack Overflow用户

发布于 2015-02-15 12:59:41

我认为使用GNU coreutils 8.23中的realpath是最简单的:

代码语言:javascript
复制
$ realpath --relative-to="$file1" "$file2"

例如:

代码语言:javascript
复制
$ realpath --relative-to=/usr/bin/nmap /tmp/testing
../../../tmp/testing
票数 286
EN

Stack Overflow用户

发布于 2011-09-05 15:50:59

代码语言:javascript
复制
$ python -c "import os.path; print os.path.relpath('/foo/bar', '/foo/baz/foo')"

提供:

代码语言:javascript
复制
../../bar
票数 177
EN

Stack Overflow用户

发布于 2011-02-17 18:40:53

代码语言:javascript
复制
#!/bin/bash
# both $1 and $2 are absolute paths
# returns $2 relative to $1

source=$1
target=$2

common_part=$source
back=
while [ "${target#$common_part}" = "${target}" ]; do
  common_part=$(dirname $common_part)
  back="../${back}"
done

echo ${back}${target#$common_part/}
票数 27
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/2564634

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档