[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: [shell-script] Espaços em underline
From: |
Emerson Domingues Souto |
Subject: |
Re: [shell-script] Espaços em underline |
Date: |
Fri, 15 Apr 2005 12:18:29 -0300 |
Bem, o seu script é um pouco grande, mas vou dar apenas algumas dicas:
1) vc pode substituir comandos como:
chown `echo $own`.`echo $owngrp` `echo $item`
por:
chown $own.$owngrp $item
ou seja, não precisa encher linguica colocando `echo`
a regra é facilitar o máximo possível pro código ficar enxuto e entendicel
2) se vc quer alterar as permissoes e donos de um monte de arquivos, pode
usar o find mesclado com chown e com chmod, isso inclusive resolve o
problema de arquivos com espaço no nome
é muito simples, faça assim:
find . -exec chown $own.$owngrp {} \;
Pronto, espero q isto resolva o problema de arquivos com espacos
e por favor se usar o find, nao esqueca de usar as chaves, barra invertida e
ponto-e-virgula no final, faz parte da sintaxe.
Obs: o find vai entrar em todos os subdiretorios, se vc nao quiser isso, use
o find com a opção: -prune, ou seja, o comando fica assim:
find . -prune -exec chown $own.$owngrp {} \;
3) se vc quer mesmo assim usar o script todo, apenas resolvendo o problema
do espaço em branco, faça apenas o seguinte:
troque os comandos (a regra vale pra chown e pra chmod):
chown `echo $own`.`echo $owngrp` `echo $item`
por:
find . -name $item -prube -exec chown $own.$owngrp {} \;
pronto, problema resolvido
dica: procure deixar os scripts mais enxutos
Att,
Emerson
----- Original Message -----
From: "Douglas Tabajara" <address@hidden>
To: <address@hidden>
Sent: Friday, April 15, 2005 11:34 AM
Subject: [shell-script] Espaços em underline
Saudações, lista!!!!
Eu estou criando um script para facilitar o trabalho de definir
permissões complexas de acesso a arquivos e pastas.
O script funciona perfeitamente bem com arquivos cujos nomes não
possuem espaços, tipo teste.txt, guia_de_clientes.swx ou financeiro.
Este último um diretório.
Quando os nomes são compostos mais de um nome, tipo material
tecnico.abw, não funciona...
Se alguém tiver uma idéia eu fico agradecido!!
Muito obrigado!!
Segue abaixo o script (que na verdade está apenas em um estágio inicial...):
$cat setperm.sh
#!/bin/bash
# Script Shell para setar permissoes de acesso v0.1 (13/04/05)
# v0.2 (13/04)
# v0.3 (14/04)
clear
cd $1
diratual=`pwd`
dir=`ls -l | grep ^d | awk '{print $8" "$9" "$10}'`
arq=`ls -l | grep ^- | awk '{print $8" "$9" "$10}'`
echo "Bem vindo ao Permission Maker v0.4 (14/04/05)"
echo
echo "Voce esta no diretorioo `echo $diratual`"
echo
echo "Os arquivos e diretorios aqui contidos sao:"
sleep 5
echo "Diretorios:"
echo
for i in `echo $dir`
do
echo $i
done
sleep 2
clear
echo "Arquivos:"
echo
for ii in `echo $arq`
do
echo $ii
done
sleep 2
clear
echo "Deseja verificar as permissoes atuais (s para sim e qualquer
caractere para nao)??"
read opt
echo
if [ $opt = "s" ]
then
ls -l
else
echo "OK..."
fi
echo
echo
echo "Deseja que todos os arquivos e diretorios do correntes contenham
as mesmas permissoes?? (s/n)"
read opt1
case "$opt1"
in
"s") clear
echo "Qual o dono?"
read own
echo
echo "Qual o grupo do dono?"
read owngrp
echo
echo "Qual tipo de permissoes?"
read permopt
echo
clear
echo "Dono:"
echo $own
echo
echo "Gupo do dono:"
echo $owngrp
echo
echo "Permissoes:"
echo $permopt
echo
echo "As informacoes acima estao corretas???(s para
sim e qualquer caractere para nao)"
read certo
if [ $certo = "s" ]
then
chown `echo $own`.`echo $owngrp` *
chmod `echo $permopt` *
ls -l
else
echo "Ok. Vamos recomecar..."
exit 1
fi
;;
"n") clear
echo "Os diretorios e arquivos contidos no diretorio
corrente serão listados"
echo "e as suas permissoes efetuadas uma a uma."
echo "Dependendo do numero de itens a serem
trabalhados, isso pode demorar."
echo "Deseja continuar agora?? (s/n)"
read continuar
if [ $continuar = "s" ]
then
clear
echo "OK! Vamos la!!!"
for item in `ls`
do
echo "Qual o dono?"
read own
echo
echo "Qual o grupo do dono?"
read owngrp
echo
echo "Qual tipo de permissoes?"
read permopt
echo
clear
echo "Dono:"
echo $own
echo
echo "Gupo do dono:"
echo $owngrp
echo
echo "Permissoes:"
echo $permopt
echo
echo "As informacoes acima estao
corretas???(s para sim e qualquer caractere para nao)"
read certo
if [ $certo = "s" ]
then
chown `echo $own`.`echo
$owngrp` `echo $item`
chmod `echo $permopt` `echo $item`
ls -l `echo $item`
else
echo "Bem, entao vamos recomecar..."
exit 1
fi
done
else
echo "OK! Obrigado por utilizar o JPM"
exit 1
fi
;;
*) echo "Uso incorreto..."
echo "s para sim e n para nao."
exit 1
;;
esac
exit
--
=====
"O único homem que está isento de erros, é aquele que não arrisca acertar."
- Albert Einstein
"O Mais Sábio dos Homens é aquele que sabe que nada sabe!!"
- Sócrates
"A alegria não está nas coisas: está em nós! Acredito que ter as
coisas que queremos
pode até nos trazer uma alegria momentânea, mas ser o que queremos ser,
fazer o que sonhamos é que nos traz a verdadeira alegria!
- Göethe
---------------------------------------------------------------------
Esta lista não admite a abordagem de outras liguagens de programação, como
perl, C etc. Quem insistir em não seguir esta regra será moderado sem prévio
aviso.
---------------------------------------------------------------------
Sair da lista: address@hidden
---------------------------------------------------------------------
Esta lista é moderada de acordo com o previsto em
http://www.listas-discussao.cjb.net
---------------------------------------------------------------------
Links do Yahoo! Grupos