17 votos

¿Cómo se ejecuta la línea de comandos scripts?

En Windows, puedo crear .bat archivos. Hago doble clic y todas las líneas se interpretan como si las hubiera introducido en la consola.

En OS X, ¿qué archivo o programa tengo que utilizar? Si quiero escribir un archivo con;

 echo hello world

Quiero hacer doble clic en este archivo y que se ejecute en una consola. ¿Cómo lo hago?

0 votos

¿es necesario que el archivo se ejecute al hacer doble clic, o sólo quiere ejecutar el archivo escribiendo el nombre del mismo?

0 votos

El archivo con doble clic es más rápido :)

24voto

Christopher Scott Puntos 665

Los fundamentos del terminal en OS X son los mismos que los utilizados en Linux. Lo que buscas específicamente se conoce como "Shell Scripting".

El shell por defecto al abrir Terminal.app (situado en /Applications/Utilties ) es el shell bash.

OS X ha tenido un manejador de shell incorporado accesible a través del Finder y otras aplicaciones a través del .command aunque, frustrantemente, no a través de la extensión .sh extensión. Sin embargo, configurar el script para que se ejecute a través del Finder es aún más complicado.

  1. Crea un simple shell script, como tu ejemplo he hecho una aplicación de Hola Mundo:

    !/bin/bash

    echo "Hello World"

  2. Guarde este archivo como HelloWorld.command .

  3. Da permiso a este archivo para ser ejecutado. chmod u+x HelloWorld.command debería hacerlo.

  4. Abra el directorio donde guardó este archivo en Finder. A continuación, haga doble clic en el archivo HelloWorld.command archivo.

Esto abrirá una terminal y ejecutará el script, la salida en mi ordenador es la siguiente:

$ /Users/jason/Applications/HelloWorld.command ; exit;
Hola Mundo
cierre de sesión

[Proceso finalizado]

La forma alternativa de ejecutar este archivo es, mientras se está en la Terminal, simplemente emitir ./HelloWorld.command asumiendo que estás en el mismo directorio que el archivo.

Si lo hace, el resultado será mucho más sencillo:

Aplicaciones jason-mac $ ./HelloWorld.command
Hola Mundo
jason-mac Aplicaciones $

¡Acabas de crear y ejecutar un shell script en OS X!

0 votos

Como apunte: es ridículamente frustrante que OS X no haga esto con los archivos ".sh", sólo con los ".command". Sí, es posible cambiar esto, pero .command ya existe, así que esta es mi solución sugerida.

0 votos

¿Quieres preguntar cómo inyectar .sh en la base de datos de los servicios de lanzamiento o lo hago yo?

0 votos

Evidentemente, la idea la has tenido tú (a mí ni se me ha pasado por la cabeza), así que de nada.

4voto

Chris Puntos 1

El equivalente a la Consola o al Símbolo del sistema en Windows es la aplicación Terminal situada en /Aplicaciones/Utilidades/

El equivalente a DOS (o como sea que lo llamen hoy en día) es "bash"

El equivalente a un archivo por lotes (.bat) en Windows es un shell script (.sh)

Sólo tienes que hacer una búsqueda en Google de "bash" "reference" y te darás cuenta del resto. También recomendaría comprar el Bash Cookbook (O'Reilly).

Específicamente, esto sería lo que usted escribiría en una ventana de terminal para obtener su "hola mundo" script:

Para crear el archivo:

    echo "echo hello world" > file.sh

Para cambiar los permisos para que el archivo sea ejecutable:

    chmod 755 file.sh

Para ejecutar el script:

    ./file.sh

Si quieres poder hacer doble clic en él desde el Finder, haz clic con el botón derecho del ratón (o control-clic) en el archivo y selecciona Obtener información, luego en Abrir con, selecciona la aplicación Terminal. También puedes utilizar la extensión .command en lugar de la extensión .sh.

2voto

Andy Puntos 1028

Probablemente quieras echarle un vistazo a AppleScript. Este libro de Sal Soghoian es considerado por muchos el libro de referencia sobre AppleScript.

Otra buena forma de automatizar las aplicaciones de Mac es utilizar Automatizador . Tal vez quiera probarlo también. Espero que esto ayude.

Actualización

Parece que estás buscando algo parecido a un shell scripting de Unix. Este dos tutoriales son decentes y parecen cubrir lo básico.

0 votos

He visto esto, pero el AppleScript no es el terminal script. Creo que se puede hacer: "Ir a la terminal y escribir el comando x". Bueno, no es el estilo .bat (y un poco más difícil)

0 votos

Parece que el shell Unix scripts es lo que estás buscando.

0voto

Tony Testa Puntos 51

Shell scripts. No creo que Ask Different sea el lugar adecuado para discutirlo en profundidad pero hay una guía muy detallada aquí: http://tldp.org/LDP/abs/html/index.html

Mac OS X está certificado como UNIX a partir de la versión 10.5 (¿verdad?), por lo que esta sabiduría también es aplicable a Linux y otros sistemas operativos tipo UNIX.

(de forma menos compleja, el Automator de Mac OS X es bastante potente, al igual que el Editor de AppleScript, ambos pueden ejecutar scripts y otros comandos con programas, y envolverlos en un cómodo paquete de aplicaciones para el Launchpad o para compartir con los amigos)

0 votos

De la introducción de la guía que he enlazado: "Un programa shell, llamado script, es una herramienta fácil de usar para construir aplicaciones "pegando" llamadas al sistema, herramientas, utilidades y binarios compilados. Prácticamente todo el repertorio de comandos, utilidades y herramientas de UNIX está disponible para ser invocado por un script del shell. Por si esto no fuera suficiente, los comandos internos del shell, como las construcciones de prueba y de bucle, otorgan potencia y flexibilidad adicionales a los script."

0 votos

Y por "lugar adecuado" creo que el shell scripting se discute mejor en SuperUser: superuser.com/questions/tagged/shell-script

-1voto

John M Puntos 134

Hice un video hace un par de días explicando esto. Espero que esto ayude: http://www.youtube.com/watch?v=Q2jxpJAlsyg

0 votos

¿Podría explicarlo aquí y no sólo proporcionar un enlace?

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