我想在我的 shell 脚本文件中有几个文本文件,一旦脚本执行,它们就会解压到一个目录中。我一直在使用如下所示的“here-doc”解决方案:
cat>myTextFile.txt<<'EOF'
My Content
EOF
但是,我的 shell 脚本变得越来越大,并且开始需要越来越多的文件来解包。基本上,我正在制作一个计算管道,并希望将其作为单个 shell 脚本分发,但它需要在运行后扩展到多个目录/子目录/文件。
谢谢!
如何创建一个 tar 存档,然后将其作为二进制有效负载附加到您的脚本中。可以在这里找到一个非常好的教程:http ://www.linuxjournal.com/content/add-binary-payload-your-shell-scripts
其他选项包括像makeself这样的脚本,它可以为您完成所有工作,从而更容易自动化构建。
您可以在脚本中嵌入一个 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
你可以使用find
和cp
命令的组合吗?像这样的东西
find /path/to/your/files -exec cp {} /destination/path \;