Hei! Olen käyttänyt linuxia verrattain vähän ja tarttisin apua putkitetun komennon tekoon. Komennon tulisi tehdä: 1. Skannata kansioita ja etsiä sieltä tiedot index.php jotka sisältää tekstin main. Skannattava syvyys on 1. find -maxdepth 1 -name 'index.php' toi ettii muuten muttei tarkista sisältääko tekstiä. 2. Jos tiedostoja löytyy, lisätään tiedoston alkuun tai riville X rivi: -esimerkki- T: Niko
ihan suoraan en ny tuota komentoa voi antaa, kun pitäisi vähän testatakkin.. mutta.. jos haluat 1 riville jonkun merkkijonon, niin sitten pitää kikkailla temppitiedostoilla, esim näin: olkoon tiedoston nimi nyt korvaa.sh Koodi: #!/bin/bash # lisää tietyn 2. parametrinä annetun merkkijonon 1. # parametrinä annettuun tiedostoon # korvaa.sh <tiedostonnimi> "merkkijono" # tarkistetaanko onko tiedostonimi sopiva case "$1" in "") echo "Käyttö: ${0##*/} <tiedostonimi> <merkkijono>"; exit $E_PARAM;; -*) FILENAME=./$1;; * ) FILENAME=$1;; esac #tarkistetaan onko lisättävää merkkijonoa case "$2" in "") echo "Käyttö: ${0##*/} <tiedostonimi> <merkkijono>"; exit $E_PARAM;; *) STRTOADD=$2;; esac #pistetään merkkijono tmppitiedoston kärkeen. echo $STRTOADD > tmp.php #luetaan tiedosto ja laitetaan temppitiedoston loppuun cat $FILENAME >> tmp.php #wanaha tiedosto pois, temppiä tilalle rm $FILENAME; mv tmp.php $FILENAME tai sitten jos haluaa jollekkin tietylle riville aina merkinnän, niin se voisi mennä jotenkin näin.. Koodi: #!/bin/bash # lisää tietyn parametrinä 3. annettun merkkijonon, # parametrinä 2. annetulle riville # parametrinä 1. annettuun tiedostoon # # korvaa.sh <tiedostonimi> <rivinro> <merkkijono> # tarkistetaanko onko tiedostonimi sopiva case "$1" in "") echo "Käyttö: ${0##*/} <tiedostonimi> <merkkijono>"; exit $E_PARAM;; -*) FILENAME=./$1;; * ) FILENAME=$1;; esac #tarkistetaan onko rivinumeroa case "$2" in "") echo "Käyttö: ${0##*/} <tiedostonimi> <rivinro> <merkkijono>"; exit $E_PARAM;; *) LINE=$2;; esac #tarkistetaan onko lisättävää merkkijonoa case "$3" in "") echo "Käyttö: ${0##*/} <tiedostonimi> <merkkijono>"; exit $E_PARAM;; *) STRTOADD=$3;; esac #luetaan 10 ensimmäistä riviä ja laitetaan temppitiedostoon head -n$LINE > tmp.php #lisätään se yksi rivi echo $STRTOADD >> tmp.php #luetaan loput temppitiedoston loppuun more +$line $FILENAME >>tmp.php #wanaha tiedosto pois, temppiä tilalle rm $FILENAME; mv tmp.php $FILENAME sitten se looppi on vähän kinkynmpi.. ehkä tuolla findilla olisi hyvä tehdä lista tiedostoista joita muuttaa, find blaablaa > muokattavat.txt. Sitten tuota muokattavat.txt:tä pitäisi lukea rivi kerrallaan ja käyttää jompaa kumpaa yllä mainittua scriptiä...
Kiitoksia vastauksestasi. Tuosta olisi apua jos saisin ajettua tuon luomani korvaa.sh-tiedoston. Onko tohon olemassa mitään ihan komentoriviillä ajettavaa "rimpsua"
Chmod korjasi tuon että voin ajaa sen... Kiitos! Seuraava ongelma on kun lisättävä teksti sisältää merkin $ eli esim: ./korvaa.sh index.php "if ($HTTP_POST_VARS['id'] != ''" Ideoita?
Eli eli... komentoon: find -maxdepth 2 -name 'index.php' tarttis nyt yhdistää toi korvaa.sh... Ihan putkittamalla se ei onnistu.. (en osaa ) Pystyyköhän tohon korvaa.sh-tidostoon lisään cksumin tai jonkun, että se lisää vaan rivin jos cksum on tietty?
Olen saanut muodostettua rivin joka lisää kaikkiin löytämiinsä index.php-tiedstoihin tekstiä. [bold]find . -maxdepth 2 -name 'index.php' -size 4k -exec ./korvaa.sh {} "Testi" \;[/bold] Toi on jo oikeastaan se mitä hain. Vielä jos ton size:n tilalla ois joku cksum:n tai sum:n tarkistus...Vaikka kyllä toiki varmaan on sopiva tarkoitukseeni. Kiitoksia avusta!
Osaisko joku yhistää chksumin, sumin tai md5sumin joko tohon kyselyyn tai sit tohon korvaa.sh-tiedostoon?