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 realpath
. 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
# https://stackoverflow.com/q/5265702/9157799#comment128297633_5265775
realpath -s "$@" | 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 ((i=1; i <= $(cat ~/.numToCopy); i++))
do
# get the nth path
pathToCopy="$(xclip -o | head -$i | 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 -r "$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
.