By moinudin

2009-04-14 22:06:47 8 Comments

Is it possible to pipe to/from the clipboard in Bash?

Whether it is piping to/from a device handle or using an auxiliary application, I can't find anything.

For example, if /dev/clip was a device linking to the clipboard we could do:

cat /dev/clip        # Dump the contents of the clipboard
cat foo > /dev/clip  # Dump the contents of "foo" into the clipboard


@lhunath 2009-04-15 05:57:40

There's a wealth of clipboards you could be dealing with. I expect you're probably a Linux user who wants to put stuff in the X Windows primary clipboard. Usually, the clipboard you want to talk to has a utility that lets you talk to it.

In the case of X, there's xclip (and others). xclip -selection c will send data to the clipboard that works with Ctrl + C, Ctrl + V in most applications.

If you're on Mac OS X, there's pbcopy. e.g cat example.txt | pbcopy

If you're in Linux terminal mode (no X) then look into gpm or screen which has a clipboard. Try the screen command readreg.

Under Windows 10+ or cygwin, use /dev/clipboard or clip.

@glenn jackman 2011-05-31 13:48:16

cygwin: /dev/clipboard

@Mihai Rotaru 2011-06-07 12:43:42

on Windows, /dev/clipboard also works for Msys/MinGW bash shells

@Klaas van Schelven 2011-08-14 15:23:41

Note that xclip -selection c will send data to the clipboard that works with ^C, ^V in most applications

@maep 2011-11-08 12:43:54

on newer windows versions you can just use clip like this: dir | clip

@Hi-Angel 2014-09-04 10:18:03

It is sad that GNU/Linux have no such a device as /dev/clipboard, and forces to install either xclip either gpm which is missing by default at least in Kubuntu (I guess in most other distros too).

@mike 2014-09-29 03:10:52

Under X11, there is also xsel which operates on the X selection by default. So you can echo hello | xsel or xsel|wc and so on without using a commmand-line switch.

@Daniel Darabos 2015-03-02 13:23:55

Thanks Klaas, that's exactly what I was looking for. I've edited it into the answer.

@FractalSpace 2015-07-10 21:57:10

Also, on Windows: clip < <filename> or echo yes | clip

@user4401178 2016-01-01 18:52:52

@mike, xsel -ib works for me. xsel and xclip are implemented differently, xclip was what I was using but I'm working out of a chroot and xclip stopped copying data to the clipboard a few weeks ago, I switched to xsel -ib and haven't had any problems since.

@kr85 2016-01-06 23:16:41

At github page they suggest using clip < ~/.ssh/ to copy SSH to clipboard. Reading this SO question I wonder how come is this possible? Is clip a custom procedure that ships with git Bash?

@mh-cbon 2017-03-16 16:20:39

any idea for wayland ?

@jpaugh 2017-09-05 19:57:06

@kr85 clip.exe is a builtin windows program which git-bash has access to, but it only works one-way (copying, not pasting). If you're using git-bash, then you're also on Windows.

@Gordon Bean 2018-07-18 23:05:36

If you're using the Linux subsystem on Windows 10 cat file.txt | clip.exe may work for copying to the system clipboard. See

@Todd Walton 2018-10-03 18:22:40

bash does have a clipboard, though the documentation calls it a "kill ring".…

@lhunath 2018-10-04 19:39:36

FYI, that's readline, not bash itself, but yes, it is accessible from bash, though only within the active process.

@hanshenrik 2018-10-25 08:00:01

clip is bundled with windows since windows 7. also, since it's microsoft we're talking about, they obviously had to make a terrible program - with clip you can only write TO the clipboard, it can't help you read it.

@Yngvar Kristiansen 2019-05-24 09:00:25

xclip didn't work for me when putting it into a bash script (I'm on XFCE). xsel works. In my bash script, I use: printf abc | xsel --input --clipboard. Details:…

@ledawg 2019-08-17 11:02:56

Running Debian in the WSL environment in Windows 10 Pro and no cigar guys, had to manually copy and paste.

@kintsukuroi 2020-03-11 07:11:40

