The cp command (which stands for a copy) is one of the commonly used commands on Linux and other UNIX-like operating systems, for copying files and directories. In this guide, we will show how to force the cp command to overwrite a copy operation without confirmation in Linux.
Usually, when you run a cp command, it overwrites the destination file(s) or directory as shown.
# cp bin/git_pull_frontend.sh test/git_pull_frontend.sh
To run cp in interactive mode so that it prompts you before overwriting an existing file or directory, use the -i
flag as shown.
# cp -i bin/git_pull_frontend.sh project1/git_pull_frontend.sh
By default, modern Linux distributions especially those in the Red Hat Enterprise Linux (RHEL) family come with an alias for the cp command which makes a user run the cp command in interactive mode. This may not be the case on Debian and Ubuntu derivatives.
To check all your default aliases, run the alias command as shown.
# alias
The highlighted alias in the above screenshot implies that when you run the command, by default it will run in interactive mode. Even when you use the yes
command, the shell will still prompt you to confirm the overwrite.
# yes | cp -r bin test
The best way to force the overwrite is to use a backward slash before the cp command as shown in the following example. Here, we are copying contents of the bin
directory to test
directory.
# \cp -r bin test
Alternatively, you can unalias the cp alias for the current session, then run your cp command in the non-interactive mode.
# unalias cp # cp -r bin test
For more information, see the cp command man page.
# man cp
If you have any questions, ask us via the feedback form below.
Or you can type /bin/cp and not have to mess with aliases so they are there if and when you prefer them.
What is the relevance of
\
? Could you pls elaborate?It prevents expansion of aliases and thus causes the lookup to fall back to /usr/bin/cp.
in bash, the “command” command will run the first argument without any shell functions or aliases.
This is useful in something like:
@jb
Great, thanks for sharing with us.
really? cp -fr
@jb
This doesn’t work when the alias is set. Try it out.
Alias
cp=cp
would also work.@Ajay
Many thanks for sharing.