शेल स्क्रिप्ट से शीर्षक कुंजी द्वारा एक Plist शब्दकोश आइटम हटाना


1

मैं एक शेल स्क्रिप्ट बनाने की कोशिश कर रहा हूं जो कि सफारी के बुकमार्क से सिपाही बुकमार्क नाम से एक शीर्ष-स्तरीय फ़ोल्डर को हटा देगा। दुर्भाग्य से एकमात्र तरीका जो मैंने PlistBuddy या plutil के साथ शब्दकोश आइटम को हटाने के लिए पाया है, वह इंडेक्स नंबर है।

यहाँ मूल संरचना है:

<dict>
    <key>Children</key>
    <array>
        <dict> ... history ... </dict>
        <dict> ... bookmarks bar ... </dict>
        <dict> ... bookmarks menu ... </dict>
        <dict> ... reading list ... </dict>
        <dict> ... folder 1 ... </dict>

        <!-- Delete this item -->
        <dict>
            <key>Sync</key>
            <dict>
                <key>Data</key>
                <data>...</data>
                <key>ServerID</key>
                <string></string>
            </dict>

            <!-- By this key/value -->
            <key>Title</key>
            <string>Delete This Folder</string>

            <key>WebBookmarkType</key>
            <string>WebBookmarkTypeList</string>
            <key>WebBookmarkUUID</key>
            <string>21D71C04-F58B-43ED-B02C-7D9A208CCEC0</string>
        </dict>

        <dict> ... folder 3 ... </dict>
    </array>
    <dict>...</dict>
    <key>Title</key>
    <string></string>
    <key>WebBookmarkFileVersion</key>
    <integer>1</integer>
    <key>WebBookmarkType</key>
    <string>WebBookmarkTypeList</string>
    <key>WebBookmarkUUID</key>
    <string>892D35B5-DD40-418F-83D3-7AB77C2D9C03</string>
</dict>
</plist>

मैं इसके साथ पहली सरणी में संपूर्ण शब्दकोश आइटम हटाना चाहता हूं Title मूल्य Delete This Folder चूंकि आइटम और इंडेक्स नंबर हर समय बदल सकते हैं।

मैं इस आइटम को कुछ तरीकों से सफलतापूर्वक अनुक्रमणिका द्वारा हटा सकता हूं:

PlistBuddy:

PlistBuddy -c "delete :Children:5" /Users/myuser/Library/Safari/Bookmarks.plist

plutil:

plutil -remove Children.5 /Users/myuser/Library/Safari/Bookmarks.plist

लेकिन मुझे सही वाक्यविन्यास नहीं मिला है - अगर यह संभव है - उन उपयोगिताओं में से किसी के साथ शीर्षक से हटाना और न ही मुझे एक और कमांड लाइन उपयोगिता मिली है जो यह कर सकती है।

वैकल्पिक रूप से, मैं दो चरणों वाली प्रक्रिया का विरोध नहीं कर रहा हूं:

  1. शीर्षक और रिटर्न इंडेक्स नंबर खोजने के लिए प्लिस्ट फाइल को क्वेरी करें।
  2. ऊपर दिए गए इंडेक्स नंबर से डिलीट करें

मुझे यकीन नहीं है कि यह कहां से शुरू करना है और मुझे यकीन है PlistBuddy, plutil तथा defaults read मेरे लिए मूल्य की खोज, गणना और वापसी नहीं है।

धन्यवाद, किसी भी सिफारिश की बहुत सराहना की जाएगी, मैं पिछले कुछ घंटों से बिना किसी भाग्य के तकनीकों की खोज और परीक्षण कर रहा हूं।

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.