Linux用绝对路径打包时为什么会提示:从成员名中删除开头的“/”

最近学压缩命令,在用绝对路径打包时出现了这样的错误:

tar -cvf test.tar /think/test

>>>tar:从成员名中删除开头的"/"

当时我是在/home路径下,这个问题让我着实很头疼,因为有时候不得不要用绝对路径来打包。但是当我查看/home下的文件时,发现test还是打包成功了。

后来我去查资料,发现这压根就不是什么错误,只是Linux一个善意的提醒,如果不想看到他,在打包时加上参数-p就可以了。但是为什么Linux要设置这样一个提醒呢?现在我们来看看将test.tar解压会怎样:

首先看看test下有哪些文件:

ls -R /think/test

>>>.:

a

./a:

1.txt 2.txt

打包后test为:

tar -cvf test.tar /think/test

>>>tar:从成员名中删除开头的"/"

解压test.tar

tar -tf test.tar

>>>/think/test/a/1,txt

>>>/think/test/a/2.txt

tar -xf test.tar

ls

>>>think ...(其他文件)

ls -R think

>>>think:

test

think/test:

a

think/test/a:

1.txt 2.txt

也就是说,用绝对路径打包,解压时也会解压成绝对路径,这样有可能会造成直接把根目录覆盖了,或者在当前路径下解压时文件名以/开头。因此系统在压缩时会将/去掉,这也就是为什么系统会提示去掉/的原因。

那么怎样才能避免不用绝对路径解压呢,除了直接在当前目录下进行压缩操作外,还可以在压缩时切换目录:

tar -cvf test.tar -C /think test

tar tf teat.tar

>>>test/a/1.txt

>>>test/a/2.txt

这里的-C就是在压缩时切换到/think的test目录,压缩之后的文件还是在当前目录。

  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值