Johnny Matthews | Copy file contents to clipboard.

I often fine myself needing to copy the contents of a file into the system clipboard while fiddling around in the terminal. So I created a quick little function to help me. This was written on 12th of January 2021.

  1. Open the RC file for your shell. I’m using ZSH, so I need to open ~/.zshrc.

  2. Create a new function called copy:

    function copy() {
  3. Within the function, use cat to return the contents of a file:

    function copy() {
        cat $1 

    We’re using the $1 variable since we’re going to pass in the file that we want to copy.

  4. Pipe the output of cat to xclip:

    function copy() {
        cat $1 | xclip -i

    The -i option tells xclip to expect content from standard input.

  5. Tell xclip that we want to add this content to the secondary clipboard:

    function copy() {
        cat $1 | xclip -i -seletion clipboard

    In Ubuntu/Debian based Linux distributions, the main clipboard is accessed using the middle mouse button. Since I never use a mouse, this functionality is useless to me, so I need to address the regular clipboard.

  6. Save and exit the RC file.

  7. Source the file to get the updates:

    source ~/.zshrc

    Make sure to source your actual RC file. The destination might be different to what I’ve got here.

  8. You should now be able to copy the contents of a file using copy filename:

    echo "This is a test." >> test.txt
    copy test.txt

    Pressing ctrl + v should now paste This is a test.! Don’t forget to add your RC file to version control like Git!