LinuxSir.cn,穿越时空的Linuxsir!

 找回密码
 注册
搜索
热搜: shell linux mysql
查看: 1957|回复: 4

请问 (cd /source/directory && tar cf - . ) | (cd /dest/directo

[复制链接]
发表于 2007-12-13 12:45:03 | 显示全部楼层 |阅读模式
[已解决]
今天看ABS中遇到了这个问题,怎么也看不懂
  1.   1 (cd /source/directory && tar cf - . ) | (cd /dest/directory && tar xpvf -)
  2.   2 # 从一个目录移动整个目录树到另一个目录
复制代码

从解释中没看明白,大家怎么认为?
  1.   1 (cd /source/directory && tar cf - . ) | (cd /dest/directory && tar xpvf -)
  2.   2 # 从一个目录移动整个目录树到另一个目录
  3.   3 # [感谢Alan Cox <a.cox@swansea.ac.uk>, 走出了部分修改]
  4.   4
  5.   5 # 1) cd /source/directory    源目录
  6.   6 # 2) &&                     "与列表": 如果'cd'命令成功了, 那么就执行下边的命令.
  7.   7 # 3) tar cf - .              'c'创建一个新文档, 'f'后边跟'-'指定目标文件作为stdout
  8.   8 #                            '-'后边的'f'(file)选项, 指明作为stdout的目标文件.
  9.   9 #                            并且在当前目录('.')执行.
  10. 10 # 4) |                       管道...
  11. 11 # 5) ( ... )                 一个子shell
  12. 12 # 6) cd /dest/directory      改变当前目录到目标目录.
  13. 13 # 7) &&                     "与列表", 同上
  14. 14 # 8) tar xpvf -              'x'解档, 'p'保证所有权和文件属性,
  15. 15 #                            'v'发完整消息到stdout,
  16. 16 #                            'f'后边跟'-',从stdin读取数据.
  17. 17 #
  18. 18 #                            注意:'x' 是一个命令, 'p', 'v', 'f' 是选项.
复制代码
发表于 2007-12-13 14:53:03 | 显示全部楼层
sub shell 中执行
回复 支持 反对

使用道具 举报

发表于 2007-12-13 20:54:46 | 显示全部楼层
tar有-C选项,用不着这么麻烦
回复 支持 反对

使用道具 举报

发表于 2007-12-14 14:06:38 | 显示全部楼层
他这里只是为了说明&&的用法,如果cd成功那么继续执行以下的操作,也就是接下来的打包操作
回复 支持 反对

使用道具 举报

发表于 2010-2-9 12:04:35 | 显示全部楼层
&&你应当懂吧。tar中的  -   表示stdin或者stdout,当需要将stdin或者stdout作为一个文件名参数来使用时可以使用 -   。
tar cf - .       表示将当前目录也就是 ./ 下的文件都打包生成一个文件,此文件为 -  ,意即将生成的包文件的二进制内容以字符方式显示到stdout上。
tar xpvf -      表示将从stdin读入的内容全部解压到当前目录下。

这下你应当明白了吧!
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

快速回复 返回顶部 返回列表