Как добавить значения в вложенные массивы или dicts, используя команду "по умолчанию написать"?
Рассмотрим предпочтительный plist с dict, который содержит массив:
Позвольте создать его:
defaults write org.my.test '{aDict = {anArray = ();};}'
Затем прочитайте его, чтобы увидеть структуру лучше:
$defaults read org.my.test
{
aDict = {
anArray = (
);
};
}
Теперь, как добавить значение в anArray
с помощью команды defaults write
?
Я знаю, что существует тип -array-add
для добавления значений в массив, но как указать путь ключа к элементу массива?
Я пробовал это, но это не работает:
defaults write org.my.test aDict.anArray -array-add "a value"
На самом деле мне нужно добавить нестроковый тип, поэтому мне также нужно указать тип, например. -bool YES
.
(Примечание: я не могу использовать PlistBuddy или plutil, так как это должно повлиять на живые настройки)
Ответы
Ответ 1
Используйте plutil
, и ваша жизнь будет лучше. Значения по умолчанию не поддерживают пути ключей.
> defaults write org.my.test '{aDict = {anArray = ();};}'
> defaults read org.my.test
{
aDict = {
anArray = (
);
};
}
> plutil -insert aDict.anArray.0 -bool YES ~/Library/Preferences/org.my.test.plist
> defaults read org.my.test
{
aDict = {
anArray = (
1
);
};
}
Я использовал defaults read
, чтобы доказать, что ожидаемые входы те же, но вы, вероятно, будете использовать plutil -p ~/Library/Preferences/org.my.test.plist
для чтения файла, если вы начнете использовать plutil
больше.