it-swarm-es.tech

¿Qué lenguaje de scripting es mejor?

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

17
Sreenath

La respuesta es: ¡lo que mejor se adapte al trabajo!

Mi regla de oro;

Bash - para un script corto que podría necesitar un bucle for para hacer algo de forma repetitiva.

Perl - cualquier cosa que tenga que ver con algún tipo de procesamiento de texto o procesamiento de archivos, especialmente si es único. Simplemente haz un script sucio y sucio de Perl y termina de una vez

Python - Si es algo que quizás quieras volver a hacer o algo muy parecido. Entonces, al menos, tienes la posibilidad de poder reutilizar el script.

37
Simon Peverett

Vaya por los tres, comience con bash/awk/sed plus fileutils (grep, find, etc.) y luego suba la jerarquía de abstracción con Perl y python.

De esa manera, podrá decidir por sí mismo cuál se adapta mejor a sus necesidades. Digo comience con bash y amigos porque son ubicuos, algunas máquinas no tendrán Perl o python instalado y se sentirá indefenso allí, especialmente en tierra tradicional de Unix (es decir, no Linux)

9
Vinko Vrsalovic

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

Con lo cual me refiero a los siguientes/otros administradores de sistemas que pueden tener que mantener sus scripts. Actualmente estoy trabajando en un entorno donde el líder de Unix es un verdadero guionista, pero se ha limitado principalmente a usar bash, con un poco de vbscript de Perl y Windows para buena suerte. Al menos me ha obligado a repasar mi Perl.

Si bien estoy de acuerdo con los otros comentarios aquí, mi sugerencia sería dominar bash, donde sea posible, hacer todo lo posible en bash, como la mayoría de la gente lo sabe, y puede mantenerlo/depurarlo. Y será más portátil. El uso con sed & awk es particularmente poderoso.

Cuando lo haya dominado, puede volver aquí y preguntar "¿Qué lenguaje de script debería aprender después de bash?" :-)

JB

8
Jonathan Bourke
4
Sev

Creo que depende de cuán complejas sean las tareas que desea automatizar. Personalmente, siempre utilicé los scripts de Shell, que le permiten invocar awk, sed, grep, find, ls, cat, etc., que se pueden combinar para hacer prácticamente cualquier cosa que pueda lograr con Perl o python. Por otro lado, si los procesos que desea automatizar son complejos (por ejemplo, no solo una secuencia lineal de pasos), probablemente encontrará que escribir los scripts en Perl o python (o ¡incluso Ruby!) es mucho más rápido y hace que sean más fáciles de mantener.

4
Ben

Yo uso Perl para cualquier cosa más allá de los scripts extremadamente simples.

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

4
Eric Wilhelm

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

Las secuencias de comandos Bash son rápidas y sucias 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 el siguiente en la línea como la herramienta de automatización defacto sys-admin goto. Para un mayor enfoque en la reutilización del código y la legibilidad/mantenibilidad, me gustaría aumentarlo a Python o Ruby.

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

Realmente se reduce a qué idioma está más interesado en aprender, la mayoría se puede usar para la automatización, además de muchas otras cosas.

3
ctcherry

Prefiero los scripts de Shell solo para tareas muy pequeñas. Escribir scripts robustos de Shell requiere mucho conocimiento sobre los posibles escollos, que solo se aprende haciendo. ¡Pero aprender incluso lo básico aumentará mucho tu productividad!

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

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

Python y Ruby son más o menos equivalentes. Recomiendo que aprendas bien uno de ellos y revises un tutorial sobre el otro. Prefiero Python pero realmente se reduce a preferencias personales.

Para resumir: Aprenda los conceptos básicos de los scripts de Shell. Aprenda al menos Python o Ruby bien.

2
Antti Rasinen

He estado recibiendo Python recomendado todo el tiempo. Se supone que te permite hacer cualquier cosa. Sin embargo, para las pequeñas tareas utilizo los scripts de Shell.

1
Vargen

Por lo general, diría que conoce mejor y que puede lograr los resultados que desea. Al igual que todas las guerras religiosas, y después de aprender una gran cantidad de idiomas, te das cuenta de que puedes hacer la mayoría de las cosas en la mayoría de los idiomas (nota que dije más). Yo uso Perl. Tal vez no esté tan actualizado como Python o Ruby, pero tiene soporte masivo de la biblioteca de CPAN. Y aún no he encontrado nada que no pueda hacer en él. Cuando lo hago Veré otros idiomas para descubrir cuál puede llenar ese vacío.

Si empezara hoy, tal vez elegiría Python o Ruby, pero no sé lo suficiente sobre ellos como para hacer un juicio. ¿Alguno de sus amigos/colegas conoce los lenguajes de secuencias de comandos? podría ayudarlo enormemente, ya que el apoyo cuando aprende un nuevo idioma es muy importante.

Buena suerte

1
Xetius

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 conoce muy bien).

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

Ruby es la tendencia más reciente en lenguajes de script. Ruby es POO 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 un poco s * x.

1
Vhaerun

Eso depende del tipo de automatización que esté haciendo, como si estuviera probando la autoamidación. 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 de 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. Nuevamente, Python fue diseñado desde el principio como un lenguaje orientado a objetos. Perl 5 tiene algunas características o-o agregadas, 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 los tipos de script de Shell bastante cortos de aplicaciones, y allí son más o menos comparables.

0
GustyWind

Si desea una solución minimalista, compacta y rápida (más rápida que Python/Ruby), entonces -> busque el lenguaje de scripting LUA :-) Sin embargo, la velocidad de Lua y la compactación del código se logran con un núcleo de lenguaje Lua relativamente pequeño, por lo que si quiere "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 C/C++ disfrutan mucho de la velocidad de Lua :-)

pD.

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

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

0
0x69