cp 命令是在 Linux 上用来复制文件的命令,不管是复制单个文件,还是整个文件夹复制,都可以用 cp 命令实现。有时候我们需要用新的文件覆盖旧的文件,并且希望命令不提示 Y/N 而是直接覆盖,就可以用 -f 直接覆盖。但是今天老王遇到一个问题,cp 命令加了 -f 后依然提示覆盖,这里分享下原因和解决办法。
一、cp 命令
例如我们需要将当前文件下的 install.sh 文件复制到 /root/scripts
目录下:
cp install.sh /root/scripts/
如果我们 /root/scripts
已经有了一个 install.sh 了,那么 Linux 就会提示问我们是否覆盖“install.sh”,可以输入 y 确认覆盖,或者 n 取消覆盖。如果只有一个文件还好,但是如果有很多个文件,那么就很麻烦了。这个时候就可以使用 -f 不提示直接覆盖:
cp -f install.sh /root/scripts/
二、cp -f 之后依然提示覆盖
今天老王在用 cp 命令时,加了 -f,依然会提示是否需要覆盖,后来发现是 Linux 上别名设置的问题,输入 alias
返回如下:
alias cp='cp -i'
也就是说当你执行 cp 时,其实执行的是 cp –i。
解决办法:
方法一:修改 ~/.bashrc 文件禁用掉 cp 的 alias
即在 alias cp='cp -i'
前加上“#”注释,重新登录即可实现复制不提示
方法二:直接输入命令即可实现,用 \cp 代替 cp:
\cp -f install.sh /root/scripts/