我使用c shell(特别是tcsh)。
我的.custom
文件中有以下别名,因此默认情况下cp
始终定义为-i
标记:
alias cp cp -i
对于我试图编写的特定shell脚本,cp
需要强制覆盖,如果我想覆盖目标文件则不提示我。我尝试在我的shell脚本中使用cp --remove-destination
,但仍然提示我是否覆盖目标文件。当-i
已经是默认行为时,用于强制覆盖的正确标志是什么?
答案 0 :(得分:2)
添加参数的别名可能会在其他地方产生意外结果,例如alias cpi cp -i
,您可能最好不要使用别名。这样你就可以避免可能的冲突,并且也能够以常规的方式使用命令
或者,如果您坚持保留别名,则可以直接通过cp
使用/bin/cp
。
答案 1 :(得分:2)
您始终可以通过在前面加上'\'来调用原始/无别名命令(尝试:which cp
vs which \cp
)。
运行:\cp a b
绕过别名,即调用原始命令,如果没有别名则调用该命令。这比明确运行/bin/cp
要好,因为:
cp
时,您希望运行cp
,而不是/bin/cp
)cd
),它们不是可执行文件,因此没有“完整路径”答案 2 :(得分:1)
您有两种可能性:
首先使用系统cp而不是调用你的别名:
/bin/cp .....
第二个覆盖-i选项(所以它看起来像cp -i -n)
cp -n ....
第二个的可读性要低得多,所以我建议使用第一个。