প্রোগ্রামগতভাবে / স্ক্রিপ্ট-এটিক্যাল ডিফল্ট ওপেন-উইন্ড সেটিংটি পরিবর্তন করে


8

স্ক্রিপ্ট সহ কোনও অ্যাপ্লিকেশন কোনও প্রোগ্রাম টাইপ / ফাইল স্ক্রিপ্ট খোলার উপায় আছে কি?

মূলত, কখনও কখনও আমি একটি ওয়েব সাইটে কাজ করছি এবং আমি একটি টেক্সট সম্পাদক (*। Php, * .html, * .htm, ইত্যাদি ...) দিয়ে সমস্ত ওয়েব ফাইলগুলি খুলতে চাই।

তবে অন্য সময়ে, আমি কেবল ফাইলগুলি দেখতে চাই, তাই আমি সেগুলি ব্রাউজার দিয়ে খুলতে চাই।

এই মুহুর্তে, আমি আইটেমগুলিকে ডক আইকনগুলিতে টেনে আনছি, যা কাজ করে তবে ধীর হয়, বিশেষত যখন আমি কেবল কীবোর্ড দিয়ে প্রচুর সংখ্যক ফাইল দিয়ে যাচ্ছি।

মূলত, আমি যা চাই তা হ'ল একটি ছোট অ্যাপলস্ক্রিপ্ট / যাই হোক না কেন যা সমস্ত ওপেন-উইথ সেটিংস পরিবর্তন করে।
এইভাবে, আমি প্রতিটি ওপেন-উইথ প্রোগ্রামের জন্য একটি স্ক্রিপ্ট রাখতে পারি এবং পিছনে পিছনে পরিবর্তন করতে পারি।

ধন্যবাদ।

উত্তর:


10

এটি করণীয়, তবে সম্ভবত আপনি যা ভাবেন ঠিক তত সহজ নয়। ইউনিফর্ম টাইপ আইডেন্টিফায়ারগুলির সাথে আপনার খুব পরিচিত হওয়া দরকার। উইকিপিডিয়ায় ইউনিফর্ম টাইপ আইডেন্টিফায়ার পৃষ্ঠাটি দেখুন।

ওএস এক্স নামের সাথে একটি অগ্রাধিকার ফাইলে পছন্দের ফাইল সংস্থাগুলির তথ্য সঞ্চয় করে com.apple.LaunchServices.plist। আপনি সেই ফাইলটি সন্ধান এবং সংশোধন করার চেষ্টা করার আগে, আমি আপনাকে ডিফল্ট (ওরফে "সেটিংস") এর জন্য ওএস এক্স এর ডোমেন হায়ারার্কির সাথে নিজেকে পরিচিত করার পরামর্শ দিই। এখানে একটি শালীন নিবন্ধ পাওয়া যাবে । (অস্বীকৃতি: তারা site সাইটে কিছু বিক্রি করছে বলে মনে হচ্ছে it এটি কী তা আমি জানি না এবং তাদের সাথে কোনও সম্পর্ক নেই, ব্যাখ্যাটি কেবল একটি ভাল))

আপনি যখন ডিফল্ট এবং ইউটিআই (er, চিকিত্সার ধরণের নয়) সম্পর্কে সমস্ত জানেন, এখন আমরা স্ক্রিপ্ট / কমান্ড লাইন থেকে ফাইল সংযুক্তি স্থাপনের বিষয়ে কথা বলতে পারি।

প্রথমত, যে ফাইলগুলির জন্য আপনি সমিতি তৈরি করতে চান সেগুলি সনাক্ত করার জন্য আপনার সঠিক উপায়টি জানতে হবে।

মনে আছে কীভাবে আমি বলেছিলাম ইউটিআই গুরুত্বপূর্ণ ছিল? ফাইল শনাক্ত করার একাধিক উপায় রয়েছে। টাইপটি আপনার সিস্টেমে আনুষ্ঠানিকভাবে ঘোষণা করা হয়েছে কিনা তা নির্ভর করে। উদাহরণস্বরূপ, টেক্সটমেট বা টেক্সটর্যাংলারের মতো শালীন পাঠ্য সম্পাদকরা যখন আপনি আপনার সিস্টেমে এটি ব্যবহার করেন তখন শ্রেণিবিন্যাসের জন্য বেশ কয়েকটি প্রকারের ঘোষণা যুক্ত করবেন। তবে, যদি আপনার কাছে সেই অ্যাপ্লিকেশন না থাকে তবে আপনার কাছে এই ধরণের প্রকারের ঘোষণা থাকতে পারে না।

ঠিক আছে, যথেষ্ট আলাপ। উদাহরণ:

কোনও ফাইলের জন্য ইউটিআই পান:

$ mdls myFile.xml
...
kMDItemContentType             = "public.xml"
kMDItemContentTypeTree         = (
    "public.xml",
    "public.text",
    "public.data",
    "public.item",
    "public.content"
)
...

