我想在我的shell脚本文件中有几个文本文件,一旦脚本执行就会解压缩到一个目录中。我一直在使用'here-doc'解决方案,看起来像这样:
cat>myTextFile.txt<<'EOF'
My Content
EOF
但是,我的shell脚本越来越大,并且开始需要解压缩越来越多的文件。基本上,我正在制作计算管道,并希望将其作为单个shell脚本进行分发,但是一旦运行它需要扩展到几个目录/子目录/文件。
谢谢!
答案 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)
您可以使用find
和cp
命令的组合吗?像这样的东西
find /path/to/your/files -exec cp {} /destination/path \;