>_Introdução

O shell além de ser a interface que interage o usuário com kernel do Linux para a execução dos comandos, é também uma linguagem de programação interpretada (lê e interpreta linha por linha do código), o shell também possui operadores, variáveis, expressões, comandos de controle, estruturas condicionais e de laços, funções e etc assim como linguagens semelhantes ao shell como C, Perl, Php.

Como eu instalo o Shell?

Existem diversos sabores de shell: zsh, bash, csh, sh… Todos estes são nativos de sistemas Unix (Linux, por exemplo), mas você pode também pode instalar o shell no Windows. Através do Cygwin neste link.

Shell script, sintaxe básica

Shell script é uma linguagem interpretada indispensável para administradores Unix.

A idéia de um shell foi concebida na época em que a interface pela qual os usuários de computadores podiam trabalhar com o computador era muito limitada. Além disso os recursos eram limitados, CPU e memória. Existia apenas um teclado, sem mouse, sem som, sem efeitos gráficos bonitos. O modo pelo qual o usuário se comunica com o computador nessa interface é escrevendo os programas que se deseja abrir.  Os interpretadores são vários, ksh, csh, zsh, sh e bash. Entre os diversos interpretadores existentes os usuários de Linux utilizam mais o bash. É como se os programas fossem funções e o shell fosse a interação entre os programas.

História do Bash

O bash é uma camada que liga o usuário com o sistema operacional. Seu nome vêm de Bourne Again Shell uma intertextualização com Bourne Shell, mais conhecido com sh. O sh foi o pioneiro dos shells, a partir dele vieram os outros. O Bourne shell foi escrito por Stephen Bourne um pesquisador da AT&T Bell Labs. O bash é compatível com o sh e provê algumas funcionalidades do csh e do ksh. Ele segue o padrão IEEE Posix shell e inicialmente foi escrito para ser o shell padrão do sistema GNU. Ele tem uma portabilidade boa, existem implementações pra sistemas Windows, MacOsX e, é claro, Linux e BSDs. Para usuários de Windows ele pode ser usado através do projeto Cygwin. As funções são praticamente todas portadas, só tendo dependência em alguma funcionalidade do sistema Unix que o programador não pode usar(como o /proc). Com o passar do tempo o bash evoluiu junto com os sistemas abertos e hoje tem muitas mais funcionalidades e facilidades que antigamente. Saber como programar em shell ajuda também na administração do sistema. E praticamente se torna indispensável pra um bom administrador.

Através de scripts em shell podemos interagir melhor com o Linux criando scripts como os encontrados no diretório /etc/init.d para fazer programas, gerenciar serviços, backups, monitoramento de logs do servidor e etc, e além disso interagir com outras linguagens como C, Perl, Php. Scripts de Shell Para criar scripts shell armazenando uma seqüencia de comandos de shell devemos iniciar o script informando que se trata de um arquivo executável com a seguinte linha #!/bin/shell, onde shell é o shell usado podendo ser /bin/bash, /bin/sh e etc.

Características

Os scripts shell podem conter estruturas de programação tais como:

  • estruturas de decisão (if)
  • estruturas de repetição (for)(while)
  • funções e argumentos
  • definições de variáveis e escopo destas

Para o shell bash devemos usar a seguinte linha:
#!/bin/bash

Para o shell sh devemos usar a seguinte linha:
#!/bin/sh

Após criar o script devemos mudar as permissões do arquivo tornando-o executável com o comando chmod.
$ chmod +x script_shell
ou
$ chmod 755 script_shell

Para executar um script shell devemos colocar um ponto “.” e uma barra “/” juntos antes do nome do script da seguinte forma ./script
$ ./script_shell

Você também pode criar um script com a extensão .sh, .bash ou sem extensão nenhuma e executar com os comandos sh e bash, e além disso você pode colocar comentários de explicação no seu script para isso, basta inserir antes  o caractere #

Abaixo:
Digite o código abaixo em um editor de texto qualquer e salve com o nome de exe1, exe1.sh ou exe1.bash.

Para executar use o comando sh ou bash $ sh exe1.bash ou $ bash exe1.bash

