¿Hay alguna forma de crear un archivo que, al pulsarlo, abra Terminal y escriba y ejecute una línea especificada? (Ej: say hello world
)
Respuestas
¿Demasiados anuncios?Lo que intentas hacer es escribir un "shell script" (por si más adelante necesitas buscarlo en Google).
La primera línea de un shell script debe especificar qué intérprete utilizar. En su caso, utilice sh
para el shell Bourne normal. Usted escribe esto con lo que se llama un 'shebang' así:
#!/bin/sh
después de esto escribe los comandos que quieras ejecutar, en tu caso, say hello world
. El intérprete de comandos lo leerá igual que si lo hubiera escrito en el terminal.
En tu caso, tu archivo final debería ser:
#!/bin/sh
say hello world
Si escribe esto en TextEdit.app asegúrese de que está guardando en el modo de texto sin formato (que se cambia a través de Cmd
+ Shift
+ T
). Puede elegir guardar con la extensión .command
o .sh
.
Si quieres ejecutarlo haciendo doble clic te recomiendo el programa .command
extensión.
¡Y ya está!
Posible error: si al ejecutarlo recibe un error que dice:
El archivo "[filename]" no se ha podido ejecutar porque yo privilegios de acceso apropiados.
tienes que darte permiso para ejecutarlo. Para ello ejecute:
chmod u+x path/to/my/file
Si no sabe cuál es la ruta del archivo, escriba:
chmod u+x
escribe un espacio y arrastra el archivo a la ventana.
Si tiene curiosidad, u+x
significa otorgar derechos de ejecución al usuario (propietario).
El enfoque simple, pero completamente falible, es simplemente escribir un shell script. Guárdelo en un archivo llamado mysay.sh
:
#!/bin/sh
say hello world
say number five is alive
Si no tienes XCode instalado, debería abrirse en Terminal al hacer doble clic sobre él.
También puede hacer esto con AppleScript y es un poco más duradero ya que no tiene que preocuparse si la aplicación predeterminada para .sh
archivos no es Terminal:
tell application "Terminal"
set currentTab to do script "/usr/bin/say hello world"
do script "/usr/bin/say number five is alive" in currentTab
end tell
delay 5
tell application "Terminal" to quit
Guárdalo como una Aplicación desde el Editor AppleScript y podrás hacer doble clic sobre él y tu Mac te hablará. Puedes esperar y cerrar la sesión de Terminal después con un poco más de AppleScript si quieres.
También puede hacer esto con AppleScript como se mencionó anteriormente, por Ian C. Sin embargo, usted puede hacer el comando único en menos líneas, y con un delay
. He aquí un AppleScript que ejecutará el comando, esperará 5 segundos y saldrá del terminal.
tell application "Terminal" to do script "say hello world"
delay 5
tell application "Terminal" to do script "logout"
tell application "Terminal" to quit
Es sólo un método alternativo, comparado con el de @Ian C. También podrías tomar el archivo .sh de Ian, y renombrarlo .command si tienes XCode, que lo abrirá en Terminal, y hará lo mismo que el AppleScript, sólo que sin el retardo. Espero que esto ayude.