Bashを使用して現在のディレクトリを指定して絶対パスを相対パスに変換する 質問する

Bashを使用して現在のディレクトリを指定して絶対パスを相対パスに変換する 質問する

例:

absolute="/foo/bar"
current="/foo/baz/foo"

# Magic

relative="../../bar"

どうすれば魔法が作れるのでしょうか (コードが複雑すぎないことを願いますが...)?

ベストアンサー1

GNU coreutils 8.23 から使用するのがrealpath、最も簡単だと思います:

$ realpath -s --relative-to="$file1" "$file2"

例えば:

$ realpath -s --relative-to=/usr/bin/nmap /tmp/testing
../../../tmp/testing

この-sフラグは、シンボリックリンクが展開されないことを保証します。

おすすめ記事