我们在写 Shell 脚本的时候,cp 复制或mv移动的时候,因为要启用后台运行,想要处理已存在文件的时候,直接覆盖,而不要跳出确认。可是无论是否你加了-f
参数,还是会提示是否覆盖。
经研究过后发现,是因为在~/.bashrc
加了如下,-i 是强制提示
alias rm='rm -i' alias cp='cp -i' alias mv='mv -i'
解决的办法有4个,以cp 为例,其他命令类似
- 直接输入命令,在cp前加上\即可实现,例如:
\cp -fR /tmp/data/* /opt/data/
- 利用管道
yes | cp -fR /tmp/data/* /opt/data/
- 复制前把目前文件夹或者里面的内容先删除,例如:
rm -rf /opt/data/* cp -fR /tmp/data/* /opt/data/
- 修改 .bashrc文件禁用cp的alias。alias cp='cp -i'前面加『#』注释掉,重新登录即可实现复制不提示
文章评论