Foreach - Deluxe ================ Version 1.0 (31.3.94) Dieses Foreach-Kommando ermöglicht es, mit Kommandos, die normalerweise keine Jokerzeichen unterstützen (z.B. Rename), solche zu verwenden. Es ist aber so flexibel, daß es ein weit größeres Anwendungsgebiet hat und man es so schon nach kurzer Zeit nicht mehr missen möchte. Aufruf: ------- foreach Einführung: ----------- Da ich meine, daß man das Kommando am besten an Beispielen erlernen kann, zuerst einige Beispiele zur Einführung: - Anzeigen aller Dateien, die auf .c enden mit dem 'more' Befehl: foreach #?.c more & Das Muster ist hierbei #?.c . Das Kommando wird nun für jedes passende File aufgerufen, wobei das '&'-Zeichen jedesmal durch den Filenamen ersetzt wird. - Alle #?.lha und #?.lzh Dateien in die RamDisk entpacken: foreach #?.(lha|lzh) lha x & ram: - Abändern der Endung .lzh in .lha bei allen Files: foreach #?.lzh rename & &<.lha Das ist neu! Die Zeichen '&<' werden im Gegensatz zum einfachen '&' durch den Filenamen ohne Endung ersetzt. - Dreifaches Kopieren einer Datei: foreach {copy1,copy2,copy3} copy Original & Erzeugt drei Kopien von Original mit den Namen copy1,copy2 und copy3. - Compilieren aller #?.cc Dateien mit gcc: foreach #?.cc gcc $ Man beachte: Das '$'-Zeichen wird auf einmal zu allen passenden Files expandiert, es wird also nur ein Kommando erzeugt, das z.B. so aussehen könnte: ( gcc file1.cc file2.cc file3.cc ) Referenz: --------- & - wird bei jedem Kommando, das erzeugt wird, durch einen passenden String aus dem Muster (z.B. dem Filenamen) ersetzt. &< - wie '&', nur wird hier die Endung weggelassen (die letzte Endung, falls es mehrere Punkte im Namen gibt). Gibt es keinen Punkt, so wird (wie bei '&') der komplette String verwendet. &> - wie '&', nur wird hier nur die Endung übernommen (die letzte Endung). Falls keine Endung existiert, wird ein leerer String verwendet (also auch kein Leerzeichen). $ - wird durch alle passenden Strings aus dem Muster (gleichzeitig) ersetzt (durch je ein Leerzeichen getrennt, am Anfang und Ende kein Leerzeichen). && - wird durch ein einzelnes '&'-Zeichen ersetzt. % - wird durch einen leeren String ersetzt. Bemerkungen: ------------ - In der Mengenangabe können auch leere Elemente vorkommen. Also z.B.: {} oder {aaa,aa,a,}. - Vorsicht! Kommen in einem String in der Menge Leerzeichen vor, so muß die Menge in Anführungszeichen gesetzt werden, da der Commandline-Parser ja an den Leerzeichen die Argumente auseinanderschneidet: Falsch: {Hugo Klein,Ernie,Bert} Richtig: "{Hugo Klein,Ernie,Bert}" - Sobald in einem Kommando ein '&'-Zeichen vorkommt, werden mehrere einzelne Kommandos erzeugt. (Kommen also nur '$'-Zeichen vor, so wird nur ein Kommando erzeugt). Tips: ----- - Es ist möglich, mehrere 'foreach'-Kommandos zu schachteln, wodurch das Kommando noch leistungsfähiger wird. Beispiel: Anfertigen von zwei Sicherheitskopien aller #?.c Dateien: foreach #?.c foreach {bak1,bak2} copy & &<.&& Man beachte, daß das erste 'foreach' das '&&'-Zeichen zu einem einzelnen '&' verkürzt, so daß das zweite 'foreach' z.B. so aussieht: foreach {bak1,bak2} file1.c file1.& - Das '%' Zeichen dient vor allem dazu, Mehrdeutigkeiten zu verhindern. Man will z.B. einen String zweimal direkt hintereinander schreiben: Falsch: foreach {hallo,test,moin} echo && Richtig: foreach {hallo,test,moin} echo &%& Copyright: Diese Programm ist Public Domain. Es darf beliebig kopiert werden unter der Voraussetzung, daß das Programm und diese Anleitung in keiner Weise verändert werden und das Programm nie getrennt von der Anleitung kopiert wird. Das Programm darf ohne meine Erlaubnis weder verkauft, noch zu kommerziellen Produkten hinzugefügt werden (bitte vorher Brief oder EMail an mich). Dirk Farin Kapellenweg 15 72070 Tübingen Germany EMail: farindk@trick.informatik.uni-stuttgart.de Über Bug-Reports und Verbesserungsvorschläge würde ich mich sehr freuen!