Adding -r to xclip will remove the newline in the end. So echo 'test string 456' | xclip -r -selection c would work well in a single line.

@chovy 2020-06-01 23:08:37

doesn't seem to work with gnome from hyper terminal

@Jens Timmerman 2020-04-29 12:37:06

on Wayland xcopy doesn't seem to work, use wl-clipboard instead. e.g. on fedora

sudo dnf install wl-clipboard

tree | wl-copy

wl-paste > file

@Harry Moreno 2020-04-17 07:03:40

The ruby oneliner inspired me to try with python.

Say we want a command that indents whatever is in the clipboard with 4 spaces. Perfect for sharing snippets on stackoverflow.

$ pbpaste | python -c "import sys
 for line in sys.stdin:
   print(f'    {line}')" | pbcopy

that's not a typo. Python needs newlines to do a for loop. We want to alter the lines in one pass to avoid building up an extra array in memory.

If you don't mind building the extra array try:

$ pbpaste | python -c "import sys; print(''.join([f'    {l}' for l in sys.stdin]))" | pbcopy

but honestly awk is better for this than python. I defined this alias in my ~/.bashrc file

alias indent="pbpaste | awk '{print \"    \"\$0}' | pbcopy"

now when I run indent whatever is in my clipboard is indented.

@Skulas 2020-01-30 10:15:57

pbcopy is built in OSX:

Copying the content of .bash_profile:

cat ~/.bash_profile | pbcopy

@Tobias Kwant 2020-01-28 22:43:58

In Linux this works:

cat filename | xclip

@doug 2010-11-17 19:14:05

Make sure that you are using alias xclip="xclip -selection c" otherwise you can't just use to Ctrl+v to paste it back in a different place.

echo test | xclip    

Ctrl+v === test

@Jonah 2013-12-17 18:25:55

How would one go about pasting it without that command argument?

@doug 2013-12-18 19:14:19

xclip -selection clipboard -o

@doug 2013-12-18 19:14:53

since I go back and forth between osx and linux a lot I have the following in my dotfiles. alias pbcopy="xclip -selection c" alias pbpaste="xclip -selection clipboard -o" Hope that helps.

@ApockofFork 2014-03-19 13:36:30

When I use this method it always adds in a newline character at the end of the copied text. Do you know of a way to disable or block that newline character?

@David X 2014-04-27 20:53:52

@ApockofFork, xclip isnt adding a newline, echo is. Try printf test | xclip -i -selection clipboard. (printf doesnt add a newline unless you write 'test\n'.)

@Christian Pietsch 2015-02-13 12:00:58

Or use echo -n instead of printf.

@Marcus Vinicius Pompeu 2016-10-15 00:28:07

To add a new alias:…

@kintsukuroi 2020-03-11 07:08:32

Adding -r to xclip will remove the newline in the end. So echo 'test string 456' | xclip -r -selection c

@horta 2015-09-17 17:48:49

If you're like me and run on a Linux server without root privileges and there isn't any xclip or GPM you could workaround this issue by just using a temporary file. For example:

$ echo "Hello, World!" > ~/clip
$ echo `cat ~/clip`
Hello, World!

@Braden Best 2017-05-15 17:36:01

I don't see how a lack of root privileges factors into this.

@horta 2017-05-16 18:03:45

@BradenBest Lack of root privileges means I couldn't install things.

@Braden Best 2017-05-16 18:08:59

But what would you be installing? X? On a server? Unless you're hosting some weird X forwarding service, I can't see why you would ever want to do that.

@horta 2017-05-16 20:07:51

@BradenBest Not sure. Whatever program or service would allow me to perform a copy paste.

@Braden Best 2017-05-16 20:16:06

Well, if you're using any of the X selections (which is necessarily implied by "clipboard" and any mentions of xclip/xsel), you need an active X session (and thus an X server) so that you can access the selection in the first place. To see what I mean, try running DISPLAY="" xsel on your local machine. It will exit on an error, being unable to find session "", and no interaction with any X selection will be made. That's why I initially said that I don't see how root privileges factor into this: root or no root, you're not likely to find an X selection useful in a server environment.

