在使用 tar 解压时隐藏错误消息:'tar:从成员名称中删除前导 `/'',用于使用 --absolute-names 创建的存档

在使用 tar 解压时隐藏错误消息:'tar:从成员名称中删除前导 `/'',用于使用 --absolute-names 创建的存档

它不是重复的,其他stackexchange 上的问题是关于在创建存档时摆脱此消息。

-P给定使用选项(以“/”开头)创建的档案,这是否可能?

--absolute-names我有一个用“ ”(选项)创建的档案-P- 以 / 为前导。

我想解压它,并剥离 / ( tar 默认执行此操作)。

这几乎是理想的,但我想保持沉默:

tar: Removing leading `/' from member names.

而不会删除其他消息(因此以暴力形式破解2>/dev/null并不是解决方案)。

我找到了多种解决方案,可以在创建存档时消除此消息的干扰,但对于解包却没有。我知道,grep -v但它会 (a) 隐藏 tar 中的错误代码 (b) 如果未删除有关 / 的消息,则会添加自己的错误代码。

这种情况可能会复制

cd /home/user/tmp
touch a.txt
mateusz@Grisznak:~/Desktop/tmp$ tar --create -P /home/user/tmp > a.tar
mateusz@Grisznak:~/Desktop/tmp$ tar --extract --file=a.tar 

为了避免 XY 问题:我正在解压backupgem 创建的档案(http://backup.github.io/backup/v4/)。

答案1

这似乎可以实现你想要的效果:

tar --extract --xform 's/^\///' --file=a.tar

根据手册页:

--transform, --xform EXPRESSION
      use sed replace EXPRESSION to transform file names

因此它仍然会删除前导斜杠,但不会谈论它。

相关内容