Muévase sobre Shell-Scripts Sh.py está aquí, y es increíble.

Muévase sobre Shell-Scripts Sh.py está aquí, y es increíble. / Linux

Apuesto a que no sabías que podías escribir scripts de shell en Python.

Para cualquier programador o administrador de sistemas, el shell scripting es una habilidad vital para dominar. Le permite automatizar tareas tediosas, convirtiéndolas en acciones consistentes y repetibles. El problema es que puede ser un poco desalentador, especialmente si se considera que la mayoría de los dialectos de shell-scripting carecen de la delicadeza sintáctica que se encuentra en Python y Ruby..

Voy a ser aún más contundente. La mayoría de los scripts de shell son más feos que el pug promedio.

Además, hay una variedad de shells disponibles para plataformas similares a UNIX, incluyendo Bash, CSH, KSH y (mi favorito) FISH. Como resultado, escribir shell-scripts consistentes que funcionen en cada plataforma puede ser un desafío.

Tiene que haber una mejor manera, ¿verdad??

Introduciendo sh.py

Ahi esta. Cuando no estoy escribiendo para MakeUseOf, estoy escribiendo código en Python para diversión y beneficio. Realmente me gusta Python debido a su flexibilidad, su belleza inherente y cómo exige la escritura de un buen código por diseño. Si eso te parece bien, pero aún no conoces este asombroso lenguaje, ¿por qué no echas un vistazo a estos cinco grandes sitios web para aprender a programar en Python? Los 5 mejores sitios web para aprender a programar en Python Los 5 mejores sitios web para aprender a usar programación de Python aprender la programación en Python? Estas son las mejores maneras de aprender Python en línea, muchas de las cuales son completamente gratuitas. Lee mas ?

Encontré esta biblioteca realmente impresionante hace unos meses llamada sh.py, que te permite llamar a programas, pasar parámetros y manejar salidas, todo dentro de los límites de un programa Python..

¿Entonces, qué significa esto? En pocas palabras, significa que tiene la funcionalidad completa de los scripts de shell, pero desde un lenguaje que es fácil de leer, es de naturaleza modular y es compatible con la programación orientada a objetos. Guay a la derecha?

Entonces, ¿cómo lo usamos??

Estoy haciendo algunas suposiciones acerca de usted. La primera es que estás ejecutando Linux, OS X o FreeBSD. Tal como está ahora, sh.py no funciona en Windows. Sin embargo, si es necesario, siempre puede instalar una máquina virtual de Linux. Mi colega Justin Pot ha escrito un artículo bastante útil sobre este tema, que puede consultar aquí Cómo utilizar imágenes libres de VirtualBoxes para probar y ejecutar sistemas operativos de código abierto [Linux] Cómo utilizar imágenes gratuitas de virtuales de caja para probar y ejecutar sistemas operativos de código abierto [Linux] Pruebe rápidamente una amplia variedad de sistemas operativos de código abierto, algunos con los que está familiarizado y otros con los que no. Puede comenzar a navegar ahora en Virtualboxes, un sitio web que lleva casi todo el trabajo ... Leer más .

La segunda suposición que estoy haciendo es que está ejecutando una versión reciente de Python (2.7 o 3.2) y tiene instalado el administrador de paquetes PIP. Si este no es el caso, eche un vistazo a la documentación oficial de Python.

¿Todo bien? Entonces continuaremos.

Comencemos a codificar

En una terminal, instale sh.py con el siguiente comando.

sudo pip install sh

La razón por la que estamos usando 'sudo' aquí es porque necesitamos elevar nuestros permisos para agregar nuevos paquetes de Python. Si sh.py se instala correctamente, verá las siguientes líneas presentes en su terminal.

Descargando / descomprimiendo sh Descargando sh-1.09.tar.gz Ejecutando setup.py egg_info para el paquete sh Instalando los paquetes recolectados: sh Ejecutando setup.py instalando para el sh Instaló correctamente sh Limpiando ... 

