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

Welche Schritte sind erforderlich, um ein Befehlszeilenprogramm über eine globale Verknüpfung auszuführen?

Ich habe Automator eingerichtet, um ein neues Run Shell Script zu erstellen, und versucht, eine Verknüpfung in Systemeinstellungen -> Tastatur -> Tastaturkürzel zuzuweisen, aber es ist nichts passiert.

Meine Frage ist anders. Ich möchte nicht, dass sich überhaupt ein Terminalfenster öffnet.
Wenn Sie überhaupt nicht möchten, dass sich ein Terminalfenster öffnet, fragen Sie dasselbe wie der verlinkte Beitrag.

Antworten (7)

Applescript es:

do shell script "ls ~/Desktop"

Fügen Sie dort hinzu, was Sie wollen, dann können Sie das Applescript über eine globale Hotkey-Anwendung ausführen. Ich würde Spark weiterempfehlen

Oh, und ich weiß nicht, wie man eine Verknüpfung über die Systemeinstellungen zuweist

Bingo. Seltsamerweise ist diese Funktionalität nicht bereits in OSX integriert. Vielen Dank!
@ Adam Ja, es ist ein bisschen seltsam.
Abgesehen davon, dass es über Automator Services, @AdamFlott, in OS X integriert ist, verwendet die von Ihnen akzeptierte Antwort diese Methode nur nicht.
Auch AppleScript und Automator sind Teil von OS X.
Danke für den Hinweis auf Spark - scheint genau das zu sein, wonach ich gesucht habe!
@FlorianLoch Kein Problem!
-1 für die Verwendung von Drittanbietern ohne gute Begründung.

Ohne die Einzelheiten dessen zu kennen, wonach Sie suchen, würde ich vorschlagen, einen neuen Dienst über Automator zu erstellen . Dienste können an Tastendruck-Trigger gebunden werden und können (unter anderem) Shell-Skripte ausführen.Geben Sie hier die Bildbeschreibung ein

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".

Es ist mir nach dem Speichern des Dienstes nicht klar, wie Sie eine Tastenkombination einrichten.
@LironYahdav Siehe oben bearbeiten
Auf Mojave würde mein einfacher Terminal-Befehl nicht funktionieren. Damit meine Verknüpfung funktioniert, musste ich die Einstellung "Workflow empfängt" im Workflow auf "keine Eingabe" ändern.
Beachten Sie, dass die von Ihnen gewählte Verknüpfung "frei" sein sollte (nicht von einer Anwendung verwendet wird, die Sie derzeit aktiv haben). Ich habe auch einen Fehler festgestellt, bei dem der Dienst nicht ausgeführt wurde, bis ich ihn wie hier beschrieben einmal manuell ausgeführt habe
Für alle, die sich fragen, wie man einen bestehenden "Service" bearbeitet: Navigieren Sie im Finder zu ~/Library/Services(oder drücken Sie Cmd-Shift-G und geben Sie den Pfad direkt ein), und doppelklicken Sie dann auf Ihren "Service". Es sollte sich im Automator öffnen.
Ein weiteres Problem: Es scheint, dass die .zshrcDatei nicht ausgeführt wird, da dies eine "nicht interaktive Shell" ist. Wenn Sie Umgebungsvariablen in Ihrer .zshrcDatei festlegen (wie ich), verschieben Sie sie .zshenvstattdessen in Ihre Datei. Siehe apple.stackexchange.com/questions/388622/…
Wie geben Sie hier den Pfad eines Shell-Skripts ein, das bereits von verwaltet ~/Documents/srcund in installiert wird /opt/bin?

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

iCanHazShortcut

Es kann im Moment nicht viel bewirken, aber das ist ein Anfang. Fühlen Sie sich frei, einen Beitrag zu leisten, indem Sie Funktionsanfragen und Vorschläge hinzufügen.

Ich versuche jetzt seit ein paar Stunden, eine einfache Lösung für dieses Problem zu finden, und Ihre Anwendung ist die einzige, die funktioniert und tut, was sie tun soll, ohne komplizierten Schnickschnack. Danke!
@StijnMartens gerne geschehen! 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.
Das hat wunderbar funktioniert.
Ich habe sowohl Alfred als auch Automator ausprobiert und sie waren so langsam. Dieser funktioniert wie ein Traum. Artikel darüber hier: howtogeek.com/286332/…

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

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

Sie können auch einen Automator-Dienst erstellen:

  1. Öffnen Sie Automator und wählen Sie die Dienstvorlage aus
  2. Fügen Sie eine Aktion „Shell-Skript ausführen“ oder „AppleScript ausführen“ hinzu
  3. Überprüfen Sie, ob Eingabetyp und Anwendungsbereich korrekt sind
  4. Fügen Sie das Skript ein und speichern Sie den Dienst
  5. Weisen Sie im Einstellungsbereich „Tastatur“ eine Tastenkombination zu

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

plus eins für die Erwähnung anderer Apps, die dies ebenfalls tun. Ich wollte fast Spark installieren, als ich QuickSilver bereits benutzte. Ich wusste nicht, dass es diese Option gibt.
Außerdem befindet sich der Abschnitt im Bereich „Tastatureinstellungen“ zum Hinzufügen einer Verknüpfung im Abschnitt „Dienste“, wenn Sie den Automator-Ansatz verwenden.

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

Wenn Sie feststellen, dass Sie etwas häufig 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 Sie einen Unix-Befehl oder ein Shell-Skript ausführen möchten, finden Sie in diesem Stackoverflow-Beitrag weitere Informationen zur Verwendung des "Terminal-Moduls" von Quicksilver.

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

  1. Wählen Sie Tastatur aus BTT

Wählen Sie Tastatur aus BTT

  1. Geben Sie Ihre Tastenkombination (oder Tastenfolge!)

Geben Sie Ihre Tastenkombination (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 die Shell, die Sie ausführen möchten, einfügen:

Sie können Ihr Skript und die Shell, die Sie ausführen möchten, einfügen:

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, wofür die Verknüpfung ist ...

Vielleicht möchten Sie Notizen hinzufügen, um sich daran zu erinnern, wofür die Verknüpfung ist ...

Danke, bin diesen Weg gegangen, seit ich BTT habe.
Wie könnte ich dieses Skript dazu bringen, Text auszugeben, unabhängig davon, ob der Cursor atm ist?

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

Ich habe jedoch festgestellt, dass die Tastenkombination für Dienste berücksichtigt wird , wenn die Systemeinstellungen im Vordergrund stehen, aber nicht in anderen Anwendungen, einschließlich Finder.

Der frühere Vorschlag, Spark zu verwenden, funktionierte jedoch perfekt in Lion, außer dass ich die Strg-Taste nicht in meiner Tastenkombination verwenden konnte. (kein Hingucker!)

nur wenn das Anwendungsmenü im Fokus ist. Wenn Sie auf den Desktop klicken und die Verknüpfung versuchen, funktioniert es 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 es funktioniert nicht, wenn ich mich nicht in einer App befinde, und selbst dann muss das Menü den Fokus haben.
@Lri auch nach dem Aus- und Wiedereinloggen, dem Neustart des Computers usw. Es funktioniert immer noch nicht, es sei denn, ich mache das, was ich oben beschrieben habe. Das Einstellen in Quicksilver funktioniert aber. Ich würde gerne wissen, warum QuickSilver diese "globalen" Verknüpfungen und nicht das Betriebssystem abfangen kann.