¿Cómo configuro un script de shell para ejecutar desde el dock de Mac OSX? Parece que simplemente crear un acceso directo abrirá el archivo en mi editor. ¿Hay una bandera que necesito establecer en algún lugar para decirle que se ejecute en lugar de abrirla para editarla?
160
Respuestas:
Puede crear un flujo de trabajo de Automator con un solo paso: "Ejecutar script de Shell"
Luego
File > Save As
, y cambie el Formato de archivo a "Aplicación". Cuando abra la aplicación, ejecutará el paso Shell Script, ejecutando el comando y saliendo después de que se complete.El beneficio de esto es que es realmente simple de hacer, y puede obtener fácilmente la entrada del usuario (por ejemplo, seleccionando un grupo de archivos), luego pasarla a la entrada del script de shell (ya sea stdin o como argumentos).
(¡Automator está en tu
/Applications
carpeta!)fuente
open -a SomeAppThing.app --args --etc=2
esto, debería enfocarse. Alternativamente, puede enfocarlo usando Applescript (por ejemploosascript -e 'tell application "Google Chrome" to activate'
)Si no necesita una ventana de Terminal, puede convertir cualquier archivo ejecutable en una Aplicación simplemente creando un script de shell
Example
y moviéndolo al nombre del archivoExample.app/Contents/MacOS/Example
. Puede colocar esta nueva aplicación en su base como cualquier otra, y ejecutarla con un clic.NOTA: el nombre de la aplicación debe coincidir exactamente con el nombre del script. Por lo tanto, el directorio de nivel superior debe ser
Example.app
y el script en elContents/MacOS
subdirectorio debe llamarseExample
, y el script debe ser ejecutable.Si necesita que se muestre la ventana de terminal, no tengo una solución simple. Probablemente podría hacer algo con Applescript, pero eso no está muy limpio.
fuente
example.sh.app
, no soloexample.app
. Recibirá una advertencia sobre la aplicación dañada si no coinciden.app
y con esa estructura, se tratará como una Aplicación ejecutable. Si desea ver el contenido de esa carpeta en el Finder, deberá hacer clic derecho sobre él y seleccionar "ver contenido del paquete" (porque al hacer doble clic en él se ejecutará la aplicación). En la Terminal, solo parecerá ser una carpeta. (No estoy seguro de si Finder le permitirá cambiar el nombre de la carpeta a .app por sí mismo; es posible que deba cambiar el nombre en la Terminal).En OSX Mavericks:
Haga que su script de shell sea ejecutable:
Cambie el nombre de su script para que tenga un
.app
sufijo:Cambie el nombre de su script a un
.sh
sufijo:Ahora, cuando haga clic en el script en el dock, aparecerá una ventana de terminal y ejecutará su script.
Bonificación: para que el terminal se cierre cuando su script se haya completado, agréguelo
exit 0
al final y cambie la configuración del terminal para "cerrar el shell si se salió limpiamente", como se dice en esta respuesta SO .fuente
Sé que esto es viejo, pero en caso de que sea útil para otros:
Si necesita ejecutar un script y desea que aparezca el terminal para que pueda ver los resultados, puede hacer lo que dijo Abyss Knight y cambiar la extensión a .command. Si hace doble clic en él, se abrirá una ventana de terminal y se ejecutará.
Sin embargo, necesitaba que esto se ejecutara desde el automatizador o appleScript. Entonces, para que esto abra una nueva terminal, el comando que ejecuté desde "ejecutar shell script" fue "abrir myShellScript.command" y se abrió en una nueva terminal.
fuente
Mientras su script sea ejecutable y no tenga ninguna extensión, puede arrastrarlo tal cual está al lado derecho (lado del documento) del Dock y se ejecutará en una ventana de terminal cuando se haga clic en lugar de abrir un editor.
Si desea tener una extensión (como foo.sh), puede ir a la ventana de información de archivo en Finder y cambiar la aplicación predeterminada para ese script en particular de lo que sea (TextEdit, TextMate, cualquier valor predeterminado que esté configurado en su computadora para .sh) a la Terminal. Luego se ejecutará en lugar de abrirse en un editor de texto. Nuevamente, deberá arrastrarlo hacia el lado derecho del Dock.
fuente
Creo que este hilo puede ser útil: http://forums.macosxhints.com/archive/index.php/t-70973.html
Parafraseando, puede cambiarle el nombre con la extensión .command o crear un AppleScript para ejecutar el shell.
fuente
Como Joe mencionó, crear el script de shell y luego crear un script de applecript para llamar al script de shell, logrará esto, y es bastante útil.
Shell Script
Cree su script de shell en su editor de texto favorito, por ejemplo:
mono "/Volumes/Media/~Users/me/Software/keepass/keepass.exe"
(esto ejecuta el ejecutable w32, usando el marco mono)
Guardar script de shell, por ejemplo, "StartKeepass.sh"
Apple Script
Abra el Editor AppleScript y llame al script de shell
do shell script "sh /Volumes/Media/~Users/me/Software/StartKeepass.sh" user name "<enter username here>" password "<Enter password here>" with administrator privileges
do shell script
- comando applecript para llamar a comandos de shell externos"sh ...."
- este es su script de shell (ruta completa) creado en el paso uno (también puede ejecutar comandos directos, podría omitir el script de shell y simplemente ejecutar mi comando mono aquí)user name
- declara a AppleScript que desea ejecutar el comando como un usuario específico"<enter username here>
- reemplace con su nombre de usuario (manteniendo comillas) ex "josh"password
- declara a AppleScript su contraseña"<enter password here>"
- reemplace con su contraseña (manteniendo comillas) ex "mypass"with administrative privileges
- declara que quieres correr como administradorCrea tu .APP
guarde su applecript como filename.scpt, en mi caso RunKeepass.scpt
guardar como ... su applecript y cambiar el formato de archivo a la aplicación, resultando en RunKeepass.app en mi caso
Copie el archivo de su aplicación a su carpeta de aplicaciones
fuente
En el Editor de secuencias de comandos:
do shell script "/full/path/to/your/script -with 'all desired args'
"Guardar como un paquete de aplicaciones.
Mientras todo lo que quieras hacer sea obtener el efecto del script, esto funcionará bien. No verá STDOUT o STDERR.
fuente
Alguien escribió ...
fuente