2008-11-11 5 views
130

मैक ओएसएक्स डॉक से निष्पादित करने के लिए मैं एक शेल स्क्रिप्ट कैसे स्थापित करूं? ऐसा लगता है कि बस एक शॉर्टकट बनाने से मेरे संपादक में फ़ाइल खुल जाएगी। क्या कोई झंडा है जिसे इसे संपादन के लिए खोलने के बजाय इसे चलाने के लिए कहने के लिए कहीं सेट करने की आवश्यकता है?ओएस एक्स डॉक से शैल स्क्रिप्ट निष्पादित करना?

+2

पूरी तरह से अवतार के लिए +1 होना चाहिए, हालांकि मुझे विषय भी पसंद है। –

उत्तर

159

आप एक ही कदम के साथ एक स्वचालक कार्यप्रवाह बना सकते हैं - "भागो शैल स्क्रिप्ट"

फिर File > Save As, और बदल फ़ाइल स्वरूप के लिए "ऐप्लिकेशन"। जब आप एप्लिकेशन खोलते हैं, तो यह शेल स्क्रिप्ट चरण चलाएगा, कमांड निष्पादित करेगा, इसे पूरा करने के बाद बाहर निकल जाएगा।

इसका लाभ यह है कि वास्तव में करना आसान है, और आप आसानी से उपयोगकर्ता इनपुट प्राप्त कर सकते हैं (कहें, फ़ाइलों का एक समूह चुनना), फिर इसे खोल स्क्रिप्ट के इनपुट में पास करें (या तो stdin, या तर्क के रूप में)।

(स्वचालक अपने /Applications फ़ोल्डर में है!)

Example workflow

+6

@ डीआरबी, जीयूआई बटन पुशर! :) बस मजाक कर रहा है, यह एक अच्छा सुझाव है! – willasaywhat

+0

हाँ, यह एक उत्कृष्ट सुझाव था :) मैंने अपने कुछ ऐप्स के लिए ऑटोमेटर क्रियाएं भी लिखी हैं और मैं अभी भी इस तरह के समय में भूल जाता हूं :) –

+0

बिल्कुल सही। धन्यवाद! –

5

मुझे लगता है कि इस सूत्र से सहायता मिलेगी: http://forums.macosxhints.com/archive/index.php/t-70973.html

, व्याख्या आप .command विस्तार के साथ इसका नाम बदलना या खोल चलाने के लिए एक AppleScript बना सकते हैं करने के लिए।

+0

कम से कम हिम तेंदुए पर, एक स्क्रिप्ट में एक .command एक्सटेंशन जोड़ना टर्मिनल में चलाता है यदि आप इसे डबल-क्लिक करते हैं, लेकिन किसी कारण से आप इसे अभी भी डॉक में खींच नहीं सकते हैं। डीबीआर और जेरेमी के दोनों सुझाव मेरे लिए काम करते थे, हालांकि। –

+0

यह ओएसएक्स 10.9 मैवरिक्स पर काम नहीं करता है। – stiemannkj1

36

यदि आपको टर्मिनल विंडो की आवश्यकता नहीं है, तो आप example.sh से example.sh.app/Contents/MacOS/example.sh पर जाकर किसी भी निष्पादन योग्य फ़ाइल को एप्लिकेशन बना सकते हैं। आप एप्लिकेशन को अपने डॉक में किसी अन्य की तरह रख सकते हैं, और इसे एक क्लिक के साथ निष्पादित कर सकते हैं।

यदि आपको टर्मिनल विंडो प्रदर्शित करने की आवश्यकता है, तो मेरे पास कोई आसान समाधान नहीं है। आप शायद एप्पलस्क्रिप्ट के साथ कुछ कर सकते हैं, लेकिन यह बहुत साफ नहीं है।

+1

आपको यह नहीं पता कि क्या शेल स्क्रिप्ट के लिए तर्क के रूप में फ़ाइलों को पास करने का कोई आसान तरीका है? "इसके साथ खोलें ..." का उपयोग करके खोले गए फ़ाइलों के लिए। – Fuzzy76

+0

@ फ़ज़ी क्षमा करें, नहीं, मैंने कभी यह नहीं सोचा। –

+5

किसी को भी ऐसा करने का प्रयास करने के लिए - ऐप का नाम बिल्कुल स्क्रिप्ट नाम से मेल खाना चाहिए। तो यह वास्तव में 'example.sh.app' होना चाहिए, न केवल' example.app'। यदि आप – Kip