@Stenemo 2013-06-21 05:46:14

Copy and paste to clipboard in Windows (Cygwin):


$ clip.exe -?

    Redirects output of command line tools to the Windows clipboard.
    This text output can then be pasted into other programs.
Parameter List:
/?                  Displays this help message.
DIR | CLIP          Places a copy of the current directory
                        listing into the Windows clipboard.
CLIP < README.TXT   Places a copy of the text from readme.txt
                        on to the Windows clipboard.

Also getclip (it can be used instead of Shift + Ins!) and putclip (echo oaeuoa | putclip.exe to put it into clip) exist.

@jiahut 2017-11-02 06:37:06

In macOS, use pbpaste.

For example:

Update the clipboard

pbpaste  | ruby -ne ' puts "\|" + $_.split( )[1..4].join("\|") ' | pbcopy

@Martin Fischer 2015-06-11 21:04:26

  xsel -b

Does the job for X Window, and it is mostly already installed. A look in the man page of xsel is worth the effort.

@SergioAraujo 2019-08-22 11:03:06

I have found a good reference:

In my case I would like to paste content on the clipboard and also to see what is been pasted there, so I used also the tee command with a file descriptor:

echo "just a test" | tee >(xclip -i -selection clipboard)

>() is a form of process substitution. bash replaces each with the path to a file descriptor which is connected to the standard input of the program within the parentheses.

The teecommand forks your command allowing you to "pipe its content" and see the result on standard output "stdout"

you can also create aliases to get and write on the clipboard, allowing you to use "pbcopy" and "pbpaste" as if you where on MAC. In my case, as I use zsh I have this on my aliases file:

(( $+commands[xclip] )) && {
    alias pbpaste='xclip -i -selection clipboard -o'
    alias pbcopy='xclip -selection clipboard'

the (( $+command[name] )) in zsh tests if the command "name" is installed on your system, then both aliases are grouped with {}. the && is a binary AND, if a then b, hence if you have xclip then the aliases will be set.

echo "another test" | tee >(pbcopy)

To get your clipboard content just type:

pbpaste | "any-command-you-need-here"

@jtruelove 2011-03-05 17:24:38

On macOS use the built in pbcopy and pbpaste commands.

For example, if you run

cat ~/.bashrc | pbcopy

the contents of the ~/.bashrc file will be available for pasting with the Cmd+v shortcut.

@Evan Conrad 2018-04-05 19:13:22

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

@Johnny 2018-10-21 10:10:38

Are you sure that it's a safe npm package?

@Evan Conrad 2018-10-22 15:53:55

@Stas, I would hope so, it's made by Sindresorhus (, the most prolific node contributor. He's responsible for the Ava testing library, the xo linter, Yeoman, and countless other projects. He's also responsible for countless small libraries like this, that collectively put his code on nearly every JS-using website on the internet. That's not to say he couldn't be compromised; just that the amount of eyes on his repos and his own reputation make it much less likely than most random npm repos.

@Kevin Buchs 2020-02-13 22:38:58

Cool! Working on Ubuntu GNU/Linux where xclip is not working.

@knowledge_is_power 2018-03-28 14:17:41

On the Windows subsystem for Linux you can copy to the clipboard with clip.exe.

cat file | clip.exe

Keep in mind to use the | pipe command. And not a > command, since that will not work.

@thebunnyrules 2017-12-11 06:20:05

Wow, I can't believe how many answers there are for this question. I can't say I've tried them all but I've tried the top 3 or 4 and none of them work for me. What did work for me was an answer located in one of the comment written by a user called doug. Since I found it so helpful, I decided to restate in an answer.

Install xcopy utility and when you're in the Terminal, input:


Thing_you_want_to_copy|xclip -selection c


myvariable=$(xclip -selection clipboard -o)

I noticed alot of answers recommended pbpaste and pbcopy. If you're into those utilities but for some reason they are not available on your repo, you can always make an alias for the xcopy commands and call them pbpaste and pbcopy.

alias pbcopy="xclip -selection c" 
alias pbpaste="xclip -selection clipboard -o" 

So then it would look like this:


@MeadowMuffins 2017-12-22 02:25:46

Great, your alias part corresponds to MacOS quite well.

@VonC 2017-09-23 00:24:32

From this thread, there is an option which does not require installing any gclip/xclip/xsel third-party software.

A perl script (since perl is usually always installed)

use Win32::Clipboard;
print Win32::Clipboard::GetText();

@jena 2018-11-27 20:53:36

How would I use this? Save script into PATH and pipe into it? I'm trying to write dropbox cli wrapper to copy sharing links, so I just need it to handle text.

@tleb 2014-12-13 08:32:04


# You can install xclip using `apt-get`
apt-get install xclip

# or `pacman`
pacman -S xclip

# or `dnf`
dnf install xclip

If you do not have access to apt-get nor pacman, nor dnf, the sources are available on sourceforge.



In ~/.bash_aliases, add:

alias setclip="xclip -selection c"
alias getclip="xclip -selection c -o"

Do not forget to load your new configuration using . ~/.bash_aliases or by restarting your profile.


In ~/.config/fish/, add:

abbr setclip "xclip -selection c"
abbr getclip "xclip -selection c -o"

Do not forget to restart your fish instance by restarting your terminal for changes to apply.


You can now use setclip and getclip, e.g:

$ echo foo | setclip
$ getclip

@Scz 2015-07-06 11:43:00

For all other distros: you can download the source from

@eduncan911 2015-09-17 07:50:56

+1 Best solution! In Arch, sudo pacman -S xclip. But do note that .bashrc is not the best place. I recommend the enduser read up on proper bashrc, bash_aliases and .profile files and how bash handles each. Tip: put it in .bash_aliases instead.

@tleb 2015-09-19 16:13:11

Thanks @eduncan911! :) Added the option of using the pacman package manager and removed the .bashrc proposition. I know .bash_aliases is more adapted, but the end result is the same (.bashrc simply requires .bash_aliases if it exists). If people want a messy system, let them have one. :)

