Fortalezas de los scripts de Shell en comparación con Python

Intenté aprender scripts de shell (bash) varias veces, pero me dejé llevar por la syntax. Luego encontré Python y pude hacer la mayoría de las cosas que un script de shell puede hacer en Python. Ahora no estoy seguro de si debo invertir mi tiempo en aprender shell scripting. Así que quiero preguntar:

¿Cuáles son las fortalezas de los scripts de shell que la convierten en una herramienta indispensable en comparación con Python?

No soy administrador de sistemas por profesión, pero estoy interesado en configurar sistemas Linux para usuarios domésticos, por lo que creo que aprender shell scripting puede ser necesario.

  • Shell scripting tiene notaciones más simples para la redirección de E / S.
  • Es más sencillo crear tuberías a partir de progtwigs existentes en shell.
  • Shell scripting reutiliza progtwigs enteros.
  • Shell está disponible universalmente (en cualquier cosa como Unix) – Python no está necesariamente instalado.

‘Es cierto que puedes hacer todo lo que en Python puedes hacer en shell; También es cierto que hay cosas que son fáciles en Python que son difíciles de shell (al igual que hay cosas que son fáciles en shell pero difíciles en Python). Conocer a ambos será mejor a largo plazo.

“¿Cuáles son las fortalezas de los scripts de shell que la convierten en una herramienta indispensable en comparación con Python?”

La concha no es indispensable. ¿Por qué crees que hay tantos? bash, tcsh, csh, sh, etc., etc.,

Python es una concha. No es el que usarías para ejecutar todos los comandos, pero para las secuencias de comandos, es ideal.

Python es una parte más o menos estándar de todas las distribuciones de Linux.

Las conchas más tradicionales hacen demasiadas cosas.

  1. Tienen una interfaz de usuario útil para ejecutar comandos. Esto incluye comandos de una línea donde el shell busca su ruta de acceso, bifurca y ejecuta el progtwig solicitado. También incluye tuberías, secuencias y progtwigs concurrentes (usando ; | y & ), así como también algunos redireccionamientos (usando > y < ).

  2. Tienen una capacidad similar a un pequeño lenguaje de progtwigción para ejecutar scripts. Este lenguaje es bastante difícil de usar y extremadamente ineficiente. La mayoría de las afirmaciones en este idioma requieren forzar uno o más procesos adicionales, perdiendo tiempo y memoria.

Ejecutar progtwigs desde el shell, redirigir stderr a un archivo de registro y ese tipo de cosas es bueno. Haz eso en la concha.

Casi todo lo demás se puede hacer de manera más eficiente y más clara como un script de Python.

Necesitas ambos . Sin embargo, nunca debe escribir una secuencia de comandos con sentencias if o bucles en un lenguaje de shell tradicional.

El shell hace que las acciones comunes y simples sean realmente simples, a costa de hacer que las cosas más complejas sean mucho más complejas.

Normalmente, un pequeño script de shell será más corto y más simple que el progtwig python correspondiente, pero el progtwig de python tenderá a aceptar modificaciones con gracia, mientras que el script de shell tenderá a ser menos y más fácil de mantener a medida que se agregue el código.

Esto tiene la consecuencia de que para obtener una productividad diaria óptima necesita shell-scripting, pero debe usarlo principalmente para scripts desechables, y usar python en cualquier otro lugar.

No hay nada que puedas hacer con los scripts de shell que no puedas hacer con python. La gran ventaja de los scripts de shell es que utiliza los mismos comandos que cuando utiliza el shell, por lo que si es un usuario de shell pesado, el shell scripting se convertirá en algún momento en una forma muy rápida y sencilla de automatizar su trabajo de shell. .

También me resulta más fácil tratar con tuberías de datos en shell scripts que en python, aunque es absolutamente factible desde python.

Y, finalmente, no tiene que activar un intérprete adicional para ejecutar los scripts de shell, lo que le otorga una ventaja de uso de memoria y velocidad muy pequeña, pero a veces notable.

Pero, de nuevo, los scripts de Python son mucho más fáciles de mantener, estoy intentando migrar desde los scripts de shell más feos a los scripts de Python por la misma razón. También es más fácil hacer un manejo de excepciones y control de calidad con Python.

uno no tiene que aprender shell scripting, como lo indican todas las respuestas anteriores; Pero aprender nunca es algo malo. Es realmente una cuestión de prioridades personales. Es muy difícil para alguien decirte lo que vale y no vale la pena.

La mayoría de los progtwigdores encuentran que aprender nuevos idiomas se hace cada vez más fácil. (Lo mismo se aplica en gran medida a los lenguajes naturales). Y cuanto antes comience, mejor.

más: haber aprendido un idioma le permite disipar extravagantemente sus limitaciones desde una posición de completo conocimiento y familiaridad. Probablemente esto no lo dejará con usted, ¡pero puede que le gane una cerveza a sus compañeros!

Estoy de acuerdo con la mayoría de las respuestas anteriores. Considero que los comandos de shell son los más adecuados para realizar tareas orientadas al sistema de archivos (copiar y mover archivos, grep, etc.). Shell es mejor, en mi opinión, si tiene que leer y escribir en un archivo, ya que una sola >>file.txt redirección de >>file.txt agrega al archivo instantáneamente, en lugar de necesitar, digamos, file=open('file.txt','a'); file.write() file=open('file.txt','a'); file.write() , etc.

Actualmente, para mi uso personal, mezclo ambos, creando un script de python y llamando a os.system (‘command’) o os.popen (‘command’) cada vez que una acción es más fácil en shell que en python.

El shell está disponible en todas partes. Si se adhiere a un conjunto relativamente básico de funcionalidades portátiles, sus scripts pueden ejecutarse en teléfonos celulares, enrutadores inalámbricos, DVR, netbooks, estaciones de trabajo, servidores grandes y similares. Python no se incluye necesariamente de manera inmediata en muchos sistemas y, dependiendo del entorno, puede ser difícil instalarlo.

Aprender algunos scripts de shell también puede ayudarlo a aprender algunos trucos de la línea de comandos, ya que la línea de comandos es, bueno, el shell. También es bueno tomar una línea de comandos bastante larga y complicada, y convertirla en una secuencia de comandos más general cuando se dé cuenta de que la necesitará un poco más.

El shell también tiene algunas características muy potentes; Las tuberías son un constructo de control realmente interesante que es nativo solo de la concha, que yo sepa.

Otra cosa a considerar al elegir los scripts de shell de Python es la versión de Python que se ejecutará en las máquinas de destino. RHEL5 (por nombrar uno) va a estar presente por mucho tiempo. RHEL5 está atascado con Python 2.4. Hay muchas bibliotecas agradables que dependen de la funcionalidad agregada a Python post-2.4.