在我的 /home/user/.bashrc 文件中,我有这些别名来防止错误:
alias rm='rm -i'
alias cp='cp -i'
alias mv='mv -i'
Run Code Online (Sandbox Code Playgroud)
如果我真的确定我在做什么,我可以使用or覆盖rm和mv别名,它不会问我是否真的想覆盖文件。rm -fmv -f
问题是它对cp命令不起作用,使用cp -f仍然会问我一个问题。
这是正常的吗?我应该怎么做才能在cp -i默认情况下使用别名并能够使用cp -f命令?
我正在使用 Debian Wheezy 64 位。
Gur*_*uru 12
通过 give cp -f,该选项只是与现有选项相加。
也就是说,如果您有一个alias cp='cp -i',则命令中的单词 cp 将被替换cp -f,因此您将获得cp -i -f file1 file2.
要覆盖别名:
\cp -f file1 file2
Run Code Online (Sandbox Code Playgroud)
命令前的反斜杠将禁用别名。您可以使用command cp而不是\cp为了可读性。
虽然-f意味着对所有这些强制执行,对于cp,这意味着如果无法更新目的地,则首先尝试删除目的地。
对于mvand rm,-f只是覆盖-i. 但是对于cp,它改变了实用程序的行为,在那种情况下-f不是相反的-i,cp -i -f有意义并且意味着,如果目标存在,询问用户,如果它不能被覆盖,首先将其删除。
即使对于mvand rm,在发送给用户的警告和错误消息方面,添加-f与删除-i也不同。例如rm non-existent-file会报告错误而rm -i -f non-existent-file不会。
如前所述,要消除 的影响-i,而不是添加-f,您应该使用提供的任何解决方案禁用别名。