2012-02-14 96 views
0

所以我想读入我的.bash_profile并将一个字符串附加到PATH中。打开文件,读取行,找到某一行并在ruby中追加一个字符串到末尾

我应该打开文件和每行读取,直到我找到我想要的然后替换?或者先阅读所有内容?

File.open("/root/.bash_profile", "w+") do |file| 
while line = line.gets 
    if line =~ /^PATH/ 
     Not sure how to append 
    end 
end 
+1

你为什么不尝试一下? – 2012-02-14 18:11:31

+0

甚至不知道我会为此使用Ruby。但你到目前为止有什么?对于一个相对较小的文件,为什么不读一遍呢? – 2012-02-14 18:20:15

+0

需要使用红宝石,因为它是一个更大的脚本的一部分,并在工作中走向厨师,所以想用红宝石工作所有脚本。无论哪种方式,我现在有这个,只是擦除文件。我将编辑我的帖子 – Danny 2012-02-14 18:24:25

回答

1

w+模式下对文件删除所有内容(我发现这在试图修改其源脚本)。如果您希望能够编写但保留内容,请改用r+模式。

注:seing您的问题后,为什么你能不能行追加到此效果bash的配置文件?:

PATH=/some/path:$PATH 

还是将无法正常工作的结束?因为该代码很简单:

f=File.new("~/.bash_profile", "a+") 
f.puts "PATH=/some/path:$PATH" 

这可以很好的工作。

+0

这将工作,除了我需要保持文件的其他内容不变,包括PATH中已有的内容。 – Danny 2012-02-14 19:10:53

+0

这将做到这一点。 'a +'模式是追加模式,无条件保护当前文件内容。由于写入附加行的方式,它会在PATH前加上'/ some/path',而其余部分保持不变。除非我错过了一些东西,这正是你想要的。 – Linuxios 2012-02-14 19:15:09

+0

很抱歉,在阅读您所说的内容后,现在变得更有意义。不知道我会使用File.new,它会不会是一个File.open与一个选项? – Danny 2012-02-14 19:15:09

相关问题