Vesalia RESHOOT R

User
Username:

Password:

 Remember me



I forgot my password

Don't have an account yet?
You can register for FREE

Language:

 

» Home
» Mag Member
» News View
» News Tell
» News Setting
» Everywhere
 
Amiga Future
» Info
» Content List
» Article-Database
» Merchandising
» Shop
» Downloads
 
Community
» Forum
» Gallery
» Calendar
 
Knowledge
» Amiga Software
» Amiga Cheats
» Amiga FAQ
» Forum FAQ
» Links
 
Service
» Jobs
» Webmaster
» Advertising
» Contact/Imprint
» Privacy Policy

Searching

Advanced Search

Anzeigen
Bitte unterstützt uns durch Einkäufe bei Amazon:

Deutschland
Österreich
UK
France
Canada
Italia
Espana


Spenden
Donate
Amiga Future

Knowledge Base
Click on Category to add Article   Search
:: Most Popular :: Toprated Articles :: Latest Articles ::
Amiga Future Forum Index -> Knowledge Base  »  FAQ Deutsch  »  Tipps & Tricks [Printable version]
[PDF]

Facebook Google Twitter
 
Type: FAQ
Description: FAQ
Date: 26.02.2008 - 16:19 - Views 1939
Category: Tipps & Tricks
Beispiele für neue Shell-Scripts
 
Software-Information

Alle Amiga-Modelle 09.12.88
Beispiele für neue Shell-Scripts TG, S. 1


; Als Beispiel, wie man die Workbench 1.3 Shell und verschiedene
; Verbesserungen bei AmigaDOS-Befehlen für sinnvolle Shell-Scripts
; ausnutzen kann, möchten wir das Script RLIST vorstellen.
; RLIST arbeitet wie der AmigaDOS-Befehl LIST, gibt jedoch auch
; auch Unterverzeichnisse der Directory-Hierarchie aus.

.key
PAT,NOHEAD/S,QUICK/S,BLOCK/S,KEYS/S,DATES/S,NODATES/S,RX

; Deklaration der unterstützten Parameter: PAT..NODATES entsprechen
; dem normalen LIST-Befehl. RX dient als Zähler für die Rekur-
; sionsebene.

failat 21
if "" eq ""
echo >T:rlf<$ $>
endif

; Wenn RX leer ist, also bei Aufruf durch den User, wird die Datei
; rlf<$ $> im Directory T: erzeugt (leer). >T:rlf<$ $> "" files


; Die Files (und nur die, nicht die Directories) des mit dem
; 1. Parameter (PAT) gewählten Verzeichnisses werden in die Datei
; rlf<$ $> geschrieben (angefügt). Der Schalter "files" bewirkt,
; daß keine Directories bearbeitet werden.
; Die möglichen Schalter für RLIST werden dem LIST-Befehl übergeben.
; Beachten Sie, daß in Anführungszeichen steht, sodaß auch
; Namen, die ein Leerzeichen enthalten, richtig verarbeitet werden.

if not fail

; Der IF-Befehl testet, ob der vorhergehende LIST-Befehl überhaupt
; funktioniert hat. Existiert nämlich keine passende Datei oder
; Directory für das gegebene Muster , meldet LIST einen
; Fehler, und wir können uns jede weitere Arbeit sparen.

if "" eq ""
echo >>T:rlfT:rld<$ $> "" dirs lformat="execute s:rlist *"%s%s*"
RX=I"
execute T:rld<$ $>
delete T:rld<$ $>

