मैक ओएस एक्स पर "ओपन हाल" मेनू से आप किसी एकल आइटम को कैसे हटाते हैं?


8

अधिकांश दस्तावेज़-आधारित मैक ओएस एक्स अनुप्रयोगों में एक फ़ाइल है ---> हाल ही में खोलें ... मेनू आइटम। यह हाल ही में प्रोग्राम के साथ आपके द्वारा खोली गई फ़ाइलों की एक सूची है। सभी वस्तुओं को हटाना आसान है; बस स्पष्ट मेनू का चयन करें ।

हालाँकि, कभी-कभी आप केवल एक आइटम या दो के बजाय सब कुछ निकालना चाहते हैं, जैसे कि एक फ़ाइल जो अब मौजूद नहीं है, या एक जिसे आप फिर कभी नहीं देखना चाहते हैं। आप किसी और चीज को हटाए बिना, ओपन हाल की सूची से किसी एक आइटम को कैसे हटा सकते हैं?

हाल ही में खुला ... उदाहरण


1
वे फ़ाइलें जो अब मौजूद नहीं हैं, उन सभी अनुप्रयोगों में प्रदर्शित नहीं होती हैं जो हाल ही में खुले मेनू (कोको डिफ़ॉल्ट को नहीं बदलकर) को ठीक से लागू करते हैं ।
डैनियल बेक

जवाबों:


14

अधिकांश अनुप्रयोगों में , एप्लिकेशन-विशिष्ट हाल के दस्तावेज़ नाम की फ़ाइल में हैं:

~/Library/Preferences/com.company.application.LSSharedFileList.plist

टर्मिनल में इन सभी फाइलों को सूचीबद्ध करने के लिए, निम्नलिखित दर्ज करें:

ls -Ad Library/Preferences/* | grep LSSharedFileList

मैक ओएस एक्स 10.6 पर, ये फाइलें (आमतौर पर) एक द्विआधारी प्रारूप में हैं।

उन्हें देखने और संपादित करने के लिए संपत्ति सूची संपादक (Apple डेवलपर टूल / Xcode 3) या Xcode 4 का उपयोग करें।

जब एप्लिकेशन लॉन्च हो रहा हो तब वे फिर से पढ़े जाते हैं, न कि जब वह चल रहा होता है। आपको इस फ़ाइल को संपादित करते समय एप्लिकेशन को बंद करना होगा।


मुझे लगता है कि मैं ऊब गया था ...

#!/usr/bin/env bash

mode=$2
if [ -z "$mode" ] ; then
    echo "Usage:"
    echo "$0 <filename> ls       - list recent file entries in specified *.LSSharedFileList.plist"
    echo "$0 <filename> rm <idx> - remove recent file entry with given index from specified plist"
    exit 1
fi

if [ "$mode" != "ls" ] && [ "$mode" != "rm" ] ; then
    echo "second argument must be one of [ls, rm]"
    exit 1
fi

file=$1
if [ -z $file ] ; then
    echo "Need argument (recent items plist file)!"
    exit 1
fi
if [ ! -f $file ] ; then
    echo "File $file does not exist!"
    exit 1
fi

if [ "$mode" = "ls" ] ; then
    i=0
    cont=1
    while [ $cont ] ; do
        recentfilename=$( /usr/libexec/PlistBuddy -c "Print RecentDocuments:CustomListItems:$i:Name" $file 2>/dev/null )
        if [ "$?" -ne "0" ] ; then
            cont=
        else
            echo "$i - $recentfilename"
            i=$(( $i + 1 ))
        fi
    done
fi

if [ "$mode" = "rm" ] ; then
    i=$3
    if [[ $i =~ ^-?[0-9]+$ ]] ; then
        # argument is integer
        $( /usr/libexec/PlistBuddy -c "Delete RecentDocuments:CustomListItems:$i" $file )
    else
        echo "Expected integer, got $i as third argument"
        exit 1
    fi
fi

उपयोग:

$ ./editrecent.sh 
Usage:
./editrecent.sh <filename> ls       - list recent file entries in specified *.LSSharedFileList.plist
./editrecent.sh <filename> rm <idx> - remove recent file entry with given index from specified plist


$ ./editrecent.sh Library/Preferences/com.macromates.textmate.LSSharedFileList.plist ls
0 - rcd
1 - artifactory.sh
2 - py.py
3 - iTunes Music Library.xml
4 - iTunes Library.xml
5 - gradle-proxy-support.diff
6 - DefaultGradlePropertiesLoader.java
7 - DefaultGradlePropertiesLoader-proxy.java
8 - gradle-proxy-support.patch
9 - DefaultKeyBinding.dict
10 - DefaultKeyBindings.dict

$ ./editrecent.sh Library/Preferences/com.macromates.textmate.LSSharedFileList.plist rm 3

$ ./editrecent.sh Library/Preferences/com.macromates.textmate.LSSharedFileList.plist ls
0 - rcd
1 - artifactory.sh
2 - py.py
3 - iTunes Library.xml
4 - gradle-proxy-support.diff
5 - DefaultGradlePropertiesLoader.java
6 - DefaultGradlePropertiesLoader-proxy.java
7 - gradle-proxy-support.patch
8 - DefaultKeyBinding.dict
9 - DefaultKeyBindings.dict

हा हा, स्क्रिप्ट के लिए धन्यवाद! बेहद मददगार! :)
डेव गलाघेर

मुझे पता है कि यह कुछ समय पहले था, लेकिन मैं अभी इस स्क्रिप्ट को पकड़ रहा हूं। इसे लिखने के लिए समय निकालने के लिए बहुत बहुत धन्यवाद।
रोब

@Rob आपका स्वागत है। ध्यान दें कि यह तब लिखा गया था जब OS X 10.6 स्नो लेपर्ड वर्तमान रिलीज़ था, इसलिए तब से चीजें बदल सकती थीं।
डैनियल बेक

Mavericks पर परिवर्तनों को सहेजने के लिए लॉगआउट आवश्यक है (पहले xCode को फिर से खोलने)!
नटनवरा

2

आप जो मांग रहे हैं, वह समर्थित सुविधा नहीं है।

हालाँकि, निर्देश हैं कि संपादन द्वारा व्यक्तिगत वस्तुओं को निकालना संभव है /Users/YOURUSERNAME/Library/Preferences/com.apple.recentitems.plist, फिर लॉग आउट और बैक इन करें।

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

स्रोत: "हाल के आइटम" सूची से अलग-अलग आइटमों को निकालना

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