Mover-se sobre scripts de shell: Sh.py está aqui, e é impressionante.

Eu aposto que você não sabia que poderia escrever scripts de shell em Python: sh.py permite chamar programas, passar parâmetros e manipular saídas.

Eu aposto que você não sabia que poderia escrever scripts de shell em Python: sh.py permite chamar programas, passar parâmetros e manipular saídas.
Propaganda

Eu aposto que você não sabia que você poderia escrever scripts shell em Python.

Para qualquer programador ou administrador de sistemas, o shell script é uma habilidade vital para dominar. Ele permite que você automatize tarefas tediosas, transformando-as em ações consistentes e repetíveis. O problema é que pode ser um pouco assustador, especialmente quando se considera que a maioria dos dialetos de scripts de shell não possui a fineza sintática encontrada nos tipos Python e Ruby.

Eu serei ainda mais direto. A maioria dos scripts de shell é mais feia que o pug médio.

shpy-pug

Além disso, há uma variedade de shells disponíveis para plataformas semelhantes ao UNIX, incluindo Bash, CSH, KSH e (meu favorito) FISH. Como resultado, escrever scripts de shell consistentes que funcionam em cada plataforma pode ser um desafio.

Tem que haver um jeito melhor, certo?

Apresentando sh.py

Há sim. Quando não estou escrevendo para MakeUseOf, estou escrevendo código em Python para diversão e lucro. Eu realmente gosto do Python devido à sua flexibilidade, sua beleza inerente e como ele exige a criação de um bom código pelo design. Se isso soa bem para você, mas você ainda não conhece essa linguagem incrível, por que você não confere esses cinco ótimos sites para aprender programação em Python? Os 5 melhores sites para aprender programação em Python Os 5 melhores sites para aprender programação sobre Python Na última década, a linguagem de programação Python explodiu em popularidade entre os programadores em todas as áreas de codificação. De desenvolvedores web a designers de videogames a criadores de ferramentas internas, muitas pessoas ... Read More?

Me deparei com essa biblioteca realmente impressionante há alguns meses chamada sh.py, que permite chamar programas, passar parâmetros e manipular saídas, tudo dentro dos limites de um programa em Python.

Então o que isso quer dizer? Simplificando, significa que você tem a funcionalidade completa de scripts de shell, mas dentro de uma linguagem que é fácil de ler, é de natureza modular e suporta programação orientada a objetos. Legal certo?

Então, como usamos isso?

Estou fazendo algumas suposições sobre você. A primeira é que você está executando Linux, OS X ou FreeBSD. Como está agora, o sh.py não funciona no Windows. No entanto, se necessário, você sempre pode instalar uma máquina virtual Linux. Meu colega Justin Pot escreveu um artigo bastante útil sobre isso, que você pode conferir aqui Como usar o VirtualBoxes Imagens gratuitas para testar e executar sistemas operacionais de código aberto [Linux] Como usar o VirtualBoxes Imagens gratuitas para testar e executar sistemas operacionais de código aberto [Linux] Experimente rapidamente uma grande variedade de sistemas operacionais de código aberto, alguns com os quais você está familiarizado e alguns que não são. Você pode começar a navegar agora no Virtualboxes, um site que leva quase todo o trabalho para fora ... Leia Mais.

A segunda suposição que estou fazendo é que você está executando uma versão recente do Python (2.7 ou 3.2) e você tem o gerenciador de pacotes PIP instalado. Se este não for o caso, dê uma olhada na documentação oficial do Python.

Tudo bom? Então nós vamos continuar.

Vamos começar a codificação

Em um terminal, instale o sh.py com o seguinte comando.

 sudo pip instalar sh 

A razão pela qual estamos usando o 'sudo' aqui é porque precisamos elevar nossas permissões para adicionar novos pacotes do Python. Se o sh.py for instalado corretamente, você verá as seguintes linhas no seu terminal.

 Fazendo download / descompactando sh Fazendo download de sh-1.09.tar.gz Executando setup.py egg_info para o pacote sh Instalando pacotes coletados: sh Executando o setup.py install para sh Instalado com sucesso sh Limpando… 

