Necesita un poco de ayuda para ejecutar un par de líneas de bash en applecript. ¿Tal vez el mejor golpe es el mejor?

2

Prefacio de esto diciendo que lanzaré este script, ya sea AppleScript o Bash script con Alfred.app.

Lamento ser tan contundente e incomprensible pero necesito ejecutar un par de líneas de bash en un applecript. Creo que un simple script bash es capaz pero no lo sé con seguridad. Aquí están los detalles (tenga en cuenta que los comandos probablemente deberían ser diferentes, por lo que si tiene sugerencias, no dude en indicarlos ya que probablemente sean correctos):

Quiero que el script

  1. rm ~/Library/Vidalia/vidalia.conf'
  2. unzip ~/Library/Vidalia/vidalia.conf.zip'
  3. inicia Vidalia.app

El siguiente paso no creo que sea posible ya que Vidalia.app no es compatible con scripts y no quiero que el script applescript / bash se ejecute hasta que Vidalia se cierre ... pero si es posible implementarlo sin que el script necesite permanecer abierto:

4) Al salir de Vidalia.app rm ~/Library/Vidalia/vidalia.conf

Es esto posible. Puedo usar bash o applescript lo que sea más fácil para ti, de & guy; chicas para ayudarme con. ¡Si pudiera conseguir los tres primeros pasos para correr, estaría muy feliz! Gracias por su tiempo y perdón por mi falta de conocimiento. Cualquier consejo o sugerencia son bienvenidos.

Carajo, ni siquiera sé si esos son los comandos de shell "adecuados" que deben usarse, hicieron el trabajo pero si son "sólidos", no lo sé.

Gracias por su tiempo y paciencia.

ACTUALIZACIÓN - Pregunta: ¿Cómo mover el archivo descomprimido a un directorio diferente?

Bueno, tengo una última pregunta. ¿Cómo haría este mismo tipo de acción, pero quería mantener vidalia.conf.zip en otro directorio?

Digamos, por ejemplo, un volumen externo llamado tor - Me moví al volumen montado llamado tor con pushd , pero cuando voy a extraer el archivo con lo que creo que debería funcionar -d , obtengo el error que yo cannot create extraction directory

Lo cual es bueno porque no quiero reemplazar el directorio, simplemente mueva lo que está descomprimido al directorio preexistente. Sí, probablemente tendré que eliminar el archivo que hay allí, dependiendo de lo que esté haciendo, para que tenga este aspecto ...

pushd ~/Library/Vidalia/
rm vidalia.conf
popd
pushd /Volumes/tor
unzip vidalia.conf.zip -d ~/Library/Vidalia/
popd

No lo he intentado demasiado una vez que encontré el error con el antiguo -d . Mientras escribía esto, me di cuenta de que tenía que navegar más directorios con pushd y luego salir con popd . Originalmente, solo tenía las líneas 4 y 5, pero agregué las 3 principales para eliminar el .conf que actualmente existe ... si ... está ahí ...

Lo que me lleva a una pregunta más ... ¿Es inofensivo decirle a bash que elimine un archivo que no existe? No tendría ni idea de por dónde empezar con if then enunciados.

Por último, ¿alguien puede recomendar una buena introducción para principiantes al libro Bash? Me encantaría realmente aprender esto en lugar de tener que buscar en Google y luego darme la vuelta y molestar a todos. Gracias de nuevo por tu ayuda. Resolviste mi problema anterior a la perfección, incluso aprendí mucho del simple ejemplo (creo).

¡Salud!

    
pregunta Bob Peaks 17.06.2012 - 05:07

2 respuestas

3

Como mencionó @laaph, si solo quieres ejecutar los comandos de bash, usa un script de bash.

Sin embargo, hay algunos problemas con tus comandos.

Su script debe tener el siguiente aspecto:

#!/bin/sh

pushd ~/Library/Vidalia
rm vidalia.conf
unzip vidalia.conf.zip
popd
open /Applications/Vidalia.app

Si no cambiaste al directorio correcto, unzip descomprimiría el archivo en tu directorio de inicio, o desde donde ejecutaste el script.

Hay formas de buscar cuándo se cierra una aplicación, pero en tu caso, esto parece inútil, estás eliminando el .conf cada vez que inicias el script. Pero si realmente quieres eso, simplemente puedes hacerlo:

#!/bin/sh

pushd ~/Library/Vidalia
rm vidalia.conf
unzip vidalia.conf.zip
popd
open -W /Applications/Vidalia.app
pushd ~/Library/Vidalia
rm vidalia.conf
popd

(Esto haría que el script esperara hasta que cierre la aplicación, y luego eliminaría el archivo de configuración. De nuevo, esto es inútil y redundante si solo va a iniciar la aplicación con el script).

También, podrías probar una solución más simple: asumo que lo que quieres es tener el mismo vidalia.conf cada vez que inicies el programa. Si ese es el caso, intente simplemente hacer que .conf sea de solo lectura.

    
respondido por el houbysoft 17.06.2012 - 05:58
1

Lo que tienes hasta ahora es exactamente lo que quieres, y para abrir un programa, usa "abrir", para que tu script se vea así:

rm ~/Library/Vidalia/vidalia.conf
unzip ~/Library/Vidalia/vidalia.conf.zip
open /Applications/Vidallia.app

Hay todo tipo de trucos para monitorear si Vidalia se está ejecutando o no, por lo que si estuviera dispuesto a dejar el script en ejecución, también podría eliminar el archivo conf, y luego hacer que el script salga. Y, como usted dice, esto podría hacerse (de manera diferente) en Applescript, Automator o un millón de otras formas.

    
respondido por el laaph 17.06.2012 - 05:50

Lea otras preguntas en las etiquetas