কমান্ড লাইনের সাহায্যে ওএস এক্সে একটি অ্যাপ্লিকেশন চালু করুন


108

আমি স্ক্রিপ্ট থেকে ওএসএক্সে একটি অ্যাপ্লিকেশন চালু করতে চাই। আমি এটি কমান্ড লাইন আর্গুমেন্ট পাস প্রয়োজন। দুর্ভাগ্যক্রমে, openকমান্ড লাইন আরোগুলি গ্রহণ করে না।

আমি কেবলমাত্র বিকল্পটি nohup myApp > /dev/null &আমার অ্যাপ্লিকেশন চালু করতে ব্যবহার করতে পারি তা এটি চালু করা স্ক্রিপ্টের স্বাধীনভাবে থাকতে পারে।

এর থেকে আরও ভাল পরামর্শ?


আমি প্রশ্ন অনুসরণ করতে পারি না। "খোলা" কমান্ড-লাইন আরোগুলি গ্রহণ করে না? "খোলা" কি? এটি কি অ্যাপলস্ক্রিপ্টটি খোলা আছে? কীভাবে nohup &সমস্যার সমাধান হয়?
এস .লট

4
ম্যান ওপেন (1) - ফাইল বা অ্যাপ্লিকেশন চালু করার জন্য ওএস এক্স কমান্ড
নেড ডিলি

3
এটি superuser.com- এ থাকা উচিত
জেফ মিটবল ইয়াং

উত্তর:


78

ওএস এক্স 10.6 এ, openআবেদনে আর্গুমেন্টগুলি পাস করার জন্য কমান্ডটি বাড়ানো হয়েছিল:

open ./AppName.app --args -AppCommandLineArg

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


আমার কুলদেগি পন্থাটি হ'ল নুহপ ব্যবহার করে কমান্ড লাইন আরোগুলির সাথে সরাসরি এক্সিকিউটেবলকে ডেকে আনা - যদি পরিবেশ-ওয়ার্ড-ক্লাদ্গে কম ক্লদ্গেই হয়?
সাইকোটিক

2
সম্ভবত না. যদি এটি আপনার পক্ষে কাজ করে তবে এটির সাথে যান। বৃহত্তর বিষয়টি হ'ল ওপেন (1) হ'ল কি ঘটবে তার সমতুল্য সমতুল্য যখন কোনও ব্যবহারকারী ফাইন্ডারে একটি ডাবল-ক্লিক বা "ওপেন" করেন এবং এই প্রক্রিয়াগুলির কোনওটিই প্রচলিত কমান্ড লাইন আর্গুমেন্টকে সমর্থন করে না।
নেড ডিলি

+1: ম্যাক ওএস এক্স জিইউআই অ্যাপ্লিকেশনগুলির জন্য আপনার কমান্ড-লাইন আর্গুমেন্ট ব্যবহার করা উচিত নয়।
এস.লট

2
গুগলকে কমান্ড লাইন আরগস, অ্যাপ্লিকেশনস / গুগল ক্রোম.অ্যাপ / কনটেন্টস / ভার্সন / .0.০৪.5..5৩ / গুগল ক্রোম হেল্পার.অ্যাপ / কনটেন্টস / ম্যাকোস / গুগল ক্রোম সহায়ক - টাইপ = রেন্ডারার --lang = এন-ইউএস - ব্যবহার না করার জন্য বলুন -ফোর্সস্টেস্ট
অনুরাগ

@ আনুরাগ ইউনিয়াল "কেন?" আপনি কি উত্তরটি পড়েছেন? "প্রচলিত প্রক্রিয়াটি হ'ল অ্যাপল ইভেন্টগুলি ফাইলের জন্য এখানে কোকো অ্যাপ্লিকেশনগুলির জন্য বা এখানে কার্বন অ্যাপ্লিকেশানের জন্য ব্যবহার করা।" ম্যাক ওএস এক্সকে এভাবেই তৈরি করা হয়েছে। হ্যাঁ. ক্রোম বিধিগুলি ভঙ্গ করে। লিনাক্সের প্রতিটি কমান্ড-লাইন ইউটিলিটি করে। তবে জিইউআই অ্যাপ্লিকেশনগুলি যা দিয়ে খোলা openহয়েছে তা হ'ল - উত্তর হিসাবে বলা হয়েছে - কমান্ড লাইন থেকে কাজ করার জন্য ডিজাইন করা হয়নি। "কেন?" কারণ ম্যাক ওএস এক্সের পথটি এমনই।
এস। লট

