仓酷云

标题: 来一发CentOS下cp下令中拷贝一切的写法 [打印本页]

作者: 精灵巫婆    时间: 2015-1-14 21:11
标题: 来一发CentOS下cp下令中拷贝一切的写法
欢迎大家来到仓酷云论坛!明天在编写一个剧本的时分,发明一个对照奇异的成绩:就是在利用cp拷贝以后目次下一切文件到方针目次的时分,源和方针目次巨细分歧。本来一向没有寄望有如许的成绩,厥后查了些材料,才晓得之前一向利用的格局有误,
1、准备
cp就是拷贝,最复杂的利用体例就是:

cpoldfilenewfile

但如许只能拷贝文件,不克不及拷贝目次,以是一般用:
cp-rold/new/

那就会把old目次全部拷贝到new目次下。注重,不是把old目次内里的文件拷贝到new目次,而是把old间接拷贝到new上面,了局是:
援用
[root@dc5test]#llnew/
total4
drwxr-xr-x2rootroot4096Dec1511:55old



那假如要坚持源文件的一切权限,能够如许:
cp-rpold/new/

-p参数,能够坚持权限、宿主、工夫栈,还大概包含link等;另有更复杂的,就是用:
cp-aold/new/

-a参数,就即是-dpR。
2、成绩1
好,我们来看看此次的成绩。情况是:
◎两个目次:old、new,个中old内里有个三个内容:test1文件、test2目次,另有就是.test3,这是一个隐含文件。
援用
[root@dc5test]#ll-laR
.:
total20
drwxr-xr-x4rootroot4096Dec1511:55.
drwxrwxrwt7rootroot4096Dec1511:59..
drwxr-xr-x2rootroot4096Dec1512:14new
drwxr-xr-x3rootroot4096Dec1512:14old

./new:
total8
drwxr-xr-x2rootroot4096Dec1512:14.
drwxr-xr-x4rootroot4096Dec1511:55..

./old:
total12
drwxr-xr-x3rootroot4096Dec1512:14.
drwxr-xr-x4rootroot4096Dec1511:55..
-rw-r--r--1rootroot0Dec1512:07.test3
-rw-r--r--1rootroot0Dec1512:05test1
drwxr-xr-x2rootroot4096Dec1512:14test2

./old/test2:
total8
drwxr-xr-x2rootroot4096Dec1512:14.
drwxr-xr-x3rootroot4096Dec1512:14..



◎操纵一:
援用
[root@dc5test]#cp-aold/*new/
[root@dc5test]#ll-laRnew/
new/:
total12
drwxr-xr-x3rootroot4096Dec1512:15.
drwxr-xr-x4rootroot4096Dec1511:55..
-rw-r--r--1rootroot0Dec1512:05test1
drwxr-xr-x2rootroot4096Dec1512:14test2

new/test2:
total8
drwxr-xr-x2rootroot4096Dec1512:14.
drwxr-xr-x3rootroot4096Dec1512:15..



成绩出来了:隐含的.test3文件没有一齐拷贝到new目次下。
缘故原由是:*参数利用不准确。如许的写法,一般都是由于熟习了已往Dos的格局(包含我本人),而实践在bash情况下,cp利用*是不克不及婚配相似.开首的隐含文件的。
◎操纵二
准确的写法应当如许:
援用
[root@dc5test]#cp-aold/.new/
[root@dc5test]#ll-laRnew/
new/:
total12
drwxr-xr-x3rootroot4096Dec1512:14.
drwxr-xr-x4rootroot4096Dec1511:55..
-rw-r--r--1rootroot0Dec1512:07.test3
-rw-r--r--1rootroot0Dec1512:05test1
drwxr-xr-x2rootroot4096Dec1512:14test2

new/test2:
total8
drwxr-xr-x2rootroot4096Dec1512:14.
drwxr-xr-x3rootroot4096Dec1512:14..



不必*号,而用.号取代。
另有一种对照庞大一些的写法:
援用
[root@dc5test]#cp-aold/*old/.[^.]*new/
[root@dc5test]#ll-laRnew/
new/:
total12
drwxr-xr-x3rootroot4096Dec1512:25.
drwxr-xr-x4rootroot4096Dec1511:55..
-rw-r--r--1rootroot0Dec1512:07.test3
-rw-r--r--1rootroot0Dec1512:05test1
drwxr-xr-x2rootroot4096Dec1512:14test2

new/test2:
total8
drwxr-xr-x2rootroot4096Dec1512:14.
drwxr-xr-x3rootroot4096Dec1512:25..



请注重写法,不要写成.*了。(缘故原由请看上面)
3、成绩2
下面提到不要写成.*,那.*代表甚么?
援用
[root@dc5test]#echo.*
...



