shell-script-pt
[Top][All Lists]
Advanced

[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











reply via email to

[Prev in Thread] Current Thread [Next in Thread]