Comment envoyer stdin dans le presse-papier?

44

Existe-t-il une fonctionnalité sous Unix qui permet:

echo "Some Text" | copy-to-clipboard
Stefan
la source
vous voulez dire stdout?
Phunehehe
3
cela dépend vraiment du côté du tuyau sur lequel vous vous tenez: P à la commande qui l’envoie au presse-papiers, son stdin.
Stefan
2
Les personnes qui utilisent Unix depuis longtemps vous diront qu'il vaut mieux écrire <longTextFile straightToClipboard. C'est la même chose que cat longTextFile straightToClipboard, mais ne nécessite pas de courir cat. Juste une observation. N'hésitez pas à l'ignorer. Voir le prix Utilisation inutile de chat pour des informations générales et des exemples si cela vous intéresse.
Mikel

Réponses:

34

Il existe quelques outils capables d’écrire dans le presse-papiers; Je l'utilise xsel. Il faut des drapeaux pour écrire dans la sélection X principale ( -p), la sélection secondaire ( -s) ou le presse-papier ( -b). En le passant, il -iindiquera de lire stdin, vous voulez donc:

$ echo "Some Text" | xsel -i -b
Michael Mrozek
la source
4
Un autre est xclip; il accepte de stdin par défaut. Je ne l'utilise que parce que c'est le premier outil de ce type que j'ai appris.
Shawn J. Goff
@Shawn Postez-le en réponse séparée :)
Michael Mrozek
Je pense -in'est pas nécessaire dans ce cas: man xsel1.2.0 dit:and the selection is set from standard input if standard input is not a terminal (tty)
Ciro Santilli 新疆 改造 中心 法轮功 六四 事件
xsel n'a pas fonctionné pour moi (je ne sais pas pourquoi), mais xclip (d'après d'autres réponses) l'a fait.
markrian
11

En utilisant xclip, comme @Nicolas l'a suggéré, si vous souhaitez coller ultérieurement le contenu du presse-papiers, par exemple en utilisant Ctrl + V, vous pouvez l'utiliser de cette façon:

$ echo "Some Text" | xclip -selection clipboard
Danidemi
la source
1
Ne pas essayer de faire revivre une vieille question, mais si vous êtes paresseux, alors ça echo "Some Text" | xclip -sel cmarche aussi.
anonyme le
9

vous pouvez utiliser xsel

xsel < file 
Jamespo
la source
10
La question est: quel presse-papiers? Le serveur Linux X en a 3 (en général, 2 seulement sont utilisées) ... xsel utilise le presse-papiers PRIMARY par défaut. Le presse-papiers PRIMARY se déclenche automatiquement chaque fois que vous sélectionnez quelque chose. Vous collez si en appuyant sur le bouton central de la souris .. Le presse-papiers de type Ctrl + C / Crtr + V est appelé le presse-papiers CLIPBOARD :) .. donc si vous voulez utiliser le presse-papiers Ctrl + C / Ctrl + V avec 'xsel', la commande est la suivante: xsel -ib <file-long-or-short("Regardez ma, pas de chat!" :) ... ou si vous voulez <file-long-or-short xsel -ib.. -i est la valeur par défaut. -b est pour le type de clipBoard
Peter.O
gnome-terminal. Édité. @jamespo - cela ne semble pas fonctionner.
ripper234
fonctionne pour moi sur gnome-terminal dans Ubuntu 10.04 en utilisant le xsel dans le repo (coller avec le bouton central)
jamespo
7

Sous Mac OS X , il y a la belle pbcopyet les pbpastecommandes qui sont très utiles :)

cwd
la source
0

Le plus simple est probablement xclip:

$ echo "Some Text" | xclip

Collez ensuite à l'aide du bouton central de votre souris.

Par exemple xsel, il n’est généralement pas installé par défaut, vous devrez peut-être l’installer ( sudo apt-get install xclipsous Debian / Ubuntu).

Nicolas Raoul
la source
2
xclipnécessite l' -selection clipboardoption. La sélection par défaut par sa page de manuel est quelque chose d'autre.
Acumenus
0

xclipest un bon chemin à suivre, comme l'a répondu @ Nicolas Raoul, mais lorsque vous raccordez un élément contenant une nouvelle ligne au presse-papiers, tel que pwd, la nouvelle ligne est également copiée. Dans certaines situations, cela peut être souhaité, mais surtout, on ne veut pas de nouvelle ligne.

La solution est soit:

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

(le -nsupprime la nouvelle ligne de l'argument renvoyé)

ou:

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

Les ""environs $(pwd)peuvent être nécessaires, mais cela fonctionne avec et sans Ubuntu avec Bash.

calocedrus
la source