Am einfachsten ist dies, wenn Sie die Elemente aus dem Finder in ein Terminalfenster ziehen . Wenn Sie sie löschen, gibt Terminal die Pfadnamen (mit Escape-Zeichen) ein. Sie können dann die Befehlszeilenbearbeitung Ihrer Shell verwenden, um den Rest des Befehls einzugeben. Wenn Sie vorausdenken, können Sie den Befehl zuerst eingeben und dann die Elemente hineinziehen.
Die "Drag First" -Version:
- Wählen Sie einige Finder- Elemente aus und ziehen Sie sie in ein Terminalfenster , in dem eine Shell-Eingabeaufforderung angezeigt wird. Das Terminal fügt die (mit Escape-Zeichen versehenen) Pfadnamen ein.
- Geben Sie Control+ A(gehen Sie zu dem Anfang der Zeile; ^A ist die Standardeinstellung, sondern variiert von Shell / Konfiguration).
- Geben Sie Ihren Befehl und ein Leerzeichen ein (es wird vor den Pfadnamen eingefügt).
Die "Thinking Ahead" -Version:
- Führen Sie in beliebiger Reihenfolge beide Schritte aus:
- Geben Sie in einem Terminalfenster den ersten Teil Ihres Befehls und das Leerzeichen ein (alles außer den Pfadnamen).
- Wählen Sie einige Elemente im Finder aus .
- Ziehen Sie die ausgewählten Elemente aus dem Finder in das Terminalfenster , in das Sie den Befehl eingegeben haben.
- Aktivieren Sie das Terminalfenster und drücken Sie Return.
Sie können sich (wie andere Antworten gezeigt haben) an AppleScript oder Automator wenden, wenn Sie eine stärker automatisierte Lösung benötigen. Da die zusätzlichen "beweglichen Teile" die Lösung etwas komplizierter machen können, müssen Sie die Vorteile des obigen Prozesses (manuell, aber flexibel) gegen die Komplexität der Implementierung einer oder mehrerer der automatisierten Lösungen abwägen.
Einige der Automatisierungsmöglichkeiten umfassen:
- eine AppleScript-Droplet-Anwendung
- Ein einfaches AppleScript-Programm, das über das integrierte Skriptmenü oder einen anderen Starter gestartet wird
- Abrufen von Pfadnamen aus der Finder -Auswahl
- einen Automator-Workflow, eine Anwendung oder ein Finder- Plug-in
- Eine ausführbare
.command
Datei (normalerweise ein Shell-Skript; im Finder öffnen , um sie im Terminal auszuführen )
- Abrufen von Pfadnamen aus der Finder -Auswahl (über JavaScript )
- Tools von Drittanbietern, die bereits die von Ihnen benötigten Funktionen bereitstellen
Services sind, wie osx mit solchen Dingen umgeht .
Unter dem Anwendungsmenü (in diesem Fall "Finder") befindet sich (fast) immer eine
Services
Menüoption, die Dienste bereitstellt, die für die aktuelle Anwendung und ihren aktuellen Status gelten. Typischerweise ist der Status der ausgewählte Objekttyp (Text, Dateien / Ordner usw.).Sie können in den Systemeinstellungen aktiviert, deaktiviert und Tastenkombinationen zugewiesen werden, die nur für die letzten drei Optionen sinnvoll sind
Keyboard
.So erstellen Sie einen Dienst, der ein Shell-Skript auf Dateien / Ordner im Finder anwendet:
Starten Sie den Automator und erstellen Sie ein neues
Service
Dokument.files or folders
)Get Selected Finder Items
Aktion.Run Shell Script
Es sollte ungefähr so aussehen:
automator legt es
~/Library/Services
beim Speichern automatisch in Ihrem Ordner ab, wodurch es (fast) sofort über dasApplication -> Services
Menü oder das Kontextmenü (Rechtsklick) verfügbar wird .quelle
Unter Mac OS X ist Applescript die bevorzugte Skriptsprache. Sie können ein Droplet erstellen (ein Skript, das etwas bewirkt, wenn Sie einige Dateien über das Symbol ziehen), das Skript-Symbol (das als Anwendung gespeichert werden kann) auf dem Desktop platzieren und die zu übergebenden Dateien ziehen und ablegen Skript.
Alternativ können Sie Ordneraktionen verwenden. Es ist möglich, ein Skript Applescript einem Ordner zuzuordnen, der immer dann ausgeführt wird, wenn einige Dateien (oder Verzeichnisse) über dem Ordner abgelegt werden.
quelle
Ich wollte das auch tun, aber im Gegensatz zu den obigen Lösungen wollte ich zitierte Parameter für ein Shell-Skript erstellen. Diese anderen Methoden sind in Ordnung, aber sie sehen so aus, als würden Sie "nur Befehl-V in Terminal" vorschlagen, wenn Sie wirklich wollen
pbpaste
.Ich wollte eine Shell-Funktion erstellen, die ich in meinen Skripten verwenden kann und die zu Dateiparametern für jede Finder-Auswahl erweitert wurde. Ich benutze die Fischschale und das scheint einigermaßen zu funktionieren:
Gebraucht (wieder in der Fischschale) wie
convert-video (selection)
.In einer Bash-Funktion muss die Ausgabe möglicherweise mit etwas zitiert werden, das
| tr '\n' '\0' | xargs -0 printf "%q" {}
am Ende des Befehls osascript steht, nicht sicher.(Hinweis: Alles, was ich über fortgeschrittenes Apple- und Shell-Scripting weiß, habe ich in den letzten 2 Stunden neu gelernt und werde es bis morgen vergessen.)
quelle
Basierend auf den obigen Antworten habe ich dieses Ding gebaut
https://github.com/commonpike/DropShell
Grundsätzlich eine Applescript-App, die eine in der App befindliche Shell-Datei mit den abgelegten Dateien als Argumente aufruft. Sie können das Shell-Skript nach Bedarf ändern.
quelle
Basierend auf der Antwort von commonpike habe ich ein AppleScript erstellt, das alle darauf abgelegten Dateien zu einem Shell-Skript mit dem passenden Namen umleitet. Speichern Sie es einfach in Apples ScriptEditor als Anwendung und benennen Sie es in script.app um, damit es zu Ihrem script.sh https://github.com/PHolker/scripts/blob/master/DropScript.scpt passt
quelle