cp -f 无法覆盖 cp -i 别名

cp -f 无法覆盖 cp -i 别名

在我的 /home/user/.bashrc 文件中,我有这些别名来防止错误:

alias rm='rm -i'
alias cp='cp -i'
alias mv='mv -i'

如果我真的确定我在做什么,我可以使用或覆盖rmmv别名,它不会问我是否真的要覆盖文件。rm -fmv -f

问题是它不适用于该cp命令,使用时cp -f仍然会问我一个问题。

这是正常的吗?我应该怎么做才能cp -i默认使用别名并且也能够使用cp -f命令?

我正在使用 Debian Wheezy 64 位。

答案1

通过给出cp -f,该选项只需与现有选项相加。

也就是说,如果您有一个alias cp='cp -i',则命令中的 cp 一词将被替换cp -f,因此您将得到cp -i -f file1 file2

要覆盖别名:

\cp -f file1 file2

命令前的反斜杠将禁用别名。您可以使用command cp代替来\cp提高可读性。

答案2

尽管-f意味着力量在所有这些上,对于cp,这意味着如果无法更新目标,则首先尝试删除目标来强制执行

对于mvrm-f只需覆盖-i。但对于cp,它改变了实用程序的行为,在这种情况下-f并不相反,-icp -i -f,有意义和手段,如果目标存在,请询问用户,如果无法覆盖,请先将其删除

即使对于mvrm,当涉及到发送给用户的警告和错误消息时,添加-f也不同于删除。-i例如rm non-existent-file会报告错误而rm -i -f non-existent-file不会报告错误。

如前所述,要消除 的影响,您应该使用提供的任何解决方案禁用别名,-i而不是添加。-f

相关内容