ঠিক আছে শান্ত হও. একটি সুস্পষ্ট সামগ্রীর প্রকার আমরা ব্যবহার করতে পারি। এটা কোথাও লিখুন।

$ mdls myFile.myExtn
...
kMDItemContentType             = "dyn.ah62d4rv4ge8048pftb4g6"
kMDItemContentTypeTree         = (
    "public.data",
    "public.item"
)
...

উফ। ওএস এক্স ".myExtn" ফাইল সম্পর্কে জানেন না। সুতরাং, এটি একটি গতিশীল ইউটিআই তৈরি করেছে যা আমরা কোনও কিছুর জন্য ব্যবহার করতে পারি না। এবং অভিভাবক প্রকারগুলি কার্যকর হওয়ার পক্ষে খুব জেনেরিক।

এখন আমাদের ফাইলগুলি কী তা আমরা জানি, আসুন LaunchServices.plist ফাইলটি দেখুন এবং আমরা কী করতে পারি তা দেখুন:

$defaults read com.apple.LaunchServices
{
    ...
    LSHandlers =     (
                {
            LSHandlerContentType = "public.html";
            LSHandlerRoleAll = "com.apple.safari";
            LSHandlerRoleViewer = "com.google.chrome";
        },
    ...
                {
            LSHandlerContentTag = myExtn;
            LSHandlerContentTagClass = "public.filename-extension";
            LSHandlerRoleAll = "com.macromates.textmate";
        },
    ...
    );
    ...
}

সুতরাং, যখন আপনার ব্যবহার করার জন্য একটি "ভাল" বিষয়বস্তু রয়েছে, প্রথম নির্মাণটি আরও ভাল। অন্যথায় অন্য নির্মাণ। দ্রষ্টব্য, এই ফাইলটিতে অন্য নির্মাণ রয়েছে তবে তারা যা চেয়েছিল সেগুলির সাথে তারা প্রাসঙ্গিক নয়। আপনি যখন আউটপুটটি দেখেন তখন কেবল তারা জানেন know

আপনি দেখতে পাচ্ছেন, আপনি যে অ্যাপ্লিকেশনটি ব্যবহার করতে চান তার জন্য আপনাকে ইউটিআই সন্ধান করতে হবে। সাফার এবং টেক্সটমেটের জন্য ইউটিআইগুলি আমার উপরের উদাহরণে রয়েছে তবে সাধারণভাবে কোনও অ্যাপ্লিকেশনের জন্য ইউটিআই খুঁজে পেতে:

$ cd /Applications/MyApp.app/Contents
$ less Info.plist
...
        <key>CFBundleIdentifier</key>
        <string>com.apple.Safari</string>
...

দ্রষ্টব্য: এলএসহ্যান্ডলাররোলআল এবং এলএসএ্যান্ডেলরোলভিউয়ের মধ্যে পার্থক্যটি কী তা আমার কোনও ধারণা নেই । আমি এটি কোথাও ডকুমেন্টেশন খুঁজে পাচ্ছি না। আমি যা দেখছি তা হল 99% সময় এলএসহ্যান্ডলারলোলএল একটাই সেট (যেমন কোনও এলএসহ্যান্ডলারলোলভিউয়ার নেই) এবং আপনি যে ধরণের সাথে সংযুক্ত হতে চান সেই অ্যাপ্লিকেশনটির জন্য এটি ইউটিআইতে সেট করা আছে।

আপনাকে এতোদূর এনে দিয়ে, পাঠকদের জন্য অনুশীলন হিসাবে আপনি যে মানগুলি চান তা সেট করতে আমি কীভাবে চলে যাব। এই জিনিসগুলির সাথে জগাখিচুড়ি কিছুটা বিপজ্জনক হতে পারে। আপনার পক্ষে কোনও ফাইল স্ক্রু করা এবং আপনার ফাইল সংস্থার কোনও কাজ না করা সম্পূর্ণভাবে সম্ভব। তারপরে আপনাকে ফাইলটি ফেলে দিতে হবে এবং আবার শুরু করতে হবে।

কিছু ইঙ্গিত:


আরসিডিএফফল্ট কি লিপিযোগ্য? আমি তাদের সাইটটি দেখেছি এবং এটি এর মতো দেখায় না।
ভুয়া নাম

কোনও বিষয় নয়, আমার আগ্রহী সমস্ত ফাইলের জন্য আমার কাছে টাইপ ডিক্লেয়ারেশন রয়েছে
ভুয়া নাম

