2008/11/22 Ivan lopes <[EMAIL PROTECTED]> > ** espero que essa brincadeira seja util para os iniciantes em shel > e quem tiver um legal, pode mandar tb! > ** eu acho que em awk dah para fazer isso em uma linha ...mas eu nao sei > fazer! > > > > ** > eu sou preguicoso e nao gosto de somar! por isso ... esse pequeno script > > exemplo de saida: > $ ./cchmod.sh *.mpeg *.c *.sh > -w-r--r-- : 644 : windows_plugin_firefox_test_03.mpeg > -rw-r--r-- : 644 : magnitude.c > -rw-r--r-- : 644 : mouse.c > -rw-r--r-- : 644 : plasma.c > -rwxr-xr-x : 755 : a.sh > -rwxr-xr-x : 755 : calculadora.sh > -rwxr-xr-x : 755 : cchmod.sh > -rw-r--r-- : 644 : changed.sh > -rwxr-xr-x : 755 : funcoeszz-8.9.sh > > cat cchmod.sh > #! /bin/bash > > for f in $*; do > > W=`ls -l $f| sed 's/ .*//'` > echo -n $W > echo -n " : " > > c=1 > for ((i=1;i<${#W};i++));do > > case ${W:$i:1} in > -) let s=s+0;; > r) let s=s+4;; > w) let s=s+2;; > x) let s=s+1;; > esac > > if test $c -eq 3; then > echo -n $s > c=1; s=0 > else > let c++ > fi > done > > echo " : $f" > done > <[EMAIL PROTECTED]>
Ivan, Realmente seu script ficou interessante e didático. Eu sugiro uma mundança no nome do script para melhorar a semântica. Afinal, o chmod (change mode) está relacionado com mudança das permissões. Seu script poderia se chamar lsperms, pois lista os arquivos e mostra, de duas formas, as permissões. Se me permite, fiz uma modificação que encurta um pouco o script, usando a idéia de três blocos de permissão. Veja aí: #! /bin/bash for f in $*; do W=$(ls -l $f | sed 's/ .*//') echo -n "$W : " W=${W:1} for ((i=0;i<3;i++,s=0)); do for ((j=0; j<3; j++)); do case ${W:$((3*i+j)):1} in -) let s=s+0;; r) let s=s+4;; w) let s=s+2;; x) let s=s+1;; esac done echo -n $s done echo " : $f" done -- Fabiano Caixeta Duarte Especialista em Redes de Computadores Linux User #195299 Ribeirão Preto - SP [As partes desta mensagem que não continham texto foram removidas]