আমি কীভাবে ম্যাক ওএসে কমান্ড লাইন যুক্তি দিয়ে একটি অ্যাপ্লিকেশন চালাতে পারি


60

ম্যাকের কোনও অ্যাপ্লিকেশনটিতে কমান্ড লাইন যুক্তি যুক্ত করার কোনও সহজ উপায় আছে কি? উদাহরণস্বরূপ, কিওস্ক মোডে অপেরা চালাতে বা ফায়ারফক্সে একটি আলাদা প্রোফাইল ব্যবহার করতে, আমি টাইপ করতে পারি

$ /Applications/Opera.app/Contents/MacOS/Opera -kioskmode
$ /Applications/Firefox.app/Contents/MacOS/firefox -P profilename -no-remote

উইন্ডোজে আমি শর্টকাট বৈশিষ্ট্যে যুক্তি যুক্ত করতে পারি, তবে যেহেতু ম্যাকগুলি প্রতি সেবার শর্টকাট ব্যবহার করে না এবং সরাসরি অ্যাপ্লিকেশনগুলি চালায় তাই এটি সম্ভব নয়।

আমি দেখতে পেয়েছি যে ব্যাশ বা অ্যাপ্লিক্রিপ্টের মাধ্যমে অ্যাপ্লিকেশনগুলি লঞ্চ করা আংশিকভাবে কাজ করে:

# Bash
#!/bin/sh
/Applications/Firefox.app/Contents/MacOS/firefox -P default -no-remote

# Applescript    
do shell script "exec /Applications/Opera.app/Contents/MacOS/Opera -kioskmode"

আমি এগুলিকে এক্সিকিউটেবল করতে পারি এবং একটি আইকন বরাদ্দ করতে পারি এবং সবকিছু দুর্দান্ত কাজ করা ব্যতীত আমি যখন এই সিউডো প্রোগ্রামগুলির মধ্যে দুটি চালনা করি তখনই অ্যাপ্লিকেশনটি যতক্ষণ না খোলা থাকে ততক্ষণ কোনও টার্মিনাল উইন্ডো বা অ্যাপসক্রিপ্ট আইকনটি খোলা থাকে। সম্ভবত, অ্যাপসক্রিপ্ট কমান্ডটি ব্যবহার করা openএড়াতে পারে, তবে যেহেতু আমি অ্যাপ্লিকেশনটি প্যাকেজযুক্ত (ন্যায়সঙ্গত /Applications/Firefox) হিসাবে চালাচ্ছি না, কাজ করে না।

সুতরাং, কমান্ড লাইন আর্গুমেন্ট সহ অ্যাপ্লিকেশনগুলি চালানোর জন্য আরও ভাল উপায় কি? যদি তা না হয়, অ্যাপ্লিকেশনটি খোলা থাকার সময় অবিচ্ছিন্ন টার্মিনাল সেশন বা অ্যাপসক্রিপ্ট আইকনটি খোলা থেকে রোধ করার কোনও উপায় আছে কি?

সম্পাদন করা

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

#!/bin/sh
/Applications/Firefox.app/Contents/MacOS/firefox -P default -no-remote &

2
আমি এখনও এই
উত্তরটির

আপনি যখন &এটির সাথে কোনও কাজ চালনা করেন তবুও এটি টার্মিনালের অন্তর্গত, আপনি disown %/Applications/Firefox.app/Contents/MacOS/firefox এটি চালানোর পরে লাইনটি যুক্ত করে এটি ঠিক করতে পারেন , তারপরে আপনি অ্যাপলস্ক্রিপ্ট ব্যবহার করে নিরাপদে টার্মিনালটি বন্ধ করতে পারেন।
ocodo

ড্যানিয়েলের উত্তরের সন্ধান করুন - এটি আজকের জন্য সবচেয়ে সম্পূর্ণ এবং নিখুঁত (OSX 10.6.2 +)।
ক্রেগোক্স

উত্তর:


17

আমার সেরা সমাধানটি এখানে: এটি দিয়ে একটি অ্যাপ্লিক্রিপ্ট তৈরি করুন:

do shell script "/Applications/Firefox.app/Contents/MacOS/firefox -P default -no-remote & killall Firefox.app"

