Acabo de migrar a una estación de trabajo UNIX. Mi memoria de los scripts de shell Bash se ha desvanecido desde la escuela y encuentro que la sintaxis es muy confusa. Me pregunto qué otros lenguajes de secuencias de comandos se utilizan para automatizar tareas. Los dos más populares de los que he oído hablar son Perl y Python.
- ¿Qué lenguaje de script es el más utilizado por las tiendas del mundo real?
- ¿Qué lenguaje de script se parece más a la sintaxis C / C ++?
- ¿Hay otro lenguaje de secuencias de comandos que no conozco?
Gracias por tu ayuda,
Scott
Respuestas:
Hasta cierto punto es una cuestión de preferencia personal. Perl y Python definitivamente están a la altura en términos de popularidad.
Sin embargo, para responder dos de sus tres preguntas:
Sin embargo, mi recomendación es Python. Es fácil de leer y escribir, inmensamente poderoso, y hay toneladas de recursos útiles en la web para aprenderlo, sin mencionar el código que puede copiar y reutilizar.
fuente
sh
hace que el uso de Python como lenguaje de script de shell sea accesible; Sin embargo, si se encuentra con casos extremos (como el multiprocesamiento), tendrá que aprender el módulo de subproceso que hasta el día de hoy me parece demasiado difícil de usar.Perl y Python son obviamente las respuestas; pero cada uno de ellos se usa para completar diferentes tareas:
En cuanto a cuál aprender en este momento (dado que presumiblemente no conoces ninguno de ellos), aprendería Python. Es lo más simple y útil de saber.
Y en cuanto a las respuestas a sus preguntas:
¿Qué lenguaje de script es el más utilizado por las tiendas del mundo real?
Todos ellos, pero me imagino que Perl tiene una pequeña ventaja aquí (ya que ha estado en uso en la administración del sistema durante mucho más tiempo).
¿Qué lenguaje de script se parece más a la sintaxis C / C ++?
Perl
¿Hay otro lenguaje de secuencias de comandos que no conozco?
Ruby, Tcsh / Csh, http://en.wikipedia.org/wiki/Interpreted_language
fuente
awk para trabajos pequeños, python para más que simples.
Python (si no usa API específicas y otras cosas dependientes de la plataforma) tiene una rica "biblioteca estándar" que está disponible en todas las plataformas donde obtiene la versión de Python en uso. Esto es muy bueno, ya que puede reutilizar sus scripts fácilmente y significa que su conocimiento es una buena inversión, incluso si cambia su plataforma.
En nuestra empresa, usamos Python para todos los scripts, monitoreo, ... y Java para la aplicación, y estamos bien en un entorno heterogéneo.
fuente
Yo diría que perl y python son probablemente las dos mejores alternativas. Puedes hacer mucho con sed y awk también.
fuente
Sh (cáscara de bourne), grep, awk y sed siempre es algo bueno para volver a enfrentarse. Perl es excelente si desea una gran cantidad de expresiones de texto y la mantenibilidad no es tan importante (sin decir que no es posible). Pitón; si la legibilidad es importante para usted. Mi preferencia es Python, pero todas estas herramientas son buenas para la mayoría de las cosas que le arrojas. Es posible que desee reconsiderar su requisito de sintaxis de c / c ++, mantenerse atascado en él no lo ayudará a largo plazo.
fuente
Si está buscando aprender algo desde cero, probablemente sea mejor (re) aprender bash.
Más allá de eso, perl y python son populares en estos días; Soy parcial con Perl, pero mi estilo de scripts de Perl no ha cambiado mucho desde que Perl 4 salió.
No conozco ningún lenguaje de script "similar a la sintaxis c".
fuente
Perl, sin duda, aunque solo sea por el increíble recurso de CPAN ( http://search.cpan.org/ ). El beneficio de usar un lenguaje de secuencias de comandos con una comunidad que contribuye de manera tan masiva es que es poco probable que alguna vez necesite inventar algo usted mismo.
Perl también tiene el beneficio de ser tan complejo como sea necesario para la situación actual. Puede tratarlo como un lenguaje de scripting simple para una administración rápida o scripts de un solo propósito, pero puede usar conceptos orientados a objetos o sistemas de metaobjetos extensos cuando desee crear aplicaciones más grandes y fáciles de mantener (como demonios, servidores, clientes).
Las diferencias entre los lenguajes de secuencias de comandos por sí solas no son lo suficientemente graves como para elegir un ganador claro, pero debe considerar principalmente lo fácil que será para usted encontrar información sobre los temas que le interesan.
La sintaxis de Perl también puede estar sorprendentemente cerca de C, siempre que pueda evitar la falta de tipeo y los sigilos; El uso avanzado de perl vendría naturalmente a medida que eventualmente aprenda las fortalezas del idioma.
Y para los detractores en el frente de la legibilidad: puede escribir código difícil de leer en cualquier idioma. Si vuelve a mirar su código de hace 4 meses y no puede entenderlo, está haciendo algo mal.
ps Esta publicación se llenó con enlaces a varios módulos amigables para la administración en CPAN, pero aparentemente los usuarios nuevos solo pueden publicar un enlace, así que use ese enlace de CPAN para buscar cosas como 'CVS' 'SVN' 'Cron' y 'Moose' (un extenso sistema de objetos)
fuente
fuente
[para consejos generales sobre secuencias de comandos, vea las otras respuestas]
Esta respuesta trata sobre el uso de programas de línea de comandos y también grandes cadenas de ellos.
Para ejecutar cadenas de programas CLI, y quizás muchas cadenas en secuencia, bash es la más fácil. Perl puede hacer lo mismo, pero el lenguaje es mucho más difícil de aprender y es mucho más complejo, y como muchos han señalado, es fácil escribir Perl inteligible.
Si está iterando sobre archivos y parámetros, bash es más fácil de comenzar porque puede crear prototipos en el shell, luego copiar en un script y agregar algunas matrices y bucles con una sobrecarga mínima.
Ejemplos de lo que quiero decir:
En bash, es fácil envolverlo en unos pocos bucles sobre algunos de esos parámetros. sin embargo , el código se vuelve difícil de leer una vez que el script tiene más de unas pocas decenas de líneas. --- imagine 30 conjuntos de comandos (unas pocas líneas cada uno) para treinta tramas de datos diferentes ---
Perl y Python podrían ser mejores para scripts grandes porque tienen una sintaxis más limpia para bucles y variables, pero los comandos bash deben generarse como cadenas, ejecutarse como subprocesos y capturar stdin, stdout. Se puede hacer, pero no puede reemplazar completamente el entorno de shell nativo.
Si los proyectiles tuvieran un mejor idioma, todo esto se evitaría.
fuente
más utilizado: Perl, principalmente por razones históricas. Python está ampliamente disponible en todas las distribuciones de Linux y BSD (incluso está instalado en Mac OSX), y es mucho más agradable de aprender / programar. Por supuesto, una vez que obtiene la sintaxis, Bash es más simple para casi cualquier cosa que pueda hacer en la línea de comandos. Después de todo, es la línea de comando.
Sintaxis C: hay csh , pero puede instalar fácilmente TCC y usar C real como lenguaje de script, compilado desde la fuente en menos tiempo que el inicio de otros lenguajes.
otros lenguajes de script: ¡muchos! Lua , Ruby , JavaScript ...
fuente
Debería usar una combinación de todos aquellos donde sea apropiado. Realmente no me gusta Perl (legibilidad), pero es bueno para muchas cosas. Python, por otro lado, era algo nuevo para mí en términos de administración del sistema, hasta que tuve que administrar (y todavía tengo que) algunas máquinas KVM. Comenzar, detener, guardar, cargar, migrar todas esas máquinas a través del script se hizo realidad después de 1 hora de jugar con los enlaces de Python de libvirt.
Por último, pero no menos importante, no usaría perl o python si tuviera que, por ejemplo, volcar todas las bases de datos de un servidor mysql todas las noches (cada base de datos en su propio archivo de volcado), tar y rsync a otro servidor. Por qué ? Porque es más rápido y fácil escribirlo en bash :)
Al final, debe usar el idioma que mejor se adapte a su tarea actual y no usar solo un lenguaje de scripting dado solo porque le gusta más.
fuente
Me gusta el rubí Es simple y fácil de programar. Hay un excelente libro sobre administración de sistemas con ruby .
Ruby se utiliza en varios sistemas de gestión de configuración (capistrano, chef, puppet) y en la última versión de metasploit.
Puede usar rush , un reemplazo para el shell Unix con sintaxis ruby y hacer cosas como esta:
fuente
Ejemplo de ruby one-liners:
Yo usaría rubí.
Compare con sh, es moderno y poderoso.
Compare con python, es coherencia, una edición, un administrador de paquetes. Y no me gusta la sintaxis de sangría.
Compare con Perl, un poco de la vieja escuela y la sintaxis es demasiado compleja para mí.
fuente