基本的压缩文件。一般使用文件。红宝石

时间:2012-02-07 23:47:39

标签: ruby zip

我刚接触Ruby中的文件,我发现了以下问题。

执行以下行时:

'zip -r "c:\temp\a.zip" "c:\temp\a.txt"'
来自IRB的

我收到以下内容:

=> "zip -r \"c:\\temp\\a.zip\" \"c:\\temp\\a.txt\""

并且肯定文件未压缩。所以我的问题是:

  1. 为什么ruby会在文件路径和

    \\
    符号周围添加包装

    \
    。如果你能详细说明这将是非常有用的,因为我无法找到关于反斜杠的信息

  2. 如何摆脱这些迹象?

  3. 我的环境:

    Windows 7
    jRuby 153
    

1 个答案:

答案 0 :(得分:2)

反斜杠 转义。

在任何情况下,如果你只是在评估字符串,那就是字符串作为字符串。当您使用单引号时,反斜杠只是反斜杠,而不是转义字符。在内部,对于要打印反斜杠的字符串,必须对其进行转义,因此Ruby会为您执行此操作。

如果您将其分配给变量并调用puts

> 'zip -r "c:\temp\a.zip" "c:\temp\a.txt"'
 => "zip -r \"c:\\temp\\a.zip\" \"c:\\temp\\a.txt\"" 
> s = 'zip -r "c:\temp\a.zip" "c:\temp\a.txt"'
 => "zip -r \"c:\\temp\\a.zip\" \"c:\\temp\\a.txt\"" 
> puts s
zip -r "c:\temp\a.zip" "c:\temp\a.txt"

你实际上并没有任何事情 - 你只是在创建一个字符串。

如果你想执行字符串作为命令,你需要使用反向标记,而不是单引号。此外,Ruby和Java都与操作系统无关,因此您可以像普通人一样使用正斜杠。