এবং এটি একটি অ্যাপ্লিকেশন হিসাবে সংরক্ষণ করুন

প্রথম অংশে যে কোনও আর্গুমেন্ট সহ আপনি যে কোনও অ্যাপ্লিকেশন রাখতে পারেন। &আপনি আপনার স্ক্রিপ্ট +। অ্যাপ্লিকেশনটির নাম দিয়েছেন যা কিছু হত্যার প্রয়োজন পরে অংশ । আপনি স্ক্রিপ্ট অ্যাপটি ডকটিতে ফ্ল্যাশ করতে দেখবেন তবে এটি অদৃশ্য হয়ে যাবে।

দ্রষ্টব্য: স্ক্রিপ্ট সম্পাদক থেকে চালিত হলে স্ক্রিপ্টটি সঠিকভাবে কাজ করবে না, কেবলমাত্র আপনি যখন তৈরি করেছেন স্ক্রিপ্ট অ্যাপ্লিকেশন থেকে চালানো হবে।


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

এটা বিরক্তিকর. আপনি কি অ্যাপ্লিকেশন হিসাবে সেভ করছেন তবে অ্যাপটিতে ডাবল ক্লিক করলে? স্ক্রিপ্ট সম্পাদক থেকে চালানোর সময় এটি কাজ করবে না।
এমজেফ্রাইস

এছাড়াও, আমি লক্ষ্য করেছি যে আমি & এর আগে একটি নতুন লাইন রেখেছি।
নিউলাইনটি থাকলে

এখানে স্নো চিতাবাঘ 10.6.x এ কিল্লিলের প্রয়োজন নেই - তবে অ্যাপটি কার্যকর করার সাথে সাথেই এটি আত্মহত্যা করার কোনও উপায় খুঁজে পেল না।
ক্রেগক্স

1
@ পেসারিয়ার এই উত্তরের তারিখগুলি পরীক্ষা করুন।
এমজেফ্রাইস

28

ওএস এক্স 10.6.2 থেকে শুরু করে, ওপেন কমান্ডটি --args পতাকার মাধ্যমে যে অ্যাপ্লিকেশনটি খোলে সেটিতে আর্গুমেন্টগুলি দিতে পারে। এটি ব্যবহার করার জন্য একটি অ্যাপলস্ক্রিপ্ট এর মতো দেখাচ্ছে:

do shell script "open -a /Applications/Firefox.app --args -P default -no-remote"

এটি আপনার পছন্দসই আচরণ দেওয়া উচিত।


"মানুষ খোলা", এবং এটি আছে! একটি কবজ মত কাজ। --আরগ ফ্ল্যাগ এবং তারপরে আপনার যুক্তি।
মাইকেল ডিম্মিট

1
আমি --argsক্রোম দিয়ে চেষ্টা করেছি এবং এটি কার্যকর হয় না। এটি কেবল প্রথম উদাহরণের জন্য কাজ করবে । আপনি যদি --user-data-dirএকই সাথে দুটি চালানোর চেষ্টা করেন তবে আপনি এটিটি করতে পারবেন না তবে এটি openঅবশ্যই পুরানো /applications...পদ্ধতিতে চালানো উচিত । কেউ জানেন কেন চোদাচুদি --args কাজ করে না?
পেসারিয়ার

1
@ পেসারিয়ার, "ওপেন-এন"
সাইমন রাইট

এটি যুক্ত করতে, আপনি স্ক্রিপ্ট সম্পাদকটিতে স্ক্রিপ্ট তৈরি করতে পারেন এবং তারপরে অ্যাপ্লিকেশন হিসাবে সংরক্ষণ করতে পারেন।
কেভিন সি।

11

অটোমেটর খুলুন এবং একটি একক রান শেল স্ক্রিপ্ট ক্রিয়া সহ একটি অ্যাপ্লিকেশন তৈরি করুন :

 /Applications/Firefox.app/Contents/MacOS/firefox-bin -here-some-args &

এই অ্যাপ্লিকেশনটি ফায়ারফক্স চালু করবে এবং তাত্ক্ষণিকভাবে প্রস্থান করবে, কেবল ফায়ারফক্স চালু থাকবে।