105

এখানে যে প্রশ্নে উল্লেখ করা হয়েছিল , open10.6- এ কমান্ডের এখন একটি argsপতাকা রয়েছে, তাই আপনি কল করতে পারেন:

open -n ./AppName.app --args -AppCommandLineArg


এটি ঠিক যেভাবে প্রয়োজন ছিল ঠিক সেভাবে কাজ করছে। ধন্যবাদ
ডিটিদেব

এটি কাজ করে এবং আমাকে ক্রোমিয়ামের জন্য একটি zsh উર્સ সেট করার অনুমতি দেয়। ধন্যবাদ
জামেস্ক্যাম্বেল

এই উত্তর দুর্দান্ত। কেবলমাত্র এটি যুক্ত করতে চেয়েছিলেন আপনি যখন প্রথম টার্মিনালটি খুলবেন আপনি নিজের হোম ডিরেক্টরিতে থাকবেন, সুতরাং এটি এটিকে টাইপ করুন যাতে আপনার অ্যাপ্লিকেশন ডিরেক্টরিতে স্যুইচ করার প্রয়োজন হয় না। আমি ফন্টগুলি লোড না করে গিম্প চালাতে চেয়েছিলাম, যা চিরকালের জন্য লাগে, তাই আমি ফন্টগুলি বাদ দিতে -f সুইচ দিয়ে এটি টাইপ করি: ওপেন -n / অ্যাপ্লিকেশনস / জিআইএমপি.এপ - জর্গ টু
জেমস

32

একটি অ্যাপ্লিকেশন বান্ডেল (একটি .appফাইল) আসলে ডিরেক্টরিগুলির একটি গোছা। এর পরিবর্তে ব্যবহার করার openএবং .appনাম, আপনি আসলে এটি সরানো এবং প্রকৃত বাইনারি শুরু করতে পারেন। এই ক্ষেত্রে:

$ cd /Applications/LittleSnapper.app/
$ ls
Contents
$ cd Contents/MacOS/
$ ./LittleSnapper

এটি আসল বাইনারি যা যুক্তিগুলি গ্রহণ করতে পারে (বা না LittleSnapperএর ক্ষেত্রে)।


3
বাইনারি আর্গুমেন্ট গ্রহণ করে, আমি নিশ্চিত। আমি এটি লিখেছিলাম. 'খোলা' চালু করা যুক্তিগুলি পাস করার অনুমতি দেয় না। আমি এই সম্পর্কে বেশ নিশ্চিত। এবং হ্যাঁ, আমার স্ক্রিপ্টটি সরাসরি 'ওপেন বাইনারি' কল করছে, বান্ডিলটি খোলার চেষ্টা করছে না।
সাইকোটিক

@ সাইচোটিক: তিনি "ওপেন বাইনারি" কল করতে বলছেন না। তিনি সরাসরি বাইনারি কার্যকর করার কথা বলছেন।
চক

এটি আমার পক্ষে কাজ করবে না। এটি সরাসরি আমার স্ক্রিপ্টের শিশু প্রক্রিয়া হিসাবে বাইনারি ফলাফলগুলি সরাসরি কার্যকর করে যা আমি অবশ্যই চাই না। অতএব, ওপেন / নোহুপ ব্যবহার করার প্রয়োজন
সাইকোটিক

1
যদি এটি শেল স্ক্রিপ্ট হয় তবে স্ক্রিপ্ট প্রক্রিয়াটিকে প্রকৃত এক্সিকিউটেবলের সাথে প্রতিস্থাপন করতে 'এক্সিকিউট' ব্যবহার করুন।
জোনাথন লেফলার

2
যদি বান্ডিল কাস্টম লাইব্রেরি ও অবকাঠামো রয়েছে, আপনার সাথে বেহালা করতে হবে: এই পদ্ধতির একটি প্রধান অপূর্ণতা আছে DYLD_LIBRARY_PATH, DYLD_FRAMEWORK_PATH
ulidtko

14

