realpathコマンドをreadlinkコマンドで完全に置き換えることはできますか?

realpathコマンドをreadlinkコマンドで完全に置き換えることはできますか?

realpath命令が存在しないことを考えるとすべてのUNIXプラットフォームrealpath、コマンド置換を使用してreadlinkシェルスクリプトをできるだけクロスプラットフォームにしたいと思います。

問題は、私の場合に必要なパラメータrealpathがあることです。--relative-to

$ realpath bdd/full --relative-to bdd
full

一方、readlinkコマンドの主な機能のみが提供されているようですrealpath

$ readlink -f bdd/full
/home/user/bdd/full

読んだ後マニュアルページ、同様のパラメータが見つかりません--relative-to

readlink同様の機能がサポートされているかどうか知っていますか?それ以外の場合は、他のクロスプラットフォームコマンドを使用してこれらの機能を達成するための--relative-to「きれいな」方法はありますか?readlink

修正する:

私の場合、--relative-toロギング目的でシェルスクリプトでは、ユーザーは2つの相対パス、つまりデフォルトフォルダへの相対パスと、操作が実行されるファイルへの相対パスを渡します。よりユーザーフレンドリーなログエントリを印刷するために、デフォルトのフォルダパスからファイルの相対パスを印刷したいと思います。

現在、目標を達成するために次の機能を使用しています。

get_relative_path () {
  if command -v realpath &> /dev/null
  then
    realpath --relative-to="${2-$PWD}" "$1"
  else
    python -c 'import os.path, sys;print os.path.relpath(sys.argv[1],sys.argv[2])' "$1" "${2-$PWD}"
  fi
}

ベストアンサー1

おすすめ記事