Quiero poder buscar en Spotlight un script de shell (o algo que llame a un script de shell) y que dicho script de shell abra una ventana de Terminal para que la salida se muestre en vivo (y pueda interrumpir con ) ctrl + C.
Ahora mismo, tengo unbackup.sh
#!/bin/bash
caffeinate -s \
rsync -hva --progress --stats --delete "/path/to/source/" "/path/to/destination"
que he cambiado de nombre backup.command
para poder hacer doble clic en Finder y funciona perfectamente. Pero no puedo buscarlo en Spolight porque quiero que Spotlight solo busque Aplicaciones, Preferencias del sistema y Contactos, y si marco Desarrollador, muestra backup.command
pero también muchos archivos no deseados que simplemente son innecesarios.
Traté de aplicarlo , pero luego se ejecuta en segundo plano y no abre una nueva ventana de Terminal, por lo que no puedo ver el progreso de cómo va, y tampoco puedo detener el progreso con ctrl + C. ¿Cualquier sugerencia?
Aplicando con Ornitorrinco:
Descarga Platypus y crea una aplicación desde el script de shell.
Ejemplo:
La configuración anterior crea una aplicación con una barra de progreso (incluidos los detalles) y se puede cerrar; sin embargo, el proceso rsync debe cancelarse (eliminarse) manualmente.
La aplicación en sí se puede encontrar con Spotlight.
Solución simple de AppleScript:
En Mavericks (y probablemente más adelante) debe permitir que la aplicación AppleScript controle la computadora en "Preferencias del sistema -> Seguridad y privacidad -> Privacidad -> Accesibilidad"
Abra ScriptEditor, ingrese el fragmento de código a continuación y expórtelo como una aplicación con un nombre único:
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
Si necesita permisos de root, anteponga sudo -> "sudo caffeinate -s..."
Puede refinar la aplicación AppleScript comprobando si Terminal ya tiene ventanas abiertas y crear una nueva para ejecutar el script de shell:
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
La aplicación AppleScript se puede encontrar con Spotlight.
En Mountain Lion, debe habilitar "Preferencias del sistema -> Accesibilidad -> Habilitar acceso para dispositivos de asistencia" y cambiarlo un poco para que las soluciones de la aplicación AppleScript funcionen correctamente:
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 con script de shell "externo" (backup.sh):
Este es el enfoque final que está utilizando el OP. Tomado de aquí . En Mavericks (y probablemente más adelante), debe permitir que la aplicación AppleScript controle la computadora en "Preferencias del sistema -> Seguridad y privacidad -> Privacidad -> Accesibilidad". Uno puede cargar el completo .sh
(colocado dentro de la aplicación en Contents/Resources/backup.sh
) con:
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
Puede refinar la aplicación AppleScript comprobando si Terminal ya tiene ventanas abiertas y crear una nueva para ejecutar el script de shell:
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
o backup.command
. En cualquier caso, ¿cómo funcionaría esa solución de AppleScript?activate
para traer la ventana de Terminal al frente. Si eso no está bien, entonces, por supuesto, puede eliminarlo.error -25211
cuando la Terminal estaba abierta, pero lo resolví con la ayuda de esta pregunta . En cualquier caso, si la Terminal no se está ejecutando, se abren dos ventanas cuando se ejecuta el script. Estoy ejecutando Mountain Lion.Ejecutar chmod 755 NameOfYourScript
desde la terminal, luego./NameOfYourScript
Si te ls
aparecerá verde
hirnwund
mateusz szlosek
Manuel
Manuel
usuario3439894
backup
, colocarlo en el$PATH
y simplemente llamarlo desde una Terminal escribiendobackup
y presionando Enter? Además, ¿por qué no usar Time Machine? Parece que sería mucho más fácil que todo lo que has estado haciendo para que esto funcione.Manuel
usuario3439894
A la derecha