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

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [shell-script] Ajuda em script para separar arquivo binario de scrip


From: Tiago Barcellos Peczenyj
Subject: Re: [shell-script] Ajuda em script para separar arquivo binario de script
Date: Tue, 10 Jul 2007 22:41:44 -0300

Salviano, alem da dica do mop, da uma olhada se esse one-liner funciona no
teu caso:

#!/bin/bash
AWKCMD='/Bourne/{print $1}'
SEDCMD='1s|/sh|/bash|;2aexport LC_ALL=C;'
find /usr/local/bin | xargs file | awk -F ':' "${AWKCMD}" | xargs sed
-i.old"${SEDCMD}"

Vamos destrinchar esse one liner:

1) o find imprime o caminho completo de todos os arquivos.
2) o xargs manda a tropa para o comando file, que imprime o resultado de
todos (util pra evitar "arg list too long")
3) o awk faz uso da variavel AWKCMD, que foi a forma que eu encontrei pra
deixar a linha legivel sem apelar para a continuação na linha segunda via
'\' -- acho complicado as vezes. toda vez que for encontrada a palavra
Bourne, o primeiro campo separado por : sera impresso!
4) mando pro xargs de novo. ele vai enviar a tropa toda pro sed -- este sed
vai aplicar as modificações contidos em SEDCMD que, por sua vez, ira salvar
nos proprios arquivos (opção -i) e um arquivo de mesmo nome mas com extensão
.old no final sera gerado com a versão antiga do script

ufa... 4 pipes! podia ser mais, ou menos, enfim...

aqui segue o one line completo, acho que não é tão ilegivel assim.

find /usr/local/bin | xargs file | awk -F ':' ''/Bourne/{print $1}'' | xargs
sed -i.old '1s|/sh|/bash|;2aexport LC_ALL=C;'

[]´s Tiago

On 7/10/07, Salviano A. Leão <address@hidden> wrote:
>
>   Olá, a todos estou com dificuldades em um
> script muito simples, entretanto, não localizei o
> problema.
>
> Tenho no diretorio /usr/locl/bin  os seguites arquivos:
>
> -rwxr-xr-x 1 salviano salviano  1597856 2007-07-10 13:21 codecov
> -rwxr-xr-x 1 salviano salviano 22143225 2007-07-10 13:21 fortcom
> -rwxr-xr-x 1 salviano salviano   141997 2007-07-10 13:22 fpp
> -rwxr-xr-x 1 salviano salviano     1116 2007-07-10 13:22 ifc
> -rwxr-xr-x 1 salviano salviano   621786 2007-07-10 13:22 ifcbin
> -rwxr-xr-x 1 salviano salviano        0 2007-07-10 13:22 ifc.cfg
> -rwxr-xr-x 1 salviano salviano     1124 2007-07-10 13:22 ifort
> -rwxr-xr-x 1 salviano salviano  1003416 2007-07-10 13:22 ifortbin
> -rwxr-xr-x 1 salviano salviano        0 2007-07-10 13:22 ifort.cfg
> -rwxr-xr-x 1 salviano salviano      995 2007-07-10 13:22 ifortvars.csh
> -rwxr-xr-x 1 salviano salviano     1183 2007-07-10 13:22 ifortvars.sh
> -rwxr-xr-x 1 salviano salviano   231577 2007-07-10 13:22 map_opts
> -rwxr-xr-x 1 salviano salviano    80480 2007-07-10 13:22 profdcg
> -rwxr-xr-x 1 salviano salviano   126997 2007-07-10 13:22 profmerge
> -rwxr-xr-x 1 salviano salviano    99098 2007-07-10 13:22 proforder
> -rwxr-xr-x 1 salviano salviano     1093 2007-07-10 13:22 profrun
> -rwxr-xr-x 1 salviano salviano   741543 2007-07-10 13:22 profrun.bin
> -rwxr-xr-x 1 salviano salviano  1785822 2007-07-10 13:22 pronto_tool
> -rwxr-xr-x 1 salviano salviano   657582 2007-07-10 13:22 tselect
> -rwxr-xr-x 1 salviano salviano    15461 2007-07-10 13:22 uninstall.sh
> -rwxr-xr-x 1 salviano salviano    73227 2007-07-10 13:22 xiar
> -rwxr-xr-x 1 salviano salviano   120443 2007-07-10 13:22 xild
>
> Gostaria de fazer alumas modificacoes somente nos scripts  e estou
> usando os seguinte script para selecionar somente os scripts:
>
> #!/bin/sh
>    for arq in `ls /usr/local/bin/*`
>    do
>       tipo="`file ${arq} | cut -f2 -d : | cut -f2 -d " "`"
>       if [ "$tipo"=="Bourne" ]
>       then
>          echo "${arq} eh do tipo ${tipo} sera movido"
>          mv ${arq} ${arq}.backup
>          cat ${arq}.backup | sed -e 's-\#\!/bin/sh-\#\!/bin/bash-' -e '2a
> export LC_ALL=C;' > ${arq}
>          chmod -c 0755 ${arq}
>          rm -f ${arq}.backup
>       fi
>    done
>
> Mas o que ocorre eh que ele ignora o if. Nao entendo porque
> ele esta ignorando o if. eh como se todos os arquivos  fossem
> scripts.
> A variável $tipo retorna Bourne ou ELF, mas o if não está funcionando,
> já dei uma olhada na estrutura mas não descobri porque ele não funciona.
>
> Se alguém poder me ajudar, agradeço.
>
> Salviano
>  
>



-- 
Tiago B Peczenyj
Linux User #405772

http://peczenyj.blogspot.com/


[As partes desta mensagem que não continham texto foram removidas]



reply via email to

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