O Shell (ou concha) envolve o kernel e te dá a possibilidade de interagir com o sistema através de comandos. Saber manusear tais comandos e agrupá-los para resolver um problema proposto é o que o Shell Script te proporciona.
Dessa forma, você pode escrever o roteiro (sequência de comandos) e construir uma cena (ou tarefa) a ser executada pelo seu computador. Interessante, não?
Na prática eu posso, por exemplo, diminuir o tamanho de fotos JPEG automaticamente em um diretório, evitando trabalho manual em dezenas de fotos. Legal, né? E como eu faria isso?
É simples, através de um shell script que eu fiz quando precisei realizar esta tarefa cotidiana de diminuir fotos. O segredo está em executar o utilitário convert (da ImageMagick) em cada uma das imagens no diretório e diminuir sua qualidade!
O convert pode ser instalado através do pacote imagemagick, que é um conjunto de utilitários para criar e editar imagens.
No Ubuntu, basta:
O script segue abaixo:
Vale lembrar que ele pode ser melhorado, mas fica aí a dica pra facilitar a vida.
Dessa forma, você pode escrever o roteiro (sequência de comandos) e construir uma cena (ou tarefa) a ser executada pelo seu computador. Interessante, não?
Na prática eu posso, por exemplo, diminuir o tamanho de fotos JPEG automaticamente em um diretório, evitando trabalho manual em dezenas de fotos. Legal, né? E como eu faria isso?
É simples, através de um shell script que eu fiz quando precisei realizar esta tarefa cotidiana de diminuir fotos. O segredo está em executar o utilitário convert (da ImageMagick) em cada uma das imagens no diretório e diminuir sua qualidade!
O convert pode ser instalado através do pacote imagemagick, que é um conjunto de utilitários para criar e editar imagens.
No Ubuntu, basta:
sudo apt-get install imagemagickpara instalar o conjunto de pacotes, incluindo o convert.
O script segue abaixo:
#!/bin/bash
# Definindo o diretório onde as fotos estão.
if [ $# -eq 1 ]; then
DIR=$1
else
DIR='.'
fi
# Diretório destino das fotos diminuidas.
DEST="$DIR/FOTOS_DIMINUIDAS"
echo
echo "As novas imagens serão enviadas para $DEST"
echo "Pressione qualquer tecla para continuar ou CTRL^C para sair"
read
# Cria diretório de destino se ele não existe.
if [ ! -e $DEST ]; then
mkdir $DEST
fi
echo
echo "Tratando fotos .jpg ou .JPG em $DIR"
echo
# Executa rotina para cada foto no diretório
for FOTO in `ls ${DIR}/*.{jpg,JPG} 2> /dev/null`
do
# Foto que será tratada.
ENTRADA="${DIR}/`basename ${FOTO}`"
# Foto que será gerada.
SAIDA="${DEST}/`basename ${FOTO}`"
# Verificando se a foto a ser gerada já existe.
if [ ! -e ${SAIDA} ]; then
echo "gerando ${SAIDA}"
# Comando para converter ou diminuir as fotos
convert -quality 90 $ENTRADA $SAIDA
else
echo "Não foi possível converter ${FOTO}, pois ela já existe"
echo "Pressione qualquer tecla para continuar ou CTRL^C para sair"
read
fi
done
Vale lembrar que ele pode ser melhorado, mas fica aí a dica pra facilitar a vida.