Moin!
Ok. Ich kommentiere das.
edit_firstline.sh:
#! /bin/sh
Das ist die sogenannte Shebang Diese bestimmt den Interpreter für das Skript. Grund: Unix/Linux verwendet keine Dateiendungen (ok. konqueror/kfm, also in grafischen Oberflächen gibt es das... die haben wir aber nicht: also shebang.)
lines=
wc -l datei | cut -d\ -f1
;
Es werden die Zeilen der Datei 'datei' gezählt. wc -l macht das. das gibt aber sowas wie: 100 datei zurück. Deshalb wird das Erfebnis durch ein Pipe zu cut geschickt. Dieses kann Spalten aus allem, was nach Tabelle riecht zurückgeben. Die Option -d bestimmt das Trennzeichen. Dieses ist ein Leerzeichen. Um es vor der Shell verborgen zu übergeben steht vor dem Leerzeichen der Backslash. Dann folgt das maskierte Leerzeichen und eines, welches den Optionsparameter "leerzeichen" von der nächsten Option trennt. Die ist '-l', braucht keinen Parameter und sorgt dafür dass, wc nicht alles mögliche, sondern die Zeilen zählt.
Die Anzahl der Zeilen befindet sich danach in der Variable 'lines', die auch mit 'echo $lines' abgefragt werden kann.
lines=
echo $lines-1 | bc
;
Das geschieht hier. Dem mächtigen Rechenprogramm 'bc' wird z.B. 100-1 übergeben. Das rechnet aus und übergibt das Ergebnis an die Variable lines.
file=
tail -n $lines datei
;
tail -n 20 gibt die letzten 20 Zeilen einer Datei zurück. in $lines steht die Anzahl der Zeilen-1: es werden alle Zeilen außer der ersten zurückgegeben. Die stehen jetzt in der Variable 'file'.
echo -e "$*\n$file" > datei
echo kann über die Umleitung der Standardausgabe in Dateien schreiben.
echo "Hallo Welt!"> datei schreibt "Hallo Welt!" in die Datei datei.
Die Option -e bewirkt, dass statt \n ein Zeilenumbruch geschrieben wird. In $* stehen alle an das Skript übergebene Parameter, die werden also zuerst in die Datei geschrieben. Das ist die neue erste Zeile. Dann der Zeilenumbruch, hernach der Rest der Datei.
Übrigens: Leerzeichen sind wichtig, z.B. bei variable=wert darf kein Leerzeichen rechts oder links des '=' stehen!
edit_firstline.php:
<?php
$strNewFirstLine='Neue Zeile';
Das ist der Inhalt der künftigen ersten Zeile.
./edit\_firstline.sh '$strNewFirstLine'
;
Hier wird das Skript aufgerufen und bekommt als Parameter den Inhalt der künftigen ersten Zeile übergeben. Thats all....
?>
MFFG (Mit freundlich- friedfertigem Grinsen)
fastix®
P.S.
Endlich: Spamer wurde wegen Betrugs und Titelmissbrauchs verurteilt