Veja um exemplo de um script shell usando o shell bash, onde ele ira exibir uma mensagem e também ira criar um diretório chamado img-shell-script dentro do home vandocouto/Documentos.

No Shell Script, temos comandos que são utilizados mais vezes que outros. Esses comandos podem ser descritos como comandos para manipulação de arquivos, diretórios e textos.

Sintaxe dos comandos Objetivo
echo “algum texto” escreve algum texto
ls lista arquivos / diretórios
wc -l arquivo
wc -w arquivo
wc -c arquivo
conta as linhas num arquivo ou
conta o numero de palavras
conta os numeros caracteres
cp ficheiroorigem ficheirodestino copia arquivo/diretório para local desejado
mv nomeantigo novonome renomeia ou move um arquivo/diretório
rm arquivo/diretório
apaga um arquivo
grep ‘qualquercoisa’ arquivo procura por strings num arquivo
Exemplo: grep ‘qualquercoisa’ arquivo.txt
cut -b colnum file extrai dados de uma coluna fixa de texto
Exemplo: extrai caracteres da posição 5 a 9
cut -b5-9 file.txt
Não confundir com o comando “cat” que faz uma coisa completamente diferente
cat arquivo.txt escreve o conteúdo de um arquivo.txt no stdout
file arquivoqualquer descreve qual é o tipo do arquivo arquivoqualquer
read var pede ao utilizador para escrever e coloca numa variável (var)
sort arquivo.txt ordena as linhas no arquivo.txt
uniq remove as linhas duplicadas, utilizado em combinação com sort visto uniq remover unicamente linhas duplicadas consecutivas
Exemplo: sort arquivo.txt | uniq
expr faz matemática no shell
Exemplo: adiciona 2 e 3
expr 2 “+” 3
find procura arquivo
Exemplo: procura por nome:
find . -name arquivo -print
Este comando tem muitas possibilidades e opções.
tee escreve os dados para stdout e para um outro arquivo
Normalmente utilizado da seguinte forma:
umcomando | tee arquivo.txt
basename ficheiro devolve o nome do arquivo de um determinado arquivo e remove o caminho
Exemplo: basename /bin/tux
devolve unicamente tux
dirname ficheiro devolve unicamente o nome do diretório de um determinado nome e remove o nome do arquivo
Exemplo: dirname /bin/tux
devolve unicamente /bin
head ficheiro escreve umas linhas desde o inicio do arquivo
tail file escreve umas linhas desde o fim do arquivo
sed sed é basicamente um programa de pesquisa e substituição. Ele lê texto de um input standard (ex desde um pipe) e escreve o resultado para stdout. O padrão de pesquisa é uma expressão regular (ver referências). Esse padrão de pesquisa não deve ser confundido com a syntax da wildcard do shell. Para substituir a string linuxfocus por LinuxFocus num arquivo texto faça:
cat ficheiro.txt | sed ‘s/linuxfocus/LinuxFocus/’ > novoarquivo.txt
Isto substitui a primeira ocurência da string linuxfocus em cada linha com LinuxFocus. Se existirem linhas onde linuxfocus apareça varias vezes e que queira substituir todos faça:
cat ficheiro.txt | sed ‘s/linuxfocus/LinuxFocus/g’ > novoarquivo.txt
awk A maior parte das vezes awk é utilizado para extrair campos de uma linha de texto. O separador por defeito é espaço. Para definir um outro utiliza a opção -F.
 cat arquivo.txt | awk -F, '{print $1 "," $3 }'

Neste caso estamos a utilizar a virgula (,) como separador de campos e escrevemos a primeira e terceira coluna ($1 $3). Se ficheiro.txt tiver linhas como:

 Adam Bor, 34, India Kerry Miller, 22, BRA

ira dar como resultado:

 Adam Bor, India Kerry Miller, BRA

O awk permite fazer muita mais coisas mas esta é a utilização mais frequente.

>_Introdução
Tagged on:

Deixe uma resposta

O seu endereço de e-mail não será publicado. Campos obrigatórios são marcados com *

%d blogueiros gostam disto: