O Shell Script é muito útil quando precisamos fazer manipulação de arquivos em lote, por exemplo. Veja a seguir alguns exemplos que eu já precisei usar para aplicações pessoais.
Para executar um script existem duas maneiras:
-
Voce pode digitar diretamente no terminal ou
-
Salvar um arquivo com a extensão .sh e rodar
com
sudo chmod +x myscript.sh
./myscript.sh
Também da pra executar direto com
sh myscript.sh
Podemos escrever tudo numa única linha no terminal.
for i in $(seq 1 20); do touch arquivo$i\rg.out; done
Acrescenta dois caracteres no final, seguido da extensão do arquivo.
Neste exemplo, vamos inserir um 0 no início de cada arquivo.
for i in $(seq 1 9);
do
mv E$i.txt E0$i.txt;
done
Escreva tudo numa única linha no terminal.
j=1; for i in 'find . -type f'; do if (($i <= 9)); then mv $i 0$j.out; else mv $i $j.out; fi; ((j++)); done
#!/bin/bash
n=30
for i in $(seq 2 $n)
do
if (($i <= 9)) then cp arquivo arquivo0$i #insere um zero no inicio de cada arquivo
else
cp arquivo arquivo$i
fi
done
Neste exemplo, vamos inserir o conteúdo de vários arquivos numerados em sequência dentro de um único arquivo.
for i in $(seq 1 50)
do
less arquivo$i.txt >> arquivoFinal.txt
done
Este exemplo foi usado para gerar um PDF a partir de dois PDFs onde um contém as páginas impares e outro contém as páginas pares de forma invertida.
Ou seja,
páginas pares: 1 3 5 7
páginas impares: 8 6 4 2
E o resultado final é: 1 2 3 4 5 6 7 8
#!/bin/bash
n=8
pa=1
pb=7
echo "pdfjam " > junta_paginas.sh
for i in $(seq 1 $n)
do
echo -n "pa.pdf ’$pa’ pb.pdf ’$pb’ "
let "pa = i + 1"
let "pb += -1"
done >> junta_paginas.sh
echo "-o final.pdf" >> junta_paginas.sh