Apuesto a que no sabías que podrías escribir scripts de shell en Python.
Para cualquier programador o administrador de sistemas, los scripts de shell son 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 abrumador, especialmente si tenemos en cuenta que la mayoría de los dialectos de scripts de shell carecen de la finura sintáctica que se encuentra en Python y Ruby.
Estaré incluso más embotado. La mayoría de los guiones de shell son más feos que el pug promedio.
Además, hay una variedad de shells disponible para plataformas tipo UNIX, incluyendo Bash, CSH, KSH y (mi FISH favorito). Como resultado, escribir guiones de shell coherentes 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 divertirme y obtener ganancias. Realmente me gusta Python debido a su flexibilidad, su belleza inherente y cómo ordena la redacción de un buen código por diseño. Si eso te suena bien, pero aún no conoces este lenguaje impresionante, ¿por qué no visitas estos cinco fantásticos sitios web para aprender a programar en Python? Los 5 mejores sitios web para aprender la programación de Python Los 5 mejores sitios web para aprender la programación de Python En la última década, el lenguaje de programación Python se ha expandido en popularidad entre los programadores en todas las áreas de codificación. Desde desarrolladores web hasta diseñadores de videojuegos y creadores de herramientas internas, muchas personas han caído en ... Leer más?
Me encontré con esta biblioteca realmente impresionante unos meses atrás llamada sh.py, que te permite llamar a programas, pasar parámetros y manejar salidas, todo dentro de los límites de un programa de 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 admite la programación orientada a objetos. Genial, ¿verdad?
Entonces, ¿cómo lo usamos?
Estoy haciendo algunas suposiciones sobre ti. El primero es que está ejecutando Linux, OS X o FreeBSD. Como es ahora, sh.py no funciona en Windows. Sin embargo, si es necesario, siempre puede instalar una máquina virtual Linux. Mi colega Justin Pot ha escrito un artículo muy útil sobre esto, que puedes consultar aquí Cómo utilizar VirtualBoxes Imágenes gratis para probar y ejecutar sistemas operativos de código abierto [Linux] Cómo utilizar VirtualBoxes Imágenes gratis 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 no. Puede comenzar a navegar ahora en Virtualboxes, un sitio web que elimina casi todo el trabajo ... Leer más.
La segunda suposición que estoy haciendo es que está ejecutando una versión reciente de Python (ya sea 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 la codificación
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 / Desempacando Descargando sh-1.09.tar.gz Ejecutando setup.py egg_info para el paquete sh Instalando los paquetes recolectados: sh Ejecutando setup.py install for sh Instalado exitosamente sh Limpiando ...
Si no dice esto, es probable que su instalación haya fallado. Triste. Si ese es el caso, intente verificar sus permisos y que realmente instaló PIP. Si todavía no está allí, intente preguntar sobre Desbordamiento de pila (que se discutió anteriormente). 10 Sitios web que pueden ayudar al programador principiante con fragmentos de código de ejemplo 10 sitios web que pueden ayudar al programador principiante con fragmentos de código de muestra Lea más de nuestro editor de Internet, Saikat Basu ) o Respuestas MakeUseOf.
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 crearemos un nuevo archivo y luego enumeraremos los contenidos del directorio en el que estamos. ¿Suena bien?
En shtest.py, agregue las siguientes líneas.
#! / usr / bin / env python import sh
sh.touch ('hello') print (sh.ls ('- l'))
Cosas simples aquí. Vamos a romper esto.
#! / usr / bin / env python
Esta línea se denomina hash-bang e instruye a tu shell para que abra este archivo como un programa de 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). Genial, ¿verdad?
importar 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')
Es posible que esté familiarizado con el comando de Linux, 'toque'. Esto crea un archivo vacío con nombre de archivo que usted especifica. Aquí, estamos llamando directamente 'toque' desde dentro de Python. Como puede ver, hemos prefabricado esto con 'sh.', Y le estamos pasando un parámetro de 'hola'.
imprimir (sh.ls ('- l'))
Es posible que esté familiarizado con el comando 'imprimir', que emite texto a la consola. Aquí, lo pasamos 'sh.ls' como un parámetro. Esto llama al programa Linux ls, que enumera el contenido de un directorio. También estamos pasando un parámetro de '-l', que imprime información más detallada sobre los contenidos del directorio donde lo ejecutamos.
¿Funciona? Ver por ti mismo.
Aquellos de ustedes con ojos de halcón notarán que hay otro archivo flotando en ese directorio llamado 'gitsh.py'. ¿Qué podría estar allí?
Subcomandos
sh.py tiene algunos ganchos para programas populares ya integrados. Estos incluyen git, sudo y una cantidad significativa de utilidades de Linux. Esto hace que interactuar con estos servicios desde Python sea aún más fácil.
¿Cuan sencillo? Bueno, voy a mostrarte 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 de sh import git print (git.init ())
La mayoría de esto debería ser muy familiar para ti. Notarás que importamos 'git' de 'sh'. Esto solo significa que hemos importado una pieza específica de funcionalidad de un módulo, ignorando todo lo demás.
Después de eso, iniciamos nuestro repositorio.
imprimir (git.init ())
Hemos hablado sobre la impresión. Debería notar que estamos llamando 'git' sin '.sh' procediéndolo. Esto se debe a que importamos específicamente la funcionalidad de 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 razonablemente fácil para sh.py. Si está ansioso por obtener más información al respecto, consulte la documentación oficial aquí. Sin embargo, si te quedas atascado, siéntete libre de escribir un comentario a continuación e intentaré ayudarte.