La programación de Shell es divertida. Pero también lo es Python. Las personas con antecedentes de C, o lo que es más importante, las personas que usan Windows no estarán de acuerdo. Las personas a menudo tienden a preferir usar una interfaz basada en gráficos que las de línea de comandos. Pero eso es totalmente incorrecto. La interfaz gráfica de usuario es para personas que piensan que el software está haciendo lo que su descripción dice que hace. Pero ese no es siempre el caso. Especialmente en el caso de las ventanas de programación de shell donde los virus y malwares han creado un caos del tamaño de un tornado. Por lo tanto, las personas que usan una interfaz de línea de comandos generalmente estarían de acuerdo en que lo que están haciendo es correcto, y yo estoy de acuerdo con ellos en que tienen razón.

Muchas veces generalmente se queda atascado y toda la computadora se cuelga debido a un simple software basado en una interfaz gráfica. Trabajar en una interfaz de línea de comandos suele ser más elegante, rápido y, lo más importante, sabes lo que estás ejecutando. Pero, de nuevo, usar shells y escribir programas no es algo que todos preferirían hacer.

Además, escribir programas en C o Java en realidad sería mucho peor que usar un software basado en una interfaz gráfica de usuario en Windows. No estoy maldiciendo C o Java aquí, es solo que no son adecuados para el uso diario. Y aquí es donde sobresalen los lenguajes de script como la programación de Shell y los lenguajes de Python. Entonces, hoy estamos en guerra aquí, cuál es más adecuado para aplicaciones más pequeñas y más grandes. ¿O es que realmente podemos combinarlos y hacer algo nuevo y mejor de los dos? Echemos un vistazo más profundo a ambos y veamos a dónde nos lleva.

Bash Shell Scripting

Shell Scripting es realmente asombroso. Casi puede hacer la mayoría de sus trabajos aquí en una sola línea de código. Por ejemplo, para decir, tome este código: -

$ touch file.txt | echo -e 'hola \ n Nuevo \ n Mundo \ n hola \ n Hola' >> file.txt | cat file.txt | ordenar | uniq | wc -l

Entonces, como puede ver, hay una gran cantidad de scripts de shell aquí, pero ¿qué está sucediendo exactamente? Primero el '| 'se conoce como la tubería. Se utiliza para transferir la salida de un archivo a otro. La sintaxis 'táctil' se usa para crear cualquier archivo y la sintaxis de eco se usa para imprimir cualquier declaración. Las flechas dobles a la derecha '>>' se utilizan para insertar la salida en cualquier archivo o programa. La sintaxis 'cat' se usa para leer el contenido de un archivo. Ordenar se usa para ordenar todo en orden y 'uniq' se usa para eliminar duplicados de la clasificación. El 'wc' se usa para contar líneas y -l es solo una bandera para imprimirlas. Entonces, todos estos comandos encadenados hacen lo siguiente.

  1. Primero se crea un archivo con el archivo de nombre con la extensión txt para informar que es un archivo de texto.
  2. En segundo lugar, echo -e se usa para imprimir varias palabras dentro del archivo file.txt y 'slash n' o '\ n' se usa para ingresar una nueva línea o pasar a la siguiente línea.
  3. Después de ingresar cadenas en el archivo, el archivo se lee, se ordena en orden y se transfiere a la sintaxis uniq para eliminar los duplicados existentes, aquí, en nuestro caso, 'hola'.
  4. Finalmente, imprimimos el número de líneas usando 'wc -l' para contar e imprimirlo en la pantalla del terminal.

Entonces, aunque lo anterior es solo una línea de código, puede tender a complicarse cuando se insertan más condiciones. Por lo tanto, los scripts de shell son buenos, pero no se pueden usar para hacer nuevos trabajos todo el tiempo. A veces, desea que las cosas sean más simples, tan simples como una interfaz gráfica de usuario. Los scripts de Shell son realmente muy buenos para ejecutar scripts por lotes y realizar trabajos repetidos, pero al mismo tiempo tienen algunas desventajas:

  1. Los scripts de shell tienden a ser extremadamente complicados a medida que se hacen más grandes.
  2. La reutilización de scripts es casi nula. Lo que quiero decir aquí es que, los scripts bash son extremadamente difíciles de insertar en C u otros códigos Java.
  3. Las funciones avanzadas como el análisis HTML no están fácilmente disponibles para bash.

