Mac OS X: einfaches Skript gesucht

1695
Jason S

Ich suche nach einem einfachen Skript, das folgendes tut. Kann jemand einen Schuss darauf werfen (+ wenn kryptisch, erklären Sie bitte, was es macht) oder geben Sie mir ein paar Hinweise, damit ich das selbst ausführen kann?

Ich möchte eine GUI-Anwendung im Applications-Verzeichnis von der Eingabeaufforderung aus starten und ggf. Parameter angeben:

$> launch Foobar arg1 arg2 arg3 

Was das Launch-Shell-Skript tun soll:

1) Lesen Sie eine Konfigurationsdatei, die ungefähr wie folgt aussieht:

/Applications/$0.app /Applications/$0 /Applications/**/$0.app /Applications/**/$0 

2) Versuchen Sie, das erste Argument ("Foobar") in diesem Fall mit jeder Zeile der Konfigurationsdatei abzustimmen, wobei "*" eine beliebige Folge von Zeichen in einem Pfadsegment und "**" ein beliebiges Pfadsegment darstellt. und $0den Programmnamen darstellen. In diesem Fall wird nach Foobar.app und Foobar im Applications-Verzeichnis und in einem seiner Unterverzeichnisse gesucht.

3) Führen Sie den resultierenden Befehl mit den restlichen angegebenen Argumenten aus ("arg1", "arg2", "arg3").

Das hört sich einfach an, aber ich bin im Moment zu viel Neuling mit Shell-Skripten. Ich kann JSDB verwenden, da ich weiß, wie man es benutzt. Ich bin mir einfach nicht sicher, wie ich festlegen soll, dass ein Skript namens "launch" das JSDB-Programm zur Ausführung benötigt, oder ob es mit dem Skript kompatibel ist.

Spezieller Anwendungsfall: Wenn ich mich in einem Verzeichnis innerhalb der Eingabeaufforderung befinde, möchte ich häufig eine der folgenden Aktionen ausführen:

  • Starten Sie TextEdit, um eine neue Datei mit dem Namen X zu erstellen
  • Starten Sie TextEdit, um eine Datei mit dem Namen X zu öffnen
  • Starten Sie, um eine Datei mit dem Namen X zu erstellen oder zu öffnen
  • Öffnen Sie ein Finder-Fenster in diesem Verzeichnis

Ich wollte vor allem meine Mercurial- Datei .hg / hgrc gestern bearbeiten, und es dauerte ewig, bis ich herausgefunden habe, wie .hg ist ein Verzeichnis, das in GUI-Dialogfeldern zum Öffnen von Dateien verborgen ist. Ich kann mich immer noch nicht daran erinnern, wie ich es zum Laufen gebracht habe.

3

2 Antworten auf die Frage

6
Ted Naleid

"Öffnen" ist der gewünschte Befehl. Verwenden Sie diese Option, um die geöffneten Optionen anzuzeigen

open -h 

Sie werden das sehen, um etwas in Textedit zu öffnen, verwenden Sie einfach -e

open -e foo.txt 

Wenn es nicht existiert, "berühren" Sie einfach die Datei und öffnen Sie sie:

touch foo.txt  open -e foo.txt 

Es gibt andere Anwendungen (wie Textmate), die meiner Meinung nach bessere GUI-Editoren sind, die ihren eigenen Befehlszeilenbefehl (z. B. Mate) installieren, der Dateien automatisch erstellen kann.

Um die aktuelle Datei mit dem Standardeditor zu öffnen, übergeben Sie einfach keinen Switch. Wenn also Textdateien auf Ihrem System mit TextEdit verknüpft sind, sollte "open foo.txt" funktionieren. Da Verzeichnisse automatisch mit dem Finder verknüpft werden, verwenden Sie sie einfach

open . 

um das aktuelle Verzeichnis im Finder zu öffnen.

Wenn die Datei mit einem anderen Programm verknüpft ist, wird sie nicht beispielsweise mit TextEdit geöffnet? Jared Updike vor 15 Jahren 0
Rechts können Sie die Standardzuordnung sehen, indem Sie mit der rechten Maustaste auf eine Datei im Finder klicken und unter "Öffnen mit" die Option "Informationen" auswählen. Hier können Sie auch die Standardzuordnung für alle Dateien mit derselben Erweiterung ändern, indem Sie die App im Dropdown-Menü ändern und "Alle ändern ..." wählen. Ted Naleid vor 15 Jahren 0
Sie können `open -a TextMate file.txt` ausführen, um das Öffnen einer Datei in einer nicht standardmäßigen Anwendung zu erzwingen dbr vor 15 Jahren 1
3
jtb

Eine schnelle Möglichkeit, eine GUI-App über das Terminal zu starten, um es einfach zu verwenden open -a AppName. Befehlszeilenargumente können Sie jedoch nicht auf diese Weise übergeben.

Es scheint jedoch, als würde die Minderheit der Programme sogar Befehlszeilenargumente akzeptieren. Es wäre verrückt, wenn der Benutzer ein Skript wie dieses schreibt, nur um sie zu verwenden. GUI-Apps, die Befehlszeilenargumente akzeptieren, enthalten normalerweise zum Beispiel Shell-Skripts im PATH mvim.

Könnten Sie ein konkretes Beispiel für das, was Sie hoffen, mit diesem Skript erreichen?

Du hast die ersten drei Buchstaben meines Benutzernamens gestohlen! `: P` jtbandes vor 15 Jahren 0
Ich habe das selbst gemerkt, aber ich war nicht seriös genug, um einen Kommentar zu hinterlassen :-) jtb vor 15 Jahren 0
also würde ich "open-a Finder" ausführen, um Finder im aktuellen Verzeichnis auszuführen? Jason S vor 15 Jahren 0
Wenn Sie den Finder im aktuellen Verzeichnis öffnen möchten, müssen Sie das Verzeichnis angeben. Benutzen . für das aktuelle Verzeichnis. "open-a Finder." würde funktionieren, oder da Finder die Standard-App für Verzeichnisse ist, können Sie einfach "open" eingeben jtb vor 15 Jahren 0