[linux-l] LinuxScript?
Oliver Bandel
oliver at first.in-berlin.de
Do Mär 21 12:28:22 CET 2002
On Thu, 21 Mar 2002, Philipp Grau wrote:
> Hallo Oliver,
>
> na mal wieder auf der Suche nach einer neuen Aufgabe?
>
> * Oliver Bandel <oliver at first.in-berlin.de> [21.03.02 10:57]:
> > Die Applescript-Sprache hat den Vorteil, quasi in Umgangssprache nutzbar zu
> > sein; sie ist zwar bei etwas aufwendigeren Scripten doch etwas langatmig,
>
> Was heisst Umgangssprache?
Kommt in etwa rüber wie funktionale Programmiersprachen,
aber mit OO-Konzept und man kann's quasi in englisch
schreiben, was man meint.
>
> "Oeffne Word, neues Dokument"?
Um zum Beispiel alle Files im Papierkorb von dem Schreibschutz
zu befreien und den Papierkorb zu entleeren,
schreibt man (eins meiner ersten):
tell application "Finder"
set locked of every file of trash to false
empty trash
end tell
Das wäre sowas, wie
find trash -maxdepth 1 -type f -exec chmod ugo+w {} \; rm trash/*
Man kann, wenn man will, z.B. statt "trash" auch "the trash" schreiben,
was das Ganze noch mehr der Anpassung an englische Sprachweisen
dienen kann.
Man kann auch den einzelnen Objekten wie Ordnern, Files, Programmen
Messages schicken, also ein OO-Ansatz (Objective-C läßt da wohl
aus dem Hintergrund grüßen).
Man kann auch z.B. einem Ordner eine Aktion anheften, also
beispielsweise immer beim Öffnen eines Ordners eine Aktion
ausführen, also ein AppleScript anstossen.
Das erinnert etwas an Perl's tie-Funktionalität, wo man
bei Lese-/Schreibvorgängen auf Variablen komplette
Scripte/sub's triggern kann.
Das ganze eben in einer recht englisch-nahen Sprachweise.
Um nochmal zu dem oben gennanten beispiel zurück zu kommen,
In alt.comp.lang.applescript wurde mir eine ausgereiftere
Version meines Problems angeboten, die auch recursives
unlocking ermöglicht und auch fehlerfälle mit abfragt:
on unlockFilesOf(thisFolder)
tell application "Finder"
tell every file of thisFolder
if it exists then set locked to false
end tell
repeat with thisSubfolder in every folder of thisFolder
my unlockFilesOf(thisSubfolder)
end repeat
end tell
end unlockFilesOf
tell application "Finder"
my unlockFilesOf(the trash)
end tell
Das entspricht dann in ungefähr einem
find trash -type f -exec chmod ugo+w {} \; rm -rf trash/*
Ciao,
Oliver
Mehr Informationen über die Mailingliste linux-l