macos - comandos - terminal mac commands
¿Ejecutar scripts de shell desde el Dock OS X? (9)
Alguien escribió ...
Acabo de configurar todos los archivos que terminan en ".sh" para abrir con Terminal. Funciona bien y no tiene que cambiar el nombre de cada script de shell que desea ejecutar.
¿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 alguna bandera que deba establecer en algún lugar para indicarle que se ejecute en lugar de abrirla para su edición?
Como Joe mencionó, crear el script de shell y luego crear un script de applescript para llamar al script de shell lo logrará y es muy ú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 framework mono)
Guarde el script de shell, para mi ejemplo "StartKeepass.sh"
Apple Script
Abra AppleScript Editor 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 applescript para llamar comandos de shell externos -
"sh ...."
- este es tu script de shell (ruta completa) creado en el paso uno (también puedes 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 las comillas) ex" josh " -
password
- declara a applescript tu contraseña -
"<enter password here>"
- reemplace con su contraseña (manteniendo las comillas) ex "mypass" -
with administrative privileges
: declara que desea ejecutar como administrador
-
Crea tu .APP
guarda tu applescript como filename.scpt, en mi caso RunKeepass.scpt
guarda como ... tu applescript y cambia el formato de archivo a la aplicación, lo que da como resultado RunKeepass.app en mi caso
Copie su archivo de aplicación a su carpeta de aplicaciones
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.
En OSX Mavericks:
- Crea tu script de shell
Haz que tu script de shell sea ejecutable:
chmod +x your-shell-script.sh
Cambie el nombre de su script para tener un sufijo
.app
:mv your-shell-script.sh your-shell-script.app
- Arrastre la secuencia de comandos a la base de OSX.
Cambie el nombre de su script a un sufijo
.sh
:mv your-shell-script.app your-shell-script.sh
- Haga clic con el botón derecho en el archivo en Finder y haga clic en la opción "Obtener información".
- En la parte inferior de la ventana, configure el script de shell para abrir con el terminal.
Ahora cuando hace clic en el script en el dock, aparecerá una ventana de terminal y ejecutará su script.
Bonificación: para que la terminal se cierre cuando se haya completado la secuencia de comandos, agregue la exit 0
al final y cambie la configuración de la terminal para "cerrar la consola si salió limpiamente", como dice hacer en esta respuesta SO .
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.
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 de Shell Script, ejecutará el comando y saldrá cuando finalice.
El beneficio de esto es que es realmente simple de hacer, y usted puede obtener fácilmente la entrada del usuario (por ejemplo, seleccionar un grupo de archivos), luego pasarlo a la entrada del script de shell (ya sea a stdin, o como argumentos).
(Automator está en su carpeta /Applications
!)
Sé que esto es viejo, pero en caso de que sea útil para otros:
Si necesita ejecutar una secuencia de comandos y desea que la terminal aparezca para que pueda ver los resultados, puede hacer lo mismo que 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 esto para ejecutar desde el automatizador o appleScript. Entonces, para que esto abriera una nueva terminal, el comando que ejecuté desde "ejecutar script de shell" fue "abrir myShellScript.command" y se abrió en una nueva terminal.
Si no necesita una ventana de Terminal, puede hacer que cualquier archivo ejecutable sea una Aplicación simplemente moviendo example.sh
a example.sh.app/Contents/MacOS/example.sh
. Puede colocar la Aplicación en su base como cualquier otra y ejecutarla con un clic.
Si necesita que se muestre la ventana del terminal, no tengo una solución simple. Probablemente puedas hacer algo con Applescript, pero eso no está muy limpio.
Siempre que su script sea ejecutable y no tenga ninguna extensión, puede arrastrarlo como 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 del archivo en Finder y cambiar la aplicación predeterminada para esa secuencia de comandos particular de lo que sea (TextEdit, TextMate, cualquier configuración predeterminada está configurada en su computadora para archivos .sh) a la Terminal. Luego se ejecutará en lugar de abrir en un editor de texto. De nuevo, tendrá que arrastrarlo hacia el lado derecho del Dock.