मैं OS X को नई फ़ाइल एक्सटेंशन कैसे पहचान सकता हूं?


19

Finder.app में, आप Enterवर्तमान में चयनित फ़ाइल या फ़ोल्डर का नाम संपादित करने के लिए हिट कर सकते हैं ।

ओएस एक्स स्वचालित रूप से केवल फ़ाइल नाम भाग का चयन करेगा, न कि विस्तार:

यह बहुत उपयोगी है, क्योंकि इस तरह आप गलती से फ़ाइल एक्सटेंशन को बदलने के बारे में चिंता किए बिना, नया नाम लिखना शुरू कर सकते हैं।

हालाँकि, यह केवल "ज्ञात" फ़ाइल प्रकारों के लिए काम करता है। यदि आप इसे अज्ञात एक्सटेंशन के साथ आज़माते हैं, तो संपूर्ण फ़ाइल नाम (एक्सटेंशन सहित) चयनित हो जाता है:

मैंने एक एप्लिकेशन को मैप करने की कोशिश की, जो सभी .barफाइलों को + I→ "चेंज ऑल" के माध्यम से खोल सकता है , लेकिन मुझे अभी भी ऊपर वर्णित व्यवहार मिलता है।

"ज्ञात" फ़ाइल प्रकारों की सूची कहाँ संग्रहीत है? क्या ओएस एक्स को नई फ़ाइल प्रकारों को पहचानने का एक तरीका है?

जवाबों:


7

इस सुपरयूजर पोस्ट ने मेरे लिए काम किया:

आपको उस एप्लिकेशन को ब्राउज़ करना होगा जिसे आप इन फ़ाइलों को खोलने के लिए उपयोग करना चाहते हैं, और इसके बंडल को संपादित करें। इन फ़ाइल एक्सटेंशन को संभालने के लिए एप्लिकेशन पर राइट-क्लिक करें और शो पैकेज कंटेंट चुनें । नेविगेट Contentsऔर संपादित करें Info.plist। आपको संपत्ति सूची संपादक की आवश्यकता हो सकती है , जो कि Apple के डेवलपर टूल का हिस्सा है। यदि आप भाग्यशाली हैं, तो यह XML प्रारूप में है। इस फ़ाइल को संपादित करें CFBundleDocumentTypesऔर अपने इच्छित एक्सटेंशन के लिए एक प्रविष्टि जोड़ें।

मैंने .barफ़ाइलों को खोलने के लिए डिफ़ॉल्ट अनुप्रयोग के रूप में TextEdit का उपयोग किया । केवल एक चीज जो मैंने अलग-अलग की थी वह थी XML को बदलना जो TextEdit में गया था Info.plist:

    <dict>
        <key>CFBundleTypeExtensions</key>
        <array>
            <string>bar</string>
        </array>
        <key>CFBundleTypeIconFile</key>
        <string>BarDocument</string>
        <key>CFBundleTypeName</key>
        <string>Bar Document</string>
        <key>CFBundleTypeRole</key>
        <string>Document</string>
    </dict>

… और फिर मैंने लॉन्च सेवाओं के डेटाबेस में TextEdit को ताज़ा करने के लिए LSRefresh.app का उपयोग किया । फिर यह आपके सुझाव के अनुसार काम करता है, हालांकि यह संभवतः शेर पर टेक्सटेडिट (और किसी भी अन्य हस्ताक्षरित एप्लिकेशन) के कोड हस्ताक्षर को तोड़ देगा।


1
CFBundleTypeExtensionsएक विरासत कुंजी है जो OS X 10.5 में पदावनत हो गई । 2007 के बाद से पसंदीदा तरीका नए यूटीआई घोषित करना है, जैसा कि यहां बताया गया है और मेरे उत्तर में वर्णित है ।
TachyonVortex

