Erstellen Sie eine globale Verknüpfung zum Ausführen von Befehlszeilenanwendungen

31

Welche Schritte muss ich ausführen, um ein Befehlszeilenprogramm über eine globale Verknüpfung auszuführen?

Ich habe Automator so eingerichtet, dass ein neues Run Shell-Skript erstellt wird, und habe versucht, eine Verknüpfung in den Systemeinstellungen -> Tastatur -> Tastaturkürzel zuzuweisen, aber es ist nichts passiert.

Adam Flott
quelle
1
Meine Frage ist anders. Ich möchte nicht, dass sich ein Terminalfenster öffnet.
Z-Buffer
1
Wenn Sie nicht möchten, dass sich ein Terminalfenster öffnet, fragen Sie das Gleiche wie den verknüpften Beitrag.
Daniel

Antworten:

8

Applescript es:

do shell script "ls ~/Desktop"

Fügen Sie dort hinzu, was Sie möchten, und führen Sie das Applescript über eine globale Tastenkombination aus. Ich würde Spark empfehlen

Oh, und ich weiß nicht, wie ich eine Verknüpfung über die Systemeinstellungen zuweisen kann

Daviesgeek
quelle
Bingo. Merkwürdigerweise ist diese Funktionalität noch nicht in OSX integriert. Vielen Dank!
Adam Flott
@Adam Ja, es ist ein bisschen seltsam.
Daviesgeek
8
Abgesehen davon, dass es sich in OS X durch Automator Dienstleistungen gebaut, @AdamFlott, es ist nur , dass die Antwort , die Sie nicht , dass die Methode akzeptiert.
Daniel
2
AppleScript und Automator sind auch Teil von OS X.
Daniel
1
-1 für die Verwendung von Drittanbietern ohne Angabe von Gründen.
Cregox
32

Ohne genau zu wissen, wonach Sie suchen, würde ich vorschlagen, einen neuen Service über Automator zu erstellen . Dienste können an Tastenanschlagsauslöser gebunden sein und (unter anderem) Shell-Skripte ausführen. Bildbeschreibung hier eingeben

Um die Tastenkombination einzurichten, gehen Sie zu Systemeinstellungen -> Tastatur -> Verknüpfungen -> Dienste, wählen Sie den gerade gespeicherten Dienst aus und klicken Sie dann auf die Schaltfläche "Verknüpfung hinzufügen".

Daniel
quelle
Nach dem Speichern des Dienstes ist mir nicht klar, wie Sie eine Tastenkombination einrichten.
Liron Yahdav
@LironYahdav Siehe oben edit
Daniel
12

FastScripts enthält alle Skripts in ~ / Library / Scripts /, sodass Sie Dateien nicht manuell hinzufügen müssen. Es werden auch anwendungsspezifische Skripts unterstützt.

Andere Anwendungen, die zum Zuweisen von Verknüpfungen zum Ausführen von Skripten verwendet werden können:

Sie können auch einen Automator-Service erstellen:

  1. Öffnen Sie Automator und wählen Sie die Service-Vorlage
  2. Fügen Sie eine Aktion "Shell-Skript ausführen" oder "AppleScript ausführen" hinzu
  3. Überprüfen Sie, ob der Eingabetyp und der Anwendungsbereich korrekt sind
  4. Fügen Sie das Skript ein und speichern Sie den Dienst
  5. Weisen Sie im Bereich Tastatureinstellungen eine Verknüpfung zu

Es gibt einen Fehler in 10.7 und 10.8, bei dem die Verknüpfungen für Dienste nicht immer funktionieren, bis das Menü Dienste in der Menüleiste angezeigt wurde. Verknüpfungen für Dienste funktionieren nicht, wenn die vorderste Anwendung keine Menüleiste oder kein Dienstmenü hat. Es gibt auch eine kurze Verzögerung, bevor die Dienste ausgeführt werden.

Lri
quelle
plus eins für die Erwähnung anderer Apps, die dies ebenfalls tun. Fast hätte ich funken installiert, als ich QuickSilver bereits verwendet habe. Ich wusste nicht, dass es diese Option hatte.
Marlon
Außerdem befindet sich der Abschnitt im Bereich "Tastatureinstellungen" zum Hinzufügen einer Verknüpfung im Abschnitt "Dienste", wenn der Automator-Ansatz verwendet wird.
Brad Parks
7

Ich habe alle diese Optionen ausprobiert, aber sie sind zu komplex und unzuverlässig oder sehr teuer. Also habe ich meine eigene Lösung geschrieben (Open Source und kostenlos).