Sin embargo, hay Python aquí para el rescate, y el reemplazo más adecuado para el mismo. ¿Pero las secuencias de comandos de Bash Shell son totalmente reemplazables? Vamos a ver.

Cursos recomendados

  • Capacitación de certificación en línea en J2EE integral
  • Entrenamiento profesional de programación R
  • Capacitación de certificación en línea en la programación Go
  • Entrenamiento en el programa Haskell

Python Shell Scripting

Python se instala por defecto en casi todos los sistemas Linux y UNIX. A veces, la distribución puede tener una versión anterior, pero se puede actualizar con un simple comando. La programación de Python Shell es mucho más fácil de entender y más limpia de escribir incluso para principiantes. Además, por defecto Python tiene el estilo de Read Eval Print Loop que ayuda a probar nuevos códigos en el intérprete. Pero solo usar python puede ser un poco difícil sin la ayuda de scripting de bash shell. Además, en nuestro programa anterior de una línea, utilizamos la sintaxis 'uniq' para eliminar duplicados, pero no nos mostró cuáles eran los duplicados. Entonces, vamos a escribir un programa de Python para hacer lo mismo:

#! / usr / bin / env pythonimport sys # importando módulos del sistema para trabajar con archivos de directorio si __name__ == “__main __”: # Comenzando con un diccionario vacío aquí. Lo que se denomina como el orden # Todas las claves en este diccionario aparecen como un nombre y los valores especificados para ellas # serán la cantidad de veces que aparecerá ese nombre específico. Orden = () # sys.stdin es un objeto utilizado para archivos. Todas esas funciones que se están aplicando a

# un objeto de archivo también se puede usar para sys.stdin.

para ordenar en sys.stdin.readlines ():

order = order.strip ()

si orden en órdenes:

órdenes (orden) + = 1

más:

órdenes (orden) = 1

para ordenar, contar en orders.iteritems ():

sys.stdout.write (“% d \ t% s \ n”% (cuenta, orden))

Ahora, este archivo lee primero la entrada del objeto sys.stdin. Toda la salida se escribe en el objeto sys.stdout. Después de crear este script, suponiendo que lo haya nombrado como order.py, puede ejecutar el siguiente script de shell en la terminal y encontrará el recuento total de todas las cadenas duplicadas.

$ cat file.txt | python order.py

De manera similar, también podemos resolver esto usando la sintaxis de clasificación:

$ cat file.txt | python order.py | sort -rn

Python Shell vs Bash Shell Programación de secuencias de comandos

Ahora hemos visto cómo podemos combinar scripts de python y shell para crear una cadena de comandos y ejecutarlos juntos. Ahora, demos un paso más y veamos si Python puede reemplazar totalmente a Bash Shell.

Hablando de la programación de bash shell, en términos de rendimiento, bash supera por completo a Python. Pero si lo compara con los tipos de datos y otras cosas avanzadas, bash no tiene mucha compatibilidad. El tiempo de inicio de un script de shell bash es de 2.8 mili segundos, mientras que el de python es de 11.1 mili segundos. Para ser más franco, bash es un lenguaje de propósito general al igual que Python, pero ambos tienen sus propias fortalezas y debilidades. La programación de shell Bash es el terminal predeterminado en la mayoría de las distribuciones de Linux y, por lo tanto, siempre será más rápido en términos de rendimiento. ¿Pero eso significa que puede reemplazar totalmente a Python? No Cuando se trata de programas grandes, Bash seguirá complicándose, mientras que Python no. Python también se puede usar como un lenguaje orientado a objetos hasta donde yo sé. Si solo eres un principiante, es posible que ni siquiera sepas la diferencia entre los dos. Python es el lenguaje de script más elegante, incluso más que Ruby y Perl. La programación de shell Bash, por otro lado, en realidad es muy excelente para canalizar la salida de un comando a otro.

Shell Scripting es simple y no es tan poderoso como Python. No trata con frameworks y es difícil ponerse en marcha con programas relacionados con la web utilizando Shell Scripting. El verdadero poder de las secuencias de comandos de shell radica en el editor de texto continuo o sed, los programas Awk y aplicaciones similares.

Manejo de archivos y desarrollo de aplicaciones web

