
William Charles
0
5027
1172
Apuesto a que no sabías que podrías escribir scripts de shell en Python.
Para cualquier programador o administrador de sistemas, el scripting de shell 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 cuando se considera que la mayoría de los dialectos de script de shell carecen de la delicadeza sintáctica que se encuentra en Python y Ruby..
Incluso seré más directo. 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 tipo UNIX, incluyendo Bash, CSH, KSH y (mi favorito) FISH. Como resultado, escribir scripts 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 por diversión y ganancias. 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 suena bien, pero aún no conoces este increíble lenguaje, ¿por qué no revisas estos cinco excelentes sitios web para aprender la programación de 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 aprender la programación de Python? Estas son las mejores formas de aprender Python en línea, muchas de las cuales son completamente gratuitas. ?
Me encontré con esta biblioteca realmente impresionante hace unos meses llamada sh.py, que le 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 admite programación orientada a objetos. Genial, cierto?
Entonces, ¿cómo lo usamos??
Estoy haciendo algunas suposiciones sobre ti. La primera es que estás 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 bastante útil sobre esto, que puede consultar aquí Cómo usar imágenes gratuitas de VirtualBoxes para probar y ejecutar sistemas operativos de código abierto [Linux] Cómo usar imágenes gratuitas de VirtualBoxes 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 que no. Puede comenzar a navegar ahora en Virtualboxes, un sitio web que elimina casi todo el trabajo ... .
La segunda suposición que estoy haciendo es que está ejecutando una versión reciente de Python (2.7 o 3.2) y que 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 sh Descargando sh-1.09.tar.gz Ejecutando setup.py egg_info para paquete sh Instalando paquetes recolectados: sh Ejecutando setup.py install para sh Instalado exitosamente sh Limpiando…
Si no dice esto, es muy 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 Stack Overflow (que se ha discutido anteriormente 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 por nuestro editor de Internet, Saikat Basu) o Respuestas MakeUseOf.
Ahora que está ordenado, cree un nuevo directorio. Es aquí donde vamos a colocar todo nuestro código. Abra un editor de texto y cree un archivo llamado 'shtest.py'. Aquí, simplemente crearemos un nuevo archivo y luego enumeraremos el contenido del directorio en el que estamos. Suena bien?
En shtest.py, agregue las siguientes líneas.
#! / usr / bin / env python import sh
sh.touch ('hola') imprimir (sh.ls ('- l'))
Cosas simples aquí. Analicemos esto.
#! / usr / bin / env python
Esta línea se llama 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). Genial, cierto?
import 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, 'tocar'. Esto crea un archivo vacío con el nombre de archivo que especifique. Aquí, estamos llamando directamente 'touch' desde Python. Como puede ver, hemos precedido esto con 'sh.', Y le estamos pasando un parámetro de 'hola'.
print (sh.ls ('- l'))
Es posible que esté 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 Linux ls, 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 ojos de halcón notarán que hay otro archivo flotando en ese directorio llamado 'gitsh.py'. ¿Qué podría haber allí??
Subcomandos
sh.py tiene algunos ganchos para programas populares ya incorporados. Estos incluyen git, sudo y un número significativo de utilidades de Linux. Esto facilita aún más la interacción con estos servicios desde Python.
¿Cuan sencillo? Bueno, te mostraré cómo inicializar un repositorio Git vacío en solo tres líneas de código. Primero, cree un archivo llamado 'gitsh.py' y ábralo en su 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 serle bastante familiar. Notarás que importamos 'git' de '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.
print (git.init ())
Hemos hablado de impresión. 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 aparecer las siguientes líneas en su terminal.
Conclusión
Esa fue una introducción razonablemente fácil a 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, no dudes en enviarme un comentario a continuación e intentaré ayudarte..