如何使用反引号运行pushd和popd?
每当我用反引号运行pushd /tmp时,我都会得到一个错误:
"No such file or directory - pushd /tmp"发布于 2012-05-24 22:58:44
Ruby shell-out(反标记)每个都运行在一个新的子shell中,因此它可能不会以您所想的方式工作:
a = `pwd`
`cd '/tmp'`
b = `pwd`
b == a # => true
b == "/tmp" # => false另外,你确定pushd可以在你的shell中工作吗?如果你想要比反引号语法更有用的东西,也许可以考虑使用ruby的system或popen3。
Dir#chdir接受一个块。这里有一个来自the docs的例子,如果你所需要的就是在一个目录中运行一些命令,然后改回原来的目录:
Dir.chdir("/var/spool/mail")
puts Dir.pwd
Dir.chdir("/tmp") do
puts Dir.pwd
Dir.chdir("/usr") do
puts Dir.pwd
end
puts Dir.pwd
end
puts Dir.pwd发布于 2012-05-25 02:20:37
您不能以这种方式使用带有反号的pushd;pushd是一个Bash内置文件,而不是可执行文件。但是,您可以使用Ruby Shell模块获得类似的功能。
require 'shell'
shell = Shell.new
shell.pushd '/tmp'
shell.popdhttps://stackoverflow.com/questions/10739823
复制相似问题