टर्मिनल में फ़ाइल एसोसिएशन बदलें?


18

क्या टर्मिनल के माध्यम से एप्लिकेशन के साथ फ़ाइल प्रकारों को जोड़ने की कोई विधि है? मैंने सोचा कि ~ / पुस्तकालय / वरीयताएँ / com.apple.launchservices.plist यह कर सकता है, और मैंने यह भी देखा है: एक कमांड लाइन क्यों बदल रही है ~ / लाइब्रेरी / वरीयताएँ / com.apple.LaunchServices.plist तुरंत प्रभावी नहीं है? लेकिन मैं इसे काम कर पाने के लिए प्रतीत नहीं कर सकता।

मुझे लगता है कि मैं एक तरीका खोज रहा हूं जो जीयूआई की नकल करने के लिए करता है जब कोई इसका इस्तेमाल एसोसिएशन प्रकार बदलने के लिए करता है, तो यह तुरंत वहां काम करने लगता है ...

जवाबों:


8

~/Library/Preferences/com.apple.LaunchServices.plistइसे XML में कनवर्ट करने के बाद आप टेक्स्ट एडिटर में एडिट कर सकते हैं :

plutil -convert xml1 ~/Library/Preferences/com.apple.LaunchServices.plist

फिर LSHandlersसरणी में इस तरह की प्रविष्टियाँ जोड़ें :

<dict>
  <key>LSHandlerContentType</key>
  <string>com.adobe.pdf</string>
  <key>LSHandlerRoleAll</key>
  <string>net.sourceforge.skim-app.skim</string>
</dict>
<dict>
  <key>LSHandlerContentTag</key>
  <string>mkv</string>
  <key>LSHandlerContentTagClass</key>
  <string>public.filename-extension</string>
  <key>LSHandlerRoleAll</key>
  <string>org.videolan.vlc</string>
</dict>

आप mdlsफ़ाइल प्रकारों के यूटीआई और osascript -e 'id of app "AppName"'अनुप्रयोगों के बंडल पहचानकर्ताओं को देखने के लिए कुछ का उपयोग करने के लिए उपयोग कर सकते हैं ।

आप com.apple.LaunchServices.plistपुनः आरंभ करके परिवर्तन लागू कर सकते हैं । लॉग आउट करना और वापस अंदर जाना पर्याप्त नहीं है।


नोट : dutiअब सक्रिय विकास में नहीं है और इसके अनुरक्षकों द्वारा "असमर्थित" के रूप में लेबल किया गया है। कॉन्फ़िगरेशन अपडेट से अलग 2012 के बाद से इस परियोजना ने कोई बड़ी प्रगति नहीं देखी है। यह सोर्सफोर्ज से जीथब तक चला गया है। इस उत्तर को नए लिंक को शामिल करने के लिए अपडेट किया गया है।

मैं हालांकि डूटी का उपयोग भी करता हूं । मैंने इस तरह से (लगभग 100 लाइनों के साथ) एक फ़ाइल को बचाया है ~/.duti:

org.gnu.Emacs public.plain-text all # .txt, .text, plain text files without an extension
org.gnu.Emacs public.unix-executable all # executable scripts
com.SequentialX.Sequential .jpg all
org.videolan.vlc .mkv all

मेरे पास एक लॉन्चड एजेंट है जो बदले जाने पर duti ~/.dutiस्वचालित रूप से चलता ~/.dutiहै।

आप आमतौर पर फ़ाइल प्रकारों को निर्दिष्ट करने के लिए .jpgUTIs (जैसे public.jpg) के बजाय फ़ाइल नाम एक्सटेंशन (जैसे ) का उपयोग कर सकते हैं। dutiएक्सटेंशन को यूटीआई में परिवर्तित करता है जो अन्य एक्सटेंशन (जैसे .jpeg) पर भी लागू होता है । कुछ एक्सटेंशन जैसे .mkvऔर के लिए .tex, यूटीआई इस बात पर निर्भर करता है कि आवेदन किस एक्सटेंशन को पहले पंजीकृत करता है।

नवीनतम संस्करण का dutiएकमात्र स्रोत कोड शामिल है, लेकिन 1.5.0 भी एक इंस्टॉलर भी शामिल है।


5

की जाँच करें Duti :

duti एंड्रयू कमांडेंसन द्वारा लिखित एक कमांड-लाइन टूल है, जिसे मैक ओएस एक्स पर दस्तावेज़ प्रकारों और URL योजनाओं के लिए डिफ़ॉल्ट एप्लिकेशन सेट करने के लिए डिज़ाइन किया गया है।

मैक ओएस एक्स पर दस्तावेज़ प्रकारों को परिभाषित किया जाता है कि एप्पल यूनिफॉर्म टाइप आइडेंटिफ़ायर या यूटीआई को क्या कहता है। उदाहरण के लिए, HTML फ़ाइलों में public.html का UTI होता है। Microsoft Word दस्तावेज़ UTI com.microsoft.word.doc द्वारा वर्णित हैं। Apple मैक ओएस एक्स के साथ कई यूटीआई प्रदान करता है, लेकिन डेवलपर्स अपने स्वयं के परिभाषित करने के लिए स्वतंत्र हैं, जब तक कि यूटीआई उस दस्तावेज़ प्रकार के लिए अद्वितीय है।

दुती के नाम का अर्थ है "यूटीआई के लिए डिफ़ॉल्ट।"


2
अनिवार्य सुझाव: का उपयोग brew install dutiस्थापित करने के लिएduti
पियर पाओलो रेमन

1

यहाँ डूटी के लिए एक लॉन्च एजेंट है जो चाल करेगा:

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
  <dict>
    <key>Label</key>
    <string>com.duti.watcher</string>
    <key>ProgramArguments</key>
    <array>
      <string>/usr/local/bin/duti</string>
      <string>/Users/joshgummersall/.duti</string>
    </array>
    <key>UserName</key>
    <string>joshgummersall</string>
    <key>KeepAlive</key>
    <false/>
    <key>WatchPaths</key>
    <array>
      <string>/Users/joshgummersall/.duti</string>
    </array>
  </dict>
</plist>

स्पष्ट रूप joshgummersallसे अपने स्वयं के उपयोगकर्ता नाम के साथ बदलें । मैं कम से इस फाइल को रखा ~/Library/LaunchAgents/duti.plist, chmmod644 और भाग के लिए घ:

$ launchctl load -F -w ~/Library/LaunchAgents/duti.plist

0

संक्षिप्त उत्तर: फ़ाइल का एप्लिकेशन एसोसिएशन फ़ाइल के संसाधन कांटे में संग्रहीत होता है , और Apple दो उपयोगिताओं ( Rez और DeRez ) प्रदान करता है जो संसाधन कांटे के हेरफेर की अनुमति देते हैं। लेकिन यह दिल के बेहोश होने के लिए नहीं है।

अधिक जानकारी के लिए, इस सवाल का जवाब सुपर यूजर पर बहुत अच्छी तरह से दिया गया है:

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