@tleb 2017-08-18 07:31:59

@EladTabak Happy it helped.

@jpaugh 2017-09-05 20:00:57

@eduncan911 I cannot find mention of .bash_aliases in the bash manual. I believe that must be a distro-specific modification to .bashrc. (I have seen distro-specific .bashrcs which import .bash_profile if it exists.) Based on that, I'd say .bash_aliases is not a universal convention, but a convenient shorthand for those who have it.

@eduncan911 2017-09-05 22:46:37

@jpaugh you are correct. my .bashrc sources .bash_aliases at the end. ;) I follow this old convention, that remains 100% compatible across Arch, Ubuntu/Debian, Raspberry variants, macOS/OSX and Windows Bash: With that convention, I use the exact same dotfiles across all of the machines I touch. It's quite nice:

@jpaugh 2017-09-06 13:54:43

@eduncan911 Thanks! I'm working on my own dotfiles repo, so that's a great resource. A nice thing about having a separate file is, you can easily reload your .bash_aliases whenever it changes (via a $PROMPT_COMMAND which compares timestamps). I have already done that the hard way, with an auto-reloading .bashrc.

@eduncan911 2017-09-06 17:27:16

I just have to stress: if you ever, ever think you'll use your dotfiles on any other operating system than you are writing them for (OSX, Ubuntu, BSD, Arch, Windows Bash, etc), take note of my bash files in that repo: see how I am always querying for resources FIRST, and if they exist, load them. I sometimes go looking in multiple locations (OS distros) to load the same resource. Doing this now, always checking if files exist, will save you a lot of grief and keep things compatible. Also note the dot organization in the link I posted earlier. Specifically how .bash_profile ties in.

@Braden Best 2017-05-11 04:00:18

There are a couple ways. Some of the ways that have been mentioned include (I think) tmux, screen, vim, emacs, and the shell. I don't know emacs or screen, so I'll go over the other three.