বিকল্পভাবে, নিম্নলিখিত অ্যাপলস্ক্রিপ্ট কোড সহ অ্যাপলস্ক্রিপ্ট সম্পাদক ব্যবহার করে একটি অ্যাপ্লিকেশন তৈরি করুন :

do shell script "open -a '/Users/danielbeck/Applications/Firefox.app' --args -ProfileManager"

উভয়ই সূক্ষ্মভাবে কাজ করে এবং টার্মিনাল বা স্ক্রিপ্ট অ্যাপ্লিকেশনটি এক সেকেন্ডের বেশি চলমান রাখে না। Automator ব্যবহার করে, আপনি এমনকি একটি তৈরি করতে পারেন পরিষেবা যদি আপনি তা চয়ন।


1
open --argsবব ইতিমধ্যে উল্লিখিত হিসাবে, 10.6.2 এ কার্যকর করা হয়েছিল মনে রাখবেন ।
ক্রেগোক্স

এটির জন্য ব্যবহার করে: open eclipse.app -nদ্বিতীয় একটিগ্রহ ওয়ার্কস্পেস খুলতে। খুব সহজ। ধন্যবাদ!
জোনালভ

MacOS 10.14 এ "চালিত শেল স্ক্রিপ্ট" অ্যাকশন নিয়ে অটোমেটরে কাজ করতে পারেনি। যদিও আমি অ্যাপলস্ক্রিপ্ট দিয়ে সাফল্য পেয়েছি।
কেভিন সি।

8

এটি একটি পুরানো আলোচনা, তবে এখনও গুগল অনুসন্ধানে উঠে আসে, তাই আমি ভেবেছিলাম যে আমি কয়েক ডলার যোগ করব ¢

এক্সিকিউটেবলের নিখুঁত পথের চেয়ে "বান্ডেল শনাক্তকারী" ব্যবহার করা আরও ভাল:

open -b com.google.Chrome --args --profile-directory="Profile 1"

বা একটি অ্যাপল স্ক্রিপ্টে:

do shell script "open -b com.google.Chrome --args --profile-directory='Profile 1'"

আমি এখনও যা বুঝতে পারিনি তা হ'ল প্রথমটি ইতিমধ্যে খোলা থাকলে কীভাবে একটি নতুন প্রোফাইল / উইন্ডোটি আলাদা প্রোফাইলের সাথে খুলতে হয়। (যদি আমি উপরে অ্যাপলস্ক্রিপ্টটি চালিত করি তবে "প্রোফাইল 2" দিয়ে অন্য একটি, তারপর ক্রোম এখনও "প্রোফাইল 1" হিসাবে অন্য উইন্ডোটি খুলবে)। :(


-B কার্যকরীভাবে -a এর সমান? কিভাবে তারা ব্যতিক্রম?
পেসারিয়ার

7

এই দৃশ্যে প্যারেন্ট অ্যাপলস্ক্রিপ্ট অ্যাপ্লিকেশন প্রক্রিয়া ("অ্যাপলেট") কে হত্যা করার জন্য কিলল (বা অনুরূপ) ব্যবহার করার প্রয়োজন নেই (যেমন কিছু অন্যান্য উত্তরও বলেছে) । এমনকি কিল্লকে দেওয়া নাম / প্যাটার্নটি প্যারেন্ট অ্যাপলেট প্রক্রিয়া (যেমন অন্য, একযোগে অ্যাপলস্ক্রিপ্ট অ্যাপ্লিকেশনগুলি চালনা করে (যদি প্যাটার্ন হিসাবে "অ্যাপলেট" ব্যবহার করা হয়)) এর চেয়ে বেশি মেলে তবে এটির অপ্রীতিকর পার্শ্ব প্রতিক্রিয়াও হতে পারে ।

এর মতো কিছুটি kill $PPIDআরও যুক্তিসঙ্গত হতে পারে তবে আমরা ধরে নিতে পারি না যে অ্যাপলস্ক্রিপ্ট অ্যাপ্লিকেশনটির অ্যাপলেটটি সর্বদা শেল স্ক্রিপ্ট দ্বারা শুরু হওয়া শেলের তাত্ক্ষণিক পিতামাতা । ভাগ্যক্রমে, আপনার যা প্রয়োজন তা করার একটি উপযুক্ত যুক্তিসঙ্গত উপায় রয়েছে।

