OS X용으로 작성되어 이제 Linux로 이식된 bash 스크립트가 있습니다. 나는 리눅스 박스에 접근할 수 없다. bash 스크립트는 OS X에서 사용 가능한 및 명령을 사용하여 defaults read
plist 파일에서 값을 읽 습니다.PlistBuddy
Linux 시스템에는 이러한 명령이 없으므로 해결 방법을 찾고 있습니다. 사용자가 Linux 시스템의 특정 키에 대해 plist 파일에서 값을 얻는 데 도움이 되는 라이브러리/스크립트(Perl 권장)가 있습니까?
sed
/를 사용해 보았 awk
으나 출력이 신뢰할 수 없습니다. plutil.pl
plist 파일을 다른 형식으로 변환하는 유사한 스크립트를 발견했습니다 .
실제 Linux 시스템에 배포하기 전에 변경 사항을 테스트할 수 있도록 Mac에서 Ubuntu를 실행하는 가상 시스템을 설정했습니다.
답변1
libplist가 원하는 대로 작동하는 것 같습니다. 스크립트에서 Ubuntu 패키지 이름 "libplist-utils"를 참조할 수 있습니다.
Description-ko: Apple 속성 목록 변환기 이 패키지에는 Apple 속성 목록 파일을 바이너리에서 XML로 또는 그 반대로 변환하는 도구가 포함되어 있습니다. 이는 libimobiledevice 스택의 일부이며 iDevice(iPod, iPhone, iPad...)에 대한 액세스를 제공합니다.
홈페이지:http://www.libimobiledevice.org/
설치 명령:
apt-get install libplist-utils
사용 예:
plistutil -i Info.plist
답변2
.plist
파일은 이미 XML이므로(또는 쉽게 변환할 수 있음) XML을 디코딩할 무언가가 필요합니다 .
이 목적을 위해 xml2
:
$ cat com.apple.systemsound.plist
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<key>com.apple.sound.beep.volume</key>
<real>1</real>
</dict>
</plist>
$ xml2 < com.apple.systemsound.plist
/plist/@version=1.0
/plist/dict/key=com.apple.sound.beep.volume
/plist/dict/real=1
$
나머지는 알아낼 수 있어야합니다.
또는 Perl의 경우 use XML::Simple;
(참고 perldoc
자료 참조) XML 데이터 구조를 해시에 넣습니다.
답변3
Python3에는 표준 라이브러리가 있습니다.
plistlib
파일을 읽고 쓸 수 있으며 .plist
,https://docs.python.org/3.9/library/plistlib.html
MyKey
예를 들어 다음에서 값을 가져옵니다 ./Info.plist
.
$ python3 -c "import plistlib; print(plistlib.load(open('./Info.plist', 'rb'))['MyKey'])"
MyValue
이는 Python3을 실행하는 모든 운영 체제에서 작동합니다.