• Home
  • keyboard_arrow_right Arquivo
  • keyboard_arrow_right Blog
  • keyboard_arrow_right Usando Bash Scripts

Usando Bash Scripts

813 Resultados / Página 1 de 46


Background

Um dos motivos pelo qual eu uso Linux no meu dia a dia, é que ele, ao contrario do que o tato pensa, agiliza minhas tarefas, e aqui eu vou dar um exemplo do poder do linux.

Vamos utilizar o bash para converter imagens tiradas com uma câmera digital para o formato 648×486 e tambem gerar uma versão menor 140×105 para usarmos como snapshot em uma pagina html :D.

Bom, primeiro, precisamos de um diretorio para colocar as fotos originais, que normalmente são do tamanho 2592×1944. O diretório escolhido é origin. criamos os diretórios para as fotos que serão colocadas no site, e para os snapshots, fotos e snaps respectivamente

>mkdir origin
>mkdir fotos
>mkdir snaps

agora, precisamos gerar um arquivo de script gera_html.sh que sera executado para gerar as fotos, e dar-lhe permissão de execução.

>chmod u=u+x gera_html.sh

Agora vamos fazer um loop de for que percorrera todos os arquivos da pasta origin gerando copias das imagens na pasta fotos, mas convertendo as fotos para 648×486, já que este parece ser um tamanho adequado para fotos que devem viajar pela rede. Observe que o for utiliza a lista gerada pela expansão origin/*, e que no começo do arquivo devemos colocar a #!/bin/bash para indicar que este é um bash script.

#!/bin/bash
CONT=1;for FILE in origin/*; do
convert $FILE -resize 648x486
fotos/foto-$CONT.jpg
CONT=$[$CONT+1]
done

Observe que as fotos serao geradas com o nome foto-1.jpg foto-2.jpg … foto-10.jpg, de forma que se quisermos ter foto-0001.jpg, temos que gerar o texto atraves de uma função

function cont_to_var
{
AUX=$1
for NUM in 1000 100 10; do
if [ $AUX -lt $NUM ]; then
AUX=0$AUX;
fi
done
echo $AUX
}

Atribuimos isto a uma variavel utilizando os recursos do bash, para entao podermos gerar nossas imagens. Podemos aproveitar o loop e ja gerarmos as fotos e os snapshots 😀

VAR=$(cont_to_var $CONT)
convert $FILE -resize 648x486
fotos/foto-$VAR.jpg
convert $FILE -resize 140x105
snaps/snap-$VAR.jpg
CONT=$[$CONT+1]

Agora basta apenas inserir a parte do codigo que gera a pagina html. primeiramente, preparamos uma pagina com a base, e a pagina com o final do arquivo, e entao utilzamos o while para finalizar o processo. Notamos que ao final do for, temos $CONT carregando o numero de fotos +1. Utilizaremos então o while com a condição [ $CONT -le $MAX ] que equivale a dizer while (cont <= max), e para cada iteração iremos inserir o tag com a imagem, redirecionando a saida para nosso arquivo fotos.html

MAX=$CONT
CONT=1
PAGE=fotos.html
COL=5

cat base.html > $PAGE
while [ $CONT -lt $MAX ]; do
check_linha_start $CONT >> $PAGE
print_img $CONT >> $PAGE
CONT=$[$CONT+1]
check_linha_end $CONT >> $PAGE
done
cat tail.html >> $PAGE

Observe que hove um redirecionamento da saida do cat é feito utilizando os operadores > e >>, cuja a diferença é que > apaga o arquivo antes de escrever o novo dado. A função check_linha_start checa a nescessidade de se iniciar uma linha da tabela (que deve conter 5 colunas), enquanto check_linha_end checa a nescessidade de se finalizar a linha

function check_linha_start
{
I=$[$1-1]
if (( ! $[$I%$COL] )); then
echo "<tr>"
fi
}
function check_linha_end
{
I=$[$1-1]
if (( (! $[$I%$COL]) || ($1==$MAX) )); then
echo "echo "</tr>"
fi
}

Para imprimir a imagem, utilizamos a função print_img

function print_img
{
IMG=fotos/foto-$(cont_to_var $1).jpg
SNAP=snaps/snap-$(cont_to_var $1).jpg
echo "<td><a
href="$IMG" target="_BLANK">"
echo "<img src="$SNAP">"
echo "</a></td>"
}

Os arquivos base.html e tail.html apenas abrem e fecham os tags basicos do html, mas poder ser utilizado para gerar códigos mais complexos com css, etc 😀

<html>
<body>
<table>

Agora basta apenas rodar o script e ser feliz 😀

Se você quiser, voce pode baixar o meu script aqui


TOP 10

Toda sexta-feira um novo episódio!
Ouça em todas as plataformas
Background

Estúdios de cinema vivem sempre apostando que seus filmes terão gente interessada o suficiente para que as produções tenham lucro. Afinal, é devastador injetar milhões de dinheiros em algo só para ter prejuízo.

Só que nem sempre isso dá certo. Aliás, alguns filmes deram TÃO errado que praticamente quebraram seus estúdios – ou, em alguns casos, quebraram mesmo! Neste TOP 10, vamos escalar os maiores flops cinematográficos de todos os tempos!

CRÉDITO IMAGEM DA CAPA
Fotografia por Jp Valery e Martin Jernberg

Gostou do episódio? Mande um comentário em áudio pelo WhatsApp +55 11 98765-6950. Seu comentário poderá aparecer no podcast Serviço de Atendimento à Cavalaria (SAC).


mande seu comentário em áudio