Можно ли скопировать двоичные данные, содержащие символ NUL, в буфер обмена X?

Можно ли скопировать двоичные данные, содержащие символ NUL, в буфер обмена X?

Если я сделаю одно из следующего:

printf 'a\0b' | xsel
printf 'a\0b' | xsel -b
printf 'a\0b' | xclip
printf 'a\0b' | xclip -selection c

а затем вставьте из соответствующего выделения (ОСНОВНОГО или БУФЕРА ОБМЕНА) в один из следующих вариантов:

  • текстовые области браузера
  • текстовые редакторы
  • труба как вxsel | hexdump

получает только aвывод.

Итак, возможно ли сохранить двоичные данные в буфере обмена, а затем вставить их позже? Как?

Первоначально я хотел сделать это, чтобы сохранять изображения в буфер обмена, что также решило бы:

решение1

Буфер обменаделаетсодержат полную строку:

$ printf 'a\0b' | hexdump -c
0000000   a  \0   b                                                    
0000003
$ printf 'a\0b' | xclip && xclip -out | hexdump -c
0000000   a  \0   b                                                    
0000003

Такxclip -out воляпечатать ввод дословно, символы NUL и все. Скорее всего, интеграция буфера обмена рабочего стола останавливает вывод на символах NUL. Одна очевидная проблема со вставкой символов NUL заключается в том, что это не будет видно пользователю, и, как таковое, вероятно, вызовет неожиданное поведение. Не говоря уже о том, что дажепопулярное программное обеспечение может некорректно обрабатывать символы NUL.

Связанный контент