パスの違いを取得して変数に保存する方法

パスの違いを取得して変数に保存する方法

2つのパスがあるとしましょう。 Path1 は静的で path2 は動的です。

例:

  • パス1 = /tmp/folder/
  • パス 2=/tmp/folder/dir1/dir1_2

結果:

  • 違い = /dir/dir1_2

上記の例を実装したいと思います。

ベストアンサー1

GNUを使用すると、realpath次のことができます。

$ Path1=/tmp/folder
$ Path2=/tmp/folder/dir1/dir1_2
$ realpath -m --relative-to="$Path1" -- "$Path2"
dir1/dir1_2

POSIX / Kornのようなシェル(bashなど)で、次のコマンドを使用して変数に保存します。

Diff=$(realpath -m --relative-to="$Path1" -- "$Path2")

一般的な注意点は、生成されたパスが改行で終わると正しく機能しないことです。

zsh対話型の有無にかかわらずbash -O lastpipe

realpath -zm --relative-to="$Path1" -- "$Path2" |
  IFS= read -rd '' Diff

代わりに使用できます。

おすすめ記事