Ich möchte in der Lage sein, in Spotlight nach einem Shell-Skript (oder etwas, das ein Shell-Skript aufruft) zu suchen, und dass ein solches Shell-Skript ein Terminalfenster öffnet, sodass die Ausgabe live angezeigt wird (und ich kann mit unterbrechen) ctrl + C.
Im Moment habe ich einebackup.sh
#!/bin/bash
caffeinate -s \
rsync -hva --progress --stats --delete "/path/to/source/" "/path/to/destination"
die ich umbenannt habe, backup.command
damit ich im Finder doppelklicken kann und es funktioniert perfekt. Aber ich kann in Spolight nicht danach suchen, weil ich möchte, dass Spotlight nur nach Anwendungen, Systemeinstellungen und Kontakten sucht, und wenn ich Developer markiere, zeigt es aber auch viele backup.command
unerwünschte Dateien, die einfach unnötig sind.
Ich habe versucht, es zu appify, aber dann läuft es im Hintergrund und öffnet kein neues Terminalfenster, sodass ich den Fortschritt nicht sehen kann, wie es läuft, und ich kann den Fortschritt auch nicht mit stoppen ctrl + C. Irgendein Vorschlag?
Applizieren mit Platypus:
Laden Sie Platypus herunter und erstellen Sie eine App aus dem Shell-Skript.
Beispiel:
Die obigen Einstellungen erstellen eine App mit einem Fortschrittsbalken (einschließlich Details) und können beendet werden - der rsync-Prozess muss jedoch manuell abgebrochen (gekillt) werden.
Die App selbst kann mit Spotlight gefunden werden.
Einfache AppleScript-Lösung:
In Mavericks (und wahrscheinlich später) müssen Sie der AppleScript-App erlauben, den Computer in "Systemeinstellungen -> Sicherheit & Datenschutz -> Datenschutz -> Eingabehilfen" zu steuern.
Öffnen Sie den ScriptEditor, geben Sie das folgende Code-Snippet ein und exportieren Sie es als Anwendung mit einem eindeutigen Namen:
tell application "Terminal"
delay 2
set newWindow to do script "caffeinate -s rsync -hva --progress --stats --delete /path/to/folder /path/to/folder2"
activate
end tell
Wenn Sie Root-Berechtigungen benötigen, stellen Sie sudo voran -> "sudo caffeinate -s ...."
Sie können die AppleScript-App verfeinern, indem Sie überprüfen, ob Terminal bereits geöffnete Fenster hat, und ein neues erstellen, um das Shell-Skript auszuführen:
set myScript to "caffeinate -s rsync -hva --progress --stats --delete /path/to/folder /path/to/folder2"
tell application "System Events"
if exists (window 1 of process "Terminal") then
tell application "Terminal"
set newWindow to do script myScript
activate
end tell
else
tell application "Terminal"
delay 2
set Window1 to do script myScript
activate
end tell
end if
end tell
Die AppleScript-App kann mit Spotlight gefunden werden.
In Mountain Lion müssen Sie "Systemeinstellungen -> Eingabehilfen -> Zugriff für Hilfsgeräte aktivieren" aktivieren und ein wenig ändern, damit die AppleScript-App-Lösungen ordnungsgemäß ausgeführt werden:
set myScript to "caffeinate -s rsync -hva --progress --stats --delete /path/to/folder /path/to/folder2"
tell application "System Events"
if exists (window 1 of process "Terminal") then
tell application "Terminal"
reopen
activate
set newWindow to do script myScript
end tell
else
tell application "Terminal"
reopen
activate
do script myScript in window 1
end tell
end if
end tell
AppleScript mit "externem" Shell-Skript (backup.sh):
Dies ist der letzte Ansatz, den das OP verwendet. Von hier genommen . In Mavericks (und wahrscheinlich später) müssen Sie der AppleScript-App erlauben, den Computer in "Systemeinstellungen -> Sicherheit & Datenschutz -> Datenschutz -> Eingabehilfen" zu steuern. .sh
Man kann das vollständige (in der App platzierte Contents/Resources/backup.sh
) laden mit:
set bashFile to path to resource "backup.sh"
tell application "Terminal"
delay 1
activate
set newWindow to do script "bash " & quoted form of (POSIX path of bashFile)
end tell
Sie können die AppleScript-App verfeinern, indem Sie überprüfen, ob Terminal bereits geöffnete Fenster hat, und ein neues erstellen, um das Shell-Skript auszuführen:
set bashFile to path to resource "backup.sh"
tell application "System Events"
if exists (window 1 of process "Terminal") then
tell application "Terminal"
delay 1
set newWindow to do script "bash " & quoted form of (POSIX path of bashFile)
activate
end tell
else
tell application "Terminal"
delay 2
set Window1 to do script "bash " & quoted form of (POSIX path of bashFile)
activate
end tell
end if
end tell
backup.sh
oder zu starten backup.command
. Wie würde diese AppleScript-Lösung auf jeden Fall funktionieren?activate
, um das Terminalfenster nach vorne zu bringen. Wenn das nicht in Ordnung ist, dann kannst du es natürlich löschen.error -25211
, als Terminal geöffnet war, aber ich habe es mit Hilfe dieser Frage gelöst . In jedem Fall werden, wenn Terminal nicht läuft, zwei Fenster geöffnet, wenn das Skript ausgeführt wird. Ich leite Mountain Lion.chmod 755 NameOfYourScript
Dann vom Terminal ausführen./NameOfYourScript
Wenn Sie ls
es grün erscheinen
hirnwunde
Mateusz Szlosek
Manuel
Manuel
Benutzer3439894
backup
, platzieren Sie es in$PATH
und rufen Sie es einfach von einem Terminal aus an, indem Sie es eingebenbackup
und die Eingabetaste drücken? Warum nicht einfach Time Machine verwenden, es scheint viel einfacher zu sein als alles, was Sie bisher durchgemacht haben, um dies zum Laufen zu bringen.Manuel
Benutzer3439894
Att Righ