使用Ruby和命令行工具更改ubuntu中的目录

时间:2014-01-01 01:33:19

标签: ruby shell ubuntu command-line

#!/home/user/.rvm/rubies/ruby-2.0.0-p353/bin/ruby

 case ARGV[0]
        when "apache"
                exec('cd /etc/apach2')
                exec('sudo nano httpd.conf')

        #...
 end

我正在尝试创建一个快速的命令行工具,它将使用一个单词为我更改目录..所以从命令行(在ubuntu 12中)。它告诉我它不能CD ..但我自己尝试命令它会工作得很好。

2 个答案:

答案 0 :(得分:2)

Ruby的Dir课程是您的朋友,请查看chdir方法:

Dir.chdir('/path/to/change/to')

将在代码运行时更改Ruby当前工作目录的概念。任何子shell都会考虑它们的起始目录。

您也可以传递chdir一个块,该块中的所有代码都将采用新目录,当该块退出时,该目录将恢复为旧目录:

Dir.chdir('/path/to/change/to') do
  # do some stuff
end

答案 1 :(得分:1)

好的,所以我做了这个并且它有效(我在OS X但应该是相同的):

ARGV[0]
  when "testme"
    system('cd ripple')
    system('ls -al')

    #...
end

调用system('cd ...不会改变你移动到你正在执行.rb文件的当前shell中的那个目录。所以这样做会更有意义:

system('sudo nano /etc/....

全部在一行

我用后蜱测试它,它对我来说根本不起作用。

我用exec()进行了测试并得到了预期的结果,它运行了一行,就是这样。因此,如果您只有一个命令可以运行,或者您将它们与exec()

一起链接,&&可以正常工作
exec('ls /etc && sudo nano /etc/....

我会读到这个:http://rubyquicktips.com/post/5862861056/execute-shell-commands