ওএস এক্স-এ কীভাবে শেল স্ক্রিপ্টটি ডাবল-ক্লিক করে চালানো যায়?


233

আমার কাছে একটি শেল স্ক্রিপ্ট রয়েছে যার ওএস এক্স-তে ব্যবহারকারী নির্বাহের অনুমতি রয়েছে, তবে আমি যখন এটিতে ডাবল ক্লিক করি তখন এটি একটি পাঠ্য সম্পাদক এ খোলে। আমি এটির ডাবল-ক্লিক করে এটি চালানোর উপায় কীভাবে পেতে পারি?

উত্তর:


266
  • টার্মিনালে প্রথমে টাইপ করে স্ক্রিপ্টটি কার্যকর করা যায়:

    chmod a+x (yourscriptname)
  • তারপরে, ফাইন্ডারে, আপনার ফাইলটিতে ডান ক্লিক করুন এবং "ওপেন" এবং তারপরে "অন্যান্য ..." নির্বাচন করুন।

  • এখানে আপনি যে অ্যাপ্লিকেশনটি ফাইলটি সম্পাদন করতে চান তা নির্বাচন করুন, এক্ষেত্রে এটি টার্মিনাল হবে। টার্মিনাল নির্বাচন করতে আপনাকে "প্রস্তাবিত অ্যাপ্লিকেশনগুলি" থেকে "সমস্ত অ্যাপ্লিকেশনগুলিতে" স্যুইচ করতে হবে। (টার্মিনাল.এপ অ্যাপ্লিকেশনটি ইউটিলিটি ফোল্ডারে পাওয়া যাবে)

  • দ্রষ্টব্য যে আপনি এই এক্সটেনশনের সাথে টার্মিনালটিতে চালিত হওয়ার জন্য সমস্ত ফাইল সংযুক্ত করতে না চাইলে আপনার "সর্বদা সাথে খুলুন" চেক করা উচিত নয়।

  • ঠিক আছে ক্লিক করার পরে আপনার কেবল স্ক্রিপ্টটি ডাবল-ক্লিক করে সম্পাদন করা উচিত।

ধন্যবাদ আমি পেয়েছি, টার্মিনালের সাথে সংযুক্ত হতে জানতাম না, আমি ভেবেছিলাম / বিন / শ
সি 2 এইচ 2

22
আমি "ইউটিলিটিস" ফোল্ডারটি সন্ধান করতে না পেরে আমি তালিকায় টার্মিনাল.এপটি খুঁজে পাইনি। আশা করি এটি কারও কিছু সময় সাশ্রয় করবে।
গ্লেন লরেন্স

27
উপর ওএসএক্স 10.8 ও উচ্চ, একটি এক্সিকিউটেবল স্ক্রিপ্ট যাদের নাম পারেন হয়েছে কোন প্রত্যয় বা সাফিক্স .commandহয় ডিফল্টরূপে ফাইন্ডারে থেকে এক্সিকিউটেবল, প্রয়োজন ছাড়াই ফাইন্ডারে নির্দেশ কিভাবে এটি খুলতে।
mklement0

1
"অল অ্যাপ্লিকেশনস" হ'ল সেটিংটি যা আমি অনুপস্থিত ছিলাম ... সম্ভবত চেরুভিমও সেই অভিজ্ঞতা পেয়েছিল। গ্লেনের মন্তব্য হিসাবে: আপনি উইন্ডোর উপরের-ডান কোণে কেবল বিল্ট-ইন অনুসন্ধান বৈশিষ্ট্যটি ব্যবহার করতে পারেন; নিশ্চিত হয়ে নিন যে আপনি অ্যাপটির পুরো নাম টাইপ করেছেন টার্মিনাল.এপ।
বড় প্রবীণ

3
এটি করার পরিষ্কার উপায় নয়। .commandফাইল এক্সটেনশনে আপনার স্ক্রিপ্টটির নাম পরিবর্তন করুন ।
বাচসউ

227

আপনি .commandফাইলের নাম এক্সটেনশন ব্যবহার করার চেষ্টা করেছেন ?


3
ইহা ভাল. @ লস উত্তরে কাজের ফোল্ডারটি আপনি স্ক্রিপ্টটি খোলার মতো নয়।
রদ্রিগো

6
কনসোল উইন্ডো ছাড়া "ব্যাকগ্রাউন্ড" কাজগুলি চালু করার কোনও উপায় আছে কি?
লাডো

6
দয়া করে মনে রাখবেন, আপনার বর্তমান স্ক্রিপ্টটি সেই ডিরেক্টরিটিই হতে পারে না it এই প্রশ্নটি ডান সেট করার জন্য একবার নজর দিন: stackoverflow.com/questions/59895/…
পাভেল আলেক্সেভ