6
मुझे खेद है, मुझे इसे कम करना होगा क्योंकि यह बुरी सलाह है। न केवल एक ऐप बंडल के साथ छेड़छाड़ करना (विचित्र साइड इफेक्ट्स या इससे भी बदतर होने का खतरा) के साथ छेड़छाड़ करना नासमझी है, लेकिन यह ऐप की कॉपी को पूरी तरह से मिटा भी सकता है। आप ध्यान दें कि यह प्रक्रिया कोड हस्ताक्षर को अमान्य करती है, लेकिन यह इंगित करने में विफल रहती है कि सैंडबॉक्सिंग (10.7+) का समर्थन करने वाले macOS संस्करणों पर, अमान्य हस्ताक्षर वाले सैंडबॉक्स वाले ऐप को किसी भी तरह से लॉन्च या उपयोग नहीं किया जा सकता है।
बॉब

1
@binarybob, मैं क्या समझ में नहीं आता क्यों आप बस फ़ाइल rightclick नहीं है कर रहा है xxx.barऔर चयन open with?
पेसियर

@ याकूब, व्हाट्स एप स्टैंडबायिंग है?
पचेरियर

@Pacerier ऐप सैंडबॉक्सिंग, macOS की एक सुरक्षा विशेषता है जो पूरी तरह से सिस्टम और एक-दूसरे से ऐप को अलग करती है, जिसमें "एंटाइटेलमेंट" की एक बहुत छोटी सूची होती है, जो विशेष रूप से यह बताती है कि ऐप को क्या करने की अनुमति है। एंटाइटेलमेंट की उस सूची को कोड हस्ताक्षर में शामिल किया गया है और हर बार ऐप को चलाने के लिए मान्य किया गया है, यह सुनिश्चित करते हुए कि ऐप की क्षमताओं के साथ या तो दुर्घटना या किसी हमले से छेड़छाड़ नहीं की जा सकती है। तकनीकी विवरण के लिए यह दस्तावेज़ देखें ।
बॉब

28

यूटीआई और लॉन्च सेवा

"ज्ञात" फ़ाइल प्रकारों की सूची कहाँ संग्रहीत है?

"फ़ाइल प्रकार" के लिए आधिकारिक शब्द यूनिफ़ॉर्म टाइप आइडेंटिफ़ायर (यूटीआई) है, और लॉन्च सेवाओं द्वारा यूटीआई के डेटाबेस को बनाए रखा गया है ।

टर्मिनल का उपयोग करके , आप lsregisterउपकरण का उपयोग करके लॉन्च सेवा डेटाबेस की सामग्री देख सकते हैं , जो यहां संग्रहीत है:

/System/Library/Frameworks/CoreServices.framework/Frameworks/LaunchServices.framework/Support/lsregister

हर बार जब आप चलाना चाहते हैं lsregister, तो उस लंबे रास्ते को निर्दिष्ट करने के बजाय , आप अस्थायी रूप से अपनी निर्देशिका को अपने में जोड़ सकते हैं PATH:

PATH=/System/Library/Frameworks/CoreServices.framework/Frameworks/LaunchServices.framework/Support:"$PATH"

और फिर आप lsregisterकेवल दर्ज करके चला सकते हैं :

lsregister

लॉन्च सेवा डेटाबेस की सामग्री देखने के लिए:

lsregister -dump

नई यूटीआई की घोषणा

क्या ओएस एक्स को नई फ़ाइल प्रकारों को पहचानने का एक तरीका है?

यह एप्पल का लेख, "नई यूनिफॉर्म टाइप पहचानकर्ताओं की घोषणा" , यह कैसे करना है पर उपयोगी जानकारी प्रदान करता है। यहाँ पूरी प्रक्रिया है:

1. एक डमी एप्लिकेशन बनाएं

लॉन्च सेवाओं के साथ पंजीकरण करने के लिए एक डमी एप्लिकेशन बनाएं:

  • AppleScript Editor खोलें (OS X के यूटिलिटीज फ़ोल्डर में स्थित )।
  • एक नई खाली स्क्रिप्ट को कहीं पर सहेजें (जैसे: आपके डेस्कटॉप पर), इसकी फ़ाइल प्रारूप को अनुप्रयोग में सेट करना

2. इसकी Info.plist फ़ाइल खोलें

  • खोजक में अपने नए डमी आवेदन का पता लगाएँ।
  • उस पर राइट-क्लिक करें, और पॉपअप मेनू से शो पैकेज सामग्री का चयन करें ।
  • इसका Contents फ़ोल्डर खोलें ।
  • पाठ संपादक में Info.plist फ़ाइल खोलें (जैसे: TextEdit )।

