1

我想在我的 shell 脚本文件中有几个文本文件,一旦脚本执行,它们就会解压到一个目录中。我一直在使用如下所示的“here-doc”解决方案:

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

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

谢谢!

4

3 回答 3

3

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

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

于 2013-05-09T18:54:18.677 回答
2

您可以在脚本中嵌入一个 uuencoded 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
于 2013-05-09T18:54:43.710 回答
0

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

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

于 2013-05-09T18:51:11.897 回答