Shell Script Snippets
13/01/2018
Alguns snippets que podem ser úteis.
Arrays
Contando itens de um array:
echo ${#array[@]}
Listagem de diretórios para um array:
i=0
while read linha
do
arquivos[$i]="$linha"
((i++))
done < <(ls -1 $dir)
echo ${arquivos[0]}
Descobrindo um índice de array com base em seu valor:
array=(vermelho laranja verde)
valor='verde'
for i in "${!array[@]}"; do
if [[ "${array[$i]}" = "${valor}" ]]; then
echo "${i}";
fi
done
Baixando todas as imagens de um site com o wget
wget -r -c -nd -p -H -e robots=off --user-agent="Mozilla/5.0 (Macintosh; Intel Mac OS X 10.8; rv:21.0) Gecko/20100101 Firefox/21.0" -A jpg,png https://site.com/media/
Removendo todos os comentários de um arquivo
sed -e 's/#.*$//' -e '/^$/d' arquivo
Veja essa e outras dicas sobre sed em operações com sed.
Pegando um arquivo aleatório de um diretório
ls /dir | shuf -n 1
# ou, um modo mais rápido
find /dir -type f | shuf -n 1
Redimensionando todas as imagens de um diretório
find . -maxdepth 1 -iname "*.jpg" | xargs -L1 -I{} convert -resize 30% "{}" _resized/"{}"
Pode se usar porcentagem ou tamanho, ex: 200x100
Pegando valores dentro de aspas duplas (“)
grep -o '".*"' arquivo | sed 's/"//g'
Passando parametros no formato –parametro=valor
for a in $@; do
pa=$(echo $a | awk -F= '{print $1}')
va=$(echo $a | awk -F= '{print $2}')
case $pa in
-u | --usuario) usuario=$va ;;
-s | --senha) senha=$va ;;
-b | --banco) banco=$va ;;
-c | --caminho) caminho=$va ;;
*) ajuda ;;
esac
done
Checando se uma variável contem algum valor
[ -z $var ] && echo '$var não existe!'
Forte Abraço..
--
Lucas Saliés Brum
a.k.a. sistematico