domingo, 5 de julho de 2015

Scripts - Facilite seu trabalho

Uma das grandes diferenças entre usuário Linux e Windows é o modo como usam a Janela do Terminal (ou de comandos). Os usuários Windows mal sabem sua existência e só dão o comando CMD em caso de extrema necessidade, e sendo muito experientes. Acho isso uma pena pois muita coisa poderia ser facilmente resolvida através dessa janela.

Para os que vivem no mundo Linux, não se passa um único dia sem ao menos acessar essa janela. Porém, muitos a usam de modo muito primitivo, por exemplo, para realizar uma limpeza no sistema preferem abri-la e digitar a série de comandos necessários para realizar a tarefa, mesmo que isso tenha que ser feito semanalmente.

Para ambos os mundos existe a solução adotada do Grande Porte para tarefas rotineiras, a criação de arquivos BATCH - São arquivos que contém os comandos para que o Sistema Operacional realize determinadas operações de forma conjunta. No Windows esses arquivos são nomeados para .bat e contém comandos em linguagem DOS. Já no Linux isso vira a festa de linguagem, mas seu modo de execução é similar em um arquivo formato texto, colocar os códigos, fornecer a permissão de execução para o arquivo e executá-lo com o comando: ./nomearq.

Entre as principais linguagens que podemos utilizar se destacam: Bash (nativa do terminal), Python e Perl. Outro dado curioso é a extensão do arquivo que, diferente do Windows, no Linux é uma mera padronização, assim para Bash usamos a extensão .sh, em Python a extensão .py e para Perl a extensão .pl. Porém poderíamos colocar qualquer coisa que funcionaria do mesmo modo, o que indica ao sistema operacional é a primeira linha do Script (observe as diferenças abaixo).

Comparemos um laço de decisão com o comando IF nas três linguagens para verificarmos essa diferença, primeiro em Bash:
#!/bin/bash
if [ -d "/tmp" ] ; then
  echo "/tmp é um diretório"
else
  echo "/tmp não é um diretório"
fi
O equivalente em Python:
#!/usr/bin/env python
import os
if os.path.isdir("/tmp"):
  print "/tmp é um diretório"
else:
  print "/tmp não é um diretório"
E o equivalente em Perl:
#!/usr/bin/perl
if (-d "/tmp") {
  print "/tmp é um diretório";
} else {
  print "/tmp não é um diretório";
}
Talvez com um laço de repetição possamos perceber melhor essa diferença, novamente iniciando com Bash:
#!/bin/bash
for a in 1 2; do
  for b in a b; do
    echo "$a $b"
  done
done
O equivalente em Python:
#!/usr/bin/env python
for a in [1, 2]:
  for b in ['a', 'b']:
    print a, b
E o equivalente em Perl:
#!/usr/bin/perl
foreach $a ('1', '2') {
  foreach $b ('a', 'b') {
    print "$a $b\n";
  }
}
Como todas derivam do C então as diferenças entre elas são muito sensíveis. Entre essas três, as duas primeiras são preferidas pela maioria dos usuários, conforme demonstrou uma pesquisa que realizei na lista Linux Brasil, da rede social Google+:


E apenas como característica de controle, fiz a mesma pesquisa na lista Ubuntu - Linux - Brasil, na mesma rede, obtive resultados similares:


O próprio mercado já percebeu isso, essa semana contei um aumento de solicitação para programadores nas lista de emprego com conhecimento tanto em Python como Bash para Administradores de Sistema Operacional Linux. Por esse motivo, decidi escrever uma série de artigos mostrando algumas soluções administrativas para auxiliar algumas tarefas rotineiras do Linux.

Obrigado e até a próxima
Fernando Anselmo

0 comentários:

Postar um comentário