প্রতি TN2065 (অধীনে "আমি একটি পটভূমি সার্ভার প্রক্রিয়া শুরু করতে চান; আমি কিভাবে করবো শেল স্ক্রিপ্ট কমান্ড সম্পন্ন হয়ে পর্যন্ত অপেক্ষা করে তুলতে না"), সঠিক পদ্ধতি stdout- এ এবং দ্বারা stderr পুনর্নির্দেশ এবং শেল পটভূমিতে প্রোগ্রাম চালানো আছে হয় ।

অ্যাপলস্ক্রিপ্ট অ্যাপ্লিকেশন হিসাবে নিম্নলিখিত প্রোগ্রামটি সংরক্ষণ করতে স্ক্রিপ্ট সম্পাদক ব্যবহার করুন :

do shell script ¬
    "/Applications/Firefox.app/Contents/MacOS/firefox-bin \\
        -P default -no-remote \\
        >/dev/null 2>&1 &"

(এটিকে "সংকীর্ণ" রাখতে ফাংশনাল লাইন ব্রেকগুলি যুক্ত করা হয়েছে; মুছুন ¬এবং \\যদি আপনি চান তবে সবগুলি একটি দীর্ঘ লাইনে রেখে দিন)

এটি ফায়ারফক্স শুরু করতে দীর্ঘ সময় চলবে এবং ফায়ারফক্স চলতে থাকা অবস্থায় পরিষ্কারভাবে প্রস্থান করবে ।

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

অন্যান্য উত্তরগুলি খোলা ভিতরে শেল স্ক্রিপ্ট ব্যবহার করে কারণ ওপেন (আসলে লঞ্চ সার্ভিসেস) ফলস্বরূপ প্রোগ্রামটি ব্যাকগ্রাউন্ড করার এবং এর স্টাডআউট এবং স্টার্ডার অন্যত্র প্রেরণের সমান কাজ করে।


এটা খুবই আকর্ষণীয়. 10.6.2 এর আগে যদি এটি কাজ করে তবে আমি অবাক হই ... তবে আমি এখনও মনে করি এটি ব্যবহার আরও open --argsপরিষ্কার দেখায়। এগুলির কোনও ব্যবহারে কি কোনও ত্রুটি আছে?
ক্রেগক্স

1
আমি জানি এই পদ্ধতিটি 10.4 এ কাজ করে। আমার ধারণাটি যে শেল স্ক্রিপ্ট সর্বদা এটির মতো কাজ করে (এটি ম্যাপ ওএস এক্স 10.1 এর সাথে উপস্থিত অ্যাপলস্ক্রিপ্ট ১.7স্ট্যান্ডার্ড সংযোজন ওএসএএক্স-এ যুক্ত হয়েছিল )। আপনি যদি 10.6 ধরে নিতে ইচ্ছুক হন তবে সম্ভবত ভাল। open --args
ক্রিস জনসন

@ ক্রিস জনসন, লিঙ্ক ডাউন ........
পেসারিয়ার

4

AppleScript

do shell script "/Applications/Google\\ Chrome.app/Contents/MacOS/Google\\ Chrome --incognito & killall applet"

সেখানে দুটি পয়েন্ট।

  1. স্থানটি একটি ব্যাকস্ল্যাশ দ্বারা পালিয়ে যায় যা আবার ব্যাকস্ল্যাশ দ্বারা পালিয়ে যায়
  2. কিল্ল অ্যাপলেট সমস্যা সৃষ্টি করতে পারে কারণ অন্যান্য অ্যাপলেট চলতে পারে
  3. প্রোগ্রাম হিসাবে এটি সংরক্ষণ করুন

তবে এটি 10.6.5 এ ভাল কাজ করে


appletবোঝায়?
পেসারিয়ার

3

নিম্নলিখিতটি আপনাকে .app নিজেই কমান্ড-লাইন আর্গুমেন্ট নির্দিষ্ট করতে দেয়:

ডান ক্লিক করুন। অ্যাপ্লিকেশন বান্ডলে, "প্যাকেজ সামগ্রীগুলি দেখান" নির্বাচন করুন, তথ্য.পিস্টে নেভিগেট করুন, এটিতে ডাবল ক্লিক করুন, আরোগুলি কী সন্ধান করুন, সম্পাদনা করুন।

