我想在我的shell腳本文件中有幾個文本文件,在腳本執行完成後解壓到一個目錄中。我已經與這個樣子'在這裏,DOC的解決方案獲得通過:如何在運行時解壓幾個文件的shell腳本?
cat>myTextFile.txt<<'EOF'
My Content
EOF
然而,我的shell腳本正變得越來越大,並開始要求更多的文件解壓。基本上,我正在製作一個計算管道,並希望將其作爲單個shell腳本進行分發,但一旦運行,它需要擴展到多個目錄/子目錄/文件。
謝謝!
我想在我的shell腳本文件中有幾個文本文件,在腳本執行完成後解壓到一個目錄中。我已經與這個樣子'在這裏,DOC的解決方案獲得通過:如何在運行時解壓幾個文件的shell腳本?
cat>myTextFile.txt<<'EOF'
My Content
EOF
然而,我的shell腳本正變得越來越大,並開始要求更多的文件解壓。基本上,我正在製作一個計算管道,並希望將其作爲單個shell腳本進行分發,但一旦運行,它需要擴展到多個目錄/子目錄/文件。
謝謝!
你可以在你的腳本嵌入無編碼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 \;
感謝您的建議...我寧願將文件以某種方式封裝在bash腳本中,因爲它需要作爲單個文件分發 – jake9115 2013-05-09 18:52:40
如何創建一個tar歸檔,然後追加,作爲二進制負載到腳本。一個非常好的教程可以在這裏找到:http://www.linuxjournal.com/content/add-binary-payload-your-shell-scripts
其他選項包括像makeself這樣的腳本,爲您做所有的工作,使它更容易自動化構建。
這是正常的分佈tarba並讓用戶解開它。這對你來說是一種選擇嗎? – 2013-05-09 19:28:58
@glenn,謝謝你的建議。爲了查看是否可行,我希望有一個可以執行的單個文件解壓縮,並且爲管道提供所有文件,而不使用tar – jake9115 2013-05-09 20:10:07
您似乎在某種程度上重新實現了'shar'命令(儘管聽起來你的腳本不僅僅是解壓縮一些文件)。 – chepner 2013-05-09 20:27:45