首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何使用反引号运行"pushd“?

如何使用反引号运行"pushd“?
EN

Stack Overflow用户
提问于 2012-05-24 22:46:32
回答 2查看 2K关注 0票数 2

如何使用反引号运行pushdpopd

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

代码语言:javascript
复制
"No such file or directory - pushd /tmp"
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2012-05-24 22:58:44

Ruby shell-out(反标记)每个都运行在一个新的子shell中,因此它可能不会以您所想的方式工作:

代码语言:javascript
复制
a = `pwd`
`cd '/tmp'`
b = `pwd`
b == a         # => true
b == "/tmp"    # => false

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

Dir#chdir接受一个块。这里有一个来自the docs的例子,如果你所需要的就是在一个目录中运行一些命令,然后改回原来的目录:

代码语言:javascript
复制
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
票数 14
EN

Stack Overflow用户

发布于 2012-05-25 02:20:37

您不能以这种方式使用带有反号的pushd;pushd是一个Bash内置文件,而不是可执行文件。但是,您可以使用Ruby Shell模块获得类似的功能。

代码语言:javascript
复制
require 'shell'
shell = Shell.new
shell.pushd '/tmp'
shell.popd
票数 5
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/10739823

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档