什么是 .xsh 文件?如何查看其内容?

什么是 .xsh 文件?如何查看其内容?

Synology ipkg 安装程序会引导一个文件,其名称以.xsh.我怎样才能看到这样的文件里面有什么?

答案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

...这表明它基本上是一个(大型)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

相关内容