Exemplos De Shell Script Para Linux são ferramentas essenciais para automatizar tarefas, otimizar fluxos de trabalho e gerenciar sistemas Linux de forma eficiente. Este guia aborda os conceitos básicos, fornece exemplos práticos e explora técnicas avançadas de shell scripting, capacitando você a dominar esta poderosa linguagem de script.
Aprender shell scripting é fundamental para qualquer usuário Linux, seja você um administrador de sistemas, desenvolvedor ou usuário avançado. Os scripts de shell permitem automatizar tarefas repetitivas, gerenciar arquivos e diretórios, controlar processos, monitorar recursos do sistema e muito mais.
Introdução aos Shell Scripts em Linux
Shell scripts são programas de computador que automatizam tarefas repetitivas no sistema operacional Linux. Eles são escritos em uma linguagem de script interpretada, que é executada por um interpretador de shell, como o Bash. Os shell scripts são ferramentas poderosas para automatizar tarefas, como gerenciamento de arquivos, backup de dados, monitoramento de sistema e administração de rede.
Tipos de Shells
Os shells são interpretadores de comandos que permitem aos usuários interagir com o sistema operacional. Existem vários tipos de shells disponíveis no Linux, cada um com seus próprios recursos e funcionalidades. Alguns dos shells mais populares incluem:
- Bash: O shell padrão em muitas distribuições Linux, conhecido por sua compatibilidade e amplo conjunto de recursos.
- Zsh: Um shell moderno e poderoso, com suporte a autocompletar, temas e plugins.
- Ksh: Um shell poderoso e compatível com o padrão POSIX, amplamente utilizado em sistemas Unix.
- Tcsh: Um shell inspirado no C-shell, com recursos como histórico de comandos e edição de linha.
Sintaxe Básica de Shell Script
A sintaxe de um shell script é composta por comandos, variáveis, operadores e estruturas de controle de fluxo. Os comandos são instruções que o shell executa, como `ls`, `mkdir`, `cp` e `rm`. As variáveis são usadas para armazenar dados, como nomes de arquivos, caminhos e valores.
Os operadores são símbolos que realizam operações, como comparação, aritmética e lógica. As estruturas de controle de fluxo permitem que o shell execute comandos condicionalmente ou em loops.
Variáveis
As variáveis são usadas para armazenar dados em um shell script. Elas são declaradas usando o nome da variável seguido de um sinal de igual e o valor.
Exemplo:“`bashnome_do_arquivo=”arquivo.txt”“`
Comandos
Os comandos são instruções que o shell executa. Eles podem ser comandos internos do shell, como `cd`, `exit`, `pwd` e `history`, ou comandos externos, como `ls`, `mkdir`, `cp` e `rm`.
Exemplo:“`bashls
l
mkdir pastacp arquivo.txt pastarm arquivo.txt“`
Operadores
Os operadores são símbolos que realizam operações em dados. Alguns dos operadores mais comuns incluem:
- Operadores Aritméticos: + (adição), – (subtração), – (multiplicação), / (divisão), % (módulo).
- Operadores de Comparação: == (igual), != (diferente), > (maior que), < (menor que), >= (maior ou igual), <= (menor ou igual).
- Operadores Lógicos: && (e), || (ou), ! (não).
Controle de Fluxo
As estruturas de controle de fluxo permitem que o shell execute comandos condicionalmente ou em loops. Algumas das estruturas de controle de fluxo mais comuns incluem:
- if/else: Executa comandos condicionalmente, dependendo de uma condição.
- for: Executa um bloco de comandos para cada item em uma lista.
- while: Executa um bloco de comandos enquanto uma condição for verdadeira.
- case: Executa comandos correspondentes a um valor específico.
Exemplos Práticos de Shell Scripts
Shell scripts são ferramentas poderosas para automatizar tarefas repetitivas e gerenciar sistemas Linux. Neste capítulo, exploraremos exemplos práticos de scripts que demonstram sua funcionalidade e utilidade em cenários reais.
Exibir o Conteúdo de um Diretório
Este script exibe o conteúdo de um diretório específico, fornecido como argumento. O comando ls
é usado para listar os arquivos e diretórios dentro do caminho especificado.
#!/bin/bash# Exibe o conteúdo de um diretóriodir=$1ls $dir
Para executar o script, salve-o com a extensão .sh
(por exemplo, exibir_diretorio.sh
) e execute o comando chmod +x exibir_diretorio.sh
para tornar o script executável. Em seguida, execute o script com o nome do diretório como argumento: ./exibir_diretorio.sh /home/usuario/Documentos
.
Listar Arquivos com Extensão .txt
Este script lista todos os arquivos com extensão .txt
em um diretório especificado. O comando find
é usado para localizar arquivos com base em critérios específicos, neste caso, a extensão .txt
.
#!/bin/bash# Lista arquivos .txt em um diretóriodir=$1find $dir
name "*.txt"
Para executar o script, salve-o com a extensão .sh
(por exemplo, listar_txt.sh
) e execute o comando chmod +x listar_txt.sh
para tornar o script executável. Em seguida, execute o script com o nome do diretório como argumento: ./listar_txt.sh /home/usuario/Documentos
.
Renomear Arquivos com Prefixo
Este script renomeia todos os arquivos em um diretório, adicionando um prefixo especificado. O comando mv
é usado para mover e renomear arquivos. A variável prefixo
armazena o prefixo a ser adicionado aos nomes dos arquivos.
#!/bin/bash# Renomeia arquivos com prefixodir=$1prefixo="novo_"for file in $dir/*; do mv "$file" "$dir/$prefixo$file##*/"done
Para executar o script, salve-o com a extensão .sh
(por exemplo, renomear_arquivos.sh
) e execute o comando chmod +x renomear_arquivos.sh
para tornar o script executável. Em seguida, execute o script com o nome do diretório como argumento: ./renomear_arquivos.sh /home/usuario/Documentos
.
Copiar Arquivo para Outro Diretório
Este script copia um arquivo para outro diretório. O comando cp
é usado para copiar arquivos. O script recebe o nome do arquivo e o caminho do diretório de destino como argumentos.
#!/bin/bash# Copia um arquivo para outro diretórioarquivo=$1destino=$2cp $arquivo $destino
Para executar o script, salve-o com a extensão .sh
(por exemplo, copiar_arquivo.sh
) e execute o comando chmod +x copiar_arquivo.sh
para tornar o script executável. Em seguida, execute o script com o nome do arquivo e o caminho do diretório de destino como argumentos: ./copiar_arquivo.sh arquivo.txt /home/usuario/Downloads
.
Executar Comando em Horário Específico
Este script executa um comando específico em um determinado horário. O comando crontab
é usado para agendar tarefas. O script recebe o comando a ser executado, a hora e o minuto como argumentos.
#!/bin/bash# Executa um comando em horário específicocomando=$1hora=$2minuto=$3echo "$minuto $hora
- $comando" | crontab
Para executar o script, salve-o com a extensão .sh
(por exemplo, agendar_comando.sh
) e execute o comando chmod +x agendar_comando.sh
para tornar o script executável. Em seguida, execute o script com o comando, a hora e o minuto como argumentos: ./agendar_comando.sh "ls-l" 10 15
. Isso agendará o comando ls-l
para ser executado às 15:10 todos os dias.
Fazer Backup de Arquivo ou Diretório
Este script faz backup de um arquivo ou diretório para um local específico. O comando tar
é usado para criar arquivos de backup. O script recebe o nome do arquivo ou diretório e o caminho do destino como argumentos.
#!/bin/bash# Faz backup de um arquivo ou diretóriofonte=$1destino=$2tar
czvf $destino.tar.gz $fonte
Para executar o script, salve-o com a extensão .sh
(por exemplo, fazer_backup.sh
) e execute o comando chmod +x fazer_backup.sh
para tornar o script executável. Em seguida, execute o script com o nome do arquivo ou diretório e o caminho do destino como argumentos: ./fazer_backup.sh /home/usuario/Documentos /home/usuario/Backups
.
Automatizar Instalação de Software
Este script automatiza a instalação de um software. O script recebe o nome do pacote como argumento. O comando apt-get
é usado para instalar pacotes de software. O script pode incluir comandos adicionais, como baixar o pacote, verificar dependências e configurar o software após a instalação.
#!/bin/bash# Instala um softwarepacote=$1apt-get updateapt-get install $pacote
y
Para executar o script, salve-o com a extensão .sh
(por exemplo, instalar_software.sh
) e execute o comando chmod +x instalar_software.sh
para tornar o script executável. Em seguida, execute o script com o nome do pacote como argumento: ./instalar_software.sh vim
.
Monitorar Espaço em Disco
Este script monitora o espaço em disco e envia um email se o espaço livre estiver abaixo de um determinado limite. O comando df
é usado para obter informações sobre o espaço em disco. O script pode usar o comando mail
para enviar um email com um relatório.
#!/bin/bash# Monitora espaço em discolimite=10 # Limite de espaço livre em GBdf
h | grep "/$" | awk 'print $5' | sed 's/%//' | while read espaco; do
if [ $espaco
lt $limite ]; then
mail-s "Alerta de Espaço em Disco" [email protected] < mensagem.txt fi done
Este script verifica o espaço livre na partição raiz ( /
) e envia um email se o espaço livre for inferior a 10 GB. A variável limite
pode ser ajustada para definir o limite desejado. O script assume que existe um arquivo chamado mensagem.txt
com o corpo da mensagem de email.
O script deve ser executado periodicamente, por exemplo, usando o crontab
.
Enviar Email com Relatório
Este script envia um email com um relatório. O script pode usar o comando mail
para enviar emails. O script pode incluir comandos adicionais para gerar o relatório, como coletar informações do sistema, executar comandos e formatar o relatório.
#!/bin/bash# Envia email com relatóriorelatório=$(uptime)mail-s "Relatório do Sistema" [email protected] < relatório.txt
Este script envia um email com o relatório do uptime
. O script assume que existe um arquivo chamado relatório.txt
com o corpo da mensagem de email. O script pode ser modificado para gerar outros tipos de relatórios e enviar emails com diferentes informações.
Técnicas Avançadas de Shell Scripting: Exemplos De Shell Script Para Linux
Nesta seção, exploraremos técnicas avançadas de shell scripting que permitem a criação de scripts mais complexos e eficientes. Abordaremos conceitos como loops, condicionais, funções, pipes, redirecionamento de entrada e saída, variáveis de ambiente e exemplos práticos de scripts utilizando comandos de sistema como `find`, `grep`, `sed` e `awk`.
Loops
Loops são estruturas de controle que permitem executar um bloco de código repetidamente até que uma condição seja satisfeita. Em shell scripting, os loops `for` e `while` são amplamente utilizados.
Loop for
O loop `for` é usado para iterar sobre uma lista de itens.
Exemplo:```bashfor i in 1 2 3 4 5; do echo "Número: $i"done```
Neste exemplo, o loop `for` itera sobre os números de 1 a 5, imprimindo cada número na tela.
Loop while
O loop `while` executa um bloco de código enquanto uma condição for verdadeira.
Exemplo:```bashi=1while [ $i
le 5 ]; do
echo "Número: $i" i=$((i + 1))done```
Neste exemplo, o loop `while` continua executando enquanto a variável `i` for menor ou igual a 5. A cada iteração, o valor de `i` é incrementado em 1.
Condicionais
Condicionais permitem que um script tome decisões com base em condições específicas. Os comandos `if`, `else` e `elif` são usados para criar condicionais.
Comando if
O comando `if` executa um bloco de código se uma condição for verdadeira.
Exemplo:```bashif [ $i
eq 5 ]; then
echo "O valor de i é 5"fi```
Neste exemplo, o bloco de código dentro do `if` será executado apenas se o valor de `i` for igual a 5.
Comando else
O comando `else` executa um bloco de código se a condição do `if` for falsa.
Exemplo:```bashif [ $i
eq 5 ]; then
echo "O valor de i é 5"else echo "O valor de i não é 5"fi```
Neste exemplo, o bloco de código dentro do `else` será executado se o valor de `i` não for igual a 5.
Comando elif
O comando `elif` permite testar condições adicionais se a condição do `if` for falsa.
Exemplo:```bashif [ $i
eq 5 ]; then
echo "O valor de i é 5"elif [ $i
eq 10 ]; then
echo "O valor de i é 10"else echo "O valor de i não é 5 nem 10"fi```
Neste exemplo, o bloco de código dentro do `elif` será executado se o valor de `i` for igual a 10, caso contrário, o bloco de código dentro do `else` será executado.
Funções
Funções são blocos de código reutilizáveis que podem ser chamados em diferentes partes de um script. Elas ajudam a organizar o código e a torná-lo mais legível e modular.
Exemplo:```bashfunction saudacao() echo "Olá, mundo!"saudacao```
Neste exemplo, a função `saudacao` imprime a mensagem "Olá, mundo!". A função é chamada na última linha do script.
Pipes
Pipes (|) são usados para conectar a saída de um comando à entrada de outro comando. Isso permite que comandos sejam encadeados para criar pipelines complexos.
Exemplo:```bashls
l | grep "script.sh"
```
Neste exemplo, o comando `ls
l` lista os arquivos no diretório atual, e a saída é passada para o comando `grep`, que filtra os arquivos que contêm o nome "script.sh".
Redirecionamento de Entrada e Saída
O redirecionamento de entrada e saída permite que você altere a entrada e a saída de um comando. Os operadores `>`, `>>` e ` <` são usados para redirecionar entrada e saída.
Redirecionamento de Saída
O operador `>` redireciona a saída de um comando para um arquivo.
Exemplo:```bashls
l > lista_de_arquivos.txt
```
Neste exemplo, a saída do comando `ls
l` é redirecionada para o arquivo `lista_de_arquivos.txt`.
Redirecionamento de Saída com Apêndice
O operador `>>` redireciona a saída de um comando para um arquivo, anexando-a ao conteúdo existente do arquivo.
Exemplo:```bashls
l >> lista_de_arquivos.txt
```
Neste exemplo, a saída do comando `ls
l` é anexada ao conteúdo existente do arquivo `lista_de_arquivos.txt`.
Redirecionamento de Entrada
O operador ` <` redireciona a entrada de um comando de um arquivo.
Exemplo:```bashcat < lista_de_arquivos.txt ```
Neste exemplo, a entrada do comando `cat` é redirecionada do arquivo `lista_de_arquivos.txt`.
Variáveis de Ambiente
Variáveis de ambiente são variáveis que armazenam informações sobre o ambiente do sistema. Elas podem ser acessadas em scripts usando o caractere `$` seguido do nome da variável.
Exemplo:```bashecho $HOME```
Neste exemplo, o comando `echo` imprime o valor da variável de ambiente `HOME`, que contém o caminho para o diretório home do usuário.
Exemplos de Scripts
Aqui estão alguns exemplos de scripts que utilizam comandos de sistema como `find`, `grep`, `sed` e `awk`.
Encontrar Arquivos
O script a seguir encontra todos os arquivos com a extensão `.txt` no diretório atual e em seus subdiretórios.
Exemplo:```bashfind .
name "*.txt"
```
Filtrar Linhas
O script a seguir filtra as linhas que contêm a palavra "Linux" no arquivo `texto.txt`.
Exemplo:```bashgrep "Linux" texto.txt```
Substituir Texto
O script a seguir substitui todas as ocorrências da palavra "Linux" por "Unix" no arquivo `texto.txt`.
Exemplo:```bashsed 's/Linux/Unix/g' texto.txt```
Processar Dados
O script a seguir imprime o número de linhas no arquivo `texto.txt`.
Exemplo:```bashawk 'print NR' texto.txt```
Ao longo deste guia, você explorou uma variedade de exemplos práticos de shell scripts, desde tarefas simples como listar arquivos até scripts complexos que automatizam processos de backup e monitoramento. Você também aprendeu sobre técnicas avançadas, como loops, condicionais, funções, pipes e redirecionamento de entrada e saída.
Essa base sólida permitirá que você crie seus próprios scripts personalizados para atender às suas necessidades específicas.