7

जब तक आपकी स्क्रिप्ट निष्पादन योग्य हो और आपके पास कोई एक्सटेंशन न हो, तो आप इसे डॉक के दाईं ओर (दस्तावेज़ पक्ष) के रूप में खींच सकते हैं और इसे खोलने के बजाय क्लिक होने पर टर्मिनल विंडो में चलाया जाएगा संपादक।

यदि आप एक एक्सटेंशन (जैसे foo.sh) चाहते हैं, तो आप खोजक में फ़ाइल जानकारी विंडो पर जा सकते हैं और उस विशेष स्क्रिप्ट के लिए डिफ़ॉल्ट एप्लिकेशन को जो भी हो (टेक्स्ट एडिट, टेक्स्टमैट, जो भी डिफ़ॉल्ट सेट है .sh फ़ाइलों के लिए अपने कंप्यूटर पर) टर्मिनल के लिए। यह तब टेक्स्ट एडिटर में खोलने के बजाए निष्पादित होगा। दोबारा, आपको इसे डॉक के दाहिने तरफ खींचना होगा।

+0

** नोट: ** यह ओएसएक्स 10.9 मैवरिक्स में काम नहीं करता है। – stiemannkj1

+1

** नोट **: यह ओएस एक्स 10.10 योसाइट में एक चैंप की तरह काम करता है। मैं 10.9 –

+1

पर टिप्पणी नहीं कर सकता 10.11 पर काम करता है। धन्यवाद! – Yassine

4

स्क्रिप्ट संपादक में:।

do shell script "/full/path/to/your/script -with 'all desired args' "

एक आवेदन बंडल के रूप में सहेजें

के रूप में जब तक आप करना चाहते हैं स्क्रिप्ट का प्रभाव प्राप्त करें, यह ठीक काम करेगा। आपको STDOUT या STDERR नहीं दिखाई देगा।

+2

मैं सुझाव दूंगा: "एप्लिकेशन बंडल के रूप में सहेजें"। बंडल अनुप्रयोगों की तुलना में बहुत तेज़ी से लॉन्च करते हैं। –

+0

इसे प्रतिबिंबित करने के लिए संपादन - धन्यवाद! –

14

मैं जानता हूँ कि यह पुराना है, लेकिन मामले में यह दूसरों के लिए उपयोगी है:

आप एक स्क्रिप्ट चलाने की जरूरत है और टर्मिनल पॉप अप करने के ताकि आप परिणाम आप रसातल नाइट की तरह कर सकते हैं ने कहा कि देख सकते हैं चाहते हैं और एक्सटेंशन को .command में बदलें। यदि आप उस पर डबल क्लिक करते हैं तो यह एक टर्मिनल विंडो खुल जाएगा और चलाएगा।

हालांकि मुझे ऑटोमेटर या सेबस्क्रिप्ट से चलाने के लिए इसकी आवश्यकता थी।तो इसे एक नया टर्मिनल खोलने के लिए "रन शेल स्क्रिप्ट" से चलाया गया आदेश "मेरा myhellScript.command खोलें" और यह एक नए टर्मिनल में खोला गया।

+0

अद्भुत, धन्यवाद! अब सभी को एक सही समाधान बनाना चाहते हैं, जब स्क्रिप्ट पूर्ण हो जाए तो टर्मिनल विंडो को बंद करने का एक तरीका होगा। –

+1

अच्छी तरह से यदि आपके पास टर्मिनल वरीयताओं में चुने गए निकास पर नज़दीकी विंडो है तो आप अपनी स्क्रिप्ट में निकास कमांड जोड़ सकते हैं और आपके पास वही होगा जो आप चाहते हैं। –

+0

यह ओएसएक्स 10.9 मैवरिक्स पर काम नहीं करता है। – stiemannkj1

4

जैसा कि ज़ो का उल्लेख है, शेल स्क्रिप्ट बनाना और फिर खोल स्क्रिप्ट को कॉल करने के लिए एक सेबस्क्रिप्ट स्क्रिप्ट बनाना, इसे पूरा करेगा, और यह काफी आसान है।

शैल स्क्रिप्ट

  1. अपने पसंदीदा पाठ संपादक में अपने खोल स्क्रिप्ट बनाएं, उदाहरण के लिए:

    mono "/Volumes/Media/~Users/me/Software/keepass/keepass.exe"

    (इस W32 निष्पादन चलाता है, मोनो ढांचे का उपयोग)

  2. शैल स्क्रिप्ट सहेजें, मेरे उदाहरण के लिए "StartKeepass.sh"

