Linux 下使用 cp -f 不提示命令时,未生效。

今天在使用 cp 命令复制文件时,使用了 -f 命令参数,它表示“ 强制 (force) 的意思,若有重复或其它疑问时,不会询问使用者 ”。可实际存在目标文件时仍然提示是否需要覆盖。

[root@kayura ~]# cp -rf /root/a/* /root/b/
cp: overwrite `/root/b/29zZ.file'? y
cp: overwrite `/root/b/503h.file'? y
cp: overwrite `/root/b/Aqi5.file'? y
cp: overwrite `/root/b/AQsz.file'? y
cp: overwrite `/root/b/BuU4.file'? y

发现在 /root/ 目录下有一个叫  .bashrc 文件,内容如下:

# .bashrc

# User specific aliases and functions

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

# Source global definitions
if [ -f /etc/bashrc ]; then
        . /etc/bashrc
fi

原来直接使用的 cp 命令实际执行的是“ cp -i “,注意 -i 参数是:“ 若目的檔(destination)已经存在时,在覆盖时会先询问是否真的动作 ”,不仅 cp 命令,rm mv 命令都被加上了 -i 参数,想必是怕操作者有误操作的行为吧。

那希望正常的使用 -f 参数命令怎么做?
这里有四种方法:

1、注释掉 ~/.bashrc 文件里的别名
2、在使用命令前添加 \ ,将不会使用别名命令,如: \cp -rf /root/a/* /root/b/
3、直接使用命令的绝对路径,如: /usr/bin/cp -f
4、临时取消别名: unalias cp

发现了 ~/.bashrc 文件后,是不是可以利用一下?
比如:我想操作这些命令时默认就支持操作文件夹,那就在命令后添加 -r 参数,该参数表示:“ 递归持续复制,用于目录的复制行为

# .bashrc

# User specific aliases and functions

alias rm='rm -r'
alias cp='cp -r'
alias mv='mv -r'

# Source global definitions
if [ -f /etc/bashrc ]; then
        . /etc/bashrc
fi