Se não disser isso, as chances são boas de que sua instalação falhou. Triste. Se for esse o caso, tente verificar suas permissões e que você realmente instalou o PIP. Se ainda não estiver lá, tente perguntar no Stack Overflow (que já foi discutido 10 sites que podem ajudar o programador iniciante com trechos de código de exemplo) 10 sites que podem ajudar o programador iniciante com trechos de código de exemplo Leia mais pelo nosso editor de Internet, Saikat Basu ) ou Respostas MakeUseOf.

Agora, isso é classificado, crie um novo diretório. É aqui que vamos colocar todo o nosso código. Abra um editor de texto e crie um arquivo chamado 'shtest.py'. Aqui, vamos simplesmente criar um novo arquivo e listar o conteúdo do diretório em que estamos. Parece bom?

Em shtest.py, adicione as seguintes linhas.

shpy-shtest

 #! / usr / bin / env python import sh 
 sh.touch ('olá') print (sh.ls ('- l')) 

Coisas simples aqui. Vamos quebrar isso.

 #! / usr / bin / env python 

Essa linha é chamada de hash-bang e instrui seu shell a abrir esse arquivo como um programa em Python. Isso permite que você o abra como se fosse um script de shell (./shtest.py), em vez de abri-lo diretamente com o Python (python shtest.py). Legal certo?

 importar sh 

Esta linha importa a biblioteca sh que instalamos há alguns instantes. Não podemos continuar sem isso, então certifique-se de que está no seu código!

 sh.touch ('olá') 

Você pode estar familiarizado com o comando do Linux, 'touch'. Isso cria um arquivo vazio com o nome do arquivo que você especificar. Aqui, estamos chamando diretamente de 'toque' de dentro do Python. Como você pode ver, nós começamos com "sh" e estamos passando um parâmetro "olá".

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

Você pode estar familiarizado com o comando 'print', que gera texto no console. Aqui, estamos passando como 'sh.ls' como parâmetro. Isso chama o programa Linux ls, que lista o conteúdo de um diretório. Também estamos passando um parâmetro de '-l', que imprime informações mais detalhadas sobre o conteúdo do diretório em que executamos.

Funciona? Veja por si mesmo.

shpy-shtest-works

Aqueles de vocês com olhos de falcão notarão que há outro arquivo flutuando nesse diretório chamado 'gitsh.py'. O que poderia estar lá?

Sub Comandos

O sh.py tem alguns ganchos para programas populares já criados. Eles incluem git, sudo e um número significativo de utilitários do Linux. Isso facilita ainda mais a interação com esses serviços no Python.

Quão fácil? Bem, vou mostrar como inicializar um repositório Git vazio em apenas três linhas de código. Primeiro, crie um arquivo chamado 'gitsh.py' e abra-o no seu editor de texto favorito.

No interior, escreva as três linhas seguintes.

shpy-gitsh #! / usr / bin / env python from sh import git print (git.init ()) 

A maior parte disso deve ser bem familiar para você. Você notará que nós importamos 'git' de 'sh'. Isso significa apenas que nós importamos uma parte específica da funcionalidade de um módulo, enquanto ignoramos todo o resto.

Depois disso, inicializamos nosso repositório.

 print (git.init ()) 

Nós falamos sobre impressão. Você deve notar que estamos chamando 'git' sem '.sh' prosseguir. Isto é porque nós importamos especificamente a funcionalidade git da biblioteca 'sh'.

shpy-gitsh-works

E é sobre isso. Quando executamos o gitsh.py, devemos ver as seguintes linhas no seu terminal.

Conclusão

Essa foi uma introdução razoavelmente fácil ao sh.py. Se você está ansioso para aprender mais sobre isso, confira a documentação oficial aqui. No entanto, se você ficar preso, sinta-se à vontade para me enviar um comentário abaixo e eu tentarei ajudá-lo.

In this article