A programação do shell é divertida. Mas o Python também. Pessoas com experiência em C ou, mais importante, pessoas que usam o Windows não concordam. As pessoas costumam preferir usar uma interface gráfica do que a de linha de comando. Mas isso é totalmente errado. A interface gráfica do usuário é para pessoas que pensam que o software está fazendo o que sua descrição diz. Mas isso nem sempre é o caso. Especialmente no caso de janelas de programação de shell em que vírus e malwares criaram um caos do tamanho de um Tornado. Portanto, as pessoas que usam uma interface de linha de comando geralmente concordam que o que estão fazendo é certo, e eu concordo com elas que estão certas.

Muitas vezes você normalmente fica preso e todo o computador trava devido a um simples software baseado em interface gráfica. Trabalhar em uma interface de linha de comando geralmente é mais elegante, rápido e, o mais importante, você sabe o que está executando. Mas, novamente, usar conchas e escrever programas não é algo que todos preferem fazer.

Além disso, escrever programas em C ou Java seria realmente muito pior do que usar um software de interface gráfica do usuário no Windows. Eu não estou amaldiçoando C ou Java aqui, é só que eles não são adequados para o uso diário. E é aí que as linguagens de script, como programação Shell e linguagens Python, se destacam. Então, hoje estamos em guerra aqui qual é o mais adequado para aplicações menores e maiores. Ou podemos combinar os dois juntos e fazer algo novo e melhor com os dois. Vamos dar uma olhada mais profunda nos dois e ver aonde isso nos leva.

Script do Bash Shell

O script de shell é realmente incrível. Você quase pode fazer a maioria dos seus trabalhos aqui em apenas uma linha de código. Por exemplo, digamos, pegue este código: -

$ touch file.txt | eco -e 'olá \ n Novo \ n Mundo \ n olá \ n Olá' >> file.txt | arquivo cat.txt | ordenar | uniq wc -l

Então, como você pode ver, muitos scripts de shell estão acontecendo aqui, mas o que está acontecendo exatamente? Primeiro o '| 'é conhecido como tubo. É usado para transferir a saída de um arquivo para outro. A sintaxe 'touch' é usada para criar qualquer arquivo e a sintaxe de eco é usada para imprimir qualquer instrução. As setas duplas à direita '>>' são usadas para inserir a saída em qualquer arquivo ou programa. A sintaxe 'cat' é usada para ler o conteúdo de um arquivo. A classificação é usada para classificar tudo em ordem e o 'uniq' é usado para remover duplicatas da classificação. O 'wc' é usado para contar as linhas e -l é apenas uma bandeira para imprimi-las. Portanto, todos esses comandos encadeados fazem o seguinte.

  1. Primeiro, um arquivo é criado com o nome do arquivo com a extensão txt para informar que é um arquivo de texto.
  2. Em segundo lugar, echo -e é usado para imprimir várias palavras dentro do arquivo file.txt e 'slash n' ou '\ n' é usado para inserir uma nova linha ou ir para a próxima linha.
  3. Depois de inserir as strings no arquivo, o arquivo é lido, classificado em ordem e transferido para a sintaxe uniq para remover as duplicatas existentes, que aqui no nosso caso é 'olá'.
  4. Finalmente, imprimimos o número de linhas usando 'wc -l' para contar e imprimi-lo na tela do terminal.

Portanto, embora o acima seja apenas uma linha de código, pode tender a ficar complicado quando mais condições forem inseridas. Portanto, os scripts shell são bons, mas não podem ser usados ​​para realizar novos trabalhos o tempo todo. Às vezes, você quer que as coisas sejam mais simples, tão simples quanto uma interface gráfica do usuário. Os scripts de shell são realmente muito bons para executar scripts em lote e executar tarefas repetidas, mas, ao mesmo tempo, apresentam algumas desvantagens:

  1. Os scripts de shell tendem a ficar extremamente complicados à medida que se tornam grandes.
  2. A reutilização de scripts é quase nenhuma. O que quero dizer aqui é que, scripts bash são extremamente difíceis de inserir em C ou em outros códigos Java.
  3. Recursos avançados, como análise de HTML, não estão disponíveis facilmente para o bash.

