world scripts script hello example ejemplos linux scripting

linux - scripts - ¿Qué lenguaje de scripting es el mejor?



script bash linux ejemplos (21)

Al elegir un lenguaje de scripting para ayudarlo a automatizar su entorno Linux / Unix, lo más importante en mi opinión es ... su reemplazo :-)

Me refiero a los siguientes / otros administradores de sistemas que pueden tener que mantener sus scripts. Actualmente estoy trabajando en un entorno en el que el líder de Unix es un verdadero jefe de guiones, pero se ha limitado principalmente a utilizar bash, con algunos perl y vbscript de Windows para la buena suerte. Al menos me ha obligado a repasar mi perl.

Aunque estoy de acuerdo con los otros comentarios aquí, mi sugerencia sería dominar bash; siempre que sea posible, haga todo lo posible en bash, ya que la mayoría de la gente lo sabe, y puede mantenerlo / depurarlo. Y será más portátil. Usar con sed & awk es particularmente poderoso.

Cuando lo hayas dominado, puedes volver aquí y preguntar "¿Qué lenguaje de scripting debo aprender después de bash?" :-)

JB

Para escribir scripts para la automatización de procesos en la plataforma Linux, ¿qué lenguaje de scripting será mejor? Script Shell, Perl o Python o hay algo más? Soy nuevo para todos ellos. Entonces, ¿estoy pensando a cuál ir?


Creo que depende de qué tan complejas sean las tareas que desea automatizar. Personalmente, siempre me he ido con guiones de shell, lo que te permite invocar awk, sed, grep, find, ls, cat, etc. que se pueden combinar para hacer casi cualquier cosa que puedas lograr usando Perl o Python. Por otro lado, si los procesos que desea automatizar son complejos (por ejemplo, no solo una secuencia lineal de pasos), entonces probablemente encontrará que escribir los scripts en perl o python (¡o incluso en ruby!) Es mucho más rápido y hace ellos más fáciles de mantener.


Depende de la complejidad y el dominio del problema de la tarea en cuestión.

Los scripts Bash son rápidos y sucios para tareas simples de automatización del sistema. Para cosas más complejas que mover archivos y ejecutar comandos, personalmente diría que Perl es la siguiente en la línea como la herramienta de automatización goto sys-admin defacto . Para enfocarse más en la reutilización y legibilidad / mantenimiento del código, me gustaría subirlo hasta Python o Ruby.

PHP también se puede utilizar para automatizar tareas, sin embargo, según mi experiencia, no es ampliamente aceptado para este propósito.

Realmente se trata de qué idioma le interesa más aprender, la mayoría se puede utilizar para la automatización, además de muchas otras cosas.


Depende de lo que quieras hacer, regularmente los uso todos:

  • Shell para lotes simples de comandos con quizás un bucle o una instrucción if.
  • Perl cuando estoy comiendo archivos y hago algunos cambios de texto y pongo cosas.
  • Python cuando necesita más lógica.

Bajo * nix debes usar la herramienta adecuada para el trabajo correcto, lo que puede ser difícil para el principiante ya que son muchas las cosas que aprender (después de 15 años como usuario de * nix todavía encuentro cosas nuevas). Mi recomendación es mirar rápidamente todos los idiomas para ver qué pueden hacer, y luego comenzar con el uso de shell para todo, cuando los guiones se vuelven torpes, muévalos a otra cosa.


Diría Python: tiene una legibilidad muy alta, es simple (sin llaves, palabras clave lo más cercanas posible al inglés, etc.) y puedes hacer casi todo en ella, desde cosas simples a muy complejas. También es popular y divertido codificar.


En Linux? Elige tu veneno, básicamente. Me gusta Python, otros Ruby, y otros Perl. Elige uno y ve por él. :-)


En segundo lugar Python: potente, simple, de rendimiento y ... en realidad bastante divertido, en comparación con perl o bash. Además, si lo sabes, encontrarás otros usos, se usa en muchos proyectos. Y no solo como un lenguaje de scripting "clásico", tome por ejemplo el proyecto retorcido. Eso también es cierto para Perl, supongo, pero Python me gusta más el orden de magnitud que yo mismo.

Aunque la conclusión es como se dijo antes, asegúrate de tener la herramienta adecuada para el trabajo ...


Eso depende de qué tipo de automatización esté haciendo si prueba autoamtion. Se sugiere Perl porque Perl es módulos de extensión mucho más potentes a través de CPAN, un inventario de módulos Perl en línea. Si solo necesita una herramienta práctica para completar un archivo fuente simple, awk es muy conveniente. Si planea usar los scripts para automatizar un gran proyecto, Perl es una mejor opción con más funciones. De nuevo, Python fue diseñado desde el principio como un lenguaje orientado a objetos. Perl 5 tiene algunas características oo añadidas, pero me parece una modificación incómoda. Python tiene características oo bien implementadas para herencia múltiple, polimorfismo y encapsulación. En resumen, me parece que Python domina a Perl en la mayoría de las aplicaciones, excepto en el tipo bastante corto de aplicaciones de comandos de shell, y allí son más o menos comparables.


Esto puede sonar un poco extraño, he estado usando bash por más de 10 años. Empecé a usar PHP5 y fue difícil al principio, pero ahora tengo una base de código reutilizable mucho mejor.

¡Sin embargo, no lo recomendaría como punto de partida!


La respuesta es: ¡Lo que mejor se adapta al trabajo!

Mi regla de oro

Bash : para una secuencia de comandos corta que podría necesitar un bucle for para hacer algo repetitivamente.

Perl : cualquier cosa que tenga que ver con algún tipo de procesamiento de texto o procesamiento de archivos, especialmente si se trata de algo único. Solo haz un sucio y sucio script de perl y termina con esto

