#!/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 ..但我自己尝试命令它会工作得很好。
答案 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