É possível copiar dados binários contendo um caractere NUL para a área de transferência do X?

4

Se eu fizer uma das seguintes opções:

printf 'a
printf 'a%pre%b' | xsel
printf 'a%pre%b' | xsel -b
printf 'a%pre%b' | xclip
printf 'a%pre%b' | xclip -selection c
b' | xsel printf 'a%pre%b' | xsel -b printf 'a%pre%b' | xclip printf 'a%pre%b' | xclip -selection c

e, em seguida, cole da seleção correspondente (PRIMARY ou CLIPBOARD) em um dos itens:

  • textareas do navegador
  • editores de texto
  • pipe como em xsel | hexdump

somente a obtém a saída.

Então, é possível armazenar dados binários na área de transferência e colá-los depois? Como?

Eu originalmente queria fazer isso para salvar imagens na área de transferência, o que também resolveria:

1 resposta

2

A área de transferência contém a string completa:

$ printf 'a
$ printf 'a%pre%b' | hexdump -c
0000000   a  %pre%   b                                                    
0000003
$ printf 'a%pre%b' | xclip && xclip -out | hexdump -c
0000000   a  %pre%   b                                                    
0000003
b' | hexdump -c 0000000 a %pre% b 0000003 $ printf 'a%pre%b' | xclip && xclip -out | hexdump -c 0000000 a %pre% b 0000003

Então, xclip -out irá imprimir a entrada na íntegra, caracteres NUL e tudo. Muito provavelmente, a integração da área de transferência da área de trabalho interrompe a saída em caracteres NUL. Um problema óbvio com a colagem de caracteres NUL é que ele não seria visível para o usuário e, como tal, provavelmente causaria um comportamento inesperado. Sem mencionar que mesmo o software popular pode deixar de manipular corretamente os caracteres NUL .

    
por 13.08.2014 / 15:02