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.txt
에 filename
. 표준 출력( 작업 중인
출력)에 결과가 표시됩니다 .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)