如何停止shell插入?

我正在写一些Ruby在命令行上使用,但shell会干扰太多 – 有没有办法closures整行的插值? 我知道我可以逃脱某些人物,但我正在寻求一个全面的禁令。

例如,如果以空格开始,我已经将shell设置为不添加到历史logging中。

任何帮助,这是非常感谢。


我不认为我自己清楚,我的道歉。 一个例子:

ruby -pi -e 'gsub(/(find)(this)/, "#{$1} #{$2}")' 

shell不会插入这些$数字,因为它被包裹在单引号中,但是有时代码需要包含引号。 Ruby在这方面相当有帮助,你可以用其他特殊字符来改变引号,但是这一切都开始变得有点混乱,并且不会像上面那样简单。 我想要的更像是:

 %% ruby -pi -e 'gsub(/(find)(this)/, "#{$1} #{$2}")' 

其中%%将在该行的其余部分由shell进行内插。

如何使用一个函数,将从提示读取,然后按字面input你input的内容?

 function f { read -p"> " c; $c; } 

在使用中,它将如下所示:

 $ f > echo $var $var 

当你创build你的命令行时,继续使用单引号,但是转义(使用)任何内部的单引号,并且用单引号replace它们,而不用结束整个string的引用。