Обратные косые черты являются побегами.
В любом случае, если вы просто оцениваете строку, это просто строка как строка. Когда вы используете одинарные кавычки, обратные слэши - это просто обратные слэши, а не экранирующие символы. Внутренне, чтобы строка выводила обратную косую черту, она должна быть экранирована, поэтому 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 не зависят от ОС, поэтому вы можете использовать косую черту, как обычные люди.