While not an X selection, tmux has a copy mode accessible via prefix-[ (prefix is Ctrl+B by default). The buffer used for this mode is separate and exclusive to tmux, which opens up quite a few possibilities and makes it more versatile than the X selections in the right situations.

To exit this mode, hit q; to navigate, use your vim or emacs binding (default = vim), so hjkl for movement, v/V/C-v for character/line/block selection, etc. When you have your selection, hit Enter to copy and exit the mode.

To paste from this buffer, use prefix-].


Any installation of X11 seems to come with two programs by default: xclip and xsel (kinda like how it also comes with both startx and xinit). Most of the other answers mention xclip, and I really like xsel for its brevity, so I'm going to cover xsel.

From xsel(1x):

Input options

-a, --append

append standard input to the selection. Implies -i.

-f, --follow

append to selection as standard input grows. Implies -i.

-i, --input

read standard input into the selection.

Output options

-o, --output

write the selection to standard output.

Action options

-c, --clear

clear the selection. Overrides all input options.

-d, --delete

Request that the current selection be deleted. This not only clears the selection, but also requests to the program in which the selection resides that the selected contents be deleted. Overrides all input options.

Selection options

-p, --primary

operate on the PRIMARY selection (default).

-s, --secondary

operate on the SECONDARY selection.

-b, --clipboard

operate on the CLIPBOARD selection.

And that's about all you need to know. p (or nothing) for PRIMARY, s for SECONDARY, b for CLIPBOARD, o for output.

Example: say I want to copy the output of foo from a TTY and paste it to a webpage for a bug report. To do this, it would be ideal to copy to/from the TTY/X session. So the question becomes how do I access the clipboard from the TTY?

For this example, we'll assume the X session is on display :1.

$ foo -v
Error: not a real TTY
blah blah @ 0x0000000040abeaf4
blah blah @ 0x0000000040abeaf8
blah blah @ 0x0000000040abeafc
blah blah @ 0x0000000040abeb00
$ foo -v | DISPLAY=:1 xsel -b # copies it into clipboard of display :1

Then I can Ctrl-V it into the form as per usual.

Now say that someone on the support site gives me a command to run to fix the problem. It's complicated and long.

$ DISPLAY=:1 xsel -bo
sudo foo --update --clear-cache --source-list=""
$ $(DISPLAY=:1 xsel -bo)
Password for braden:
UPDATING %%%%%%%%%%%%%%%%%%%%%%% 100.00%
Clearing cache...
Fetching sources...
Reticulating splines...
Watering trees...
Climbing mountains...
Looking advanced...
$ foo
Thank you for your order. A pizza should arrive at your house in the next 20 minutes. Your total is $6.99

Pizza ordering seems like a productive use of the command line.

...moving on.


If compiled with +clipboard (This is important! Check your vim --version), Vim should have access to the X PRIMARY and CLIPBOARD selections. The two selections are accessible from the * and + registers, respectively, and may be written to and read from at your leisure the same as any other register. For example:

:%y+    ; copy/yank (y) everything (%) into the CLIPBOARD selection (+)
"+p     ; select (") the CLIPBOARD selection (+) and paste/put it
ggVG"+y ; Alternative version of the first example

If your copy of vim doesn't directly support access to X selections, though, it's not the end of the world. You can just use the xsel technique as described in the last section.

:r ! xsel -bo ; read  (r) from the stdout of (!) `xsel -bo`
:w ! xsel -b  ; write (w) to the stdin of    (!) `xsel -b`

Bind a couple key combos and you should be good.

@Braden Best 2017-05-11 04:27:38

Definitely always remember to use DISPLAY= when calling an X application from a non-X environment. X apps need the DISPLAY environment variable to figure out which server (or is there just one server handling multiple sessions?) they're talking to. Try DISPLAY=:1 firefox (or whatever your display ID may be; mine just happens to be :1) from a TTY, for example.

@HankCa 2017-05-15 06:54:16

For me the choice in my environment was :%y+ in VIM.

@lurix66 2016-10-07 12:29:36

Although >1 year later, I share a slightly different solution. Hope this is useful for somebody.

