.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

...이는 기본적으로 (대형) 쉘 스크립트임을 보여줍니다. 흥미로운 부분은 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

...필요에 따라 복사/붙여넣기하여 콘텐츠를 보거나 추출할 수 있습니다. 또한 어떤 다른 명령이 실행되고 있는지 관심이 있을 수도 있습니다. 이 예에 대해 다시 --spec을 사용하여 유사하게 살펴보세요.

$ 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

관련 정보