Ubuntu Suomen keskustelualueet
Ubuntun käyttö => Ohjelmointi, palvelimet ja muu edistyneempi käyttö => Aiheen aloitti: qwertyy - 13.05.08 - klo:09.31
-
Eli olen värkännyt scriptiä mikä hakee netistä ps3:lle sopivat tiedostot ja päivittää kernelin. Skripti on muuten valmis, mutta kboot.conf tiedoston muokkaaminen vaatii vielä pientä hiontaa, eli tiedoston sisältö on alunperin kutakuinkin tämän näköinen
default=linux
timeout=30
linux='/boot/vmlinux initrd=/boot/initrd.img root=UUID=48124dc5-2c8f-43d0-a210-0b6549ffde56 quiet splash'
old='/boot/vmlinux initrd=/boot/initrd.img root=UUID=48124dc5-2c8f-43d0-a210-0b6549ffde56 quiet splash'
tarkoitus on muuttaa linux rivin sisältöä niin, että vmlinux ja initrd saavat versionumeroinnin perään ja sen olen tehnyt seuraavilla komennoilla
sudo sed -i 's/vmlinux/vmlinux-2.6.24/' /etc/kboot.conf
sudo sed -i 's/initrd.img/initrd.img-2.6.24/' /etc/kboot.conf
Tämä skripti on siis tulossa tuonne psubuntun tutoriaaleihin mitä olen työstänyt ja nyt kuulin, että tuosta linux rivin perästä pitää saada pois quiet ja splash parametrit. Itse olen poistanut nuo käsin, mutta nyt pitäisi siis keksiä jatkoa tuolle skriptille. Ei myöskään olisi pahitteeksi jos nuo käyttämäni komennot saisi muokattua sellaisiksi, että ne muuttaisivat vain linux rivin sisältöä ja old rivi saisi tietysti mieluiten pysyä koskemattomana.
Kätevän oloinen tuo sed komento kunhan oppisi käyttämään sitä kunnolla.
*edit*
Siis googlella toki löytyy paljon juttua, mutta jos joku osaisi vääntää rautalangasta minulle miten homma toimii.
-
sudo sed -i '/^linux=/s/vmlinux/vmlinux-2.6.24/' /etc/kboot.conf
sudo sed -i '/^linux=/s/initrd.img/initrd.img-2.6.24/' /etc/kboot.conf
sudo sed -i '/^linux=/s/ quiet//' /etc/kboot.conf
sudo sed -i '/^linux=/s/ splash//' /etc/kboot.conf
Vaihtoehtoisesti nuo voi suorittaa myös yhdellä komennolla.
sudo sed -i \
-e '/^linux=/s/vmlinux/vmlinux-2.6.24/' \
-e '/^linux=/s/initrd.img/initrd.img-2.6.24/' \
-e '/^linux=/s/ quiet//' \
-e '/^linux=/s/ splash//' \
/etc/kboot.conf
Jos nämä operaatiot suoritetaan skriptin sisällä niin silloin minusta on parempi jättää sudo pois ja ennemmin tarkistaa että skripti on suoritettu pääkäyttäjän oikeuksilla.
-
Suurkiitokset. Vielä pitää kysyä, eli sed komennon osa
/^linux=
viitataan riviin, jonka jälkeen muutokset tehdään? Eli jos tuolla linux= rivillä olisi sen edessä vaikka vmlinux sana, niin sitä ei muokattaisi?
*edit*
Pitänee kokeilla tehdä jotain ihan perusharjoituksia tuolla sedillä.
-
Tuolla ensimmäisellä ehdolla (^linux=) valitaan ne rivit joihin ko. komennon muutokset kohdistetaan.
Toinen kysymyksesi on vähän epäselvä. ^-merkkillä viitataan rivin alkuun. vmlinux.*linux= -tällaista riviä ei muokattavasta tekstistä löysy joten muutoksia ei tuollaisella ehdolla tehtäisi.
Suosittelen tutustumista sed manuaaliin:
http://www.gnu.org/software/sed/manual/sed.html
pari muuta ihan hyvää sivua
http://www.grymoire.com/Unix/Sed.html
http://www.student.northpark.edu/pemente/sed/sed1line.txt
Manuaalia ei tarvi lukea kokonaan, kunhan ymmärtää suunnilleen ohjelman toiminnan. Sen jälkeen ongelmiin osaa hakea apua itsekin.
-
Suurkiitokset. Vielä pitää kysyä, eli sed komennon osa /^linux=
viitataan riviin, jonka jälkeen muutokset tehdään?
Kyllä. Perässä oleva korvaus s/.../.../ tehdään vain jos sitä edeltävä ehto /^linux=/ toteutuu. Auki luettuna tuo ehto toteutuu kaikilla riveillä jotka alkavat (^) tekstillä "linux=" ja niille tehdään tuo perässä määritelty korvaus.
Eli jos tuolla linux= rivillä olisi sen edessä vaikka vmlinux sana, niin sitä ei muokattaisi?
Tuolla yllä olevalla ehdolla sitä ei muokattaisi, mutta jos ehdosta puuttuisi rivin alkua tarkoittava ^-merkki niin kaikki rivit joilla on merkkijono "linux=" toteuttaisivat tuon ehdon ja niille toteutettaisiin ehdon jälkeen määritelty operaatio.
-
Kiitoksia vastauksista.
Tuolla yllä olevalla ehdolla sitä ei muokattaisi, mutta jos ehdosta puuttuisi rivin alkua tarkoittava ^-merkki niin kaikki rivit joilla on merkkijono "linux=" toteuttaisivat tuon ehdon ja niille toteutettaisiin ehdon jälkeen määritelty operaatio.
Varsinkin tätä hain tuolla aika sekavalla kysymykselläni ja kiitoksia myös linkeistä. Arvelinkin että tältä foorumilta tulee selkeitä vastauksia.