3. अपना नया यूटीआई जोड़ें

दो कुंजी का विकल्प है:

  • UTExportedTypeDeclarations - अपने स्वयं के कस्टम फ़ाइल नाम एक्सटेंशन के लिए।
  • UTImportedTypeDeclarations - फाइल एक्सटेंशन के लिए जो पहले से मौजूद है लेकिन OS X द्वारा मान्यता प्राप्त नहीं है।

वह कुंजी चुनें जो आपकी आवश्यकताओं के लिए सबसे उपयुक्त हो।

फिर अंतिम दो पंक्तियों से पहले Info.plist फ़ाइल में, </dict></plist>इस कोड को जोड़ें:

<key>KEY</key>
<array>
    <dict>
        <key>UTTypeIdentifier</key>
        <string>IDENTIFIER</string>
        <key>UTTypeTagSpecification</key>
        <dict>
            <key>public.filename-extension</key>
            <array>
                <string>EXTENSION</string>
            </array>
        </dict>
    </dict>
</array>

निम्नलिखित परिवर्तन करना:

  • बदलें KEYअपनी चुनी कुंजी के साथ (या तो UTExportedTypeDeclarationsया UTImportedTypeDeclarations)।
  • IDENTIFIERएक उपयुक्त रिवर्स-डीएनएस पहचानकर्ता के साथ बदलें :
    • निर्यातित - कुछ इस तरह com.mycompany.mytype
    • आयातित - आईडी सॉफ्टवेयर के डूम WAD प्रारूप के लिए, एक उपयुक्त पहचानकर्ता होगाcom.idsoftware.wad
  • EXTENSIONफ़ाइल नाम एक्सटेंशन (प्रमुख बिंदु के बिना) के साथ बदलें , जैसे wad:।

अपने नए यूटीआई को स्वीकार करने के लिए लॉन्च सेवाओं के लिए यह आवश्यक न्यूनतम कोड है। आप निम्न वैकल्पिक गुण भी जोड़ सकते हैं:

  • UTTypeConformsTo - नीचे परिशिष्ट देखें।
  • UTTypeDescription - एक उपयोगकर्ता-दृश्यमान विवरण, जिसे फाइंडर में प्रदर्शित किया जाएगा।
  • UTTypeIconFile- यदि आप अपने डमी एप्लिकेशन में सामग्री / संसाधन फ़ोल्डर में एक ऐप्पल आइकन छवि फ़ाइल जोड़ते हैं, और इस संपत्ति में उसका फ़ाइल नाम जोड़ते हैं, तो जिन फ़ाइलों में आपका नया फ़ाइल नाम एक्सटेंशन है, वे इस आइकन का उपयोग करेंगे।
  • UTTypeReferenceURL - इस प्रकार का वर्णन करने वाले संदर्भ दस्तावेज़ का URL।

यहां सभी वैकल्पिक गुणों को दर्शाने वाला एक संपूर्ण उदाहरण दिया गया है:

<key>UTImportedTypeDeclarations</key>
<array>
    <dict>
        <key>UTTypeIdentifier</key>
        <string>com.idsoftware.wad</string>
        <key>UTTypeTagSpecification</key>
        <dict>
            <key>public.filename-extension</key>
            <array>
                <string>wad</string>
            </array>
        </dict>
        <key>UTTypeConformsTo</key>
        <array>
            <string>public.data</string>
        </array>
        <key>UTTypeDescription</key>
        <string>Doom WAD file</string>
        <key>UTTypeIconFile</key>
        <string>DoomWAD.icns</string>
        <key>UTTypeReferenceURL</key>
        <string>http://en.wikipedia.org/wiki/Doom_WAD</string>
    </dict>
</array>

4. लॉन्च सेवाओं के साथ अपने नए यूटीआई को पंजीकृत करें

इस कमांड को टर्मिनल में चलाएं:

lsregister <PATH_TO_APP>

<PATH_TO_APP>आपके डमी एप्लिकेशन के पथ के साथ प्रतिस्थापित करना, जैसे:

lsregister ~/Desktop/MyDummyApp.app

