% pasta de papel | perl -e '...'
Você está atingindo o comprimento máximo da linha para o tty. Se você mudar o modo tty fora da linha, funcionará.
Mas o pbpaste é realmente o que você quer.
Eu escrevi um pequeno script em perl que invoco da seguinte forma:
perl -pe'...' <a
Eu queria copiar o conteúdo do arquivo de entrada 'a' de um navegador da web (uma entrada de blog completa do wordpress, para ser exato). A parte da cópia funciona perfeitamente, o conteúdo completo aparece no ClipMenu. Mas quando tento colar em um arquivo usando cat e redirecionar:
cat >a
Emite exatamente 1024 caracteres, depois pára de aceitar entrada - somente o CTRL-C pode ajudar. Eu tentei colar apenas 1023 bytes / chars, e isso funciona, depois de pressionar enter, eu poderia inseri-lo no arquivo sem problemas. Mas, se eu inserisse 1024 caracteres em uma única linha, não havia como fazer outra coisa além de CTRL-C.
Eu tentei iTerm e Terminal.app, ambos mostram exatamente o mesmo comportamento. Eu tentei bash de macports e / bin, com exatamente os mesmos resultados. Eu até tentei dd:
dd bs=1M of=a
Para o mesmo resultado exato. Nada parece ajudar.
Eu estou sem noção - por que isso acontece? E como eu poderia copiar e colar em um arquivo no Mac OS X facilmente, e de uma forma que eu possa ter certeza de que o conteúdo não é alterado de alguma forma?
Cada unix que eu já usei tem um limite no comprimento da entrada do modo cozido, embora provavelmente seja diferente do OS para OS. É por isso que você só pode digitar muito em uma linha quando faz um gato > a. Os buffers do SO são inseridos a partir do TTY para que você possa fazer a edição (por exemplo, retroceder sobre o texto e alterá-lo) antes de enviá-lo para o aplicativo (cat, nesse caso). O sistema operacional aloca um buffer de tamanho fixo para isso e você está chegando ao limite. Sua melhor opção é usar um programa interativo para gravar o arquivo. Por exemplo, você poderia executar o vi e digitar o
:set paste
comando para desativar o recuo automático. Pressione "i" para entrar no modo de inserção, cole seu código, pressione "escape" e execute:
:w a
:q
Para salvar o arquivo e sair.