I use the command line a lot, even though I am on a graphical user-interface (GUI) on Windows, macOS, or Linux. And since I’m lazy, I write a lot of scripts to perform repetitive tasks. I stumbled across macOS commands that allow command line programs to copy/paste between the clipboard that we’re so used to using.
macOS pbpaste
and pbcopy
macOS has two commands, pbpaste
and pbcopy
, which “paste” from the pasteboard to stdout
and copies from stdin
to the pasteboard, respectively.macOS calls their clipboard a “pasteboard”, so the pb
… prefix makes sense. For the command-line, these will only transfer text content. With these commands, then, you can pipe or redirect content as you would with any other command-line filter.
An example which would use both these commands; say, you are in your browser and want to copy the URL from your browser and use it in a command on the command-line, after copying the URL from the browser, you could run a command like:
curl `pbpaste` | pbcopy
The clipboard/pasteboard then contains the output of the curl command of the URL, previously held in the clipboard. You can paste the content into a text editor to see the raw output returned by the URL. (For the uninitiated, those single-quotes (`
) are backwards single quotes).
Linux
For Linux, install the xclip command:
sudo apt install xclip
Then, define the aliases to mimic the macOS commands:
if type xclip &>/dev/null; then alias pbcopy='xclip -sel clip' alias pbpaste='xclip -sel clilp -o' fi
Cygwin
On Windows, I use Cygwin for consistent command line capability with macOS and Linux. Having found pbpaste
and pbcopy
on macOS, I figured similar functionality in Cygwin; but it works differently. They implement a clipboard device at /dev/clipboard
. We can create a couple of aliases to make the device act like the macOS commands:
if [ -e /dev/clipboard ]; then alias pbcopy='cat >/dev/clipboard' alias pbpaste='cat /dev/clipboard' fi
With those settings, you can use copy/paste commands in the same fashion as in macOS and write scripts that will work in both environments.
3/25/2023 — This post was originally published Dec 3, 2013 and updated to include the Linux solution.