এই মুহুর্তে আমার কাছে কোনও ওএস এক্স মেশিন হ্যান্ডি নেই, সুতরাং আপনি এটি একটি উলামের কাছেও করতে পারেন কিনা তা পরীক্ষা করতে পারছি না (আপনি যদি মূল। অ্যাপ যুক্তি-মুক্ত রাখতে চান, এবং সেটার)।


দুর্ভাগ্যক্রমে প্লাস্টে কোনও আরগ কী নেই। মজিলার মতে, আপনি একটি স্ক্রিপ্ট ব্যবহার করবেন - wiki.mozilla.org/ মেলনিউজ: লগিং#ম্যাক
অ্যান্ড্রু

এটিও নোট করুন যে প্যাকেজ সামগ্রীগুলি (যেমন তথ্য.পিলিস্ট) পরিবর্তনের ফলে কোড স্বাক্ষরের ক্ষেত্রে সমস্যা দেখা দিতে পারে: Bridge.grumpy-trol.org/2011/01/…
ড্র্রেভিকো

2

আপনার অ্যাপ্লিকেশনটিকে কোনও অ্যাপলস্ক্রিপ্ট লঞ্চারের ভিতরে মুড়িয়ে দিন।

পদক্ষেপগুলি এখানে।

  1. নিম্নলিখিত বিষয়বস্তু সহ একটি অ্যাপলস্ক্রিপ্ট তৈরি করুন এবং এটি একটি অ্যাপ্লিকেশন হিসাবে সংরক্ষণ করুন (উদাহরণস্বরূপ এটির নাম দেওয়া হয়েছে "ফায়ারফক্স 3 লঞ্চার.এপ")।

    set pathToApp to (POSIX path of (path to me)) & "Firefox 3.app"
    do shell script "open -a \"" & pathToApp & "\" --args -P default -no-remote"
    
  2. ফাইন্ডারে সেই অ্যাপ্লিকেশনটি পেয়েছেন, এটিকে ডান ক্লিক করুন, প্যাকেজ সামগ্রীগুলি দেখান।

  3. আপনার অ্যাপ্লিকেশনটি প্যাকেজ সামগ্রীর মূলের মধ্যে রাখুন। (এই উদাহরণে এটি "ফায়ারফক্স ৩. অ্যাপ" হবে)

    ফলাফল: / অ্যাপ্লিকেশনস / ফায়ারফক্স 3 লঞ্চার.এপ / ফায়ারফক্স 3. অ্যাপ

  4. আপনি এখন আপনার অ্যাপ্লিকেশন লঞ্চারটি খুলতে পারেন।

নোট:

  • মোড়ানো অ্যাপ্লিকেশনটির স্বয়ংক্রিয় আপডেটগুলি বেশিরভাগ ক্ষেত্রে কাজ করা উচিত।
  • যে কোনও টানুন এবং ড্রপ করা লঞ্চটিতে স্বয়ংক্রিয়ভাবে মোড়ানো অ্যাপ্লিকেশনটিতে (আরও কিছু স্ক্রিপ্টিং সহ) পুনঃনির্দেশ করা সম্ভব।
  • মোড়ানো অ্যাপ্লিকেশন আরম্ভ হওয়ার পরে লঞ্চারটি স্বয়ংক্রিয়ভাবে প্রস্থান করে।
  • এই পদ্ধতির একটি সুবিধা হ'ল সরাসরি মোড়ানো অ্যাপ্লিকেশনটি খোলার কয়েকটি ঝুঁকি রয়েছে।

1

আপনি কেন ব্যবহার করবেন না:

#!/bin/sh
open /Applications/Firefox.app

সাধারণ তবে এটি কাজ করে।


2
আপনি যদি এটি করেন তবে টার্মিনালটি খুলবে।
এমজেফ্রাইস

0

openকমান্ড একটি ঐচ্ছিক হয়েছে --argsযুক্তি যে মান আর্গুমেন্ট হিসাবে খোলা আবেদন কাছে হস্তান্তর করা হবে না। উদাহরণ স্বরূপ:

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