Yesterday I found myself with the question: "How to share the clipboard between different user sessions?". When switching between sessions with ctrlaltF7 - ctrlaltF8, in fact, you can't paste what you copied.

I came up with the following quick & dirty solution, based on a named pipe. It is surely quite bare and raw, but I found it functional:

[email protected]:~$ mkfifo /tmp/sharedClip

then in the sending terminal

[email protected]:~$ cat > /tmp/sharedClip

last, in the receiving terminal:

[email protected]:~$ cat /tmp/sharedClip

Now, you type or paste anything in the first terminal, and (after hitting return), it will appear immediately in the receiving terminal, from where you can Copy/Paste again anywhere you like.

Of course this doesn't just strictly take the content from user1's clipboard to make it available in user2's clipboard, but rather it requires an additional pair of Paste & Copy clicks.

@Braden Best 2017-05-11 04:13:34

Doesn't seem too surprising. Two different X servers = two different selection sets. However, you could set up a script that takes input/output via xsel/xclip. For example, one end listens to see if any of the selections changed, and then automatically pipes it (via the named FIFO) over to the other script, which is listening to one or more pipes, which inserts it into its own X selection. Copying text would thus automatically result in the same text appearing in the other X session's selection. And don't forget about $DISPLAY.

@tysweat 2015-05-06 04:57:25

This is a simple Python script that does just what you need:


import sys

# Clipboard storage
clipboard_file = '/tmp/clipboard.tmp'

if(sys.stdin.isatty()): # Should write clipboard contents out to stdout
    with open(clipboard_file, 'r') as c:
elif(sys.stdout.isatty()): # Should save stdin to clipboard
    with open(clipboard_file, 'w') as c:

Save this as an executable somewhere in your path (I saved it to /usr/local/bin/clip. You can pipe in stuff to be saved to your clipboard...

echo "Hello World" | clip

And you can pipe what's in your clipboard to some other program...

clip | cowsay
< Hello World >
        \   ^__^
         \  (oo)\_______
            (__)\       )\/\
                ||----w |
                ||     ||

Running it by itself will simply output what's in the clipboard.

@Charles Plager 2016-01-06 19:51:57

This works when you're on a single computer, but won't allow you to copy things between computers.

@yurenchen 2017-09-26 18:08:29

seems only ` echo str > tmpfile` and cat tmpfile , not clipboard operation. //same as @horta answers.

@jena 2018-11-27 22:20:29

this doesn't seem to set clipboard variable, so I cannot paste the content in other application - it's not a real clipboard!

@jeng 2014-06-08 14:38:16

A few Windows programs I wrote years ago. They allow you dump, push, append and print the clipboard. It works like this:

dumpclip | perl -pe "s/monkey/chimp/g;" | pushclip

It includes source code:

@Sunny Milenov 2009-04-14 22:12:23

There are different clipboards in Linux; the X server has one, the window manager might have another one, etc. There is no standard device.

Oh, yes, on CLI, the screen program has its own clipboard as well, as do some other applications like Emacs and vi.

In X, you can use xclip.

You can check this thread for other possible answers:

@T.E.D. 2009-04-14 22:21:35

It sounds like creating /dev/clip would be a good project for someone.

@moinudin 2009-04-14 22:23:56

I am perfectly aware of the multiple clipboards. How does this make my question any more difficult to answer?

@user4401178 2015-03-14 15:00:48

It would make sense if clipboards were standardized, probably wouldn't hurt if you could use /dev/clip1, /dev/clip2 .. /dev/clip<n> to access them, the only issue is that they are user specific and devices are system-wide. But if you make a kernel device driver that masks according to the accessing UID, it should work as expected.

@Jonathon Reinhart 2016-08-29 11:33:04

There is also xclip-copyfile.

@Andrew_1510 2015-08-18 15:14:34

xsel on Debian/Ubuntu/Mint

# append to clipboard:
cat 'the file with content' | xsel -ib

# or type in the happy face :) and ...
echo 'the happy face :) and content' | xsel -ib

# show clipboard
xsel -b

# Get more info:
man xsel


sudo apt-get install xsel

@Léo Léopold Hertz 준영 2016-06-16 09:49:38

