2011-04-29 52 views
0

我想捕捉shell命令的输出,所以我用通过Ruby不断与shell交互?

response = `#{command}` 

,如果你想只运行一个命令,而不是持续互动这是罚款。举例来说,如果我做

response = `cd tmp` 
# response = '', which is correct 
response = `ls` 

我想它内TMP的回LS,因为在前面的命令我改变了目录温度。有没有办法在自己的Thread或者一个gem上运行一个连续的shell?

+0

我不认为做'cd tmp; ls'工作 - 也许它会尝试进入目录'tmp; ls'? – 2011-05-01 23:17:55

回答

0

'启动一个子shell,所以它不会影响你当前的Ruby shell。但是,您可以使用Ruby的Dir.chdirFileUtils.cd来更改Ruby shell的工作目录。

顺便说一句,也许你喜欢fresh,这是一个系统和Ruby shell之间的混合。在Ruby shell中,您通常可以使用cd/ls。

+0

新鲜看起来非常有用! – 2011-04-29 18:30:36