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