如何在运行时解压几个文件的shell脚本?

问题描述:

我想在我的shell脚本文件中有几个文本文件,在脚本执行完成后解压到一个目录中。我已经与这个样子'在这里,DOC的解决方案获得通过:如何在运行时解压几个文件的shell脚本?

cat>myTextFile.txt<<'EOF' 
My Content 
EOF 

然而,我的shell脚本正变得越来越大,并开始要求更多的文件解压。基本上,我正在制作一个计算管道,并希望将其作为单个shell脚本进行分发,但一旦运行,它需要扩展到多个目录/子目录/文件。

谢谢!

+0

这是正常的分布tarba并让用户解开它。这对你来说是一种选择吗? – 2013-05-09 19:28:58

+0

@glenn,谢谢你的建议。为了查看是否可行,我希望有一个可以执行的单个文件解压缩,并且为管道提供所有文件,而不使用tar – jake9115 2013-05-09 20:10:07

+0

您似乎在某种程度上重新实现了'shar'命令(尽管听起来你的脚本不仅仅是解压缩一些文件)。 – chepner 2013-05-09 20:27:45

你可以在你的脚本嵌入无编码tar文件并解压这样的:

tar xf - <<EOF 
The uuencoded tarball 
EOF 

可以编码数据是这样的:

$ tar cf - src_tree | compress | uuencode src_tree.tar.Z >your_here_doc 

然后将其粘贴文件your_here_doc其中'The uuencoded tarball'线现在,像这样:

$ (echo tar cf - '<<EOF'; cat your_here_doc; echo EOF) >self_expanding_files.sh 
+0

我喜欢这个想法,看看它是如何解压缩的,但是如何嵌入未编码的tar文件? – jake9115 2013-05-09 20:02:23

+0

非常酷,感谢您的帮助!我肯定会得到 – jake9115 2013-05-09 20:38:36

+0

更新的答案。没有经过测试,但我希望你明白。 – piokuc 2013-05-09 20:38:49

你可以结合使用findcp命令吗?事情是这样的

find /path/to/your/files -exec cp {} /destination/path \;

+0

感谢您的建议...我宁愿将文件以某种方式封装在bash脚本中,因为它需要作为单个文件分发 – jake9115 2013-05-09 18:52:40

如何创建一个tar归档,然后追加,作为二进制负载到脚本。一个非常好的教程可以在这里找到:http://www.linuxjournal.com/content/add-binary-payload-your-shell-scripts

其他选项包括像makeself这样的脚本,为您做所有的工作,使它更容易自动化构建。