Chinaunix首页 | 论坛 | 博客
  • 博客访问: 2072430
  • 博文数量: 470
  • 博客积分: 10206
  • 博客等级: 上将
  • 技术积分: 5620
  • 用 户 组: 普通用户
  • 注册时间: 2008-07-03 12:50
文章分类

全部博文(470)

文章存档

2012年(1)

2011年(18)

2010年(47)

2009年(404)

分类:

2009-08-24 20:24:53

[] [] [] [] []
  帅哥
精灵



CU编号: 429226
注册:2006-6-10
最后登录: 2009-08-24
帖子:
精华:0







状态:...离线...

[] [] [博客]


[]     顶部
发表于 2009-8-24 15:54 

在将dir1目录下的全部文件和子目录拷贝到dir2目录里,我以前是用以下命令的:
#cp -rf ./dir1/* ./dir2
今天发现上面的方法不能拷贝dir1目录下以"."开头的子目录,改成下面的方式就可以:
#cp ./dir1/. ./dir2/
请问:上面命令中dir1后面的“.”是shell通配符吗?做何解?



您对本贴的看法:

__________________________________

只有自己才能拯救自己
| | |
  帅哥 (黑哥)
法师



CU编号: 631768
注册:2007-10-22
最后登录: 2009-08-24
帖子:
精华:0







来自:小山村
状态:...离线...

[] [] [博客]


[]     顶部
发表于 2009-8-24 16:03 

回复 #1 pengxihan 的帖子

不是通配符。



您对本贴的看法:

__________________________________

LIVE FREE OR DIE!     K.I.S.S.  DRY


| | |

新手




CU编号: 436199
注册:2006-6-28
最后登录: 2009-08-24
帖子:
精华:0







状态:...离线...

[] [] [博客]


[]     顶部
发表于 2009-8-24 16:04 



QUOTE:
原帖由 blackold 于 2009-8-24 16:03 发表
不是通配符。

那是个啥????



您对本贴的看法:
| | |
  帅哥 (黑哥)
法师



CU编号: 631768
注册:2007-10-22
最后登录: 2009-08-24
帖子:
精华:0







来自:小山村
状态:...离线...

[] [] [博客]


[]     顶部
发表于 2009-8-24 16:05 

就是字面字符。



您对本贴的看法:

__________________________________

LIVE FREE OR DIE!     K.I.S.S.  DRY


| | |
  帅哥
老法王


CU奥运火炬传递手2008
荣誉会员  
CU编号: 187152
注册:2004-10-1
最后登录: 2009-08-24
帖子:
精华:







来自:北京海淀
状态:...离线...

[] [] [博客]


[]     顶部
发表于 2009-8-24 16:06 



QUOTE:
原帖由 rainbowshine521 于 2009-8-24 16:04 发表


那是个啥????

就是一个点 :mrgreen:



您对本贴的看法:

__________________________________


| | |
  帅哥 (黑哥)
法师



CU编号: 631768
注册:2007-10-22
最后登录: 2009-08-24
帖子:
精华:0







来自:小山村
状态:...离线...

[] [] [博客]


[]     顶部
发表于 2009-8-24 16:18 

哦,明白LZ想问什么了。
dir/. 中的.表示当前目录。



您对本贴的看法:

__________________________________

LIVE FREE OR DIE!     K.I.S.S.  DRY


| | |
  帅哥
天使



CU编号: 75493
注册:2003-7-25
最后登录: 2009-08-24
帖子:
精华:0







来自:Hangzhou
状态:...在线...

[] [] [博客]


[]     顶部
发表于 2009-8-24 16:21 

楼主这么写好像把问题搞复杂了,本来cp -r dir1 dir2连目录也不需要建的啊



您对本贴的看法:
| | |

精灵




CU编号: 358466
注册:2006-1-4
最后登录: 2009-08-24
帖子:
精华:0







状态:...离线...

[] [] [博客]


[]     顶部
发表于 2009-8-24 16:23 

你ls -a的时候 所有目录下都会有2个目录一个是. 一个是..
.表示当前目录 ..表示上级目录
cd ..
./xxx



您对本贴的看法:
| | |
  帅哥 (黑哥)
法师



CU编号: 631768
注册:2007-10-22
最后登录: 2009-08-24
帖子:
精华:0







来自:小山村
状态:...离线...

[] [] [博客]


[]     顶部
发表于 2009-8-24 16:28 

回复 #7 Minsic 的帖子

没有啊,LZ的写法很好。学习!



您对本贴的看法:

__________________________________

LIVE FREE OR DIE!     K.I.S.S.  DRY


| | |
  帅哥
天使



CU编号: 75493
注册:2003-7-25
最后登录: 2009-08-24
帖子:
精华:0







来自:Hangzhou
状态:...在线...

[] [] [博客]


[]     顶部
发表于 2009-8-24 16:32 

回复 #9 blackold 的帖子

黑哥的意思是,他第二个命令不递归了?



您对本贴的看法:
| | |

» » »
[] [] [] [] []
  帅哥 (黑哥)
法师



CU编号: 631768
注册:2007-10-22
最后登录: 2009-08-24
帖子:
精华:0







来自:小山村
状态:...离线...

[] [] [博客]


[]     顶部
发表于 2009-8-24 16:37 

回复 #10 Minsic 的帖子

当然递归。但
cp -ri src/. dest/ 相当于 cp -ri src/* scr/.* dest/

更简练。



您对本贴的看法:

__________________________________

LIVE FREE OR DIE!     K.I.S.S.  DRY


| | |
  帅哥
天使



CU编号: 75493
注册:2003-7-25
最后登录: 2009-08-24
帖子:
精华:0







来自:Hangzhou
状态:...在线...

[] [] [博客]


[]     顶部
发表于 2009-8-24 16:53 

回复 #11 blackold 的帖子

我刚发现楼主顶楼的第二条语句其实是错的,没加-r选项根本就跑不了,大概手误了?

他大概不明白的就是.的含义吧?

只是,如果他的目标目录如果没有事先创建的话,直接cp -r dir1 dir2不是更简练么?



您对本贴的看法:
| | |
  帅哥 (黑哥)
法师



CU编号: 631768
注册:2007-10-22
最后登录: 2009-08-24
帖子:
精华:0







来自:小山村
状态:...离线...

[] [] [博客]


[]     顶部
发表于 2009-8-24 16:58 

回复 #12 Minsic 的帖子

这应该是不同的问题。

QUOTE:
cp -r 可以自动创建目录目录dest?

搞错了,可以自动创建。

[ 本帖最后由 blackold 于 2009-8-24 17:01 编辑 ]



您对本贴的看法:

__________________________________

LIVE FREE OR DIE!     K.I.S.S.  DRY


| | |
  帅哥
天使



CU编号: 75493
注册:2003-7-25
最后登录: 2009-08-24
帖子:
精华:0







来自:Hangzhou
状态:...在线...

[] [] [博客]


[]     顶部
发表于 2009-8-24 17:01 

回复 #13 blackold 的帖子

当然可以的啊

QUOTE:
[oracle@Minerva practice]$ ls -ld minsic2
ls: minsic2: 没有那个文件或目录
[oracle@Minerva practice]$ ls -aR minsic
minsic:
.  ..  1.txt  2.txt  aaa  a b.txt  .bash_profile

minsic/aaa:
.  ..  bbb
[oracle@Minerva practice]$ cp -r minsic minsic2
[oracle@Minerva practice]$ ls -aR minsic2
minsic2:
.  ..  1.txt  2.txt  aaa  a b.txt  .bash_profile

minsic2/aaa:
.  ..  bbb
[oracle@Minerva practice]$




您对本贴的看法:
| | |
  帅哥 (黑哥)
法师



CU编号: 631768
注册:2007-10-22
最后登录: 2009-08-24
帖子:
精华:0







来自:小山村
状态:...离线...

[] [] [博客]


[]     顶部
发表于 2009-8-24 17:02 

回复 #14 Minsic 的帖子

嗯,是我弄错了。

这与LZ的问题不同。



您对本贴的看法:

__________________________________

LIVE FREE OR DIE!     K.I.S.S.  DRY


| | |
  帅哥
精灵



CU编号: 429226
注册:2006-6-10
最后登录: 2009-08-24
帖子:
精华:0







状态:...离线...

[] [] [博客]


[]     顶部
发表于 2009-8-24 17:39 

回复 #11 blackold 的帖子

第二条命令是少了-r,手误,不好意思!
只是黑哥你说cp -ri src/. dest/ 相当于 cp -ri src/* scr/.* dest/
我知道src/*中*是通配符,会匹配任何字符串,为什么不能匹配以“.”开头的字符串呢?



您对本贴的看法:

__________________________________

只有自己才能拯救自己
| | |
  帅哥
精灵



CU编号: 429226
注册:2006-6-10
最后登录: 2009-08-24
帖子:
精华:0







状态:...离线...

[] [] [博客]


[]     顶部
发表于 2009-8-24 17:41 

回复 #12 Minsic 的帖子

问题是如果dest目录已经存在了呢?



您对本贴的看法:

__________________________________

只有自己才能拯救自己
| | |
  帅哥 (黑哥)
法师



CU编号: 631768
注册:2007-10-22
最后登录: 2009-08-24
帖子:
精华:0







来自:小山村
状态:...离线...

[] [] [博客]


[]     顶部
发表于 2009-8-24 18:51 

回复 #16 pengxihan 的帖子

*并不匹配.文件。



您对本贴的看法:

__________________________________

LIVE FREE OR DIE!     K.I.S.S.  DRY


| | |
  帅哥
风云使者




CU编号: 690903
注册:2008-4-13
最后登录: 2009-08-24
帖子:
精华:0







状态:...在线...

[] [] [博客]


[]       顶部
发表于 2009-8-24 19:45 

回复 #11 blackold 的帖子

大哥,我能理解你的意思,你的意思是对的!!
cp -ri src/* scr/.* dest/
这条命令我验证了,和楼主的有出入,会有额外的副作用哦。

[jesse@localhost shell_scri]$ pwd
/home/jesse/shell_scri
[jesse@localhost shell_scri]$ ls
a  b  urfile
[jesse@localhost shell_scri]$ ls -a a/
.  ..  1  2  3  .bakd  ooff
[jesse@localhost shell_scri]$ ls -a b/
.  ..
[jesse@localhost shell_scri]$ cp -rf ./a/. ./b/
[jesse@localhost shell_scri]$ ls -a b/
.  ..  1  2  3  .bakd  ooff
[jesse@localhost shell_scri]$ rm -rf b/*
[jesse@localhost shell_scri]$ ls -a b/
.  ..  .bakd
[jesse@localhost shell_scri]$ rm -rf b/.*
rm: cannot remove `.' directory `b/.'
rm: cannot remove `..' directory `b/..'
[jesse@localhost shell_scri]$ ls -a b/
.  ..
[jesse@localhost shell_scri]$ cp -rf a/* a/.* b/
cp: will not create hard link `b/./ooff' to directory `b/ooff'
cp: cannot copy a directory, `a/..', into itself, `b/'
[jesse@localhost shell_scri]$ ls -a b/
.  ..  1  2  3  b  .bakd  ooff  urfile(多了这个文件)
[jesse@localhost shell_scri]$ ls
a  b  urfile

[ 本帖最后由 greendays 于 2009-8-24 19:59 编辑 ]



您对本贴的看法:
| | |
阅读(2119) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~