![.xsh 파일이란 무엇입니까? 내용을 어떻게 볼 수 있나요?](https://linux55.com/image/149637/.xsh%20%ED%8C%8C%EC%9D%BC%EC%9D%B4%EB%9E%80%20%EB%AC%B4%EC%97%87%EC%9E%85%EB%8B%88%EA%B9%8C%3F%20%EB%82%B4%EC%9A%A9%EC%9D%84%20%EC%96%B4%EB%96%BB%EA%B2%8C%20%EB%B3%BC%20%EC%88%98%20%EC%9E%88%EB%82%98%EC%9A%94%3F.png)
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