Ontem um amigo aqui do Gene que está dando um curso de banco de dados, precisava criar uma pasta chamada firebird em cada pasta de usuário. Dava mais ou menos umas 50 pastas. Ele ia fazer na mão coitado, daí fiz um script pra ele e funcionou, ele ficou feliz da vida.
Resolvi compartilhar com os leitores do blog. Espero que seja útil.
Tutorial
Primeiramente precisamos obter todas as pastas de /home. Esta é a parte mais fácil, um comando ls resolve. Mas como percorrer estas pastas? Para isso podemos usar o comando for. Fica mais ou menos assim:
Legal né? E se a pasta firebird já existir em algum diretório? Blz, podemos resolver adicionando mais um if, assim:
Resolvi compartilhar com os leitores do blog. Espero que seja útil.
Tutorial
Primeiramente precisamos obter todas as pastas de /home. Esta é a parte mais fácil, um comando ls resolve. Mas como percorrer estas pastas? Para isso podemos usar o comando for. Fica mais ou menos assim:
Em cada iteração do loop a variável arquivo é alimentada com o arquivo corrente. Agora precisamos saber se esse arquivo é realmente um diretório. Para isso podemos usar o comando test, assim:cd /homefor $arquivo in $(ls)dodone
if test -d $aquivo
A opção -d do comando test verifica se determinado arquivo é um diretório. Com isso conseguimos fazer o nosso script, que fica assim:thenfi
cd /home
for numero in $(ls) do
if test -d $numero
then
mkdir $numero/firebird
chown firebird $numero/firebird echo "Criado diretorio: $numero/firebird com permissão para firebird"
fi
done
Legal né? E se a pasta firebird já existir em algum diretório? Blz, podemos resolver adicionando mais um if, assim:
cd /homeO ! no comando test serve como negação, o comando -d além de verificar se é um diretório serve pra gente saber se o diretório realmente existe. Bom essa foi a dica. Espero ter ajudado! T+
for numero in $(ls)
do
if test -d $numero
then
if test ! -d $numero/firebird
then
mkdir $numero/firebird
chown firebird $numero/firebird
echo "Criado diretorio: $numero/firebird com permissão para firebird"
fi
fi
done
Comentários
talvez queira dizer
---
cd /home
for arquivo in $(ls)
do
done
---
arquivo e não $arquivo
e talvez ainda:
---
cd /home
for arquivo in *
do
done
---