আপনার অ্যাপ্লিকেশনটির ফাইলগুলিতে কাজ করা দরকার (আপনি সাধারণত যা হিসাবে পাস করার প্রত্যাশা করবেন ./myApp *.jpg:), আপনি এটি এইভাবে করবেন:

open *.jpg -a myApp

এই আমি ঠিক কি খুঁজছিলাম ছিল! আমার ইনস্ট্যান্টেশন, উদাহরণস্বরূপ: open something.py -a Eclipse.app
এরিক

4

আমি ম্যাথিউইক যে কৌশলটি প্রস্তাব করব তা প্রস্তাব করব। আমার ক্ষেত্রে, আমার এটি ক্রোমিয়াম দিয়ে চেষ্টা করা দরকার:

> Chromium.app/Contents/MacOS/Chromium --enable-remote-fonts

আমি বুঝতে পারি যে এটি অপের সমস্যার সমাধান করে না, তবে আশা করি এটি অন্য কারও সময় সাশ্রয় করবে। :)


@ পেসারিয়ার এই কমান্ডের শেষে একটি `&` যুক্ত করুন। এটি পটভূমিতে চালু হবে। তারপরে আপনি আপনার টার্মিনাল উইন্ডোটি বন্ধ করতে পারেন এবং অ্যাপ্লিকেশনটি সম্ভবত এখনও খোলা থাকবে।
পল আইরিশ

2

openএছাড়াও একটি -a পতাকা রয়েছে, যা আপনি অ্যাপ্লিকেশন ফোল্ডারের মধ্যে থেকে একটি অ্যাপ্লিকেশনটি এর নামের মাধ্যমে (বা -বি পতাকা সহ বান্ডেল সনাক্তকারী দ্বারা) খোলার জন্য ব্যবহার করতে পারেন। আপনি যে ফলাফলটি চান তা অর্জন করতে আপনি এটি --args বিকল্পের সাথে একত্রিত করতে পারেন:

open -a APP_NAME --args ARGS

ভিএলসি প্লেয়ারে এমন একটি ভিডিও খুলতে যা ফ্যাক্টর 2x এবং লুপের সাথে স্কেল করা উচিত যা আপনি উদাহরণস্বরূপ:

open -a VLC --args -L --fullscreen

নোট করুন যে কমান্ডের আউটপুট আমি টার্মিনালে পেলাম না। (যদিও আমি এটি সমাধান করার জন্য কিছু চেষ্টা করি নি)


আপনি কি open -aইচ্ছাকৃত পুনরাবৃত্তি ?? যাই হোক open -a /Applications/Google\ Chrome.app/Contents/MacOS/Google\ Chrome --args --user-data-dir=/Users/an/userllনা কেন , আমার জন্য কাজ করে না।
পেসারিয়ার

আমাকে ক্ষমা করুন, আমার সিনট্যাক্স কোনও কারণে সম্পূর্ণ বন্ধ রয়েছে। আমি এখন আপডেট করব।
rien333

2

আমি ক্রোম চালু হওয়ার দুটি পৃথক দৃষ্টান্ত রাখতে চেয়েছিলাম, প্রত্যেকটি নিজস্ব প্রোফাইল ব্যবহার করছে। আমি স্পটলাইট থেকে সেগুলি শুরু করতে সক্ষম হতে চেয়েছিলাম , যেমন ম্যাক অ্যাপ্লিকেশনগুলি শুরু করার আমার অভ্যাস। অন্য কথায়, আমার দুটি নিয়মিত ম্যাক অ্যাপ্লিকেশন প্রয়োজন, regChromeসাধারণ ব্রাউজিংয়ের জন্য এবং altChromeবিশেষ প্রোফাইলটি ব্যবহার করার জন্য, স্পটলাইট আনতে ⌘-স্পেসটি কী দ্বারা সহজেই শুরু করা, তারপরে 'রেজি' বা 'Alt', তারপরে প্রবেশ করুন।

আমি মনে করি উপরোক্ত লক্ষ্যটি সম্পাদনের জন্য নিষ্ঠুর বলটি হ'ল গুগল ক্রোম অ্যাপ্লিকেশন বান্ডেলের দুটি অনুলিপি নিজ নিজ নামে তৈরি করা হবে। তবে এটি কুৎসিত এবং আপডেট করা জটিল ates

