Synology

什麼是 .xsh 文件?如何查看其內容?

  • March 9, 2019

synology ipkg 安裝程序使用一個文件進行引導,文件名以.xsh. 我怎樣才能看到這樣的文件裡面有什麼?

這些是“自解壓”檔案;我發現的第一個在頂部有這個程式碼:

#!/bin/sh
echo "Optware Bootstrap for syno-i686."
echo "Extracting archive... please wait"
dd if=$0 bs=205 skip=1 | tar xzv
cd bootstrap && sh bootstrap.sh && cd .. && rm -r bootstrap
exec /bin/sh --login

…這表明它基本上是一個(大)shell腳本,其中有趣的部分是dd ... | tar xzv行;其他行特定於該特定包。

dd命令從目前文件中讀取,$0跳過正確的字節數;然後將該輸出發送給tar期望壓縮存檔的人。壓縮的 tar 文件已準確插入 xsh 文件中的該位置。

要自己查看/提取它,只需按照相同的說明進行操作——每個 xsh 文件都會有所不同!——即:

$ dd if=syno-i686-bootstrap_1.2-7_i686.xsh bs=205 skip=1 > bootstrap.tgz
$ gunzip bootstrap.tgz  ## for example
$ tar tf bootstrap.tar  ## for example
bootstrap/
bootstrap/bootstrap.sh
bootstrap/ipkg-opt.ipk
bootstrap/ipkg.sh
...

作為提取檔案的更一般規則,您可以查找該dd簽名,告訴您可以grep在此“二進制”文件中輸出匹配項:

$ grep -a '^dd if=$0' syno-i686-bootstrap_1.2-7_i686.xsh 
dd if=$0 bs=205 skip=1 | tar xzv

…然後您可以複製/粘貼以查看或提取您喜歡的內容。您可能還對正在執行的其他命令感興趣;類似地查看這些,再次使用 – 特定於此範例:

$ dd if=syno-i686-bootstrap_1.2-7_i686.xsh bs=205 count=1
#!/bin/sh
echo "Optware Bootstrap for syno-i686."
echo "Extracting archive... please wait"
dd if=$0 bs=205 skip=1 | tar xzv
cd bootstrap && sh bootstrap.sh && cd .. && rm -r bootstrap
exec /bin/sh --login
1+0 records in
1+0 records out
205 bytes (205 B) copied, 4.7985e-05 s, 4.3 MB/s

引用自:https://unix.stackexchange.com/questions/505289