Skip to content

Instantly share code, notes, and snippets.

@rg3915
Last active August 29, 2015 14:25
Show Gist options
  • Save rg3915/f6fb6f5c3fb6fbf3d96f to your computer and use it in GitHub Desktop.
Save rg3915/f6fb6f5c3fb6fbf3d96f to your computer and use it in GitHub Desktop.

Alguns exemplos de Shell Script

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:

  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
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment