教程集

Linux 命令杂谈之-目录覆盖

阅读:179;作者:loushiming

有时候我们要用一个目录 a/ 覆盖另一个目录 b/下的所有文件,但是 cp 命令总是玩不溜,究竟有哪些原因让我们 get stuck 呢, 我们来看看究竟有哪些坑。

文件多提示是否要覆盖

如果有 b/目录中有与a/中相同位置的同名文件,一般都会提示我们是否要覆盖,当文件一多就很蛋疼了,于是试了好多选项都不管用, 例如-f 等等。
其实,默认情况下,cpmv 命令执行时其实都被加了 -i 选项,这是linux为了防止大家误操作,覆盖现有文件而默认做的设置,通过 alias cp来查看, 可以通过 unalias cp 来取消

cp 命令其实是 cp -i 的别名
当然你也可以看看你经常使用的其他命令是不是也是被默认加了选项。例如 alias mv alias vi

命令执行完了但是文件其实没有覆盖

看看你执行的是否是如下的命令,

cp -r a/ b/ 

如果是的话,真的是不管用的试试

cp -r a/* b/

这回可以了,第一个命令其实是把 a/ 整个复制到了 b/

-f 选项有什么作用

其实 cp 是默认就是会覆盖的,cp -n 才是不覆盖
-f 参数man中的解释是

if an existing destination file cannot be

                             opened, remove it and try again (redundant if
                             the -n option is used)

意思是如果目录标文件不能被打开,就移除并且重试,如果使用了 -n 选项,会使用冗余策略,不会动目标文件。

(转载本站文章请注明作者和出处 教程集 – jiaochengji.com ,请勿用于任何商业用途)

上一篇: