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로깅 목적으로 셸 스크립트에서 사용자가 두 가지 상대 경로, 즉 기본 폴더에 대한 상대 경로와 작업이 수행될 파일에 대한 상대 경로를 전달합니다. 보다 사용자 친화적인 로그 항목을 인쇄하기 위해 기본 폴더 경로에서 파일의 상대 경로를 인쇄하고 싶습니다.

현재 목표를 달성하기 위해 다음 기능을 사용하고 있습니다.

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
}

관련 정보