2012-02-14 6 views
0

그래서 내 .bash_profile을 읽어와 PATH에 문자열을 추가 할 루비에서의 마지막에 문자열을 추가합니다., 특정 라인을 찾아

나는 파일을 열고 난 후 교체 원하는 것을 찾을 때까지 한 줄 읽기해야 하는가? 또는 먼저 모든 것을 읽으십시오.

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

무언가를 사용해 보시지 않겠습니까? –

+0

Ruby를 사용하고 있는지 확실하지 않습니다. 하지만 지금까지 무엇을 얻었습니까? 상대적으로 작은 파일의 경우, 그것을 모두 읽지 않는 이유는 무엇입니까? –

+0

루비를 더 큰 스크립트의 일부로 사용하고 작업장에서 요리사로 옮겨야하므로 모든 스크립트에 대해 루비에서 작업하고 싶습니다. 어느 쪽이든, 나는 지금 당장 파일을 지 웁니다. 내 게시물 – Danny

답변

1

파일 w+ 모드는 모든 내용 (나는 소스를 수정하려고 스크립트에서 이걸 발견) 삭제됩니다. 콘텐츠를 쓸 수 있지만 콘텐츠를 유지하려면 r+ 모드를 사용하십시오.

참고 : 문제를 seing 후, 당신은 왜 배쉬 프로파일?

PATH=/some/path:$PATH 

또는이 작동하지 않습니다의 끝이 효과에 라인을 추가 할 수 없습니다? 그 코드는 간단하기 때문에 :

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

이것은 잘 작동 할 수 있습니다.

+0

을 편집합니다. PATH에있는 내용을 포함하여 파일의 다른 내용을 그대로 유지해야합니다. – Danny

+0

이렇게하면됩니다. 'a +'모드는 추가 모드이며, 현재 파일 내용을 무조건적으로 보호합니다. 추가 된 행이 쓰여지는 방식 때문에 PATH에'/ some/path'를 앞에두고 나머지는 그대로 둡니다. 내가 뭔가를 놓치지 않는 한, 이것은 당신이 원하는 것입니다. – Linuxios

+0

죄송합니다. 말씀하신 내용을 읽은 후에 죄송합니다. 물론 File.new를 사용하겠습니까? a 옵션이있는 File.open이 아니겠습니까? – Danny

관련 문제