; Hier liegt nun der eigentliche Trick des Scripts: Mit Hilfe der
; LFORMAT-Option des LIST-Befehls wird in der Datei T:rld<$ $>
; ein Script erzeugt, das mit dem darauf folgenden EXECUTE-Befehl
; abgearbeitet wird. Jede Zeile in diesem Script enthält für ein
; Directory des gerade bearbeiteten Directories die Anweisung
; "execute s:rlist "dirn" optionen I". Die LFORMAT-Option ersetzt
; das %s%s durch die vollständige Pfad-/Namen-Angabe für ein
; Directory. Beachten Sie, daß dadurch auch RLIST wieder aufgerufen
; wird. RLIST ruft also RLIST auf - das bezeichnet man als Rekursion -
; und in der nächsten Ebene werden die Subdirectories behandelt.
; Dies kann auch wiederholt auftreten. Damit die Dateien T:rld<$ $>
; der einzelnen Ebenen nicht durch den rekursiven Aufruf tieferer
; Ebenen zerstört werden, muß der Parameter RX zur Unterscheidung
; herangezogen werden. Sein Wert ist in der ersten Subebene "I",
; in der zweiten "II", und so weiter. Nach Abarbeitung löscht
; jede Ebene das zu ihr gehörende Script T:rld<$ $>.
; Wenn alle Ebenen abgearbeitet sind (RX ist leer), kann die
; mittlerweile aus den Inhalten aller Subdirectories zusammen-
; gefügte Datei T:rlf<$ $> ausgegeben und anschließend gelöscht
; werden.

else
echo " not found"
endif

; Fall der erste LIST-Befehl eine Fehlermeldung verursachte,
; geben wir diese im ELSE-Zweig an den Anwender weiter - das
; wär's.

; Nach Entfernung aller Kommentarzeilen (Zeilen die mit ";"
; beginnen) werden Sie sehen, daß ein erstaunlich kompaktes, aber
; recht schwer durchschaubares Script übrigbleibt - das ist bei
; allen Rekursionen so: Eine gestellte Aufgabe läßt sich in
; wenig Programmzeilen erledigen - allerdings in einer der
; menschlichen Denkweise wenig angepaßten Form.

; RLIST sollte im Directory S: installiert werden und durch den
; Befehl "PROTECT S:RLIST +S" ausführbar gemacht werden, ohne
; den Befehl EXECUTE eingeben zu müssen. RLIST funktioniert nur
; mit installierter SHELL.
; Als weiteres Beispiel, wie man die Workbench 1.3 Shell und ver-
; schiedene Verbesserungen bei AmigaDOS-Befehlen für sinnvolle
; Shell-Scripts ausnutzen kann, möchten wir das Script RPAT
; vorstellen.
; RPAT hat, ähnlich wie die auf der WB 1.3 vorhandenen Scripts
; SPAT und DPAT, die Aufgabe, AmigaDOS-Befehlen rekursive
; Fähigkeiten zu verleihen, d.h. Anwendung eines Befehls auf alle
; oder einem Muster entsprechenden) Dateien in der Directory-
; Hierarchie.

.key COM/A,PAT,OPT,RX

failat 21
if "" eq ""
echo >T:trf>T:trf<$ $> "" files lformat=" *"%s%s*" "
if not fail
;
; Die folgenden beiden Druckzeilen sind als eine einzige einzutippen!
list >T:trd<$ $> "" dirs lformat="execute s:rpat *"*"
*"%s%s*" *"*" RX=I"
execute T:trd<$ $>
delete T:trd<$ $>
if "" eq ""
execute T:trf<$ $>
delete T:trf<$ $>
endif
else
echo " not found"
delete T:trf<$ $>
endif

; Zum besseren Verständnis der hier angewendeten Rekursion
; studieren Sie bitte den obigen Text über RLIST.

; Anders ist hier, daß die erzeugte Datei T:trf<$ $> nicht mit
; TYPE ausgegeben, sondern mit EXECUTE ausgeführt wird.
; Dies ermöglicht nun - wie auch mit DPAT und SPAT -
; praktische Shell-ALIAS anzulegen (in S:Shell-Startup), zum
; Beispiel XTREE (das wie DIR arbeitet, aber für alle Files
; unterhalb eines Directories) oder TOUCH (das das Datum aller
; Files in allen Subdirectories verändert):

; alias xtree execute s:rpat echo []
; alias touch execute s:rpat setdate []
 
  
Overview 

You cannot post new articles in this category
You cannot edit your articles in this category
You cannot delete your articles in this category
You cannot comment articles in this category
You cannot rate articles in this category
Articles need approval in this category
Article edits need approval in this category

Powered by Knowledge Base MOD, wGEric & Haplo © 2002-2005
PHPBB.com MOD
 



Privacy Policy
Powered by phpBB © 2001, 2002 phpBB Group

'AFclean' Theme by Matthias Overloeper, based on 'AmigaFuture Deluxe' by Tristan Mangold

Webhosting by Hetzner