linux命令系列-cp

2018-02-27 10:49:51来源:https://www.jianshu.com/p/2c88e88e068f作者:freecls人点击

分享


cp命令可以用来复制拷贝文件和目录


#常用命令选项
默认覆盖
-r/R 递归
-l 拷贝硬链接
-s 软链接
-n 不覆盖(使前面的-i失效)
-i,--interactive 交互模式(使前面的-n失效)
-a,--archive 原样复制,保留全部(包括mtime,atime,文件的所有者,权限等)
-L,--dereference 跟随符号链接(默认)
-P,--no-dereference 不跟随符号链接,也就是只拷贝符号链接,不拷贝符号链接指向的实际文件
-v 显示详细信息
-u,--update 当源文件比较新时复制
-b 同名文件会以~结尾备份
--remove-destination 复制前先删除
-f 如果目标文件不能打开,那么先删除再复制(-n参数会使-f失效)


例子:


#复制并覆盖当前bbb文件为/tmp/aaa文件
cp bbb /tmp/aaa
#复制并覆盖当前所有可见文件和目录到/tmp/aaa目录下
cp -r * /tmp/aaa
#复制并覆盖当前所有文件和目录到/tmp/aaa目录下(包括隐藏文件)
cp -r . /tmp/aaa
#复制不覆盖当前所有文件和目录到/tmp/aaa目录下(包括隐藏文件)
cp -rn . /tmp/aaa
#原样复制并覆盖当前所有可见文件和目录到/tmp/aaa目录下
cp -ar * /tmp/aaa
#生成软连接bbb指向aaa
cp -s aaa bbb

总结:
很多发行版可能已经设置了命令别名,比如本人的centos7通过alias命令查看将会看到这么一句alias cp='cp -i',所以当我们使用cp命令时(其实相当于使用cp -i)如果目标文件已经存在,则会提示你而不会直接覆盖。


但是在很多场景下我们都希望直接覆盖而不是提示
则可以临时取消命令别名


unalias cp    #删除命令别名
cp -r * /tmp/aaa/ #复制当前所有到/tmp/aaa/下并覆盖
alias cp='cp -i' #重新生成命令别名

上面的这些例子已经能应付大部分场景了,更多详细用法请通过命令man cp自行查阅
如有疑问可在评论区留言


备注
1.linux爱好者欢迎进群讨论722400045
2.本系列命令都在centos7里测试,其他发行版如ubuntu,debian,fedora,opensuse等可能略微不同
3.我们的自由创作学习分享网站www.freecls.com即将开放,届时会有更多的精彩能容分享给大家
4.觉得本文有帮助的小伙伴可以赞赏和关注笔者








微信扫一扫

第七城市微信公众平台