4 votos

Manera fácil de ejecutar secuencia de comandos de shell

Quiero ser capaz de buscar en Spotlight para un script de shell (o algo que se llama a un script de shell) y que dicha secuencia de comandos de shell se abre una ventana de Terminal por lo que el resultado se mostrará en directo (y puedo interrumpir con ctrl + C).

Ahora mismo, tengo un backup.sh

#!/bin/bash
caffeinate -s \
  rsync -hva --progress --stats --delete "/path/to/source/" "/path/to/destination"

que he cambiado el nombre a backup.command , así que puedo doubleclick en el Finder y funciona perfectamente. Pero no puedo buscar en Spolight porque quiero Spotlight para buscar sólo para Aplicaciones, Preferencias del Sistema y los Contactos, y si me marca Desarrollador, a continuación, se muestra backup.command , pero también un montón de archivos no deseados que son simplemente innecesaria.

¿Qué puedo hacer?

Traté de appify pero, a continuación, se ejecuta en segundo plano y que no se abra una nueva ventana de Terminal, así que no puedo ver el progreso de cómo va, y yo también no se puede detener el progreso con ctrl + C. Alguna sugerencia?

6voto

klanomath Puntos 19587

Appifying con Ornitorrinco:

Descargar el Ornitorrinco y crear una aplicación a partir de la secuencia de comandos de shell.

Ejemplo:

enter image description here

La configuración anterior crear una aplicación con una barra de progreso (incluyendo detalles) y puede ser abandonado - el proceso rsync tiene que ser cancelada (muerto) de forma manual, aunque.

enter image description here

La propia aplicación se puede encontrar con el centro de atención.


Sencillo AppleScript solución:

En Mavericks (y probablemente más adelante), tiene que permitir a la AppleScript app para el control de la computadora en "Preferencias del Sistema -> Seguridad Y Privacidad -> Privacidad -> Accesibilidad"

Abierto ScriptEditor, introduzca el siguiente fragmento de código y de exportación 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 usted necesita permisos de root anteponer sudo -> "sudo caffeinate -s ...."

Puede refinar la AppleScript aplicación mediante la comprobación de si el Terminal ya tiene las ventanas abiertas y crear uno nuevo para ejecutar la secuencia de comandos 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

El AppleScript aplicación se puede encontrar con el centro de atención.


En Mountain Lion tiene que habilitar "Preferencias del Sistema -> Accesibilidad -> Habilitar el acceso para el dispositivo de asistencia" y cambiarlo un poco para obtener el AppleScript aplicación de soluciones funcione 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 "externo" script de shell (backup.sh):

Esta es la aproximación final, el OP está utilizando. Tomado de aquí. En Mavericks (y probablemente más adelante), tiene que permitir a la AppleScript app para el control de la computadora en "Preferencias del Sistema -> Seguridad Y Privacidad -> Privacidad -> Accesibilidad". Uno puede cargar el total .sh (colocado en el interior de la app, 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 AppleScript aplicación mediante la comprobación de si el Terminal ya tiene las ventanas abiertas y crear uno nuevo para ejecutar la secuencia de comandos 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

-1voto

Didaktikos Puntos 21

Ejecutar chmod 755 NameOfYourScript desde la terminal, a continuación, ./NameOfYourScript

Si usted ls aparecerá verde

AppleAyuda.com

AppleAyuda es una comunidad de usuarios de los productos de Apple en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros usuarios, hacer tus propias preguntas o resolver las de los demás.

Powered by:

X