如何在执行时解压缩多个文件的shell脚本?

时间:2013-05-09 18:46:57

标签: shell heredoc

我想在我的shell脚本文件中有几个文本文件,一旦脚本执行就会解压缩到一个目录中。我一直在使用'here-doc'解决方案,看起来像这样:

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

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

谢谢!

3 个答案:

答案 0 :(得分:3)

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

其他选项包括像makeself这样的脚本,可以为您完成所有工作,从而更容易实现构建的自动化。

答案 1 :(得分:2)

您可以在脚本中嵌入一个未编码的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

答案 2 :(得分:0)

您可以使用findcp命令的组合吗?像这样的东西

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