What's like OSX's pbcopy for Linux
In a terminal in OSX I can pipe output to pbcopy and then go into a web browser and paste it. I tried this in Linux with xcopy but when I switch to the browser it just overwrites the clipboard with with whatever was in it the last time the browser was used. What works like pbcopy in Linux?
Solution 1:
If you have desktop version of Linux (X) installed you may try xsel
in this way:
alias pbcopy='xsel --clipboard --input'
alias pbpaste='xsel --clipboard --output'
or with xclip
:
alias pbcopy='xclip -selection clipboard'
alias pbpaste='xclip -selection clipboard -o'
Now you can use them:
echo 'go to my clipboard' | pbcopy
When I don't have X I use GNU Screen functionality to copy between open shells in a session using keyboard.
Copy:
- Ctrl-a
- Esc
- go to wanted position *
- Space (to begin selecting)
- press k to go forward mark text
- Enter
Paste:
- Ctrl-a + ]
* movements are done with vim like key bindings (j, k, l & m).
Solution 2:
Put a script like this called pbcopy in your bin folder:
#!/bin/bash
xclip -i -sel c -f |xclip -i -sel p
This will put STDIN in both your selection buffer and clipboard:
echo Hello world |pbcopy
Solution 3:
To expand on the solutions of @Erik and @xpixelz; these two scripts should work on both platforms:
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
pbpaste:
#!/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
Solution 4:
This answer refers to the Linux Subsystem for Windows.
Short answer: use clip.exe
as if it were pbcopy
in order to put something on the Windows clipboard. It's magic. Example echo "Hello Windows" | clip.exe
in your bash or Ubuntu bash terminal, and then `ctrl-v' in a Windows program.
More context:
In a comment above I mentioned that, when using Xming on Windows to enable this functionality, it is necessary to set a DISPLAY variable (export DISPLAY=:0
, in many cases) before the xsel
and xclip
solutions work. Infuriatingly, this solution works in an unreliable, stochastic way -- when pasting from Linux to Windows, pressing ctrl-v
between one and ten times causes the clipboard to be pasted (one time) (this is on my Windows 10 Surface Book 2). Don't waste your time, use clip.exe
.
NOTE: Don't forget the .exe
. Otherwise Ubuntu bash will suggest that you install the Linux package geomview
, which is not what you want.