13 votos

AppleScript vs script de Bash?

Soy un largo tiempo de Windows "power user" y desarrollador que ha decidido recientemente pásate a Mac OS X.

En OS X Lion y, de hecho, las versiones anteriores, parece que hay dos opciones principales para secuencias de comandos y automatización en OS X: AppleScript y un script de Bash. Este último es, por supuesto, una consecuencia directa de OS X utilizando el Unix bash shell, mientras que el primero es la propia Apple la innovación. La sintaxis son claramente muy diferentes, con AppleScript tener un pseudo-lenguaje natural de estilo.

Mi pregunta es, se AppleScript y un script de Bash comúnmente utilizados (de hecho, se deben utilizar) para distintas tareas y propósitos en OS X. yo soy vagamente consciente de la amplia gama de tareas que puedo lograr con un script de Bash, aunque, por supuesto, el código de algunos de los más avanzados pueden convertirse rápidamente en enrevesado. Hacer estas dos idiomas tienen la superposición o casi idénticas de los casos de uso, a pesar de que Apple invento posterior de AppleScript -- o están destinados a ser utilizados con diferentes escenarios en mente? Un panorama de alto nivel, así como algunos ejemplos específicos se agradece.

17voto

Robin Robinson Puntos 1031

Shell - y AppleScripts se puede usar en cualquier lugar, cualquiera que sea apropiado.

AppleScripts funcionan mejor cuando hay que hablar de las aplicaciones de usuario y sistema de instalaciones. (Por ejemplo, usted puede decir tell app "iTunes" to play e, o tell app "Finder" to open the first file of the second window.)

Secuencias de comandos de Shell (referido a bash) funcionan mejor cuando hay que hablar a nivel del sistema de objetos y Unixy cosas.

Ambos son interoperables: usted puede llamar a un shell de comandos de AppleScript con do shell script "command here" y usted puede llamar AppleScript código de la cáscara con osascript -e "AppleScript". Además, hay un poco de solapamiento entre los dos (especialmente cuando se trata de operaciones del sistema de archivos).

Sin duda hay más recursos para el aprendizaje de la programación en shell script en línea de AppleScript y no ayuda que AppleScript tiene una reputación de ser un "solo lectura" del lenguaje (es decir, más difícil de escribir que de leer).

En cualquier caso, la manera más moderna para hacer de secuencias de comandos es con Automator, donde usted puede utilizar cualquiera de los shell - o AppleScripting (o ambos), junto con los pre-módulos construidos a partir de diferentes aplicaciones que tenga instaladas.

8voto

TraFoO Puntos 11

Mientras contexto de secuencias de comandos puede hacer nada de lo que el otro puede (porque los scripts de shell puede llamar a /usr/bin/osascript a invocar un AppleScript, y AppleScript tiene la do shell script comando), de hecho hay situaciones para las cuales uno es mejor que el otro.

Ambos lenguajes son el "pegamento" idiomas -- pueden hacer mínimas las cosas por sí mismos, y en lugar de lograr la mayor parte de sus tareas mediante la invocación de las capacidades de otros programas. Secuencias de comandos de Shell hacer uso de las tuberías de Unix, mientras que AppleScript tiene la tell application de sintaxis.

Donde difieren es que AppleScripts comunicarse directamente con secuencias de comandos de aplicaciones (casi siempre de las aplicaciones GUI), mientras que las secuencias de comandos de shell comunican principalmente con programas de línea de comandos (algunos de los cuales pueden invocar gráfico de interfaces de usuario, pero muchos no lo hacen).

Cuando se trata de tareas de administración de archivos, ambos enfoques pueden funcionar. Uno puede Tell Application Finder copiar archivos o ejecutar el cp comando en un script de shell. Entonces, ¿por qué el uso de uno sobre el otro? Sin duda, algunos escritores están más familiarizados con un idioma que el otro, y por lo tanto se prefiere el uso de esa herramienta. Pero una mejor consideración de que el usuario de la secuencia de comandos. AppleScript a menudo puede ser invocado desde la GUI de Mac: haga doble clic en un AppleScript aplicación o eliminación de archivos en uno, o el uso de un AppleScript menú del sistema o dentro de un determinado programa. Programas como el Correo electrónico se puede configurar para ejecutar un AppleScript en los mensajes entrantes a filtrar. Para los usuarios acostumbrados a usar Macs en un "Mac-like" (es decir, desde la interfaz gráfica de usuario), AppleScripts a menudo son más accesibles.

Secuencias de comandos de Shell a menudo (pero no siempre) en vivo en el Terminal. Si uno ya está en el uso de la Terminal, ejecutando un script de shell no puede ser más cómodo que la invocación de un AppleScript. Por otro lado, muchos de los usuarios están fuera de-poner por tener que escribir comandos en una ventana de Terminal, o incluso hacer clic en un archivo de secuencia de comandos que se abre una ventana de Terminal para hacer su magia. Personalmente considero que la sintaxis de los scripts de shell más legible que la de AppleScripts, pero sospecho que estoy en minoría en que uno. Secuencias de comandos de Shell son familiares para los usuarios de diferentes sistemas tipo Unix.

En cualquier caso, ambas son herramientas poderosas para obtener un mejor control sobre su Mac.

4voto

sonja Puntos 41

Las otras respuestas dan un gran alto nivel de panorama de la intención detrás de estas dos técnicas de scripting. Tal vez sólo voy a dar algunos ejemplos de cómo usarlos.

Con Applescript, he hecho las reglas de procesamiento de Correo, conectado BBEdit a R para el procesamiento estadístico, creado complejo de Acciones de Carpeta, y hecho un masivo basado en el tiempo de la reorganización de mis fotos en iPhoto y Aperture. También he creado un mini-aplicaciones con botones y el texto que se muestra. Básicamente, esto es automático manipulación de complejas aplicaciones con interfaces gráficas de usuario.

Con Bash scripting, he creado automática de la imagen rutinas de procesamiento con Imagemagick, PDF rutinas de procesamiento con Ghostscript, la hora y la fecha de rutinas, y un montón de procesamiento de texto con Bash, sed/awk, y Perl. Utilidades de Unix tienden a ser ágil, rápido y flexible, y Bash es una gran manera de combinarlos en la muy poderosa, herramientas de fácil manejo.

Yo a veces llamada scripts de Bash desde dentro de un Applescript, generalmente para procesamiento de texto (GREP) o para la luz de la página web de la captura (curl). Yo casi siempre uso esta técnica para obtener un poco de datos o una variable a la que uso en mi Applescript.

3voto

Igor Zelaya Puntos 2266

Puede ser simplificación excesiva, pero shell scripting es para la combinación de los programas existentes para realizar nuevas tareas, mientras que AppleScript es el control (en su mayoría GUI) aplicaciones de forma remota. Clásicos programas de Unix suelen leer alguna entrada y producir algunos resultados y shell scripting permite combinarlos. AppleScript es para automatizar aplicaciones GUI.

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