1

次のスクリプトは期待どおりにシンボリック リンクを作成しますが、元のファイルが見つかりません。誰かが理由を教えてもらえますか? File.symlink?これらは、OS X でエイリアスとして登録され、作成されるとtrue を返すため、有効なシンボリック リンクのように見えます。

 #!/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

スクリプトは次の方法で実行されます。

 ruby script.rb link myfile.rb
4

1 に答える 1

1

私自身の質問に答えるために、のインスタンスを置き換えます

File.symlink(file, name) 

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

完璧に機能しました。

于 2012-06-30T00:38:37.837 に答える