দুর্দান্ত লেখার আপ। যতদূর LSHandlerRoleViewer, আমি ভাবছি এটি সম্পাদনার বিরোধী হিসাবে দেখার জন্য এটি ডিফল্ট হওয়ার সাথে সম্পর্কিত কিনা ( Apple.stackexchange.com/a/49998/206073 আমাকে এই লাইনে পেয়েছে)। আমি জানি না কি কি প্রসঙ্গে কোনটি নির্ধারণ করতে পারে যে কেউ দেখার বা সম্পাদনার জন্য খোলার চেষ্টা করছে কিনা, তবে ... (বিষয়বস্তুটি CFBundleTypeRoleদেখে মনে হচ্ছে এটি অনুরূপ মান গ্রহণ করে)
ব্রেট জামির

এছাড়াও, মনে হয় এটি com.apple.LaunchServices/com.apple.launchservices.secureপরবর্তী ম্যাকওএস সিস্টেমে ডোমেন হতে পারে ...
ব্রেট জমির

2

একটি বিকল্প সম্পাদনা করা হয় ~/Library/Preferences/.GlobalPreferences.plist:

defaults write com.apple.LaunchServices LSHandlers -array-add '{LSHandlerContentType=com.adobe.pdf;LSHandlerRoleAll=net.sourceforge.skim-app.skim;}'

এন্ট্রি ইতিমধ্যে উপস্থিত রয়েছে কিনা তা পরীক্ষা করতে আপনি প্লিস্টবাডি ব্যবহার করতে পারেন তবে লঞ্চ পরিষেবা ডেটাবেস পুনরায় আরম্ভ বা পুনর্নির্মাণ না করে পরিবর্তনগুলি প্রয়োগ করার কোনও উপায় আমি পাইনি।

ডুটি ব্যবহার করে , আপনি এটি duti ~/.dutiসংরক্ষণ করার পরে চালাতে পারেন ~/.duti:

net.sourceforge.skim-app.skim .pdf all

1

এটি সত্যিই আপনার প্রশ্নের উত্তর দেয় না, তবে এটি একটি সমাধান হতে পারে।

ইন্সপেক্টর ফাইন্ডারে জন্য তথ্য উপস্থাপন করে বর্তমানে নির্বাচিত এক বা একাধিক ফাইল:

+ +I

সারাংশ তথ্য যখন ফাইন্ডারে জানালা দরকারী একাধিক ফাইল নির্বাচন করা হয়:

^+ +I

আপনি যদি একই ধরণের একাধিক ফাইল নির্বাচন করেন তবে উপরের যে কোনও পদ্ধতি আপনাকে সেই ফাইলগুলির জন্য ওপেন: সম্পত্তিটি সহজেই স্যুইচ করতে দেয় ।


0

আপনার সঠিক প্রশ্নের উত্তর নয়, তবে আরও একটি সম্ভাব্য সমাধান। -আর্গুমেন্টটি খোলার জন্য আপনি কমান্ড লাইন থেকে একটি নির্দিষ্ট অ্যাপ্লিকেশন সহ একটি নথি খুলতে পারেন।

উদাহরণস্বরূপ, বর্তমান ডিরেক্টরিতে সমস্ত এইচটিএমএল ফাইল খুলুন।

> open -a 'Google Chrome' *.html

পরমাণু পাঠ্য সম্পাদকটিতে সূচক html এবং জাভাস্ক্রিপ্ট কন্ট্রোলার ফাইলগুলি খুলুন:

> open -a 'atom' index.html js/controllers/*.js

আপনার প্রয়োজনের উপর নির্ভর করে, আপনি এটিকে একটি অটোমেটর পরিষেবা হিসাবে সংশোধন করতে পারেন যা একটি শর্টকাট কী বরাদ্দ করা যেতে পারে, বাছাই করা ফাইল পাথটিকে আর্গুমেন্ট হিসাবে গ্রহণ করে।

এখানে অটোমেটর অ্যাপলস্ক্রিপ্টের একটি উদাহরণ রয়েছে যা ফাইলগুলিকে ইনপুট হিসাবে গ্রহণ করে এবং Chrome এ নির্বাচিত ফাইলগুলি খুলবে:

on run {input, parameters}
set openFiles to "open -a 'Google Chrome' " --note the trailing space
set filePaths to {}

--covert the filePaths to posix style
repeat with i from 1 to count of input
    set aFile to input's item i as alias
    set aFile to quoted form of POSIX path of aFile
    set filePaths's end to aFile
end repeat

--convert filePaths list to a string delimited by spaces
set tid to text item delimiters
set text item delimiters to " "
set filePaths to filePaths as text
set text item delimiters to tid

--Open files via commandline
do shell script openFiles & filePaths
return input

শেষ রান

স্পষ্টতই, আপনি অ্যাপ্লিকেশনটির নাম "সাব্লাইম" টেক্সট এডিটর পরিবর্তন করতে, এটিকে অন্য পরিষেবা হিসাবে সংরক্ষণ করতে এবং তাদের উভয় শর্টকাট কী বরাদ্দ করতে পারেন।

আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.