How to copy and paste within a terminal in macOS or Linux?

Sometimes we want to store some piece of information while using a terminal, for example, a result of an executed command. We usually save it into some temporary file which is going to be deleted after all. There’s a better way.
Copying and pasting on macOS
On macOS, there are two commands - pbcopy and pbpaste which leverage the system’s clipboard.
The pbcopy command puts input into the clipboard.
pbcopy “some text”
Piping output works surprisingly well:
ps aux | pbcopy
If you want to print the clipboard’s content all you need to do is run pbpaste.
Let’s say you want to copy and execute the file’s content. Of course, you may just use source file.sh but for the sake of this tutorial let’s assume that scenario.
First, create a file:
cat > file.sh <<EOF
echo "hello world"
EOF
Then you can copy its content with pbcopy:
pbcopy < file.sh
The last step is to execute the clipboard’s content:
pbpaste | zsh
Copying and pasting on Linux
You can create pbcopy and pbpaste commands on Linux. All you need to do is to add those two lines to the ~/.bashrc file and restart your terminal:
alias pbcopy=’xsel --clipboard --input’
alias pbpaste=’xsel --clipboard --output’
And… that’s it! I hope that those two commands will enhance your experience with the CLI.
Work with a team that keeps learning and building better software every day.
Related posts
Dive deeper into this topic with these related posts
You might also like
Discover more content from this category
Today's Advent of Code puzzle inspired me to create this TIL. It may sound trivial, but in fact, it's tricky if you are unfamiliar with the nuances of guards' functioning.
Each of us had a situation, where we had to invoke a few, same commands each time. Making it once is not that problematic, but when we are supposed to repeat given operations, it may be better just to create one function that will handle it all.
TLDR: With jest-extended package you can write: expect([...set]).toIncludeSameMembers([value1, value2]);. If you are looking to a native, but longer solution scroll down a bit.