How does this differ from echo "foo" | xclip -selection c?

@Colin D Bennett 2016-08-09 16:44:25

There are some answers on this Ask Ubuntu answer, but mainly xsel and xclip are equivalent in every way except that xclip can read/write files by name, but xsel requires shell redirection if you want to access a file.

@NVRM 2019-10-19 03:28:43

xsel is working nicely from scripts, while xclip is working only from the prompt. Not sure why.

@nyitguy 2014-08-22 18:46:04

For Mac only:

echo "Hello World" | pbcopy

These are located /usr/bin/pbcopy and /usr/bin/pbpaste.

@Wolfgang Fahl 2013-10-04 15:39:22

Here is a ready to use bash script for reading the clipboard which works on multiple platforms. Please edit the script here if you add functionality (e.g. more platforms).

# WF 2013-10-04
# multi platform clipboard read access
# supports
#   Mac OS X
#   git shell / Cygwin (Windows)
#   Linux (e.g. Ubuntu)

# display an error
error() {
  echo "error: $1" 1>&2
  exit 1

# getClipboard
function getClipboard() {
      case $os in 
        # git bash  (Windows)
          cat /dev/clipboard;;
        # Mac OS X
        # Linux 
          # works only for X clipboard - a check that X is running might be due
          xclip -o;;
          error "unsupported os $os";;

getClipboard >$tmp
cat $tmp
# comment out for debugging
rm $tmp

@255.tar.xz 2019-06-01 22:04:15

bruhh, this actually works why isn't this the answer?

@Zoredache 2009-04-14 22:33:14



xclip - command line interface to X selections (clipboard) 


@Norman H 2011-05-31 13:33:27

On Windows (with Cygwin) try cat /dev/clipboard or echo "foo" > /dev/clipboard as mentioned in this article.

@Shawn Erquhart 2015-12-17 15:01:47

As user @maep mentioned in a separate comment, newer versions of Windows (I can only confirm for Win10) can simply pipe to clip. I'm using msysgit 1.9.5 and this worked.

@user1529413 2019-02-11 13:07:43

echo "foo" > /dev/clipboard seems to destroy newlines completely (not a \r\n \n thing but completely gone)

Related Questions

Sponsored Content

67 Answered Questions

[SOLVED] How to get the source directory of a Bash script from within the script itself?

  • 2008-09-12 20:39:56
  • Jiaaro
  • 1755179 View
  • 5035 Score
  • 67 Answer
  • Tags:   bash directory

57 Answered Questions

[SOLVED] How do I copy to the clipboard in JavaScript?

37 Answered Questions

[SOLVED] How can I check if a program exists from a Bash script?

  • 2009-02-26 21:52:49
  • gregh
  • 708893 View
  • 2259 Score
  • 37 Answer
  • Tags:   bash

10 Answered Questions

[SOLVED] Check existence of input argument in a Bash shell script

  • 2011-06-26 05:49:21
  • user775187
  • 1280185 View
  • 1385 Score
  • 10 Answer
  • Tags:   bash shell

20 Answered Questions

[SOLVED] How do I tell if a regular file does not exist in Bash?

  • 2009-03-12 14:48:43
  • Bill the Lizard
  • 2545633 View
  • 3302 Score
  • 20 Answer
  • Tags:   bash file-io scripting

26 Answered Questions

[SOLVED] How to check if a string contains a substring in Bash

35 Answered Questions

[SOLVED] How can I check if a directory exists in a Bash shell script?

  • 2008-09-12 20:06:25
  • Grundlefleck
  • 2818624 View
  • 3767 Score
  • 35 Answer
  • Tags:   bash shell unix posix

23 Answered Questions

[SOLVED] Echo newline in Bash prints literal \n

  • 2011-12-11 21:01:54
  • Sergey
  • 2195111 View
  • 2449 Score
  • 23 Answer
  • Tags:   bash echo newline

37 Answered Questions

[SOLVED] Extract filename and extension in Bash

30 Answered Questions

[SOLVED] How to concatenate string variables in Bash

Sponsored Content