Linux系统利⽤cp命令实现强制覆盖功能的⽅法
前⾔
cp命令⽤来将⼀个或多个源⽂件或者⽬录复制到指定的⽬的⽂件或⽬录。它可以将单个源⽂件复制成⼀个指定⽂件名的具体的⽂件或⼀个已经存在的⽬录下。cp命令还⽀持同时复制多个⽂件,当⼀次复制多个⽂件时,⽬标⽂件参数必须是⼀个已经存在的⽬录,否则将出现错误。
语法
cp(选项)(参数)
选项
-a:此参数的效果和同时指定"-dpR"参数相同;
-d:当复制符号连接时,把⽬标⽂件或⽬录也建⽴为符号连接,并指向与源⽂件或⽬录连接的原始⽂件或⽬录;
-f:强⾏复制⽂件或⽬录,不论⽬标⽂件或⽬录是否已存在;
-
i:覆盖既有⽂件之前先询问⽤户;
-l:对源⽂件建⽴硬连接,⽽⾮复制⽂件;
-p:保留源⽂件或⽬录的属性;
-R/r:递归处理,将指定⽬录下的所有⽂件与⼦⽬录⼀并处理;
-s:对源⽂件建⽴符号连接,⽽⾮复制⽂件;
-u:使⽤这项参数后只会在源⽂件的更改时间较⽬标⽂件更新时或是名称相互对应的⽬标⽂件并不存在时,才复制⽂件;
-S:在备份⽂件时,⽤指定的后缀“SUFFIX”代替⽂件的默认后缀;
-b:覆盖已存在的⽂件⽬标前将⽬标⽂件备份;
-v:详细显⽰命令执⾏的操作。
参数
源⽂件:制定源⽂件列表。默认情况下,cp命令不能复制⽬录,如果要复制⽬录,则必须使⽤-R选项;
⽬标⽂件:指定⽬标⽂件。当“源⽂件”为多个⽂件时,要求“⽬标⽂件”为指定的⽬录。
利⽤cp命令实现强制覆盖功能
我们平常在Linux中使⽤ cp 命令时,会发现将⼀个⽬录中⽂件复制到另⼀个⽬录具有相同⽂件名称时,即使添加了 -rf 参数强制覆盖复制时,系统仍然会提⽰让你⼀个个的⼿⼯输⼊ y 确认复制,所添加的rf参数是不起作⽤的。
原因:
cp命令被系统设置了别名,相当于cp=‘cp -i'。
查询alias命令
[root@localhost sonarqube]# alias
alias cp='cp -i'
alias egrep='egrep --color=auto'
alias fgrep='fgrep --color=auto'
alias grep='grep --color=auto'
alias l.='ls -d .* --color=auto'
alias ll='ls -l --color=auto'
alias ls='ls --color=auto'
alias mv='mv -i'
alias rm='rm -i'
alias which='alias | /usr/bin/which --tty-only --read-alias --show-dot --show-tilde'
通过上述输出,可以看出,我们平时使⽤ cp 命令,虽然没有添加任何参数 ,但系统默认会在我们使⽤ cp 命令时⾃动添加 -i 参数
-i, --interactive
prompt before overwrite
-i 即交互的缩写⽅式,也就是在使⽤ cp 命令作⽂件覆盖操作之前,系统会要求确认提⽰.这个本来是系统的⼀个保险措施.如果有很多⽂件要复制,觉得⼀个⼀个输⼊y 确认⿇烦的话,可以使⽤如下⽅法解决:
强制复制
建议⼤家使⽤⽅式⼀,因为取消别名的话很容易造成风险,万⼀⼜忘记恢复别名,以后的复制都不会有提⽰信息。
有提⽰信息可以多⼀层保险嘛,是⼈都会有犯混的时候,给⾃⼰加⼀个保险,有保障呀.
⽅式⼀
使⽤原⽣的cp命令
/bin/cp -rf xxxx
⽅式⼆
cp复制文件到指定目录下
取消cp命令别名
unalias cp
去掉 cp 命令的别名,这时你再⽤ cp -rf 复制⽂件时,就不会要求确认啦.
复制完成后恢复别名
alias cp='cp -i'
总结
以上就是这篇⽂章的全部内容了,希望本⽂的内容对⼤家的学习或者⼯作具有⼀定的参考学习价值,如果有疑问⼤家可以留⾔交流,谢谢⼤家对的⽀持。
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论