quinta-feira, 14 de junho de 2012

Linux: Alguns exemplos de Shell Script

O Shell Script, (Wikipedia) é 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:

1) Voce pode digitar diretamente no terminal ou

2) 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

Criando vários arquivos numa sequência numérica


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.

Renomeando vários arquivos


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


Renomeando todos os arquivos numa sequência numérica


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


Copiando vários arquivos numa sequência numérica


#!/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


Inserindo o conteúdo de vários arquivos dentro de um único arquivo


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

"make junta paginas"

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

Mais informações:
Shell Script
Wikipedia

Um comentário: