我试图逃避Linux路径中的空间.但是,每当我试图逃避反斜杠时,我最终会得到一个双斜线.
示例路径:
/mnt/drive/site/usa/1201 East/1201 East Invoice.pdf
Run Code Online (Sandbox Code Playgroud)
所以我可以在Linux中使用它我想逃避它:
/mnt/drive/site/usa/1201\ East/1201\ East\ Invoice.pdf
Run Code Online (Sandbox Code Playgroud)
所以我正在尝试这个:
backup_item.gsub("\s", "\\\s")
Run Code Online (Sandbox Code Playgroud)
但是我得到了意想不到的输出
/mnt/drive/site/usa/1201\\ East/1201\\ East\\ Invoice.pdf
Run Code Online (Sandbox Code Playgroud)
mde*_*tis 34
斯特凡是对的; 我只是想指出,如果你必须为shell使用转义字符串,你应该检查Shellwords::shellescape:
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
Run Code Online (Sandbox Code Playgroud)
Ste*_*fan 10
这是字符串的inspect值,"str的可打印版本,用引号括起来,特殊字符被转义":
quoted = "path/to/file with spaces".gsub(/ /, '\ ')
=> "path/to/file\\ with\\ spaces"
Run Code Online (Sandbox Code Playgroud)
只需打印字符串:
puts quoted
Run Code Online (Sandbox Code Playgroud)
输出:
path/to/file\ with\ spaces
Run Code Online (Sandbox Code Playgroud)