我需要創建一個生成特殊「歸檔」的shell程序。這些存檔也將是shell腳本,以便它們可以用「sh」執行。歸檔重新生成shell腳本
比方說,我有這樣一些目錄結構:
mydir
+- file.txt
+- mysubdir
+- foo.txt
file.txt的包含 「Lorem存有」 和foo.txt的含有 「富巴」。
然後執行歸檔程序:
$ arch.sh MYDIR> bundle.sh
應該生成一個名爲 「bundle.sh」 這可能看起來像這樣的文件:
if [ \! -d mydir ] ; then
mkdir mydir
cd mydir
if [ -f file.txt ] ; then
touch file.txt
echo "lorem ipsum" >> file.txt
fi
if [ \! -d mysubdir ] ; then
mkdir mysubdir
cd mysubdir
if [ -f foo.txt ] ; then
touch foo.txt
echo "foo bar" >> foo.txt
fi
fi
fi
所以,基本上,如果你要執行這個捆綁腳本,那麼你最終會得到與生成捆綁包時完全相同的目錄結構和文件內容。現在,只需要編寫一個迭代所有文件和目錄的 程序,併爲每個文件和目錄創建合適的輸出即 。對於文本文件,您可以使用sed將它們處理爲 ,以將文本文件中的每一行轉換爲shell命令。 例如,如果該文件是這樣的:
Foo
Bar
Baz
Goo
然後,你可以生成以下shell命令:
echo "Foo" >> example.txt
echo "Bar" >> example.txt
echo "Baz" >> example.txt
echo "Goo" >> example.txt
對於二進制文件,你應該使用「UUENCODE」或者你也可以使用 「base64」,例如當你有一個二進制文件「file.bin」然後執行 以下命令輸出一個shell腳本,重新創建二進制文件:
base64 file.bin | sed 's/.*/echo\ \0 >> file.txt/g'
echo "base64 -d file.txt > file.bin"
echo "rm file.txt"
這樣
所以,我可以通過電子郵件發送bundle.sh命令到朋友,然後當他在他的機器上執行bundle.sh時,他將生成與mydir完全相同的目錄結構。
我想知道如何執行遍歷遍歷目錄以及如何獲取每個文件的名稱以及如何將我生成的所有shell命令捆綁到bundle.sh。謝謝。傢伙。
是它創建'.tar'文件的選項,並將其包括在你的腳本? –
您是否真的需要編寫這個程序(也許是作業),還是隻需要生成這樣的腳本?你基本上描述了'shar'工具。 – chepner
這是一個任務,我需要生成這個腳本,但爲了這樣做,我需要另一個腳本來獲取結構和內容信息。關於我將打包的目錄。謝謝 –