plist에서 arry를 찾아 바꾸기

plist에서 arry를 찾아 바꾸기

plist에서 배열을 찾아 교체해 보겠습니다. 기본값으로 배열을 쓰면 문제 없이 쓸 수 있지만 배열을 삭제할 수는 없습니다.

plist는 다음과 같습니다.~/Library/Preferences/com.apple.LaunchServices/com.apple.launchservices.secure.plisty

삭제하고 싶은 항목:

<dict>
<key>LSHandlerPreferredVersions</key>
<dict>
<key>LSHandlerRoleAll</key>
<string>-</string>
</dict>
<key>LSHandlerRoleAll</key>
<string>com.apple.mail </string>
<key>LSHandlerURLScheme</key>
<string>mailto</string>
</dict>

다음으로 교체하세요.

<dict>
<key>LSHandlerPreferredVersions</key>
<dict>
<key>LSHandlerRoleAll</key>
<string>-</string>
</dict>
<key>LSHandlerRoleAll</key>
<string>com.microsoft.outlook </string>
<key>LSHandlerURLScheme</key>
<string>mailto</string>
</dict>

인터넷을 검색했지만 해결책을 찾지 못했습니다. ;-) 누군가 저를 도와줄 수 있나요? Netzmeister님의 도움에 미리 감사드립니다.

답변1

이후plist일반 텍스트 파일인 것 같습니다. Linux에서는 한 줄이면 충분합니다.

sed 's/<string>com.apple.mail<\/string>/<string>com.microsoft.outlook<\/string>/g' AAA.txt

대신 AAA.txtfilename. 표준 출력( 작업 중인
출력)에 결과가 표시됩니다 .tty

그 후 제대로 작동하는지 확인한 후 매개변수를 추가하여 동일한 줄을 작성하여 -i내부 파일을 수정할 수 있습니다.

sed -i 's/<string>com.apple.mail<\/string>/<string>com.microsoft.outlook<\/string>/g' AAA.txt


좀 더 자세한 설명:

 sed -i 's/OLD/NEW/g' NameOfYourFile
  • 위의 명령은 파일 내에서 NameOfYourFile해당 문자열이 나타나는 모든 항목을 검색 OLD하고 이를 문자열로 대체합니다 NEW.

  • 당신은 올바르게 식별해야합니다예어이 경우에는 태그가 포함되어 있습니다 <string>com.apple.mail</string>.
    a가 있으므로 before /로 보호해야 하며 \키워드는 가 됩니다 <string>com.apple.mail<\/string>. (두 번째 문자열에도 동일한 논리를 적용해야 합니다.)

  • 매개변수는 -i화면에 결과를 표시하지 않고 파일의 문자열을 대체합니다. 이를 위해서는 먼저 시도하지 않고 시도해 보는 것이 더 나을 수 있습니다.
  • 그 아래에는 BSD다음이 중요할 수 있습니다.매개변수 순서이므로 sed ... -i와 동일하지 않을 수 sed -i ...있으며 찾은 오류를 제공할 수 있습니다.
  • sudo를 얻으려면 처음에 추가해야 할 수도 있습니다.루트 권한, 또는 다음에서 해당 명령을 실행하려면루트 쉘, 일반 사용자가 해당 파일을 수정할 수 없는 경우. ( 로 확인하실 수 있습니다 ls -l NameOfYourFile.)

노트

~에서man sed

-나[접미사],--현재 위치[=접미사]

          edit files in place (makes backup if SUFFIX supplied)

관련 정보