Como envio stdin para a área de transferência?

44

Existe uma funcionalidade no unix que permita o seguinte:

echo "Some Text" | copy-to-clipboard
Stefan
fonte
você deve dizer stdout?
phunehehe
3
depende realmente de qual lado do tubo você está: P para o comando que o envia para a área de transferência, é stdin.
Stefan
2
As pessoas que usam o Unix há muito tempo dizem que é melhor escrever <longTextFile straightToClipboard. É o mesmo que cat longTextFile straightToClipboard, mas não requer execução cat. Apenas uma observação. Sinta-se livre para ignorá-lo. Veja o Prêmio Uso Inútil do Gato para obter alguns antecedentes e exemplos, se você estiver interessado.
Mikel

Respostas:

34

Existem algumas ferramentas capazes de gravar na área de transferência; Eu uso xsel. É preciso sinalizadores para gravar na seleção X primária ( -p), na seleção secundária ( -s) ou na área de transferência ( -b). Passando-o -i, ele será lido pelo stdin, então você deseja:

$ echo "Some Text" | xsel -i -b
Michael Mrozek
fonte
4
Outro é o xclip; ele aceita do stdin por padrão. Só o uso porque é a primeira ferramenta que aprendi.
Shawn J. Goff
@ Shawn Poste-o como uma resposta separada :)
Michael Mrozek
Eu acho que -inão é necessário neste caso: man xsel1.2.0 diz:and the selection is set from standard input if standard input is not a terminal (tty)
Ciro Santilli escreveu:
O xsel não funcionou para mim (não sei por quê), mas o xclip (por outras respostas) funcionou.
markrian
11

Usando xclip, como @Nicolas sugeriu, se desejar colar posteriormente o conteúdo da área de transferência, como Ctrl + V, você pode usá-lo desta maneira:

$ echo "Some Text" | xclip -selection clipboard
danidemi
fonte
1
Não tentando reviver uma pergunta antiga, mas se você é preguiçoso, echo "Some Text" | xclip -sel ctambém funciona.
anonymoose 28/01
9

você pode usar xsel

xsel < file 
jamespo
fonte
10
A pergunta é: qual área de transferência? O servidor Linux X possui 3 (geralmente, apenas 2 são usados) ... xsel usa a área de transferência PRIMARY por padrão. A área de transferência PRIMARY é ativada automaticamente sempre que você seleciona algo. Você cola se pressionando o botão central do mouse. A área de transferência do tipo Ctrl + C / Crtr + V é chamada de área de transferência CLIPBOARD :) .. portanto, se você deseja usar a área de transferência Ctrl + C / Ctrl + V com 'xsel', o comando é: xsel -ib <file-long-or-short("Olha ma, não é gato!" :) ... ou se você gosta <file-long-or-short xsel -ib.. -i é o padrão. -b é para o tipo Ctrl + C / Ctrl + V de área de transferência
Peter.O
terminal gnomo. Editado. @ Jamespo - isso não parece funcionar.
precisa saber é o seguinte
funciona para mim no gnome-terminal no Ubuntu 10.04 usando o XSEL no repo (pasta com o botão do meio)
jamespo
7

No Mac OS X, existem os adorável pbcopye pbpastecomandos que são muito úteis :)

cwd
fonte
0

O mais simples é provavelmente xclip:

$ echo "Some Text" | xclip

Em seguida, cole usando o botão do meio do mouse.

Por exemplo xsel, normalmente não é instalado por padrão, então você pode precisar instalá-lo ( sudo apt-get install xclipno Debian / Ubuntu).

Nicolas Raoul
fonte
2
xcliprequer a -selection clipboardopção A seleção padrão por sua página de manual é outra coisa.
Acumenus
0

xclipé um bom caminho, conforme respondido por @Nicolas Raoul, mas ao canalizar qualquer coisa que contenha uma nova linha para a área de transferência, como, por exemplo pwd, a nova linha também é copiada. Em algumas situações, pode ser desejado, mas a maioria não quer a nova linha.

A solução é:

echo -n $(pwd) | xclip -selection clipboard

( -nremove a nova linha do argumento ecoado)

ou:

printf %s $(pwd) | xclip -selection clipboard

A ""volta $(pwd)pode ser necessária, mas ele funciona com e sem no Ubuntu com o bash.

calocedrus
fonte