Bash Shell Scripting funciona sin problemas y rápido cuando se trata de archivos. Al manejar archivos, me refiero a copiar, clonar discos, escribir aplicaciones de respaldo para redes, servidores ftp, almacenar entradas de archivos y acceder a ellas más tarde y transferir esas salidas más tarde a otra cosa con la ayuda de pipe. Python, por otro lado, es más útil para manejar fragmentos de datos, como leer datos de un archivo y procesar datos. Si soy más específico, bash ni siquiera es un lenguaje de programación. Es más un simple shell dirigido a tratar con archivos del sistema usando la línea de comando para que el proceso sea más rápido y rápido.

Por lo tanto, si conoce la programación de bash shell correctamente, también sabe que las variables y los ámbitos en bash son extremadamente limitados. Python, por otro lado, es más un lenguaje de script de shell que un lenguaje de programación. Si llamamos Bash como un lenguaje de programación, es más como decirle a Python que es un lenguaje de programación shell orientado a objetos. Uno puede lidiar con Python de una manera orientada a objetos, pero nunca será puramente orientado a objetos como C o Java. De manera similar, Bash es un lenguaje de script; se usa mejor como algo que se requiere para manejar archivos rápidamente en lugar de escribir programas grandes en él. Además, aunque Python es un lenguaje de scripting de shell, en realidad se ocupa de su propio shell. Por ejemplo, mover todo el archivo que está en el escritorio a otro directorio aleatorio a través del shell Bash sería algo así:

$ cd Desktop $ mv * randomDirectory

Pero, por otro lado, hacer lo mismo en Python es un poco más complicado. Es algo parecido a esto: -

import os, glob for fname en glob.glob ('*'): os.rename (fname, 'randomdirectory')

Sin embargo, en el mejor de los casos, uno puede hacerlo más compacto de esta manera:

import os, glob (os.rename (fname, 'randomdirectory') para fname en glob.glob ('*'))

Al aprender cualquier idioma, las personas a menudo le dirán cómo limpiar los conceptos básicos y todas esas cosas, pero no le dirán cómo tratar primero con el sistema en sí, que es lo más importante. Y además, Python y Bash son lenguaje de scripting de Shell, lo que significa que ambos están desarrollados principalmente para tratar con el sistema y sus archivos.

¿Bash dentro de Python?

Sí, has leído bien. Hasta ahora hemos leído sobre cómo podemos introducir los scripts de Python dentro de Shell. Pero también podemos introducir Shell Scripts dentro de los scripts de python. Tome esto por ejemplo: - Escriba 'apt-get update' en el shell de Python? Obviamente obtendrá algún error como sintaxis no válida. Entonces, la cuestión es que si desea usar los códigos bash como 'ls, cd, mv' o cualquier otra cosa en python, deberá importar el módulo del sistema operativo. Ahora, haga una cosa, copie el siguiente código y péguelo en el Shell de python, y verifique cómo funciona: -

$ python >>> del sistema os import * >>> ('sudo apt-get update')

Y ahora funciona … yay. Esta es otra forma de conseguir que los scripts de python y bash trabajen juntos. Además, hay otro módulo de Python que está construido específicamente para trabajar con bash. Este módulo se conoce como pexpect. Pexpect es un módulo de Python que se utiliza para generar procesos secundarios, controlarlos y devolver resultados según la solicitud del proceso secundario. El módulo pexpect tiene una interfaz extremadamente fácil para importar los módulos necesarios y los procesos secundarios dentro de él y ejecutarlos en consecuencia. Solo se necesita instalar el pip en su sistema para instalar pexpect y se puede instalar el módulo de la siguiente manera:

$ pip install pexpect

La versión de Pexpect necesita una versión de Python superior a 3.3 o específicamente 2.7.

En realidad, hay mucho más para mezclar python y bash y nada funciona mejor que una mezcla de script de Python y Bash. Esta mezcla hace que el script sea rápido debido a Bash e incluye características avanzadas debido a Python. Se puede leer sobre pexpect y su documentación en https://pexpect.readthedocs.org/online.

Artículos recomendados

Aquí hay algunos artículos que lo ayudarán a obtener más detalles acerca de Bash Scripting y Python, así que solo vaya al enlace.

  1. Python vs JavaScript: diferencias valiosas
  2. Las 25 preguntas y respuestas más sorprendentes sobre la entrevista de Python
  3. Python vs JavaScript Diferencias
  4. Programación R vs Python
  5. Manejo de archivos PHP