Linux cp 复制命令如果想要跳过是否覆盖提示的方法,可以使用强制复制的选项 -f
,但是实际使用时,有可能失效,还会一如既往地弹出提示,那是为什么呢?
解决方法
首先说明一下加 -f 选项也会提示的原因是,当前 linux 针对 cp 命令起了一个别名,可以通过 alias
查看:
[knowledgedict@Linux ~]# alias
alias cp='cp -i'
alias rm='rm -i'
alias vi='vim'
...
发现 cp 命令对应了一个别名 cp -i
,-i
选项强制弹出提示交互信息,所以 -f 参数此时会失效。
了解了原因之后,我们列出了 3 个解决方案:
- 对别名动手脚;
- 命令最前面加反斜杠
\
即可跳过别名生效范围; - 第三个方法非常骚,通过
yes
命令和管道命令|
传 y 信息给 cp 命令,达到自动确认的功能。
个人推荐第二种方式,因为绝大数情况下提示信息是有必要的,修改别名会对全局有效,可以针对自身需要局部加反斜杠就可以。
命令前加反斜杠
[knowledgedict@Linux ~]# \cp knowledge.json dict.json
使用 -f 选项(修改 cp 别名,如果必要)
一般别名配置是在 ~/.bashrc 文件,可以直接在 cp 别名行加 #
号禁用,如下:
# alias cp='cp -i'
alias rm='rm -i'
alias vi='vim'
...
设置完后,重新登录即可生效,此时用 -f 选项即可达到强制复制的功能。
[knowledgedict@Linux ~]# cp -f knowledge.json dict.json
yes 命令结合管道命令
通过 yes
命令和管道命令 |
传 y 信息给 cp 命令,达到自动确认的功能:
[knowledgedict@Linux ~]# yes | cp knowledge.json dict.json