44

Is there functionality in unix that allows for the following:

echo "Some Text" | copy-to-clipboard
  • you must mean stdout? – phunehehe Nov 10 '10 at 0:36
  • 3
    it really depends on which side of the pipe your standing on :P to the command that sends it to the clipboard, its stdin. – Stefan Nov 10 '10 at 4:53
  • 2
    People who have used Unix for a long time will tell you it's better to write <longTextFile straightToClipboard. It's the same as cat longTextFile straightToClipboard, but doesn't require running cat. Just an observation. Feel free to ignore it. See The Useless Use of Cat Award for some background and examples if you're interested. – Mikel Apr 5 '11 at 10:23
34

There are a couple tools capable of writing to the clipboard; I use xsel. It takes flags to write to the primary X selection (-p), secondary selection (-s), or clipboard (-b). Passing it -i will tell it to read from stdin, so you want:

$ echo "Some Text" | xsel -i -b
  • 4
    Another one is xclip; it accepts from stdin by default. I only use it because it's the first such tool that I learned of. – Shawn J. Goff Nov 9 '10 at 19:04
  • @Shawn Post it as a separate answer :) – Michael Mrozek Nov 9 '10 at 19:35
  • I think -i is not required in this case: man xsel 1.2.0 says: and the selection is set from standard input if standard input is not a terminal (tty) – Ciro Santilli 新疆改造中心法轮功六四事件 Jul 24 '15 at 15:14
  • xsel didn't work for me (I don't know why), but xclip (per other answers) did. – markrian Jan 17 '17 at 15:28
11

Using xclip, as @Nicolas suggested, if you want to later paste the contents of the clipboard, such as using Ctrl+V, you can use it this way:

$ echo "Some Text" | xclip -selection clipboard
  • 1
    Not trying to revive an old question, but if you're lazy then echo "Some Text" | xclip -sel c works too. – anonymoose Jan 28 at 20:39
9

you can use xsel

xsel < file 
  • 10
    The question is: Which clipboard? Linux X server has 3 (generally, only 2 are used)... xsel uses the PRIMARY clipboard by default.. The PRIMARY clipboard kicks in automatically every time you simply select soemthing. You paste if by pressing the center mouse button.. The Ctrl+C / Crtr+V type clipboard is called the CLIPBOARD clipboard :).. so if you want to use the Ctrl+C / Ctrl+V clipboard with 'xsel', the command is: xsel -ib <file-long-or-short ("Look ma, no cat!" :) ... or if you like <file-long-or-short xsel -ib .. -i is default. -b is for the Ctrl+C/Ctrl+V type of clipBoard – Peter.O Apr 5 '11 at 11:42
  • gnome-terminal. Edited. @jamespo - this doesn't seem to work. – ripper234 Apr 5 '11 at 12:26
  • works for me on gnome-terminal in ubuntu 10.04 using the xsel in the repo (paste with middle button) – jamespo Apr 5 '11 at 15:42
7

On Mac OS X there are the lovely pbcopy and pbpaste commands which are very helpful :)

0

The simplest is probably xclip:

$ echo "Some Text" | xclip

Then paste using your mouse's middle button.

Like xsel, it is usually not installed by default, so you might need to install it (sudo apt-get install xclip on Debian/Ubuntu).

  • 2
    xclip requires the -selection clipboard option. The default selection per its man page is something else. – Acumenus Oct 9 '14 at 20:03
0

xclip is a good way to go as answered by @Nicolas Raoul but when piping anything containing a newline to the clipboard, such as pwd, the newline is also copied. In some situations it may be desired, but mostly one doesn't want the newline.

The solution is either:

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

(the -n removes the newline from the echoed argument)

or:

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

The "" around $(pwd) may be required but it works with and without on ubuntu with bash.

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.