Pular para o conteúdo

Manipular string com caracteres especiais (espaços e acentos)

Responder tópico
  • Denunciar
  • Indicar

1. Manipular string com caracteres especiais (espaços e acentos)

Enviado em 14/04/2011 - 11:52h

Preciso que isto:

miguel@debian:~$ xclip -out -selection clipboard
file:///home/miguel/%C3%81rea%20de%20Trabalho/teste.txt

Torne-se isto:

miguel@debian:~$ xclip -out -selection clipboard
file:///home/miguel/Área\ de\ Trabalho/teste.txt

Ou seja, que a saída do comando "xclip -out -selection clipboard" não troque acentos e espaços por "caracteres especiais".

Sei que é possível fazer isto com o sed.

Mas eu gostaria de algo que fosse bem genérico, já prevendo que o nome do arquivo possa conter espaços e diferentes acentos, já que o nome do arquivo copiado para o clipboard pode variar bastante.

Espero ter sido claro :)

Responder tópico

2. Re: Manipular string com caracteres especiais (espaços e acentos)

Enviado em 14/04/2011 - 13:55h

Acabo de descobrir que não tem nada a ver com o xclip. É problema do XFCE...

No GNOME o saída do comando é normal. No XFCE, truncada...

3. Re: Manipular string com caracteres especiais (espaços e acentos)

Enviado em 14/04/2011 - 22:45h

Era isso que eu estava tentando fazer: http://linuxlike.blogspot.com/2011/04/xfce-como-colar-um-arquivo-na-area-de.html

O grande problema é que o conteúdo do clipboard vem truncado. Isso atrapalha tudo. A causa parece ser o próprio Thunar, já que no Nautilus isso não ocorre.

Postei o melhor resultado que consegui. Se alguém aqui manja de shell script e quiser ajudar a melhorar a dica, fique a vontade.

4. Re: Manipular string com caracteres especiais (espaços e acentos)

Enviado em 15/04/2011 - 08:38h

É disso que você precisa: http://www.shelldorado.com/scripts/cmds/urldecode

Ex.:

$ echo "file:///home/miguel/%C3%81rea%20de%20Trabalho/teste.txt" | sh urldecode
file:///home/miguel/Área de Trabalho/teste.txt

5. RE: SMarcell

Enviado em 15/04/2011 - 11:16h

Sua dica foi perfeita!

Mas ainda estou enfrentando um problema;

miguel@debian:~$ clip=$(xsel -b | ./urldecoder.sh); clip=${clip#*//}; cp `echo $clip | sed ':a;$!N;s/\\r//g;ta; s/ /\\ /g'` /home/miguel/Desktop/
cp: impossível obter estado de "/home/miguel/teste": Arquivo ou diretório não encontrado
cp: impossível obter estado de "3": Arquivo ou diretório não encontrado

Percebam que o caminho para o arquivo aparece corretamente, mas dá erro na hora de copiar:

miguel@debian:~$ clip=$(xsel -b | ./urldecoder.sh); clip=${clip#*//}; echo $clip | sed ':a;$!N;s/\\r//g;ta; s/ /\\ /g'
/home/miguel/teste\ 3
miguel@debian:~$ clip=$(xsel -b | ./urldecoder.sh); clip=${clip#*//}; cp `echo $clip | sed ':a;$!N;s/\\r//g;ta; s/ /\\ /g'` /home/miguel/Desktop/
cp: impossível obter estado de "/home/miguel/teste": Arquivo ou diretório não encontrado
cp: impossível obter estado de "3": Arquivo ou diretório não encontrado

Ou seja, não estou conseguindo lidar com nome de arquivo que contem espaço.

Com certeza estou errando em algum detalhe...

Sugestões? :)


Responder tópico

Responder tópico

Entre na sua conta para responder.

Fazer login para responder