ruby - 如何使用反引号运行 "pushd"?

标签 ruby

如何使用反引号运行 pushdpopd

每当我在反引号中运行 pushd/tmp 时,我都会得到一个错误:

"No such file or directory - pushd /tmp"

最佳答案

Ruby shell-outs(反引号)每个都在一个新的子 shell 中运行,所以它可能不会像您想象的那样工作:

a = `pwd`
`cd '/tmp'`
b = `pwd`
b == a         # => true
b == "/tmp"    # => false

此外,您确定 pushd 在您的 shell 中工作吗?如果您想要比反引号语法更有用的东西,也许可以考虑使用 ruby​​ 的 systempopen3

Dir#chdir 接受一个 block 。这是来自 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

关于ruby - 如何使用反引号运行 "pushd"?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10739823/

相关文章:

ruby-on-rails - 在不是按字母顺序排列的情况下按尺寸名称订购商品?

ruby-on-rails - 没有 Rails 的 Ruby 关联

ruby - 如何根据给定的字符顺序对字符串进行排序?

mysql - redmine 安装步骤 5.rake generate_secret_token 的问题

Ruby:组合枚举器,制作一个新的枚举器

ruby - 如何在 ruby​​ on rails 中创建 json 对象?

ruby : Conditional initialization

ruby-on-rails - ActiveAdmin 有条件地显示列

javascript - $.getScript 不工作 Rails 3

ruby - 如何在 Capybara 中单击此 Bootstrap 按钮?