¿Cómo envío stdin al portapapeles?

44

¿Hay funcionalidad en Unix que permita lo siguiente:

echo "Some Text" | copy-to-clipboard
Stefan
fuente
debes decir stdout?
phunehehe
3
realmente depende de qué lado de la tubería esté parado: P para el comando que lo envía al portapapeles, es stdin.
Stefan
2
Las personas que han usado Unix durante mucho tiempo le dirán que es mejor escribir <longTextFile straightToClipboard. Es lo mismo que cat longTextFile straightToClipboard, pero no requiere ejecución cat. Solo una observación. Siéntase libre de ignorarlo. Vea el Premio al uso inútil del gato para obtener algunos antecedentes y ejemplos si está interesado
Mikel

Respuestas:

34

Hay un par de herramientas capaces de escribir en el portapapeles; Yo uso xsel. Se necesitan banderas para escribir en la selección X primaria ( -p), la selección secundaria ( -s) o el portapapeles ( -b). Pasarlo -ile indicará que lea desde stdin, por lo que desea:

$ echo "Some Text" | xsel -i -b
Michael Mrozek
fuente
44
Otro es xclip; acepta desde stdin por defecto. Solo lo uso porque es la primera herramienta de la que aprendí.
Shawn J. Goff, el
@Shawn Publícalo como una respuesta separada :)
Michael Mrozek
Creo que -ino es necesario en este caso: man xsel1.2.0 dice:and the selection is set from standard input if standard input is not a terminal (tty)
Ciro Santilli 新疆 改造 中心 法轮功 六四 事件
xsel no funcionó para mí (no sé por qué), pero xclip (según otras respuestas) sí.
markrian
11

Usando xclip, como sugirió @Nicolas, si luego desea pegar el contenido del portapapeles, como usar Ctrl + V, puede usarlo de esta manera:

$ echo "Some Text" | xclip -selection clipboard
danidemi
fuente
1
No estoy tratando de revivir una vieja pregunta, pero si eres vago, entonces echo "Some Text" | xclip -sel ctambién funciona.
anonymoose
9

puedes usar xsel

xsel < file 
jamespo
fuente
10
La pregunta es: ¿Qué portapapeles? El servidor Linux X tiene 3 (generalmente, solo se usan 2) ... xsel usa el portapapeles PRIMARY de forma predeterminada. El portapapeles PRIMARY se activa automáticamente cada vez que simplemente selecciona algo. Pegue si presiona el botón central del mouse. El portapapeles de tipo Ctrl + C / Crtr + V se llama portapapeles CLIPBOARD :) .. así que si desea usar el portapapeles Ctrl + C / Ctrl + V con 'xsel', el comando es: xsel -ib <file-long-or-short("¡Mira ma, no cat!" :) ... o si quieres <file-long-or-short xsel -ib... -i es el predeterminado. -b es para el tipo Ctrl + C / Ctrl + V de clipBoard
Peter.O
gnome-terminal. Editado @jamespo: esto no parece funcionar.
ripper234
funciona para mí en gnome-terminal en ubuntu 10.04 usando el xsel en el repositorio (pegar con el botón central)
jamespo
7

En Mac OS X existen los encantadores pbcopyy pbpastecomandos que son muy útiles :)

cwd
fuente
0

El más simple es probablemente xclip:

$ echo "Some Text" | xclip

Luego pegue usando el botón central de su mouse.

Como xsel, por lo general, no está instalado de manera predeterminada, por lo que es posible que deba instalarlo ( sudo apt-get install xclipen Debian / Ubuntu).

Nicolas Raoul
fuente
2
xcliprequiere la -selection clipboardopción La selección predeterminada por su página de manual es otra cosa.
Acumenus
0

xclipes una buena manera de responder a @Nicolas Raoul, pero al canalizar cualquier cosa que contenga una nueva línea en el portapapeles, como por ejemplo pwd, la nueva línea también se copia. En algunas situaciones puede desearse, pero la mayoría no quiere la nueva línea.

La solución es:

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

( -nQuita la nueva línea del argumento repetido)

o:

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

El ""torno $(pwd)puede ser necesaria pero funciona con y sin el ubuntu con bash.

calocedrus
fuente