2012-06-29 2 views
1

다음 스크립트는 예상대로 심볼릭 링크를 생성하지만 원본 파일을 찾을 수 없습니다. 누군가 왜 저에게 말할 수 있습니까? OS X에서 별칭으로 등록하고 File.symlink?이 생성되면 true를 반환하기 때문에 유효한 심볼릭 링크로 보입니다. OSX에서 루비 심볼릭 링크가 작동하지 않습니다

File.symlink(File.expand_path(file), name) 

가 완벽하게 작동

의 인스턴스를 교체,

ruby script.rb link myfile.rb 
+0

원본 파일이 정확히 무엇을 의미합니까? – Linuxios

+0

@Linuxios 링크가 가리키는 곳. – dejay

+1

생성 된 심볼릭 링크가 콘솔 ('ls -l')에서 보이는 모양은 무엇입니까? 원본 파일의 경로가 잘못된 경우 잘못된 심볼릭 링크를 만들 수 있습니다. – Casper

답변

1

내 자신의 질문에 대답하려면 :

#!/usr/bin/env ruby 

case ARGV.first when 'link' 
    file = ARGV[1] 

    if !File.exist?(file) 
    puts "Unfortunately, \"#{file}\" was not found." 
    exit 0 
    end 

    bin = "/usr/local/bin/" 

    if !File.directory?(bin) 
    puts "#{bin} does not exist!" 
    puts "creating #{bin}..." 
    system "mkdir -p #{bin}" 
    end 

    if File.extname(file).empty? 
    if File.symlink?(bin + file) 
     puts "Unfortunately, \"#{bin + file}\" already exists." 
     exit 0 
    end 

    name = bin + file 

    puts "Symlinking #{file} to #{name}..." 
    File.symlink(file, name) 
    system "chmod +x #{name}" 
    else 
    name = file.split(File.extname(file)) 
    name = bin + name.first 

    if File.symlink?(name) 
     puts "Unfortunately, \"#{name}\" already exists." 
     exit 0 
    end 

    puts "Symlinking #{file} to #{name}..." 
    File.symlink(file, name) 
    system "chmod +x #{name}" 
    end 
else 
    puts "try: bin link <file>" 
end 

스크립트는 다음과 같은 방법으로 실행됩니다 .

관련 문제