No entanto, existe o Python aqui para o resgate e o substituto mais adequado para o mesmo. Mas o script do Bash Shell é totalmente substituível? Vamos dar uma olhada.

Cursos recomendados

  • Treinamento on-line de certificação em J2EE abrangente
  • Formação Profissional em Programação R
  • Treinamento on-line de certificação em programação Go
  • Treinamento no programa Haskell

Script de shell Python

O Python é instalado por padrão em quase todos os sistemas Linux e UNIX. Às vezes, a distribuição pode ter uma versão mais antiga, mas pode ser atualizada com apenas um comando simples. A programação do Python Shell é muito mais fácil de entender e mais limpa de escrever, mesmo para iniciantes. Além disso, por padrão, o Python possui o estilo Read Eval Print Loop, que ajuda na experimentação de novos códigos no intérprete. Mas apenas o uso de python pode ser um pouco difícil sem a ajuda do script do bash shell. Além disso, em nosso programa anterior de linha única, usamos a sintaxe 'uniq' para remover duplicatas, mas ela não nos mostrou quais eram as duplicatas. Então, vamos escrever um programa python para fazer o mesmo: -

#! / usr / bin / env pythonimport sys # importando módulos do sistema para trabalhar com arquivos de diretório se __name__ == “__main __”: # Começando com um dicionário vazio aqui. Denominado como a ordem # Todas as chaves neste dicionário aparecem como um nome e os valores especificados para elas # serão a quantidade de vezes que esse nome específico aparecerá.order = () # sys.stdin é um objeto usado para arquivos. Todas essas funções que estão sendo aplicadas a

# um objeto de arquivo também pode ser usado para sys.stdin.

para pedidos em sys.stdin.readlines ():

order = order.strip ()

se encomendar em pedidos:

pedidos (pedido) + = 1

outro:

orders (order) = 1

para pedido, conte em orders.iteritems ():

sys.stdout.write ("% d \ t% s \ n"% (contagem, pedido))

Agora, esse arquivo lê primeiro a entrada do objeto sys.stdin. Toda a saída é gravada no objeto sys.stdout. Após criar esse script, assumindo que você o nomeou como order.py, você pode simplesmente executar o seguinte script de shell no terminal e encontrará a contagem total de todas as seqüências duplicadas.

$ cat file.txt | python order.py

Da mesma forma, também podemos resolver isso usando a sintaxe de classificação: -

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

Script de programação do Python Shell vs Bash Shell

Agora vimos como podemos combinar scripts python e shell para criar uma cadeia de comandos e executá-los juntos. Agora, vamos dar um passo adiante e ver se o Python pode substituir totalmente o Bash Shell.

Falando em programação bash shell, em termos de desempenho, o bash supera totalmente o python. Mas se você compará-lo com tipos de dados e outras coisas avançadas, o bash não tem muita compatibilidade. O tempo de inicialização de um script do shell bash é de 2, 8 mili segundos, enquanto o do python é de 11, 1 mili segundos. Para ser mais franco, o bash é uma linguagem de propósito geral, assim como o Python, mas ambos têm seus próprios pontos fortes e fracos. A programação do Bash shell é o terminal padrão na maioria das distribuições Linux e, portanto, sempre será mais rápido em termos de desempenho. Mas isso significa que ele pode substituir totalmente o Python? Não. Ao lidar com programas grandes, o Bash continuará se complicando, enquanto o Python não. Python também pode ser usado como uma linguagem orientada a objetos, tanto quanto eu sei. Se você é apenas um iniciante, talvez nem saiba a diferença entre os dois. Python é a linguagem de script mais elegante, ainda mais que Ruby e Perl. A programação do Bash shell, por outro lado, é realmente muito excelente ao canalizar a saída de um comando para outro.

O script de shell é simples e não é tão poderoso quanto o python. Ele não lida com estruturas e é difícil seguir com programas relacionados à Web usando o Shell Scripting. O verdadeiro poder do script de shell está no editor de texto em fluxo ou sed, nos programas Awk e em aplicativos similares.

Manipulação de Arquivos e Desenvolvimento de Aplicativos Web

