Zur Zeit wird gefiltert nach: shell
Filter zurücksetzen
sed - stream editor for filtering and transforming text
ein weiterer Shell Befehl
In einem SQL-Dump musste ich alle Verzeichnisse verschieben. Bei mehreren 100 Megabyte auf dem Server macht es wenig Spaß dieses mit einem normalen Editor zu machen. Wie so häufig gibt es dafür ein spezielles Tool auf der Linux Konsole: "sed"
sed -i.bak s.fileadmin\/.fileadmin\/unterverzeichnis\/.g datenbankdump.sql
sed ersetzt in der Datei "datenbankdump.sql" alle Vorkommnisse von "fileadmin/" durch "fileadmin/unterverzeichnis/". Der Parameter -i.bak erzeugt eine Sicherheitskopie datenbankdump.sql.bak.
Allerdings muste ich feststellen das unter BSD - genauer auf einem Mac Pro Server - der Befehl zwingend mit dem Parameter -i aufgerufen werden muss.
Ein Blick in die Man-Page lohnt sich, das Tool ist für das Ersetzen von Text in sehr großen Dateien wirklich hilfreich.
Log-Files kontrollieren
for file in *.log;do grep jumpurl $file; done
Vor kurzem hatte ich die Aufgabe eine leider seit längerem nicht mehr gepflegte TYPO3 Installation zu übernehmen. Selbstverständlich war auch die jumpurl-Lücke noch nicht gepacht. Da die Installation nicht auf einem Shared-Hosting sondern auf einem eigenen Server lief, hatte ich einen vollen Zugriff auf alle Konfigurationsdateien.
Wichtig war mir jetzt herauszufinden, ob jemand bereits die Lücke ausgenutzt hatte. Mit der folgenden Zeile
for file in *.log;do grep jumpurl $file; done
habe ich mir alle Zeilen ausgeben lassen. Vor mir hatte offenbar noch keiner Versucht das System zu hacken.
Demnächst werden wir trotzdem das System tauschen, es könnte ja sein, dass da jemand die betroffenen Zeilen aus den Logfiles gelöscht hat. Die Tatsache das der Server uralt ist, hat diese Entscheidung deutlich vereinfacht.
Ach so: so langsam fange ich an mich auf der Shell wohlzufühlen. Ganz langsam...
Dateien im Rutsch umbenennen
Was die Linux-Shell angeht, befinde ich mich noch ganz am Anfang. Deshalb erfreue ich mich immer wieder, wenn ich plötzlich herausfinde, dass eine Aufgabe doch extrem einfach sein kann.
Das umbenennen aller Dateien die mit imm beginnen geht z.B. wie folgt:
for i in imm* ; do mv $i cd1_$i;done
Auf jede Datei wird der Befehl mv angewendet und dem Dateinamen wird ein cd1_ vorangestellt.