14
আপনার এখনও কার্যকর করার অনুমতি থাকা দরকার ( chmod +x) তবে .commandএক্সটেনশনটি ইতিমধ্যে টার্মিনালের সাথে সংযুক্ত। দুর্দান্ত সমাধান, আপনাকে ধন্যবাদ
NorTicUs

স্পষ্টতই ব্যবহারকারী এই পদ্ধতির সাথে টার্মিনাল প্রোগ্রামের সাথে ইন্টারঅ্যাক্ট করতে পারবেন না - যদি না আমার ভুল হয়?
ডেমিস

153

OSX 10.10 (Yosemite) হিসাবে এবং কমপক্ষে OS X 10.8 (মাউন্টেন সিংহ) থেকে , আপনি ফাইন্ডার থেকে এক্সিকিউটেবল স্ক্রিপ্টগুলি খুললে (ডাবল ক্লিক করুন) এই আচরণটি নিম্নরূপ :

  • কোনও প্রত্যয় বা প্রত্যয় সহ এক্সিকিউটেবল স্ক্রিপ্টগুলি [1] : .command
    • হয় মৃত্যুদন্ড কার্যকর ডিফল্টরূপে - সেটআপের প্রয়োজন নেই :
      • একটি নতুন টার্মিনাল উইন্ডো খোলে যেখানে স্ক্রিপ্টটি চালিত হয়।
      • ডিফল্টরূপে, স্ক্রিপ্টটি শেষ হওয়ার পরে উইন্ডোটি উন্মুক্ত থাকবে যাতে আপনি আউটপুটটি পরীক্ষা করতে পারেন (যদিও সেই সময়ে স্ক্রিপ্টটি চালানো শেলটি বেরিয়ে এসেছিল এবং আপনি আর এটির সাথে ইন্টারঅ্যাক্ট করতে পারবেন না )।
        তবে, টার্মিনালের মাধ্যমে Preferences... > Profilesআপনি স্ক্রিপ্টটি প্রস্থান করলে স্বয়ংক্রিয়ভাবে উইন্ডোটি বন্ধ করতে বেছে নিতে পারেন ।
    • ক্যাভেট : কার্যকারী ফোল্ডারটি হ'ল বর্তমান ব্যবহারকারীদের হোম ফোল্ডারটি , স্ক্রিপ্টটি যে ফোল্ডারে অবস্থিত তা নয়।
      • এটি যে ফোল্ডারে অবস্থিত সেখানে শেল স্ক্রিপ্ট পরিবর্তন করতে, রাখুন
        • cd -- "$(dirname "$BASH_SOURCE")" শেবাং লাইনের ঠিক পরে
        • বা, যদি আপনাকে অবশ্যই পসিক্স-অনুগত থাকতে হয় cd -- "$(dirname "$0")",।
        • প্রান্তের ক্ষেত্রে যেমন একটি সিমলিঙ্কযুক্ত স্ক্রিপ্টের আসল উত্স ডিরেক্টরি অনুসন্ধান করার জন্য, আমার এই উত্তরটি দেখুন ।
    • স্ক্রিপ্ট অপ্রত্যাশিতভাবে হয়, তাহলে না এক্সিকিউটেবল :
      • chmod +x <script>টার্মিনালে চালিয়ে এটিকে এক্সিকিউটেবল করে তুলুন; অন্যথায়, আপনি নিম্নলিখিত লক্ষণগুলি দেখতে পাবেন:
      • .command: ফাইন্ডার একটি বিভ্রান্তিমূলক ত্রুটি বার্তা প্রদর্শন করে যা পরামর্শ দেয় যে সমস্যার মাধ্যমে সমাধান করা যেতে পারে File > Get Info, যা সত্য নয় - chmod +xউপরে প্রস্তাবিত পদ্ধতিটি ব্যবহার করুন ।
      • প্রত্যয় নেই:
        • সঙ্গে একটি কুঁড়েঘর লাইন (যেমন, #!/bin/bash): আচরণ যেন প্রত্যয় ছিল .sh- নিচে দেখুন।
        • সঙ্গে কোন কুঁড়েঘর লাইন: আপনার ডিফল্ট টেক্সট এডিটরে প্রর্দশিত (যা ডিফল্টভাবে TextEdit যায়)।
  • প্রত্যয়.sh সহ স্ক্রিপ্টগুলি কার্যকর করা যায় বা না:
    • এর সাথে সম্পাদনা করার জন্য বা ইনস্টল করা থাকলে খোলাTextEdit.app হয় Xcode.app
  • প্রত্যয়.scpt সহ স্ক্রিপ্ট বা .applescript(এগুলি এমনকি যদি তারা নিজে সম্পাদনযোগ্য হিসাবে চিহ্নিত হয় তবে সাধারণত এটি হয় না):
    • জন্য খোলা সম্পাদনা মধ্যে[Apple]Script Editor
    • মনে রাখবেন যে জেএক্সএ উত্স-কোড ফাইলগুলির কোনও পৃথক প্রত্যয় (এখনও) নেই বলে মনে হচ্ছে।
  • সঙ্গে স্ক্রিপ্ট একটি কাস্টম প্রত্যয় (ক প্রত্যয় এখনো সিস্টেমে জানা যায় না), এক্সিকিউটেবল থাকুক বা না থাকুক (আসলে, ফাইল কোন ধরনের ক্ষেত্রে প্রযোজ্য):
    • আপনি যখন প্রথমে এটিকে খুলবেন তখন অ্যাপটি সেগুলির সাথে খোলার অনুরোধ জানাবে এবং সেই পছন্দটি মনে রাখবেন

[1] এক্সিকিউটেবল অর্থ: এক্সিকিউটেবল অনুমতি বিট (গুলি) সেট এবং কলিং ব্যবহারকারী - ফাইলের মালিকানার সাথে সম্পর্কিত - যার ফলে এটি সম্পাদন করার সম্ভাব্য অনুমতি সহ একটি স্ক্রিপ্ট।
আপনি ব্যবহার করেন তাহলে chmod a+xসেট করতে সব অনুমতি বিট (যা সাধারণত হয়), যে কেউ এটা ডাকা পারেন (অভিমানী তারাও করার অনুমতি দেওয়া করছি পড়া উপর ভিত্তি করে ফাইল পঠিত অনুমতি বিট (গুলি) এবং ফাইলের মালিকানা)।


1
যখন স্ক্রিপ্টটি কোনও সরল সাথে প্রস্থান করে osascriptআপনি .commandনিজেই প্রোফাইলের সাথে মেসেজ না করে ফাইলের মধ্যে অন্তর্ভুক্ত করতে পারেন তখন খোলা টার্মিনাল উইন্ডোটি বন্ধ করা সম্ভব ।
l'L'l

@ আইএল'আই: osascript -e '...'আপনার স্ক্রিপ্টের শেষে কোনও আদেশ যুক্ত করার অর্থ কি ? সুনির্দিষ্ট কমান্ডটি কী এবং এটি কী নিশ্চিত করে যে সামনের ট্যাবটিতে স্ক্রিপ্টটি চলমান না থাকলেও ডান ট্যাবটি বন্ধ রয়েছে?
mklement0

5
@ এমকিলেটমেন্ট ০: হ্যাঁ, আমি এটি কয়েক মিনিটেরও বেশি পরীক্ষা করে দেখিনি, তবে মূল ধারণাটি। কমপ্লে স্ক্রিপ্টের শেষ লাইনে অন্তর্ভুক্ত করা : osascript -e 'tell application "Terminal" to close front window' > /dev/null 2>&1 &... এটি প্রতিটি দৃশ্যে কাজ নাও করতে পারে, যদিও এটি পুনঃনির্দেশিত শেষটি মূল কী - ওসাস্ক্রিপ্ট অন্যথায় সহজেই রূপান্তর করা যায় (উদাহরণস্বরূপ, উইন্ডোটি যদি আপনার টার্মিনাল ডিফল্ট আচরণ ইত্যাদি হয় তবে ট্যাবটিতে পরিবর্তন করা দরকার )।
l'L'l

.commandপ্রোফাইল সেটিংস সত্ত্বেও স্ক্রিপ্ট ফাইলটি চালানোর পরে টার্মিনাল উইন্ডো / ট্যাবটি বন্ধ না করা কি সম্ভব ?
সাইবারমিউ

@ সাইবারমিউ: আপনি যদি স্ক্রিপ্টটি সংশোধন করতে পারেন, একটি কমান্ড যুক্ত করুন যা শেষে কী-স্ট্রোকের জন্য অপেক্ষা করবে; যেমন, এটি যদি কোনও bashস্ক্রিপ্ট read -p 'Press Return to close this window.'হয় তবে শেষের বিবৃতি হিসাবে যুক্ত করুন add
mklement0

38

বিকল্পভাবে, আপনি আপনার স্ক্রিপ্ট থেকে প্লাটিপাস ব্যবহার করে একটি নিয়মিত ম্যাক ওএস এক্স অ্যাপ্লিকেশন তৈরি করতে পারেন


এটি একটি দুর্দান্ত অ্যাপ্লিকেশন। তবে আমার এখানে কিছু সমস্যা আছে। আমার কাছে পাইথন স্ক্রিপ্ট রয়েছে যা আমি একটি অ্যাপ অ্যাপ্লিকেশনটিতে রূপান্তর করতে চাই। আমার স্ক্রিপ্টে একটি লাইন রয়েছে যেখানে ব্যবহারকারীকে কিছু ইনপুট (কাঁচা_পিন্ড ()) টাইপ করতে হবে, যখন .app কোডের এই লাইনে পৌঁছায়, এটি একটি ইওফ (ফাইলের শেষে) ত্রুটি ছুঁড়ে দেয়। আমি এটি সম্পর্কে কি করতে পারি?

1
এটি কোনও ইন্টারেক্টিভ টার্মিনাল নয়। প্লাটিপাস কেবল স্ক্রিপ্ট আউটপুট উপস্থাপন করে। কোনও দ্বিপাক্ষিক যোগাযোগ নেই।
svth

4
অথবা রান শেল স্ক্রিপ্ট ক্রিয়াটি ব্যবহার করে অটোমেটরের সাথে একটি ওএস এক্স অ্যাপ্লিকেশন তৈরি করুন।
রাঙ্গী কেইন

15

সহজ উপায় হ'ল এক্সটেনশনে এক্সটেনশন পরিবর্তন করা .commandবা কোনও এক্সটেনশান।

তবে এটি টার্মিনালটি খুলবে এবং আপনাকে এটি বন্ধ করতে হবে। আপনি যদি কোনও আউটপুট দেখতে না চান, আপনি ম্যাক অ্যাপ্লিকেশন তৈরি করতে অটোমেটার ব্যবহার করতে পারেন যা আপনি ডাবল ক্লিক করতে পারেন, ডকে যোগ করতে পারেন ইত্যাদি etc.

  1. Automatorঅ্যাপ্লিকেশন খুলুন
  2. "অ্যাপ্লিকেশন" প্রকারটি চয়ন করুন
  3. ক্রিয়া অনুসন্ধান বাক্সে "রান" টাইপ করুন
  4. "রান শেল স্ক্রিপ্ট" ডাবল ক্লিক করুন
  5. ক্লিক করুন Runউপরের ডান দিকের কোণায় এটি পরীক্ষা করার জন্য বোতাম।
  6. File > Save অ্যাপ্লিকেশন তৈরি করতে।

এখানে চিত্র বর্ণনা লিখুন


দুর্দান্ত! আমরা কীভাবে এই ওয়ার্কফ্লোটি প্রতিদিন 1 পিএম চালানোর জন্য স্বয়ংক্রিয় করতে পারি?
আইআকাশ

9

প্লাটিপাসের মতো তৃতীয় পক্ষের অ্যাপ্লিকেশন ব্যবহার করার দরকার নেই।

স্ক্রিপ্ট এডিটর দিয়ে কেবল একটি অ্যাপল স্ক্রিপ্ট তৈরি করুন এবং do shell script "shell commands"সরাসরি কমান্ড কল বা এক্সিকিউটেবল শেল স্ক্রিপ্ট ফাইলের জন্য কমান্ডটি ব্যবহার করুন , সম্পাদনাযোগ্য স্ক্রিপ্ট ফাইলটি কোথাও নিরাপদ রাখুন এবং পরে অ্যাপ্লিকেশন স্ক্রিপ্ট তৈরি করতে রফতানি করুন। অ্যাপ্লিকেশন স্ক্রিপ্টটি বার ফোল্ডারে ডাবল ক্লিক বা নির্বাচন করে লঞ্চ-সক্ষম।


3
আরও ভাল, অটোমেটার ব্যবহার করুন এবং অ্যাপল স্ক্রিপ্টের পরিবর্তে সরাসরি চালিত শেল স্ক্রিপ্ট ক্রিয়াটি ব্যবহার করুন।
রাঙ্গী কেইন

0

আপনি আরসিডিএফএল্ট অ্যাপ্লিকেশন ব্যবহার করে ফাইল এক্সটেনশন দ্বারা ডিফল্ট সেট করতে পারেন:

http://www.rubicode.com/Software/RCDefaultApp/

সম্ভবত আপনি আইটিআরএম / টার্মিনাল ইত্যাদি খুলতে .sh সেট করতে পারেন এটির জন্য ব্যবহারকারীর নির্বাহের অনুমতিগুলির প্রয়োজন হবে, যেমন

chmod u+x filename.sh

আরসিডিএফএল্ট অ্যাপ্লিকেশন প্যান


0

chmod 774 filename

দ্রষ্টব্য : 'ফাইল নাম' নামের ফাইলটির বাশ স্ক্রিপ্টের কোনও এক্সটেনশন নেই

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