# Controllare se Ã¨ presente del codice in un File

**URL:** <https://www.ruby-forum.com/t/controllare-se-a-presente-del-codice-in-un-file/131399>\
**Category:** IT\
**Created:** [March 9, 2008, 11:28am UTC](https://www.ruby-forum.com/t/controllare-se-a-presente-del-codice-in-un-file/131399 "2008-03-09T11:28:19Z")\
**Posts on this page:** 9\
**Page:** 1

<div class="post-metadata">

**Author:** ![koalalorenzo](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/k/f4b2a3/32.png) [@koalalorenzo](https://www.ruby-forum.com/u/koalalorenzo)\
**Post date:** [March 9, 2008, 11:28am UTC](https://www.ruby-forum.com/t/controllare-se-a-presente-del-codice-in-un-file/131399/1 "2008-03-09T11:28:19Z")

</div>

Salve a tutti,  
Ho necessitÃ di controllare se in un determinato file Ã¨ presente del  
testo.  
Premessa: Sto lavorando con Linux  
Il file in questione Ã¨ /etc/apt/sources.list e non Ã¨ modificabile se non  
con i permessi di Amministrazione!  
Devo verificare se sono presenti nel file il seguente testo:

> ##Siderus` repository ##Must have Ubuntu`s repository  
> deb [http://ppa.launchpad.net/siderus/ubuntu](http://ppa.launchpad.net/siderus/ubuntu) gutsy main  
> deb-src [http://ppa.launchpad.net/siderus/ubuntu](http://ppa.launchpad.net/siderus/ubuntu) gutsy main  
> ##end

Grazie e scusate per il disturbo

---

<div class="post-metadata">

**Author:** ![koalalorenzo](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/k/f4b2a3/32.png) [@koalalorenzo](https://www.ruby-forum.com/u/koalalorenzo)\
**Post date:** [March 9, 2008, 11:37am UTC](https://www.ruby-forum.com/t/controllare-se-a-presente-del-codice-in-un-file/131399/2 "2008-03-09T11:37:26Z")

</div>

emh…  
senza i “\>”

---

<div class="post-metadata">

**Author:** ![koalalorenzo](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/k/f4b2a3/32.png) [@koalalorenzo](https://www.ruby-forum.com/u/koalalorenzo)\
**Post date:** [March 9, 2008, 3:24pm UTC](https://www.ruby-forum.com/t/controllare-se-a-presente-del-codice-in-un-file/131399/3 "2008-03-09T15:24:08Z")

</div>

emh… nulla? :’(

---

<div class="post-metadata">

**Author:** ![koalalorenzo](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/k/f4b2a3/32.png) [@koalalorenzo](https://www.ruby-forum.com/u/koalalorenzo)\
**Post date:** [March 9, 2008, 4:22pm UTC](https://www.ruby-forum.com/t/controllare-se-a-presente-del-codice-in-un-file/131399/4 "2008-03-09T16:22:01Z")

</div>

Ciao,

in ruby puoi provare:  
File.open( “/etc/apt/sources.list” ) do |f|  
f.grep( /search\_string/ ) do |line|  
puts path, ‘:’, line  
end  
end

oppure in Bash  
grep “stringa” /etc/apt/sources.list

On Sun, Mar 9, 2008 at 3:24 PM, koala lorenzo [removed\_email\_address@domain.invalid](mailto:removed_email_address@domain.invalid)  
wrote:

> emh… nulla? 😢  
> E` domenica 😃

–  
FEj

“Go and spread the free software. Happy hacking!” - RMS

---

<div class="post-metadata">

**Author:** ![koalalorenzo](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/k/f4b2a3/32.png) [@koalalorenzo](https://www.ruby-forum.com/u/koalalorenzo)\
**Post date:** [March 10, 2008, 4:01pm UTC](https://www.ruby-forum.com/t/controllare-se-a-presente-del-codice-in-un-file/131399/5 "2008-03-10T16:01:41Z")

</div>

Ecco:  
@repostiory = “deb [http://ppa.launchpad.net/siderus/ubuntu](http://ppa.launchpad.net/siderus/ubuntu) gutsy main”  
File.open( “/etc/apt/sources.list”, “a+” ) do |f|  
f.grep( @repository ) do |line|  
puts path, ‘:’, line  
@repot = “y”  
end  
if @repot == “y” then  
puts “Repository presenti nella lista”  
else  
f.write “deb [http://ppa.launchpad.net/siderus/ubuntu](http://ppa.launchpad.net/siderus/ubuntu) gutsy main”  
end  
end

secondo voi va bene?

---

<div class="post-metadata">

**Author:** ![koalalorenzo](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/k/f4b2a3/32.png) [@koalalorenzo](https://www.ruby-forum.com/u/koalalorenzo)\
**Post date:** [March 10, 2008, 3:05pm UTC](https://www.ruby-forum.com/t/controllare-se-a-presente-del-codice-in-un-file/131399/6 "2008-03-10T15:05:28Z")

</div>

koala lorenzo wrote:

> Salve a tutti,  
> Ho necessitÃ di controllare se in un determinato file Ã¨ presente del  
> testo.  
> Premessa: Sto lavorando con Linux  
> Il file in questione Ã¨ /etc/apt/sources.list e non Ã¨ modificabile se non  
> con i permessi di Amministrazione!  
> Devo verificare se sono presenti nel file il seguente testo:
> 
> > ##Siderus` repository ##Must have Ubuntu`s repository  
> > deb [http://ppa.launchpad.net/siderus/ubuntu](http://ppa.launchpad.net/siderus/ubuntu) gutsy main  
> > deb-src [http://ppa.launchpad.net/siderus/ubuntu](http://ppa.launchpad.net/siderus/ubuntu) gutsy main  
> > ##end
> 
> Grazie e scusate per il disturbo

“cat /etc/apt/sources.list”

---

<div class="post-metadata">

**Author:** ![koalalorenzo](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/k/f4b2a3/32.png) [@koalalorenzo](https://www.ruby-forum.com/u/koalalorenzo)\
**Post date:** [March 10, 2008, 6:12pm UTC](https://www.ruby-forum.com/t/controllare-se-a-presente-del-codice-in-un-file/131399/7 "2008-03-10T18:12:26Z")

</div>

Alessandro S. wrote:

> Se l’utente con cui lanci ruby non ha permessi di scrittura sul quel  
> file non puÃ² aggiungere la riga.  
> Si ha i permessi: all’inizio viene dato un bel gksu prima di eseguire il  
> file rb!

> Per verificare la presenza fai mooooolto prima a scrivere :
> 
> line = `cat /etc/apt/sources.list | grep #{@repository}`  
> if line.nil?  
> system(sed ‘$a/#{@repository}’ \> /etc/apt/sources.list)  
> else  
> puts “Repository presenti nella lista”  
> end

ok, quidni prima devo scrivere questo?  
@repostiory = “deb [http://ppa.launchpad.net/siderus/ubuntu](http://ppa.launchpad.net/siderus/ubuntu) gutsy main”

grazie 😃

---

<div class="post-metadata">

**Author:** ![koalalorenzo](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/k/f4b2a3/32.png) [@koalalorenzo](https://www.ruby-forum.com/u/koalalorenzo)\
**Post date:** [March 10, 2008, 5:14pm UTC](https://www.ruby-forum.com/t/controllare-se-a-presente-del-codice-in-un-file/131399/8 "2008-03-10T17:14:46Z")

</div>

koala lorenzo wrote:

> Ecco:  
> @repostiory = “deb [http://ppa.launchpad.net/siderus/ubuntu](http://ppa.launchpad.net/siderus/ubuntu) gutsy main”  
> File.open( “/etc/apt/sources.list”, “a+” ) do |f|  
> f.grep( @repository ) do |line|  
> puts path, ‘:’, line  
> @repot = “y”  
> end  
> if @repot == “y” then  
> puts “Repository presenti nella lista”  
> else  
> f.write “deb [http://ppa.launchpad.net/siderus/ubuntu](http://ppa.launchpad.net/siderus/ubuntu) gutsy main”  
> end  
> end
> 
> secondo voi va bene?

Se l’utente con cui lanci ruby non ha permessi di scrittura sul quel  
file non puÃ² aggiungere la riga.  
Per verificare la presenza fai mooooolto prima a scrivere :

line = `cat /etc/apt/sources.list | grep #{@repository}`  
if line.nil?  
system(sed ‘$a/#{@repository}’ \> /etc/apt/sources.list)  
else  
puts “Repository presenti nella lista”  
end

---

<div class="post-metadata">

**Author:** ![koalalorenzo](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/k/f4b2a3/32.png) [@koalalorenzo](https://www.ruby-forum.com/u/koalalorenzo)\
**Post date:** [March 11, 2008, 11:28am UTC](https://www.ruby-forum.com/t/controllare-se-a-presente-del-codice-in-un-file/131399/9 "2008-03-11T11:28:08Z")

</div>

koala lorenzo wrote:

> Alessandro S. wrote:
> 
> > Se l’utente con cui lanci ruby non ha permessi di scrittura sul quel  
> > file non puÃ² aggiungere la riga.  
> > Si ha i permessi: all’inizio viene dato un bel gksu prima di eseguire il  
> > file rb!
> 
> > Per verificare la presenza fai mooooolto prima a scrivere :
> > 
> > line = `cat /etc/apt/sources.list | grep #{@repository}`  
> > if line.nil?  
> > system(sed ‘$a/#{@repository}’ \> /etc/apt/sources.list)  
> > else  
> > puts “Repository presenti nella lista”  
> > end
> 
> ok, quidni prima devo scrivere questo?  
> @repostiory = “deb [http://ppa.launchpad.net/siderus/ubuntu](http://ppa.launchpad.net/siderus/ubuntu) gutsy main”
> 
> grazie 😃

fai dei test ovviamente, non sono certo che line diventi nil o “”  
la chiamata dentro system va tra virgolette 🙂
