首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用cmd bash将目录更改为ruby。

使用cmd bash将目录更改为ruby。
EN

Stack Overflow用户
提问于 2015-08-10 14:06:01
回答 3查看 625关注 0票数 1

我将此代码创建为ruby,用于创建一个目录并更改该目录中的位置。但是它不起作用,我理解bash返回错误的原因。

代码语言:javascript
复制
sh: :1 cd /path/ not found:

这是我的红宝石密码

代码语言:javascript
复制
#!/usr/bin/ruby

def pr_cartella
  @cartella=ARGV[0] #prendo l'argomento
  Dir.mkdir @cartella #creo la cartella dall'argomento ottenuto
  if Dir.exist? @cartella
    puts "bene la cartella è stata creata"
    Dir.chdir @cartella
    entra
  end
end

def entra
  comando = "cd " + Dir.pwd + @cartella
  %x[ "#{comando}" ]
end

pr_cartella
EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2015-08-11 18:32:50

解决方案在这段代码中。

代码语言:javascript
复制
def pr_cartella
 @cartella=ARGV[0] #prendo l'argomento
 Dir.mkdir @cartella #creo la cartella dall'argomento ottenuto
 if Dir.exist? @cartella
 puts "bene la cartella è stata creata"
 Dir.chdir @cartella
 exec 'bash'
 end
 end
 pr_cartella

多亏了所有人。

票数 1
EN

Stack Overflow用户

发布于 2015-08-10 14:16:22

看起来您正在尝试更改目录两次,这将导致错误发生。

代码语言:javascript
复制
def pr_cartella
  @cartella=ARGV[0] 
  Dir.mkdir @cartella # This makes the directory
  if Dir.exist? @cartella # Assuming the mkdir passed, the always succeeds
    puts "bene la cartella è stata creata"
    Dir.chdir @cartella # This changes from pwd to the newly made directory
    entra
  end
end

然后,在您的entra方法中,您尝试使用系统级命令来更改它,但是您已经用Dir.chdir更改了它。这些文件指出:

将进程的当前工作目录更改为给定的字符串。

所以这个方法:

代码语言:javascript
复制
def entra
  comando = "cd " + Dir.pwd + @cartella # Dir.pwd is already /path/to/@cartella
  %x[ "#{comando}" ]
end

实际上是在尝试:

代码语言:javascript
复制
cd /path/to/@cartella/@cartella

由于您在注释中进行了扩展,表示您实际上试图影响终端会话,所以我想指出,您不能像在这个重复的问题:如何从红宝石脚本在文件夹中(终端) cd中所讨论的那样,使用ruby来完成这个任务。

票数 1
EN

Stack Overflow用户

发布于 2015-08-10 14:31:58

在某个地方使用%x(cd )是没有意义的。在命令完成后,您将返回到以前的位置。

如果您使用Dir.chdir,然后将shell发送到某个位置,那么您已经在您以前已经编辑过的目录中了,除非您的shell正在隐式地查找某个文件(例如:.bashrc,.),并且该文件将执行chdir。

换句话说:如果我做了

代码语言:javascript
复制
Dir.chdir('goofy')
x=%x(pwd)

目录goofy存在时,变量x将包含‘/../goofy’之类的内容。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/31921740

复制
相关文章

相似问题

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