Estou trabalhando em um desafio no Over The Wire e não consigo nem superar o primeiro porque não consigo copiar bytes arbitrários para a área de transferência do OS X. Estou tentando usar este comando para copiar os dados para minha área de transferência:
echo -ne "AAAAAAAAAAAAAAAAAAAA\xef\xbe\xad\xde" | pbcopy
Então, corri pbpaste | xxd
para verificar se ele copiava corretamente:
Eu esperava obter esta saída:
00000000: 4141 4141 4141 4141 4141 4141 4141 4141 AAAAAAAAAAAAAAAA
00000010: 4141 4141 efbe adde AAAA....
Mas, em vez disso, foi o que foi copiado:
00000000: 4141 4141 4141 4141 4141 4141 4141 4141 AAAAAAAAAAAAAAAA
00000010: 4141 4141 c394 c3a6 e289 a0ef ac81 AAAA..........
Eu tentei usar echo -ne "AAAAAAAAAAAAAAAAAAAA\xef\xbe\xad\xde" | LANG=C pbcopy
, LANG=C pbpaste | xxd
e pbpaste -Prefer txt | xxd
, mas não daqueles trabalhou tanto. Como faço para que o OS X não mexa no que estou copiando?
Editar
Acontece que o problema está com pbpaste
. Consegui usar o pbpaste para obter a saída correta LANG=MACROMAN pbpaste
, mas ainda preciso de uma maneira de fazer isso sem a linha de comando. Então, eu preciso de uma maneira de colar em outras codificações usando cmd+v
.
Editar 2
Acontece que o problema é a configuração de codificação de caracteres do iTerm 2. Mudei para Western (Mac OS Roman)
e tentei novamente, usando cmd+v
para colar. Eu tenho essa saída, que é muuuito perto:
00000000: 4141 4141 4141 4141 4141 4141 4141 4141 AAAAAAAAAAAAAAAA
00000010: 4141 4141 efbe ad AAAA...
Só falta um byte agora! Parece que preciso encontrar uma codificação em que todas as sequências possíveis de bytes sejam válidas. Eu pensei que esse era o caso do Mac OS Roman, mas não parece ser o caso aqui.
LANG=MANROMAN pbpaste | xxd
para colá-lo. Mas ainda tenho o problema de não poder colar isso onde quiser. Tem que ser parte de um comando ...echo
comandos internos que não suportam as opções -e ou -n. O shell zsh funciona sem a opção -e. As conchas sh e ksh não funcionam. Espera-se que diferentes aplicativos de terminal se comportem de maneira diferente, e é verdade que você não pode colar em nenhum lugar e preservar os caracteres binários. A configuração de codificação em uso afeta como a área de transferência é interpretada. Cada aplicativo possui seus próprios padrões e configurações. Você já tentouprintf "AAAAAAAAAAAAAAAAAAAA\xef\xbe\xad\xde" | xxd
com outras conchas? Teclados não são um problema.pbpaste
para colar a área de transferência. Não é o que faz. Opbpaste
comando copia a área de transferência para a saída padrão. Cole a área de transferência com Editar-> Colar ou Cmd-V. O aplicativo em que você cola determina como interpretar o conteúdo da área de transferência. Se o aplicativo interpretar a área de transferência como UTF-8, os caracteres binários não serão preservados, mas serão traduzidos para Unicode. Se o aplicativo estiver definido para o Mac OS Roman, os caracteres binários serão (geralmente) preservados. Ajudaria se eu mudasse a resposta para explicar nossos comentários?