iCanHazShortcut

Es kann momentan nicht viel bewirken, aber das ist ein Anfang. Sie können gerne Beiträge leisten, indem Sie Funktionsanfragen und Vorschläge hinzufügen.

Deseven
quelle
1
Ich habe seit einigen Stunden versucht, eine einfache Lösung für dieses Problem zu finden, und Ihre Anwendung ist die einzige, die funktioniert und das tut, was sie tun soll, ohne komplizierten Schnickschnack. Vielen Dank!
Stijn Martens
@StijnMartens, Sie sind herzlich willkommen! Das ist die ganze Idee dahinter - wenn Sie nur eine Verknüpfung für einen Befehl benötigen, erhalten Sie eine Verknüpfung für einen Befehl. Nicht mehr, nicht weniger.
Deseven
Das hat wunderbar funktioniert.
Brian Schermerhorn
2

Quicksilver kann verwendet werden, um Hotkeys an Aktionen zu binden.

Wenn Sie feststellen, dass Sie häufig etwas tun, können Sie die Aufgabe noch beschleunigen, indem Sie ihr einen „Auslöser“ zuweisen. Trigger können durch Tastaturkürzel oder Mausbewegungen aktiviert werden

Wenn es sich um einen Unix-Befehl oder ein Shell-Skript handelt, das Sie ausführen möchten, finden Sie in diesem Stackoverflow-Beitrag weitere Informationen zur Verwendung von Quicksilvers "Terminal-Modul".

binarybob
quelle
1

Ich werde meine Antwort hier mit BTT hinzufügen , da es einfach ist und direkt an ein Befehlszeilenskript gebunden werden kann:

  1. Wählen Sie Tastatur von BTT

Wählen Sie Tastatur von BTT

  1. Geben Sie Ihre Abkürzung (oder Tastenfolge!)

Geben Sie Ihre Abkürzung (oder Tastenfolge!)

  1. Wählen Sie "Vordefinierte Aktion auslösen" und geben Sie "shell" ein, um die Aktion zu finden.

Wählen Sie "Vordefinierte Aktion auslösen" und geben Sie "shell" ein, um die Aktion zu finden.

  1. Sie können Ihr Skript und Ihre Shell einfügen, in denen Sie ausgeführt werden möchten:

Sie können Ihr Skript und Ihre Shell einfügen, in denen Sie ausgeführt werden möchten:

Klicken Sie auf Speichern und Sie sind fertig! Testen Sie nun Ihr Skript mit dem von Ihnen eingerichteten Tastaturauslöser.

  1. EXTRA: Vielleicht möchten Sie Notizen hinzufügen, um sich daran zu erinnern, wozu die Verknüpfung dient ...

Vielleicht möchten Sie Notizen hinzufügen, um sich daran zu erinnern, wozu die Verknüpfung dient ...

cody.codes
quelle
Vielen Dank, ich bin diesen Weg gegangen, seit ich BTT habe.
Leo Ufimtsev
0

Es scheint, als wäre dies in 10.6 verfügbar (siehe http://hints.macworld.com/article.php?story=20090903085255430 ), aber in 10.7.2 (und möglicherweise in 10.7) ist etwas kaputt gegangen.

Ich habe jedoch festgestellt, dass die Tastenkombination "Dienste" berücksichtigt wird , wenn die Systemeinstellungen im Vordergrund stehen, aber in keiner anderen Anwendung, einschließlich Finder.

Der frühere Vorschlag, Spark zu verwenden, funktionierte in lion jedoch einwandfrei, mit der Ausnahme, dass ich in meiner Tastenkombination keine Strg-Taste verwenden konnte. (kein Showstopper!)

adamrmcd
quelle
Nur wenn das Anwendungsmenü im Fokus steht. Wenn Sie auf den Desktop klicken und die Verknüpfung ausprobieren, funktioniert sie nicht. Klicken Sie auf das Menü für den Finder und versuchen Sie es dann und es funktioniert. Ich habe einen Dienst für Terminal, der eine Verknüpfung hat und in allen Apps angezeigt wird ... aber er funktioniert nicht, wenn ich nicht in einer App bin und das Menü trotzdem den Fokus haben muss.
Marlon
@Lri auch nach dem Abmelden und erneuten Anmelden, Neustarten des Computers usw. Es funktioniert immer noch nicht, es sei denn, ich tue wie oben beschrieben. Das Einstellen in Quicksilver funktioniert jedoch. Ich würde gerne wissen, warum QuickSilver diese "globalen" Verknüpfungen erkennt und nicht das Betriebssystem.
Marlon