How to copy and paste a file?

Use the cp command to copy a file, the syntax goes cp sourcefile destinationfile. Use the mv command to move the file, basically cut and paste it somewhere else.

The exact syntax you would use for your example is:

sudo cp /usr/bin/octave/3.2.4/m/miscellaneous/mkoctfile.m /usr/bin/mkoctfile-3.2.4

For more information on the cp or mv commands you can run:

man cp

or

man mv

To view the manual pages


You can cut, copy, and paste in CLI intuitively like the way you usually did in the GUI, like so:

  • cd to the folder containing files you want to copy or cut.
  • copy file1 file2 folder1 folder2 or cut file1 folder1
  • close the current terminal.
  • open another terminal.
  • cd to the folder where you want to paste them.
  • paste

To be able to do so, make sure you have installed xclip and readlink. Then, append these functions to the end of your ~/.bashrc file:

copy()
{
    # if the number of arguments equals 0
    if [ $# -eq 0 ]
    then
        # if there are no arguments, save the folder you are currently in to the clipboard
        pwd | xclip
    else
        # save the number of argument/path to `~/.numToCopy` file.
        echo $# > ~/.numToCopy

        # save all paths to clipboard
        # source: https://stackoverflow.com/a/5265775/9157799
        readlink -f "$@" | xclip
    fi

    # mark that you want to do a copy operation
    echo "copy" > ~/.copyOrCut
}

cut()
{
    # use the previous function to save the paths to clipboard
    copy "$@"

    # but mark it as a cut operation
    echo "cut" > ~/.copyOrCut
}

paste()
{
    # for every path
    for number in {1..$(cat ~/.numToCopy)}
    do
        # get the nth path
        pathToCopy="$(xclip -o | head -$number | tail -1)"

        if [ -d "$pathToCopy" ] # If it's a directory
        then
            cp -r "$pathToCopy" .
        else
            cp "$pathToCopy" .
        fi

        # if it was marked as a cut operation
        if [ $(cat ~/.copyOrCut) = "cut" ]
        then
            # delete the original file
            rm -rf "$pathToCopy"
        fi
    done
}

If you don't know what .bashrc file is and never modify it before, just open the file explorer, go to Home, press Ctrl+H (show hidden files), search for .bashrc and open it with a text editor like gedit.

Note

By using the above script, you are overriding the default functionality of these commands:

  • copy is a reserved PostgreSQL command.
  • cut and paste are reserved Linux command.

If you use one of those commands default functionality, just modify the script function names accordingly. For example, use p instead of paste.