यदि आप अब अपने नए फ़ाइलनाम एक्सटेंशन के साथ एक फ़ाइल बनाते हैं, और फिर इसे फाइंडर में चुनें और हिट करें Enter, तो फाइंडर को स्वचालित रूप से केवल फ़ाइल नाम वाले हिस्से का चयन करना चाहिए, न कि एक्सटेंशन का।

यदि आप लॉन्च सेवा डेटाबेस की सामग्री देखते हैं:

lsregister -dump

आपको अपना नया यूटीआई सूचीबद्ध होना चाहिए:

type    id:            50364
        bindableKey:   12608
        generation:    1
        uti:           com.idsoftware.wad
        description:   Doom WAD file
        flags:         imported  active  apple-internal  untrusted
        icon:          DoomWAD.icns
        conforms to:   public.data
        tags:          .wad

यदि आप बाद में अपनी नई UTI को अपंजीकृत करना चाहते हैं, तो निम्न -uविकल्प पास करें lsregister:

lsregister -u ~/Desktop/MyDummyApp.app

परिशिष्ट: यूटीआई पदानुक्रम और अनुरूपता

ओएस एक्स यूटीआई की पदानुक्रम की घोषणा करता है जो यहां सूचीबद्ध हैं: सिस्टम-घोषित वर्दी प्रकार पहचानकर्ता

यहाँ पदानुक्रम में कुछ यूटीआई हैं:

  • public.content
    • public.text
      • public.rtf
      • public.html
      • public.xml
      • public.plain-text
      • public.source-code
        • public.c-source
        • public.c-header
        • com.sun.java-source
    • public.image
      • public.jpeg
      • public.tiff
      • public.png
    • public.audiovisual-content
      • public.movie
      • public.audio

प्रत्येक यूटीआई "इसके मूल यूटीआई" के अनुरूप है:

उदाहरण के लिए, यूटीआई public.html, जो HTML पाठ को परिभाषित करता है, आधार पाठ पहचानकर्ता के अनुरूप है public.text। इस मामले में, अनुरूपता उन अनुप्रयोगों को अनुमति देती है जो सामान्य पाठ फ़ाइलों को HTML फ़ाइलों की पहचान कर सकते हैं क्योंकि वे इसे भी खोल सकते हैं। ( संदर्भ )

एक नया यूटीआई बनाते समय, UTTypeConformsToमौजूदा यूटीआई में से एक को संपत्ति सेट करना एक अच्छा विचार है ।

उदाहरण के लिए, अगर अपने नए यूटीआई स्रोत कोड का एक प्रकार है, तो आप स्थापित करना चाहिए UTTypeConformsToकरने के लिए संपत्ति public.source-code, इतना है कि यह जो खोल सकते हैं तो कोई भी एप्लिकेशन द्वारा खोला जा सकता public.source-codeया public.plain-textया public.textफ़ाइलें।


क्या फ़ाइल एक्सटेंशन के साथ संपादक को निर्दिष्ट करने का कोई तरीका है?
gr4nt3d

0

इन कदमों का अनुसरण करें:

  1. अपरिचित एक्सटेंशन (कहना .txt) के साथ फाइल का चयन करें ।

  2. सूचना विंडो प्रदर्शित करने के Get Infoलिए कीबोर्ड शॉर्टकट Commandiको राइट क्लिक करें और चुनें या उपयोग करें ।

  3. खुला दृश्य के अलावा प्रकटीकरण सूचक पर क्लिक करें : विस्तृत दृश्य खोलने के लिए। ड्रॉप डाउन से वांछित एप्लिकेशन का चयन करें। यह चुने गए आवेदन के साथ दस्तावेज़ को जोड़ देगा (उदाहरण के लिए TextEdit)।

  4. चेंज ऑल ... बटन पर क्लिक करें। यह पहले आपके इरादे की पुष्टि करने के लिए एक संवाद बॉक्स दिखाएगा और .txtटेक्स्टएडिट के साथ खोलने के लिए सभी दस्तावेजों को लिंक करेगा , और जब आप दस्तावेज़ के नाम पर वापसी करते हैं, तो एक्सटेंशन को अन-चयनित छोड़ दें।

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