Si no dice esto, es probable que la instalación haya fallado. Triste. Si ese es el caso, intente verificar sus permisos y que realmente instaló PIP. Si aún no está allí, intente preguntar sobre el desbordamiento de pila (que se ha analizado anteriormente en 10 sitios web que pueden ayudar al programador principiante con fragmentos de código de muestra 10 sitios web que pueden ayudar al programador principiante con fragmentos de código de muestra. Lea más sobre este tema por nuestro editor de Internet, Saikat Basu ) o MakeUseOf Respuestas.

Ahora que está ordenado, crea un nuevo directorio. Es aquí donde vamos a colocar todo nuestro código. Abre un editor de texto y crea un archivo llamado 'shtest.py'. Aquí, simplemente vamos a crear un nuevo archivo, y luego listaremos el contenido del directorio en el que estamos. Suena bien?

En shtest.py, agregue las siguientes líneas.

#! / usr / bin / env python import sh
impresión de sh.touch ('hola') (sh.ls ('- l'))

Cosas simples aquí. Vamos a romper esto.

#! / usr / bin / env python

Esta línea se denomina hash-bang e indica a su shell que abra este archivo como un programa Python. Esto le permite abrirlo como lo haría con un script de shell (./shtest.py), en lugar de abrirlo directamente con Python (python shtest.py). Guay a la derecha?

importación sh

Esta línea importa la biblioteca sh que instalamos hace unos momentos. No podemos continuar sin esto, así que asegúrese de que esté en su código!

sh.touch ('hola')

Puede estar familiarizado con el comando de Linux, 'tocar'. Esto crea un archivo vacío con el nombre de archivo que especifique. Aquí, estamos llamando directamente a 'toque' desde Python. Como puede ver, hemos precedido esto con 'sh', y le estamos pasando un parámetro de 'hola'.

imprimir (sh.ls ('- l'))

Puede estar familiarizado con el comando 'imprimir', que envía texto a la consola. Aquí, lo estamos pasando 'sh.ls' como parámetro. Esto llama al programa ls de Linux, que enumera el contenido de un directorio. También estamos pasando ese parámetro de '-l', que imprime información más detallada sobre el contenido del directorio en el que ejecutamos esto..

¿Funciona? Ver por ti mismo.

Aquellos de ustedes con hawk-eyes notarán que hay otro archivo flotando en ese directorio llamado 'gitsh.py'. ¿Qué podría ser allí??

Subcomandos

sh.py tiene algunos ganchos para programas populares que ya están incorporados. Estos incluyen git, sudo y un número significativo de utilidades de Linux. Esto hace que la interacción con estos servicios desde Python sea aún más fácil.

¿Cuan sencillo? Bueno, le mostraré cómo inicializar un repositorio de Git vacío en solo tres líneas de código. Primero, crea un archivo llamado 'gitsh.py' y ábrelo en tu editor de texto favorito.

En el interior, escribe las siguientes tres líneas..

 #! / usr / bin / env python desde sh import git print (git.init ())

La mayor parte de esto debería ser bastante familiar para usted. Notarás que importamos 'git' desde 'sh'. Esto solo significa que hemos importado una pieza específica de funcionalidad de un módulo, mientras ignoramos todo lo demás.

Después de eso, inicializamos nuestro repositorio..

imprimir (git.init ())

Hemos hablado de imprimir. Debes notar que estamos llamando 'git' sin que '.sh' lo proceda. Esto se debe a que importamos específicamente la funcionalidad git de la biblioteca 'sh'.

Y eso es todo. Cuando ejecutamos gitsh.py, deberíamos ver las siguientes líneas aparecer en su terminal.

Conclusión

Esa fue una introducción bastante fácil a sh.py. Si está ansioso por aprender más sobre esto, consulte la documentación oficial aquí. Sin embargo, si te quedas atascado, siéntete libre de dejarme un comentario a continuación e intentaré ayudarte.

Explorar más sobre: ​​Programación, Python, Terminal.