Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/ruby/22.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
使用Ruby gsub在linux路径名中转义空格_Ruby_Gsub - Fatal编程技术网

使用Ruby gsub在linux路径名中转义空格

使用Ruby gsub在linux路径名中转义空格,ruby,gsub,Ruby,Gsub,我试图逃离Linux路径中的空间。然而,每当我试图摆脱我的反斜杠,我最终以一个双斜杠结束 示例路径: /mnt/drive/site/usa/1201 East/1201 East Invoice.pdf 为了在Linux中使用此功能,我想将其转义为: /mnt/drive/site/usa/1201\ East/1201\ East\ Invoice.pdf 所以我试着这样做: backup_item.gsub("\s", "\\\s") 但我得到了一个意想不到的输出 /mnt/driv

我试图逃离Linux路径中的空间。然而,每当我试图摆脱我的反斜杠,我最终以一个双斜杠结束

示例路径:

/mnt/drive/site/usa/1201 East/1201 East Invoice.pdf
为了在Linux中使用此功能,我想将其转义为:

/mnt/drive/site/usa/1201\ East/1201\ East\ Invoice.pdf
所以我试着这样做:

backup_item.gsub("\s", "\\\s")
但我得到了一个意想不到的输出

/mnt/drive/site/usa/1201\\ East/1201\\ East\\ Invoice.pdf
这是字符串的值,“str的可打印版本,由引号包围,并转义特殊字符”:

只需打印字符串:

puts quoted
输出:

path/to/file\ with\ spaces

斯特凡是对的;我只想指出,如果您必须为shell使用转义字符串,您应该检查:


shellwords.escape('/mnt/drive/site/usa/1201 East…')
。仅适用于考虑使用此解决方案的任何人:shellwords还可以转义特殊字符,如
${}[]
等。
path/to/file\ with\ spaces
require 'shellwords'

puts Shellwords.shellescape "/mnt/drive/site/usa/1201 East/1201 East Invoice.pdf"
# prints /mnt/drive/site/usa/1201\ East/1201\ East\ Invoice.pdf

# or

puts "/mnt/drive/site/usa/1201 East/1201 East Invoice.pdf".shellescape
# prints /mnt/drive/site/usa/1201\ East/1201\ East\ Invoice.pdf

# or (as reported by @hagello)
puts shellwords.escape "/mnt/drive/site/usa/1201 East/1201 East Invoice.pdf"
# prints /mnt/drive/site/usa/1201\ East/1201\ East\ Invoice.pdf