[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