2013-05-09 78 views
1

我想在我的shell腳本文件中有幾個文本文件,在腳本執行完成後解壓到一個目錄中。我已經與這個樣子'在這裏,DOC的解決方案獲得通過:如何在運行時解壓幾個文件的shell腳本?

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

然而,我的shell腳本正變得越來越大,並開始要求更多的文件解壓。基本上,我正在製作一個計算管道,並希望將其作爲單個shell腳本進行分發,但一旦運行,它需要擴展到多個目錄/子目錄/文件。

謝謝!

+0

這是正常的分佈tarba並讓用戶解開它。這對你來說是一種選擇嗎? – 2013-05-09 19:28:58

+0

@glenn,謝謝你的建議。爲了查看是否可行,我希望有一個可以執行的單個文件解壓縮,並且爲管道提供所有文件,而不使用tar – jake9115 2013-05-09 20:10:07

+0

您似乎在某種程度上重新實現了'shar'命令(儘管聽起來你的腳本不僅僅是解壓縮一些文件)。 – chepner 2013-05-09 20:27:45

回答

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 
+0

我喜歡這個想法,看看它是如何解壓縮的,但是如何嵌入未編碼的tar文件? – jake9115 2013-05-09 20:02:23

+0

非常酷,感謝您的幫助!我肯定會得到 – jake9115 2013-05-09 20:38:36

+0

更新的答案。沒有經過測試,但我希望你明白。 – piokuc 2013-05-09 20:38:49

0

你可以結合使用findcp命令嗎?事情是這樣的

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

+0

感謝您的建議...我寧願將文件以某種方式封裝在bash腳本中,因爲它需要作爲單個文件分發 – jake9115 2013-05-09 18:52:40