How to copy the GNU Screen copy buffer to the clipboard?
You can use a CLI clipboard tool like xsel
or pbpaste
and the cat
utility to grab contents from STDIN. The steps on Linux with xsel
are as follows:
- Copy text from your screen session into GNU screen's copy buffer.
- Run this command within screen:
cat | xsel -b
- If
xsel
didn't report any error, now dump screen's copy buffer to STDIN:Ctrl+a+]
- Send an EOF to
cat
to terminate it:Ctrl+d
At this point, the contents of the screen copy buffer should be in your clipboard.
EDIT: As with all X programs, xsel
needs to know how to contact your X server in order to access the clipboard. You should have your DISPLAY
environment variable set appropriately.
How can I copy the output of a command directly into my clipboard?
One way of doing it follows:
Install
xclip
, such as:sudo apt-get install xclip
Pipe the output into
xclip
to be copied into the clipboard:cat file | xclip
Paste the text you just copied into a
X
application:xclip -o
To paste somewhere else other than an X
application, such as a text area of a web page in a browser window, use:
cat file | xclip -selection clipboard
Consider creating an alias:
alias "c=xclip"
alias "v=xclip -o"
To see how useful this is, imagine I want to open my current path in a new terminal window (there may be other ways of doing it like Ctrl+T on some systems, but this is just for illustration purposes):
Terminal 1:
pwd | c
Terminal 2:
cd `v`
Notice the ` `
around v
. This executes v
as a command first and then substitutes it in-place for cd
to use.
Only copy the content to the X
clipboard
cat file | xclip
Integrate readline's kill-ring and the X11 clipboard
Personally, I run everything inside GNU screen. This gives me tons of functionality across all terminal-based programs, not just readline-based ones. It has its own paste buffer(s), which are shared between all screens in your current session, and can read/write an exchange file (configurable with bufferfile
).
- A screen selection is made with Ctrl+A, [, <movement>, Space, <movement>;
- copied to the paste buffer with Enter;
- pasted with Ctrl+A, ];
- replaced by the contents of the exchange file with Ctrl+A, <;
- and written out to the exchange file with Ctrl+A, >.
Then all you need are little helpers to synchronize /tmp/screen-exchange
and the X selection. Something as simple as this would work.
# ~/.screenrc (or entered at C-a : command prompt)
bind '{' exec sh -c 'xclip -o>~/.screen_exchange'
bind '}' exec sh -c 'xclip -i ~/.screen_exchange'
Of course some nicer bindings and macros would make life easier (this requires C-a { C-a < C-a ]
to paste X selection to the terminal), but it's completely up to you.
Pipe to/from the clipboard in a Bash script
2018 answer
Use clipboard-cli. It works with macOS, Windows, Linux, OpenBSD, FreeBSD, and Android without any real issues.
Install it with:
npm install -g clipboard-cli
Then you can do:
echo foo | clipboard
If you want, you can alias to cb
by putting the following in your .bashrc
, .bash_profile
, or .zshrc
:
alias cb=clipboard
How to copy to clipboard in Vim?
The *
register will do this. In Windows, +
and *
are equivalent. In unix there is a subtle difference between +
and *
:
Under Windows, the * and + registers
are equivalent. For X11 systems,
though, they differ. For X11 systems,
* is the selection, and + is the cut buffer (like clipboard).
http://vim.wikia.com/wiki/Accessing_the_system_clipboard
*
is probably what you want most of the time, so I use *
because it functions as I expect it to in both environments.
In Linux distros you have to install vim-gtk
(aka gvim
) first to gain clipboard functionality. This is because non-gtk vim is typically compiled without X11 support. This is to allow it to run on console only machines (often servers).
And for those confused about how to use registers when yanking or putting, you merely write "
then the name of the register. So for copying something to the clipboard register you type "*y
and then to put you type "*p
(credit: Kyle Mathews)
Unable to copy fast a file to clipboard in a Linux computer
In addition to xsel and xclip already mentioned there is also uclip. From the manual page description:
uclip is a command-line interface to the X clipboard. It either copies text,
from FILE or from stdin, to the X clipboard, or prints the X clipboard to std-
out. uclip supports Unicode and is locale-aware (in contrast to other similar
utilities). uclip was written using Qt.
Update: Apparently uclip was not such a good recommendation because it currently does not work for copying, see here for the problem description (and hopefully a solution some day?).
Related Topics
Why Does 'Ping' Not Timeout in Linux
How to Find The Version of a Compiled Kernel Module
Ubuntu "E: Unable to Locate Package MySQL "
When Did Hup Stop Getting Sent and What How to Do About It
Snort Message - Warning: No Preprocessors Configured for Policy 0
Simulate Microphone (Virtual Mic)
How to Use 9-Bit Serial Communication in Linux
On Linux, Is Access() Faster Than Stat()
What Happens If There Are Too Many Files Under a Single Directory in Linux
Apt-Update in Azure Nvidia Gives Publickey Error
Why Does Munmap Needs a Length as Parameter
Kill Bash Script Foreground Children When a Signal Comes
Failed to Load Javahl Library.- Linux/Eclipse
Why Does Utf-8 Text Sort in Different Order Between Os X and Linux
Generate Disk Usage Graphs/Charts with Cli Only Tools in Linux