.*代表的是以后目次,和上一层目次。
以是,利用.*会招致更年夜的成绩:
援用
[root@dc5test]#cp-aold/.*new/
cp:cannotcopyadirectory,`old/..,intoitself,`new/
cp:cannotcopyadirectory,`old/..,intoitself,`new/
cp:willnotcreatehardlink`new/oldtodirectory`new/.
cp:overwrite`new/.test3?y
[root@dc5test]#ll-laRnew/
new/:
total16
drwxr-xr-x4rootroot4096Dec1511:55.
drwxr-xr-x4rootroot4096Dec1511:55..
-rw-r--r--1rootroot0Dec1512:07.test3
drwxr-xr-x2rootroot4096Dec1512:14new
-rw-r--r--1rootroot0Dec1512:05test1
drwxr-xr-x2rootroot4096Dec1512:14test2

new/new:
total8
drwxr-xr-x2rootroot4096Dec1512:14.
drwxr-xr-x4rootroot4096Dec1511:55..
-rw-r--r--1rootroot0Dec1512:07.test3
-rw-r--r--1rootroot0Dec1512:05test1

new/test2:
total8
drwxr-xr-x2rootroot4096Dec1512:14.
drwxr-xr-x4rootroot4096Dec1511:55..



也就是说,利用.*就即是如许了:
援用
[root@dc5test]#cp-aold/.old/..old/.test3new/
[root@dc5test]#echoold/.*
old/.old/..old/.test3



4、扩大实在如许的成绩,不但cp下令有如许的成绩,在一切触及含有特别字符意义文件的下令时,都必要思索,比方rm:

援用
[root@dc5new]#ll-a
total12
drwxr-xr-x3rootroot4096Dec1512:14.
drwxr-xr-x4rootroot4096Dec1511:55..
-rw-r--r--1rootroot0Dec1512:07.test3
-rw-r--r--1rootroot0Dec1512:05test1
drwxr-xr-x2rootroot4096Dec1512:14test2
[root@dc5new]#rm-rf*
[root@dc5new]#ll-a
total8
drwxr-xr-x2rootroot4096Dec1512:40.
drwxr-xr-x4rootroot4096Dec1511:55..
-rw-r--r--1rootroot0Dec1512:07.test3



准确的写法应当是:
援用
[root@dc5new]#rm-rf.**
rm:cannotremove`.or`..
rm:cannotremove`.or`..
[root@dc5new]#ll-a
total8
drwxr-xr-x2rootroot4096Dec1512:42.
drwxr-xr-x4rootroot4096Dec1511:55..



固然,这是一样的:
援用
[root@dc5new]#rm-rf*.[^.]*
[root@dc5new]#ll-a
total8
drwxr-xr-x2rootroot4096Dec1512:44.
drwxr-xr-x4rootroot4096Dec1511:55..



※良多时分,估计的和实践的了局是完整纷歧样的。bash编写剧本特别必要注重。

如果您觉得本篇CentOSLinux教程讲得好,请记得点击右边漂浮的分享程序,把好文章分享给你的好朋友们!
作者: 山那边是海    时间: 2015-1-17 06:47
以前觉得Linux就跟dos一样,全是用命令窗口,相对于窗口界面来说多麻烦呀。
作者: 只想知道    时间: 2015-1-24 12:03
即便是非英语国家的人发布技术文档,Linux也都首先翻译成英语在国际学术杂志和网络上发表。
作者: 飘灵儿    时间: 2015-2-1 11:51
其实当你安装了一个完整的Linux系统后其中已经包含了一个强大的帮助,只是可能你还没有发现和使用它们的技巧。
作者: 小妖女    时间: 2015-2-7 08:20
我们自学,就这个循环的过程中,我们学习了基本操作,用vi,shell,模拟内存的分配过程等一些OS管理。
作者: 冷月葬花魂    时间: 2015-2-21 19:30
写学习日记,这是学习历程的见证,同时我坚持认为是增强学习信念的法宝。
作者: 精灵巫婆    时间: 2015-3-6 23:32
随着IT从业人员越来越多,理论上会有更多的人使用Linux,可以肯定,Linux在以后这多时间不会消失。
作者: 分手快乐    时间: 2015-3-13 23:09
这也正是有别的OS得以存在的原因,每个系统都有其自身的优点。?
作者: 再现理想    时间: 2015-3-20 23:38
随着实验课程的结束,理论课也该结束了,说实话教OS的这两位老师是我们遇到过的不错的老师(这话放这可能不太恰当).




欢迎光临 仓酷云 (http://ckuyun.com/) Powered by Discuz! X3.2