[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: Zipando arquivo: KDE servicemenus + script + zip
From: |
zunixbr |
Subject: |
Re: Zipando arquivo: KDE servicemenus + script + zip |
Date: |
Fri, 14 May 2004 18:10:11 -0000 |
User-agent: |
eGroups-EW/0.82 |
"Zipar arquivos" --getsavefilename $1.zip .zip`
if ["$nome" = ""]
then
exit 0
fi
date >>/tmp/zipsh.log
echo '$@='"$@" >>/tmp/zipsh.log
for infile in $@; do
echo "zip -r $nome $(basename $infile) /dev/null 2>&1"
>>/tmp/zipsh.log
done;
--------------------------------------------------
-------------------------------------------------------
Desta vez (via terminal) o nome da pasta aparece completo na caixa
de texto, para salvar; no filtro aparece apenas a extensão .zip,
como deve ser. Porém nada de zipar. O Log registra:
$@=guia II
zip -r /mnt/hda7/guia IV.zip guia /dev/null 2>&1
zip -r /mnt/hda7/guia IV.zip II /dev/null 2>&1
==================================================
======================================================
Dando continuidade, usando o método 'tentativa erro' obtive alguns
resultados estranhos para mim:
Qdo insiro a modificação proposta: echo "$@"|while read infile no
lugar de for infile in $@, deixando o script assim;
--------------------------------------------------
--------------------------------------------------
-------------------------------------
!/bin/bash
#Autor: Kevin Krammer (address@hidden)
#Alterações por Zip Megabyte
cd $(dirname $1)
kdialog --dontagain zipinfo:zipmsg --msgbox "Você pode selecionar
um
ou mais arquivos e/ou diretórios mantendo pressionada a tecla
ctrl,
colocando todos num único arquivo zip. Neste caso, nome do
primeiro
arquivo, em ordem alfabética de sua seleção, será
pré-definido na
caixa de texto."
$ cat ~/.kde/share/config/zipinfo
[Notification Messages]
zipmsg=false
IFS="
"
nome=`kdialog --caption "Zipar arquivos" --getsavefilename
$1.zip .zip`
if ["$nome" = ""]
then
exit 0
fi
echo "$@"|while read infile; do
zip -r $nome $(basename $infile) /dev/null 2>&1
done;
--------------------------------------------------
--------------------------------------------------
-----------------------------------
Qdo digito no konsole:
zipfiles guia II
aparecem as seguintes mensagens na tela:
/usr/bin/zipfiles: line 1: !/bin/bash: No such file or directory
/usr/bin/zipfiles: line 8: $: command not found
/usr/bin/zipfiles: line 9: [Notification: command not found
/usr/bin/zipfiles: line 14: [/mnt/hda7/teste: No such file or
directory
zip warning: ignoring special file: /dev/null
Abre-se a tela de aviso, a tela para se salvar com apenas o nome
guia.zip, eu mudei o nome para guia IV e o incrível é que zipou
adding: guia II/ (stored 0%)
adding: guia II/ch-inter.htm (deflated 68%)
adding: guia II/ch-x11.htm (deflated 68%)
adding: guia II/ch-impr.htm (deflated 67%)
adding: guia II/ch-kern.htm (deflated 71%)
adding: guia II/ch-run.htm (deflated 70%)
E, ao fim, lá estava a pasta guia IV, zipada !
Porém ao realizar o mesmo, mas clicando na pasta e pedindo zipar,
via servicemenus, nada !
--- Em address@hidden, "opa" <opa@h...> escreveu
> Ou sua mensagem veio com problemas ou o IFS não está correto.
Seu
script só faz
> isso, não se preocupe em registrar o OIFS; esse IFS só vale
nele.
> IFS="
> "
> É assim mesmo, termina com aspas sózinha na segunda linha.
Rode o
script. E aí?
> Não funcionou? Bem, então:
>
> Devido às circunstâncias, acho que você deve dividir a
solução do
seu
> problema em duas partes, ao bom estilo JE citado ontem por um
colega.
>
> Primeiro, faça a sua linha:
>
> zip -r $nome $(basename $infile) /dev/null 2>&1
>
> ou como ficar depois de alterada, funcionar corretamente e, como
você citou
> pouca experiência, sabendo como ela pode ou não funcionar.
Experimente,
> ganhe firmeza antes de continuar. Isso você ensaia em um xterm.
>
> Depois, você ataca a formação dessa linha, ou seja, o script
proprimente dito.
> Considero que seria interessante você enviar a linha formada
para
um terminal
> ou um arquivo de log, para examinar com calma o que está
chegando,
afinal agora
> você já sabe o que pode/precisa chegar.
>
> Acho que colocar algumas linhas extras pode ajudar nos testes.
> ===
> Antes do "for":
> date >>/tmp/zipsh.log
> echo '$@='"$@" >>/tmp/zipsh.log
>
> Alterar a linha dentro do for para, ou o que você definiu
inicialmente (acima):
> echo "zip -r $nome $(basename $infile) /dev/null 2>&1"
>>/tmp/zipsh.log
>
> Depois do for:
> echo >>/tmp/zipsh.log
> ===
>
> Ao chamar o script pode tentar em outro xterm:
>
> tail -f /tmp/zipsh.log
>
> acho que é isso, para monitorar permanentemente o que vai
surgindo
no arquivo.
> Procure começar com listas pequenas para facilitar a
visualização
do problema.
>
> Dependendo do monitorzão que você usa, e/ou do tamanho das
suas
janelas, não vai
> nem precisar chavear entre janelas. Bem eu não lembro mais do
KDE,
se usasse até
> poderia contribuir de forma mais específica, mas imagino que
possa
trabalhar
> fácil e confortavelmente assim.
>
> Se a coisa continuar complicada pode tentar um:
> grep "seu arquivo problema" /tmp/zipsh.log|od -b
> só para ver o que está separando os arquivos/diretórios na
sua
variável
> obs.: seu IFS default é igual ao meu :)
>
> Talvez o problema esteja antes desse ponto, ou até na chamada do
script, mas
> usando esta técnica em pontos anteriores você deverá
conseguir
isolar o
> problema.
>
> Independentemente das minhas sugestões, espero que outros
colegas
possam
> contribuir, talvez de forma bem mais eficiente.
>
> Acho que posso generalizar, ficamos à disposição! :)