Модуль Shellwords (часть стандартной библиотеки) будет выполнять соответствующее экранирование для команд оболочки:
#!/usr/bin/ruby1.8
require 'shellwords'
command = ['cat', 'filename with spaces', '"quoted_filename"'].shelljoin
puts command # => cat filename\ with\ spaces \"quoted_filename\"
system(command)
# => this file has spaces in its name
# => this file has a quoted filename
shellwords также добавляет метод шеллескейп к String.
Эти методы отсутствуют в онлайн-документации по API . Они частично документированы в кирке 1.9 и, как известно, присутствуют в МРТ 1.8.7. Фактический файл (на моей коробке, в /usr/lib/ruby/1.8/shelljoin.rb) хорошо прокомментирован.