如果我執行以下任一操作:
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 字符。