30 June 2023

Copying command output to the clipboard on Linux

To copy the output of a command to the clipboard in Linux you can use the following command:

Example

echo string | xclip -selection clipboard

string (plus a newline) will now be available on the main clipboard. To strip out the newline, use echo -n.

Setup

Requires xclip, a command-line utility for working with the clipboard.

sudo apt install xclip

Script

I use the following script to strip the trailing newline only if the string is single-line:

(Saved in ~/bin as copy-input-to-clipboard).

#!/bin/bash

str=$(</dev/stdin)

lines=$(echo "$str" | wc -l)

function clipboard {
	xclip -selection clipboard
}

if [ $lines -eq "1" ]; then
	echo -n "$str" | clipboard
else
	echo "$str" | clipboard
fi

c alias

To make this available as the more concise c, put the following line in your aliases/bashrc file:

alias c='xclip -selection clipboard'

or

alias c='copy-input-to-clipboard'

Note: the -selection clipboard option indicates copying to the main clipboard as opposed to the middle-click one.