![复制现有文件而不确认?](https://linux22.com/image/40443/%E5%A4%8D%E5%88%B6%E7%8E%B0%E6%9C%89%E6%96%87%E4%BB%B6%E8%80%8C%E4%B8%8D%E7%A1%AE%E8%AE%A4%EF%BC%9F.png)
我需要复制并覆盖大量文件,我使用了以下命令:
# cp -Rf * ../
但是每当目标文件夹中存在同名文件时,我就会收到以下问题:
cp: overwrite `../ibdata1'?
问题是我有大约 200 个文件将被覆盖,而且我不认为按Y then Enter
200 次是正确的方法。
那么,正确的方法是什么?
答案1
您可以这样做yes | cp -rf myxx
,或者如果您以 root 身份执行此操作 - 您的 .bashrc 或 .profile 具有 cp 到 cp -i 的别名,大多数现代系统都会对 root 配置文件执行此操作。
您可以暂时绕过别名并使用命令的非别名版本,方法是在命令前面加上 \ 前缀,例如 \cp 不管什么
答案2
您是否意识到 RHEL 和 CentOS 已尝试通过为 root 用户设置别名来防止意外覆盖和删除文件来保护新手用户?
alias cp='cp -i'
alias mv='mv -i'
alias rm='rm -i'
该-i
开关是修改或删除现有文件时需要确认的开关。因为别名扩展发生在命令执行之前,所以即使使用开关--force -f
仍然需要确认。
您可以通过编辑文件永久删除别名/root/.bashrc
,在会话期间使用以下命令删除别名,unalias cp
或者使用以下命令之一删除别名:
- 使用完整路径
/bin/cp
- 使用引号
"cp"
或'cp'
在命令周围使用引号 - 使用命令关键字例如
command cp
- 逃避命令
\cp