আমি যা শেষ করেছি তা হ'ল দুটি অ্যাপলস্ক্রিপ্ট অ্যাপ্লিকেশন যার মধ্যে দুটি করে কমান্ড রয়েছে। এখানে একটি altChrome:

do shell script "cd /Applications/Google\\ Chrome.app/Contents/Resources/; rm app.icns; ln /Users/garbuck/local/chromeLaunchers/Chrome-swirl.icns app.icns"
do shell script "/Applications/Google\\ Chrome.app/Contents/MacOS/Google\\ Chrome --user-data-dir=/Users/garbuck/altChrome >/dev/null 2>&1 &"

দ্বিতীয় লাইনটি বিকল্প প্রোফাইল ( --user-data-dirপ্যারামিটার) দিয়ে ক্রোম শুরু করে ।

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


2

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

এই পৃষ্ঠাটি একটি ভাল উদাহরণ উদাহরণ স্ক্রিপ্ট দেয় যা বাশ এবং ওসাস্ক্রিপ্ট ইন্টারেক্টিভ মোড ব্যবহার করে কমান্ড লাইনে লেখা যেতে পারে । এটি একটি সাফারি ট্যাব খুলবে এবং এতে নেভিগেট করে example.com

http://developer.telerik.com/featured/javascript-os-x-automation-example/
osascript -l JavaScript -i
Safari = Application("Safari");
window = Safari.windows[0];
window.name();
tab = Safari.Tab({url:"http://www.example.com"});
window.tabs.push(tab); 
window.currentTab = tab;

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

আরও জটিলতা!
পেসারিয়ার

1

আপেলস্ক্রিপ্ট সহ:

tell application "Firefox" to activate

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

আমি বিশ্বাস করি আপনি একটি AppleScript নির্দেশ উল্লেখ করা হয়, কিন্তু প্রশ্ন কম্যান্ড লাইন থেকে খোলার সম্পর্কে ...
কনিকে

0

কেন কেবল অ্যাপের বাক্সে প্রবেশের পথটি সেট করা যায় না। ম্যাকভিমের জন্য, আমি নিম্নলিখিতগুলি করেছি।

export PATH=/Applications/MacVim.app/Contents/bin:$PATH

একটি উপাধি, আমি চেষ্টা করেছিলাম এমন অন্য একটি বিকল্প।

alias mvim='/Applications/MacVim.app/Contents/bin/mvim'
alias gvim=mvim 

রফতানি পাঠের মাধ্যমে আমি অ্যাপ্লিকেশনটিতে সমস্ত কমান্ড কল করতে পারি। যুক্তিগুলি ম্যাকভিমের সাথে আমার পরীক্ষার জন্য ভাল পাস করেছে। যেখানে উলেফ, আমাকে বিনের প্রতিটি কমান্ড উরফ করতে হয়েছিল।

mvim README.txt
gvim Anotherfile.txt

ওরফে এবং পথের শক্তি উপভোগ করুন। তবে ওএস আপগ্রেড করার সময় আপনাকে পরিবর্তনগুলি নিরীক্ষণ করতে হবে।


"মনে রাখবেন ম্যাকোস লিনাক্স ভিত্তিক"। না, না এটি নয়, ম্যাকোস এবং লিনাক্স কোডের একক লাইন ভাগ করে না। ম্যাকোস হ'ল একটি ইউএনআইএক্স যা ফ্রিবিএসডি এর উপর ভিত্তি করে কার্নেল সহ।
থমাস

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

অবশ্যই, কোনো সমস্যা নেই! :)
টমাস

0

সহজ, আপনি যে অ্যাপ্লিকেশনটি চালু করতে চান তার নাম অনুসারে এখানে "অ্যাপ্লিকেশন" প্রতিস্থাপন করুন।

export APP_HOME=/Applications/APP.app/Contents/MacOS
export PATH=$PATH:$APP_HOME

পরে আমাকে ধন্যবাদ।


0

আপনি অ্যাপ্লিকেশনগুলি ব্যবহার করে চালু করতে পারেন open:

open -a APP_YOU_WANT

এটি আপনার পছন্দসই অ্যাপ্লিকেশনটি খুলতে হবে।

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