Os scripts do Bash Shell funcionam sem falhas e com rapidez ao lidar com arquivos. Ao lidar com arquivos, quero dizer copiar, clonar discos, escrever aplicativos de backup para redes, servidores ftp, armazenar entradas de arquivos e acessá-las posteriormente e transferir essas saídas posteriormente para outra coisa com a ajuda do pipe. Por outro lado, o Python é mais útil para lidar com blocos de dados, como ler dados de um arquivo e processar dados. Se eu for mais específico, o bash nem é uma linguagem de programação. É mais um shell simples que foi direcionado para lidar com arquivos do sistema usando a linha de comando para que o processo seja mais rápido e rápido.

Portanto, se você conhece a programação do bash shell corretamente, também sabe que variáveis ​​e escopos no bash são extremamente limitados. Por outro lado, o Python é mais uma linguagem de script de shell do que uma linguagem de programação. Se designarmos Bash como uma linguagem de programação, é mais como dizer ao Python que é uma linguagem de programação shell orientada a objetos. Pode-se lidar com python de maneira orientada a objetos, mas nunca será puramente orientada a objetos como C ou Java. Da mesma forma, o Bash é uma linguagem de script; é mais usado como algo necessário para lidar com arquivos rapidamente, em vez de gravar grandes programas nele. Além disso, embora o Python seja uma linguagem de script de shell, ele realmente lida com seu próprio shell. Por exemplo, mover todos os arquivos que estão no Desktop para algum outro diretório aleatório via shell Bash seria algo como isto:

$ cd Desktop $ mv * randomDirectory

Mas, por outro lado, fazer a mesma coisa em python é um pouco mais complicado. É algo como isto: -

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

No entanto, na melhor das hipóteses, é possível torná-lo o mais compacto desta maneira:

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

Ao aprender qualquer idioma, as pessoas costumam dizer como limpar o básico e todas essas coisas, mas não dizem como lidar primeiro com o sistema, que é o mais importante. Além disso, Python e Bash são ambos a linguagem de script da Shell, o que significa que ambos são desenvolvidos principalmente para lidar com o sistema e seus arquivos.

Bash dentro do Python?

Sim, você leu certo. Até agora, lemos sobre como podemos introduzir scripts Python dentro do Shell. Mas também podemos introduzir scripts de shell nos scripts de python. Tome isso por exemplo: - Digite 'apt-get update' no shell python? Obviamente, você receberá algum erro como sintaxe inválida. Então, o problema é que, se você quiser usar os códigos bash como 'ls, cd, mv' ou qualquer outra coisa em python, terá que importar o módulo do SO. Agora, faça uma coisa, copie o código a seguir e cole-o no Shell do python e verifique como ele funciona:

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

E agora funciona … sim. Essa é outra maneira de como obter scripts python e bash trabalhando juntos. Além disso, há outro módulo python que é construído especificamente para trabalhar com o bash. Este módulo é conhecido como pexpect. O Pexpect é um módulo python usado para gerar processos filhos, controlá-los e retornar resultados de acordo com a solicitação do processo filho. O módulo pexpect possui uma interface extremamente fácil para importar os módulos necessários e processos filhos dentro dele e executá-los de acordo. É necessário apenas instalar o pip em seu sistema para instalar o pexpect e instalar o módulo da seguinte maneira: -

$ pip install pexpect

A versão do Pexpect precisa da versão python maior que 3.3 ou especificamente 2.7.

Na verdade, há muito mais para misturar python e bash e nada funciona tão melhor quanto uma mistura de scripts de Python e Bash. Essa mistura torna o script rápido por causa do Bash e inclui recursos avançados por causa do Python. Pode-se ler sobre o pexpect e sua documentação em https://pexpect.readthedocs.org/online.

Artigos recomendados

Aqui estão alguns artigos que ajudarão você a obter mais detalhes sobre o Bash Scripting e o Python, basta acessar o link.

  1. Diferenças valiosas entre Python e JavaScript
  2. As 25 perguntas e respostas mais surpreendentes da entrevista em Python
  3. Diferenças entre Python e JavaScript
  4. Programação R vs Python
  5. Manipulação de Arquivos PHP