From: Julien Biard Date: 2009-01-22T18:23:44+09:00 Subject: Re: Escaping backquote in filenames Nobuyoshi Nakada wrote: > Hi, > > At Thu, 22 Jan 2009 16:58:47 +0900, > Julien Biard wrote in [ruby-talk:325582]: >> I would like to execute call system on a filename with a backquote (`), >> but I don't know how to escape it. > > Escaping depends on platforms. > >> -> ls "[Shawn Lee]/10. Shawn Lee\`s Ping Pong Orchestra - Bollywood.mp3" >> -rw-r--r-- 1 hobs medias 3,0M 2009-01-18 15:16 [Shawn Lee]/10. Shawn >> Lee`s Ping Pong Orchestra - Bollywood.mp3 >> >>>> s = "[Shawn Lee]/10. Shawn Lee`s Ping Pong Orchestra - Bollywood.mp3" >> => "[Shawn Lee]/10. Shawn Lee`s Ping Pong Orchestra - Bollywood.mp3" > > In 1.8.7 or later, Shellwords.escape exists. > > require 'shellwords' > `ls #{Shellwords.escape(s)}` I am using 1.8.6. > > Or, multiple arugment #exec bypasses shell. > > IO.popen("-") {|f| f or exec("ls", s); f.read} Thanks, it works. > > In 1.9, IO.popen can handle an array argument. > > IO.popen(["ls", s], &:read) >