Python : si es algo que quizás quieras hacer de nuevo o algo así. Entonces, al menos, tienes la posibilidad de poder reutilizar el script.


Me han estado recomendando Python todo el tiempo. Se supone que te permite hacer cualquier cosa. Para las tareas pequeñas, utilizo scripts de shell.


Por lo general, diría la que conoces mejor y que puede lograr los resultados que deseas. Al igual que todas las guerras religiosas, y después de aprender un gran número de idiomas, te das cuenta de que puedes hacer la mayoría de las cosas en la mayoría de los idiomas (Nota, lo que dijiste más). Yo uso Perl. Es posible que no esté tan actualizado como Python o Ruby, pero sí cuenta con el respaldo masivo de bibliotecas de CPAN. Y todavía no he encontrado nada que no pueda hacer. Cuando lo haga, miraré otros idiomas para descubrir cuál puede llenar esa brecha.

Si comenzara hoy, tal vez elegiría Python o Ruby, pero no sé lo suficiente sobre ellos para hacer una evaluación. ¿Alguno de tus amigos / colegas conoce los lenguajes de scripting? Esto podría ayudarte enormemente ya que el apoyo cuando aprendes un nuevo idioma es muy importante.

Buena suerte


Prefiero scripts de shell solo para tareas muy pequeñas. Escribir scripts de shell robustos requiere un gran conocimiento sobre posibles errores, que solo aprende al hacerlo. ¡Pero aprender incluso lo básico aumentará mucho tu productividad!

Si necesito tener una lógica compleja, normalmente uso Python. Por complejo me refiero a cualquier cosa que tenga más de dos if -statements =)

Perl está bien para su propósito original, pero ten en cuenta que muchos de los perlismos que aprendes no son aplicables en ningún otro lado.

Python y Ruby son aproximadamente equivalentes. Te recomiendo que aprendas bien uno de ellos y revises un tutorial por el otro. Prefiero Python, pero realmente se trata de preferencia personal.

Para resumir: aprenda los conceptos básicos de los scripts de shell. Aprende bien al menos Python o Ruby.


Si tuviera que elegir uno, tendría que ser AWK. Es ligero, tiene una pequeña curva de aprendizaje y tiene muchas funciones útiles, como índice y substr.


Simplemente escriba sus comandos uno después del otro, póngalo en un archivo y ejecute este archivo con

promp> bash file

y tienes tu primera automatización. Luego aprende sobre variables de bash, bucles y estructuras de control.


Ve por los tres, comienza con bash / awk / sed plus fileutils (grep, find, etc.) y luego sube la jerarquía de abstracción con perl y python.

De esta forma, podrá decidir por sí mismo cuál se ajusta mejor a sus necesidades. Digo empezar con bash y amigos porque son omnipresentes, algunas máquinas no tienen perl o python instaladas y te sentirás impotente allí, especialmente en unix tradicional (es decir, no linux)


Si quieres una solución minimalista, compacta y rápida (más rápida que Python / Ruby), entonces -> usa el lenguaje de scripts LUA :-) Sin embargo, la velocidad y la compacidad de código de Lua se logran con un núcleo de lenguaje Lua relativamente pequeño, así que si quieres "baterías incluidas" (también conocido como bibliotecas "estándar" muy grandes) entonces Lua no es para ti. De lo contrario, los chicos que vienen del mundo de C / C ++ disfrutan mucho de la velocidad de Lua :-)

PD

Lua vs Ruby 1.9 benchmark (puedes ver también Lua Vs Python 3):

http://shootout.alioth.debian.org/u32/benchmark.php?test=all&lang=lua&lang2=yarv



Bueno, es así:

Perl no es el lenguaje de scripting más fácil de usar, pero tiene CPAN (Comprehensive Perl Archive Network), que contiene miles de bibliotecas que implementan casi cualquier cosa que se te ocurra, y Perl es realmente poderoso cuando se trata de procesamiento de texto. La desventaja sería que el código perl es un poco difícil de mantener (si no lo conoces muy bien).

Python es un lenguaje de scripting que cada vez es más popular entre los scripters. No tiene una comunidad como CPAN (todavía), pero es más fácil de leer y es más fácil de mantener. Es tan rápido como perl.

Ruby es la última tendencia en lenguajes de scripting. Ruby tiene OOP completo, lo que significa que todo es un objeto. Su ventaja es que el código es muy legible, y es bastante fácil de aprender, si eres un principiante. La principal desventaja es su velocidad de ejecución, que es un poco s * x.


Uso Perl para cualquier cosa más allá de scripts extremadamente simples.

También ''use warnings'' , ''use strict'' , evito backticks, llamo al sistema como ''system($command, @and_args)'' . Y porque me gusta que se pueda mantener: IPC :: Run (para pipes), File :: Fu (para nombres de archivos, tempfiles, etc.), YAML (para configuraciones o datos misceláneos), y Getopt :: Helpful (para que pueda recordar cuáles fueron las opciones.)


Si su objetivo es tener un programa de script simple "controlando" otro programa (línea de comando, por supuesto), entonces debe revisar Tcl / Tk, especialmente su dialecto esperado - son simples y orientados hacia ese objetivo - es muy fácil crea una secuencia de comandos que controle ftp e incluso hace un su con ellos!

Awk es muy agradable para procesar archivos de texto, no tan poderoso como perl, pero mucho más simple y directo (y sin la horrible sintaxis).

Por supuesto, su millaje puede variar, así que supongo que la mejor respuesta sería preguntarle: ¿para qué quiere escribir los guiones? Y luego: ¿Está familiarizado con cualquier script de lenguaje? Las respuestas a estas preguntas lo guiarán al lenguaje de scripting que debe usar, de acuerdo con las ventajas y desventajas de cada uno y su objetivo principal.