Questão O que é como o pbcopy do OSX para Linux


Em um terminal no OSX eu posso canalizar a saída para o pbcopy e depois ir para um navegador da web e colá-lo. Eu tentei isso no Linux com o xcopy, mas quando eu mudo para o navegador, ele apenas substitui a área de transferência por qualquer que tenha sido a última vez que o navegador foi usado. O que funciona como o pbcopy no Linux?


127


origem


... e para aqueles que não sabem o que é pbcopy, aqui está a man page developer.apple.com/library/mac/#documentation/Darwin/Reference/… - Rob Cowell
Uma ferramenta que pode ser útil com isso é ClipIt (e gerenciadores de clipboard semelhantes). Não só funciona bem no terminal, como também preserva o histórico da área de transferência. Bem útil. - brandizzi


Respostas:


se você tiver o X instalado, você pode tentar o xsel desta maneira:

alias pbcopy='xsel --clipboard --input'
alias pbpaste='xsel --clipboard --output'

ou com xclip:

alias pbcopy='xclip -selection clipboard'
alias pbpaste='xclip -selection clipboard -o'

agora você pode usá-los:

echo 'go to my clipboard' | pbcopy

quando eu não tenho X eu uso a funcionalidade GNU Screen para copiar entre shells abertos em uma sessão usando o teclado

copiar : Ctrl-a -> Esc -> go to wanted position * -> Space (to begin selecting) -> press k to go forward mark text -> Enter

colar : Ctrl-a + ]

* Os movimentos são feitos com o vim, como os atalhos de teclado (j, k, l & m).


148



Obrigado, esta é exatamente a informação que eu queria. Agora eu me pergunto se existe uma maneira que eu poderia fazer com que o Screen deixe eu usar os comandos do Emacs para selecionar a área que eu quero copiar ... - Noah Sussman
xsel: Não é possível abrir o display: (null): ioctl inadequado para o dispositivo - itsazzad
Eu resolvi o problema "Não é possível abrir o display" no Windows instalando Xming e definindo DISPLAY =: 0 - scottgwald


Coloque um script como este chamado pbcopy na sua pasta bin:

#!/bin/bash
xclip -i -sel c -f |xclip -i -sel p

Isso colocará STDIN no buffer de seleção e na área de transferência:

echo Hello world |pbcopy

8



Por que o cat ser necessário? Não vai apenas redirecionar stdin para stdout, neste caso, abuso de gato tão inútil ou estou faltando alguma coisa? - Hultner
Você está certo, parece um abuso de gato inútil :-) - Erik
se você é (como eu) perguntando sobre onde está o misterioso "gato inútil", ele foi removido pela edição. NTS: no caso de comentários confusos, verifique a história ^^ ' - yaitloutou
Como você cola o conteúdo depois de usar isso? Apenas usando xclip -o ? Ou há um jeito melhor? - n1k31t4


Para expandir as soluções de @Erik e @xpixelz; esses dois scripts devem funcionar nas duas plataformas:

pbcopy:

#!/bin/bash
__IS_MAC=${__IS_MAC:-$(test $(uname -s) == "Darwin" && echo 'true')}
if [ -n "${__IS_MAC}" ]; then
  cat | /usr/bin/pbcopy
else
  # copy to selection buffer AND clipboard
  cat | xclip -i -sel c -f | xclip -i -sel p
fi

pasta pastilha:

#!/bin/bash
__IS_MAC=${__IS_MAC:-$(test $(uname -s) == "Darwin" && echo 'true')}
if [ -n "${__IS_MAC}" ]; then
  /usr/bin/pbpaste
else
  xclip -selection clipboard -o
fi

4



Mas por que você ainda tem esse script no OS X, onde faz parte da comunidade nativa? - Hultner
* como referência para funcionalidades semelhantes, * dotfiles entre plataformas: github.com/westurner/dotfiles/blob/develop/scripts/pbcopy - Wes Turner
Ainda abuso de gato e por que não verificar se xclip existe e atribuir um alias se isso acontecer? Ou verifique se o binário do pbpaste existe também seria uma opção. Verificar o uname parece uma abordagem estranha para o problema. - Hultner
@Hultner "Verificar o uname parece uma abordagem estranha para o problema" Você também pode verificar binários, preferencialmente, por ordem, por exceção com um ${a:-${b:-${c:+${d}}}} e alguns type -P/ has atribuições de variáveis ​​e exec / bin / test. - Wes Turner


Esta resposta refere-se ao Subsistema Linux para Windows.

Resposta curta: use clip.exe Como se fosse pbcopy a fim de colocar algo na área de transferência do Windows. É Magica. Exemplo echo "Hello Windows" | clip.exe no seu bash ou terminal bash do Ubuntu e, em seguida, `ctrl-v 'em um programa do Windows.

Mais contexto:

Dentro um comentário acima Eu mencionei que, ao usar o Xming no Windows para habilitar essa funcionalidade, é necessário definir uma variável DISPLAY (export DISPLAY=:0, em muitos casos) antes do xsel e xclip soluções funcionam. Enfurecidamente, esta solução funciona de maneira pouco confiável e estocástica - ao colar do Linux para o Windows, pressionando ctrl-v entre uma e dez vezes faz com que a área de transferência seja colada (uma vez) (isso está no meu Windows 10 Surface Book 2). Não perca seu tempo, use clip.exe.

NOTA: Não esqueça o .exe. Caso contrário, o Ubuntu bash sugerirá que você instale o pacote do Linux geomview, que não é o que você quer.


1