2010-08-17 6 views
20

지저분한 파일 경로에서 정식 파일 경로를 쉽게 찾을 수 있습니까? 예를 들어Ruby의 정식 파일 경로

:

  • a/b/../c/xa/c/x
  • a/./b/c/x 같은이 작업을 수행하기 위해 어떤 간단한 방법 c/x

과 동일 a/b/c/x

  • a/./b/../../c/x과 동일하다?

  • 답변

    27
    require 'pathname' 
    
    Pathname.new("a/b/../c/x").cleanpath 
    
    +4

    '당신이 다음 대신 cleanpath''의 realpath''사용 (Qt의'canonicalFilePath'처럼) 너무 심볼릭 링크를 제거하려면 'pathname.rb'' – JellicleCat

    +2

    을 필요로한다. –

    +2

    @Erik'realpath'는'cleanpath'와는 달리 파일 시스템에 접근하고 경로가 존재하지 않으면 실패합니다. – hagello

    20

    File.expand_path (FILE_NAME [dir_string]) abs_file_name

    절대 경로에 대한 경로를 변환 →. 상대 경로는 dir_string을 지정하지 않으면 프로세스의 현재 작업 디렉토리에서 참조되며,이 경우 시작 경로로 사용됩니다. 주어진 경로 이름은 프로세스 소유자의 홈 디렉토리 (환경 변수 HOME이 올바르게 설정되어야 함)로 확장되는 ~으로 시작될 수 있습니다. ~user은 명명 된 사용자의 홈 디렉토리로 확장됩니다.

    File.expand_path("~oracle/bin")   #=> "/home/oracle/bin" 
    File.expand_path("../../bin", "/tmp/x") #=> "/bin"