파일 OS X의 절대 경로 얻기

파일 OS X의 절대 경로 얻기

사용자에게 파일 위치를 묻는 메시지를 표시하고 이를 절대 경로로 변환하는 스크립트를 만들고 있습니다.

이것이 내가 지금까지 가지고 있는 것입니다. 이걸 어떻게 연결해야 할지 모르겠습니다.

물론이죠.sh

read -e -p "Enter a path to a file: " PATH
CONVERTPATH="$(pwd $PATH)" "/" "$(basename $PATH)"
echo Absolute path is $CONVERTPATH

답변1

~을 위한추가, 추가 따옴표를 제거하기만 하면 됩니다.

CONVERTPATH="$(pwd $PATH)" "/" "$(basename $PATH)"

도착하다

CONVERTPATH="$(pwd $PATH)/$(basename $PATH)"

그러나 몇 가지 문제도 있습니다.

  • pwd인수는 허용되지 않습니다. dirname제공된 경우에는 인수를 사용할 수 있습니다.
  • 이 명령 은 이름을 다음과 같이 read설정하지 않습니다 .PATHname
  • 명령 echo이 완전히 인용되지 않았습니다.

그리고그것들수정하면 다음과 같은 결과를 얻을 수 있습니다.

#!/bin/bash
read -e -p "Enter a path to a file: " name
CONVERTPATH="$(dirname $name)/$(basename $name)"
echo "Absolute path is $CONVERTPATH"

누군가가 변수를 사용하여 프롬프트에 응답하는 상황은 처리하지 않습니다. 또한 의 의도된 용도는 pwd절대 디렉토리를 얻을 가능성이 가장 높습니다. 추가로 교체하여 시도해 볼 수 있습니다.

#!/bin/bash
read -e -p "Enter a path to a file: " name
head=$(dirname "$name")
head=$(cd "$head" && pwd)
CONVERTPATH="$head/$(basename $name)"
echo "Absolute path is $CONVERTPATH"

하지만 여전히 원하는 대로 되지 않습니다.생각하다. (귀하의 관점에서 볼 때) 문제는 pwdOSX에서 시스템이 명령의 심볼릭 링크를 기반으로 한 결과만 에코한다는 것 입니다 cd. 이는 단지 OSX의 특이한 현상이 아니라, 예를 들어 엔트리 체인을 따라 올바른 작업을 수행하기 위해 cd권한 없이 디렉토리에 들어갈 수 있도록 허용하는 오랜 Unix 동작입니다 .pwd..

결과에 기호 링크가 포함되지 않은 절대 경로 이름을 원하는 경우 다른 접근 방식을 취해야 합니다. OSX에는realpath--하지만 명령줄에는 없습니다. 다른 시스템에서는 사용할 수 있습니다readlink -f, 하지만 여기는 아닙니다.

이 주제에 대한 일반적인 토론:

관련 정보