एप्पल स्क्रिप्ट

  1. ओपन AppleScript संपादक, और फोन खोल स्क्रिप्ट

    do shell script "sh /Volumes/Media/~Users/me/Software/StartKeepass.sh" user name "<enter username here>" password "<Enter password here>" with administrator privileges

    • do shell script - बाहरी खोल कॉल करने के लिए applescript आदेश आदेश
    • "sh ...." - यह चरण में बनाई गई आपकी खोल स्क्रिप्ट (पूर्ण पथ) एक (आप भी प्रत्यक्ष कमांड चलाने कर सकते हैं, मैं खोल स्क्रिप्ट को छोड़ सकता है और बस यहाँ मेरी मोनो आदेश चला)
    • user name - AppleScript को वाणी आप
    • "<enter username here> एक विशिष्ट उपयोगकर्ता के रूप में आदेश चलाना चाहते हैं - अपने उपयोगकर्ता नाम के साथ बदलें (उद्धरण रखने) पूर्व "जोश"
    • password - अपना पासवर्ड AppleScript की घोषणा
    • "<enter password here>" - अपना पासवर्ड (उद्धरण रखने) पूर्व "mypass"
    • with administrative privileges के साथ बदलें - वाणी आप एक व्यवस्थापक के रूप चलाना चाहते हैं

अपने applescript बनाएं आपका .app

  1. मेरे मामले में RunKeepass.scpt

  2. बचाने के रूप में filename.scpt के रूप में अपने applescript बचाने के लिए, ... और करने के लिए फ़ाइल स्वरूप बदल आवेदन, जिसके परिणामस्वरूप RunKeepass.app मेरे मामले में

  3. अपनी ऐप फ़ाइल को अपने ऐप्स फ़ोल्डर में कॉपी करें

-1

किसी ने लिखा था ...

मैं सिर्फ सभी फ़ाइलें ".sh" में समाप्त टर्मिनल के साथ खोलने के लिए निर्धारित किया है। यह ठीक काम करता है और आपको चलाने के लिए प्रत्येक शेल स्क्रिप्ट का नाम बदलने की आवश्यकता नहीं है।

12

OSX मावेरिक्स पर:

  1. अपने खोल स्क्रिप्ट बनाएँ।

    chmod +x your-shell-script.sh 
    
  2. अपनी स्क्रिप्ट का नाम बदलें एक .app प्रत्यय के लिए:

    mv your-shell-script.sh your-shell-script.app 
    
  3. खींचें OSX गोदी करने के लिए स्क्रिप्ट
  4. अपने खोल स्क्रिप्ट निष्पादन करें।

  5. अपनी स्क्रिप्ट वापस एक .sh प्रत्यय करने के लिए का नाम बदलें:

    mv your-shell-script.app your-shell-script.sh 
    
  6. राइट-क्लिक करें खोजक में फ़ाइल, और "जानकारी प्राप्त करें" विकल्प पर क्लिक करें।
  7. विंडो के निचले हिस्से में, टर्म स्क्रिप्ट के साथ खोलने के लिए खोल स्क्रिप्ट सेट करें।

अब जब आप डॉक में स्क्रिप्ट पर क्लिक करते हैं, तो एक टर्मिनल विंडो पॉप अप हो जाएगी और आपकी स्क्रिप्ट निष्पादित करेगी।

बोनस: टर्मिनल, जब अपनी स्क्रिप्ट पूरा कर लिया है बंद समाप्त करने के लिए exit 0 जोड़ सकते हैं और टर्मिनल सेटिंग में बदलाव "खोल बंद कर देते हैं सफाई से बाहर निकल गया" की तरह यह this SO answer में करने के लिए कहते हैं करने के लिए प्राप्त करने के लिए।

+0

अच्छा, यह मेरे लिए काम करता है, जिस आइकन को मैं आश्चर्यचकित करता हूं। एफवाईआई: भी चरण 7 फ़ाइल का जिक्र कर रहा है और मेनू आइटम नहीं ... –

+0

अच्छा तरीका है! खुले टर्मिनल के साथ बस सभी .sh। – iHTCboy

+0

@ stiemannkj1, क्या यह ऐप चल रहा है, जबकि यह आइकन दिखाता है? क्या इसे छिपाने के लिए वैसे भी है? – Pacerier