我正在应对一项挑战通过网络,我甚至无法通过第一个,因为我无法将任意字节复制到 OS X 剪贴板。我尝试使用此命令将数据复制到我的剪贴板:
echo -ne "AAAAAAAAAAAAAAAAAAAA\xef\xbe\xad\xde" | pbcopy
然后,我运行pbpaste | xxd
检查它是否复制正确:
我期望得到这个输出:
00000000: 4141 4141 4141 4141 4141 4141 4141 4141 AAAAAAAAAAAAAAAA
00000010: 4141 4141 efbe adde AAAA....
但实际上,复制的内容如下:
00000000: 4141 4141 4141 4141 4141 4141 4141 4141 AAAAAAAAAAAAAAAA
00000010: 4141 4141 c394 c3a6 e289 a0ef ac81 AAAA..........
我尝试使用echo -ne "AAAAAAAAAAAAAAAAAAAA\xef\xbe\xad\xde" | LANG=C pbcopy
、LANG=C pbpaste | xxd
和pbpaste -Prefer txt | xxd
,但这些都不起作用。如何让 OS X 不干扰我复制的内容?
编辑
事实证明问题出在 上pbpaste
。我能够使用 pbpaste 获得正确的输出LANG=MACROMAN pbpaste
,但我仍然需要一种不使用命令行的方式来做到这一点。所以我需要一种使用 粘贴其他编码的方法cmd+v
。
编辑2
事实证明问题出在 iTerm 2 的字符编码设置上。我将其更改为Western (Mac OS Roman)
,然后再次尝试,使用cmd+v
粘贴。我得到了这个输出,非常接近:
00000000: 4141 4141 4141 4141 4141 4141 4141 4141 AAAAAAAAAAAAAAAA
00000010: 4141 4141 efbe ad AAAA...
我现在只缺少一个字节!听起来我需要找到一种编码,其中所有可能的字节序列都有效。我以为 Mac OS Roman 就是这种情况,但这里似乎不是这样。
答案1
太接近了!我检查了一下:
echo -ne "AAAAAAAAAAAAAAAAAAAA\xef\xbe\xad\xde" | xxd
你试过了吗:
echo -ne "AAAAAAAAAAAAAAAAAAAA\xef\xbe\xad\xde" | pbcopy
LANG=C pbpaste | xxd
或者
echo -ne "AAAAAAAAAAAAAAAAAAAA\xef\xbe\xad\xde" | pbcopy ; LANG=C pbpaste | xxd
所有这些都可以在 OS X El Capitan 和 bash 的终端上运行。我得到了:
0000000: 4141 4141 4141 4141 4141 4141 4141 4141 AAAAAAAAAAAAAAAA
0000010: 4141 4141 efbe adde AAAA....