Linux下如何使cp命令不提示覆盖文件

在Linux系统中,当使用cp命令复制文件时,如果目标位置已有同名文件,系统通常会提示是否覆盖。为了在脚本中避免这种提示,可以使用带有-f参数的cp命令,但由于系统可能将cp alias为cp -i,即使加上-f仍会出现提示。解决办法包括使用cp命令的绝对路径或者直接执行/bin/cp来调用原始命令,从而在需要无提示覆盖时实现自动化。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

在Linux下,如果希望将文件file拷贝到目录dir下,执行:cp file dir
如果dir下已经存在一个同名的文件时,系统总是会提示是否覆盖file。

直接上图,-f 参数还是出现烦人的提示:


这是一个很好的功能,它能够防止我们由于疏忽对系统造成的损害,但如果不希望看到这些交互的提示信息呢?比如我们需要写一个脚本,将某些文件安装到指定的目录下,这时我们并不想看到提示。

原因很简单,系统将cp命令alias为cp -i

当我们执行cp命令的时候,系统往往执行的是cp -i,-i 选项表示有交互的提示信息,

所以执行cp -f的时候,系统实际执行的是cp -i -f,所以仍然会有覆盖提示。

可以执行alias命令查看下:

alias egrep='egrep --color=auto'
alias fgrep='fgrep --color=auto'
alias grep='grep --color=auto'
alias l.='ls -d .* --color=auto'
alias ll='ls -l --color=auto'
alias ls='ls --color=auto'
alias mv='mv -i'
alias rm='rm -i'
alias which='alias | /usr/bin/which --tty-only --read-alias --show-dot --show-tilde'

如何执行原始的cp呢?方法有:

1、为cp加入绝对路径(可通过whereis cp, which cp命令得到),如

which cp  # /usr/bin/cp
/usr/bin/cp -f file dir/

2、直接执行下面的语句调用系统原始的命令(推荐使用):  

 \cp -f file dir/
3、在~/.bashrc里面注释掉 Alias cp='cp -i'
4、unalias cp ,然后再使用cp,但使用后还原alias cp='cp -i'



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值