मैं डबल क्लिक के माध्यम से इस file.sh को कैसे निष्पादन योग्य बनाता हूँ?


165

सबसे पहले मैं मैक का उपयोग कर रहा हूँ।

अगला, मुझे इस "file.sh" को निष्पादित करने की आवश्यकता है जिसे हम इसे कॉल करेंगे। हर बार मुझे इसे निष्पादित करना होगा जो मुझे टर्मिनल खोलना है और टाइप करना है:

cd /Users/Jacob/Documents/folderWithFileInIt
bash file.sh

यह ठीक है, लेकिन मुझे लगता है कि यह बहुत जल्दी होगा यदि मैं फ़ाइल को डबल क्लिक पर निष्पादित करता हूं, तो आपको नहीं लगता?

तो मेरा सवाल यह है कि मैं डबल क्लिक के माध्यम से इस फाइल को कैसे निष्पादित करूं?

मेरे विचार या तो थे:

a) टर्मिनल में चामॉड और परिवर्तन की अनुमति जैसी कोई चीज़ टाइप करें?

b) एक फाइल बनाते हैं, जो कोड मैंने ऊपर लिखा है उसमें ^ और फिर उस फाइल को निष्पादन योग्य बनाते हैं?

ग) ऐसा करने के लिए किसी तरह एक स्वचालन करें?

कौन सा तरीका सबसे अच्छा है, या क्या इससे भी बेहतर तरीका है? कृपया जितना हो सके उतना समझाएं, मैं टर्मिनल के लिए नया हूं। धन्यवाद।


1
यदि आप स्क्रिप्ट पर क्लिक करना आसान, आसान चाहते हैं, तो हाँ, ऑटोमेकर एक सही उपकरण है। आपको पता लगता है कि आपके प्रश्न से, तो आपका प्रश्न क्या है?
रोब नेपियर

एक ही सवाल है, लेकिन मेरे पास jdk dmg है, आइकन बनाने के लिए कुछ ऐप फ़ोल्डर, कुछ जार .. लेकिन मैं
ऑटोचालक

जवाबों:


350

डिफ़ॉल्ट रूप से, *.shफ़ाइलें एक पाठ संपादक (Xcode या TextEdit) में खोली जाती हैं। एक शेल स्क्रिप्ट बनाने के लिए जो टर्मिनल में निष्पादित होगी जब आप इसे खोलेंगे, इसे "कमांड" एक्सटेंशन के साथ नाम दें, उदाहरण के लिए;file.command ,। डिफ़ॉल्ट रूप से, ये टर्मिनल को भेजे जाते हैं, जो फ़ाइल को शेल स्क्रिप्ट के रूप में निष्पादित करेगा।

आपको यह भी सुनिश्चित करना होगा कि फ़ाइल निष्पादन योग्य हो, जैसे:

chmod +x file.command

इसके बिना, टर्मिनल इसे निष्पादित करने से इनकार कर देगा।

ध्यान दें कि स्क्रिप्ट को #!इस विशिष्ट परिदृश्य में एक उपसर्ग के साथ शुरू नहीं करना है, क्योंकि टर्मिनल विशेष रूप से इसे आपके डिफ़ॉल्ट शेल के साथ निष्पादित करने की व्यवस्था करता है। (बेशक, आप एक जोड़ सकते हैं#! पंक्ति यदि आप अनुकूलित करना चाहते हैं कि किस शेल का उपयोग किया गया है या यदि आप यह सुनिश्चित करना चाहते हैं कि आप एक अलग शेल का उपयोग करते समय कमांड लाइन से इसे निष्पादित कर सकते हैं।)

यह भी ध्यान दें कि टर्मिनल कार्यशील निर्देशिका को बदले बिना शेल स्क्रिप्ट को निष्पादित करता है। cdयदि आपको वास्तव में किसी विशेष कार्य निर्देशिका के साथ चलने की आवश्यकता है, तो आपको अपनी स्क्रिप्ट को एक कमांड से शुरू करने की आवश्यकता होगी ।


1
अधिक उपयोगी उत्तर के लिए धन्यवाद।
जैकब

46
इसके अलावा, आप cd "`dirname "$0"`"वर्तमान कार्यशील निर्देशिका को उस निर्देशिका में सेट करने के लिए उपयोग कर सकते हैं जहाँ आपकी शैल स्क्रीप्ट निहित है।
गियर्सडिजिटल

3
सौंदर्यशास्त्रीय कारणों से आपको .command फ़ाइल पर राइट क्लिक करना चाहिए और infos को खोलना चाहिए। वहां आपके पास प्रत्यय (नाम और प्रत्यय के तहत) छिपाने का विकल्प है।
बिजन

मैं open -n ...कमांड के माध्यम से ऐप्स चलाने के लिए इस विधि का उपयोग करता हूं । यह काम करता है, लेकिन हर बार टर्मिनल विंडो खुलती है और मुझे "[प्रक्रिया पूरी हो गई]" दिखाती है। क्या टर्मिनल विंडो उपस्थिति को किसी तरह से रोकना संभव है?
निक

1
@ नाइक टर्मिनल में इसे चलाने का कोई मतलब नहीं है अगर आप इसे टर्मिनल विंडो में दिखाना नहीं चाहते हैं। इसके बजाय, इसे एक एप्लिकेशन बंडल बनाएं, जिसका निष्पादन योग्य एक शेलबैंग स्क्रिप्ट है। या स्क्रिप्ट चलाने वाले AppleScript या Automator एपलेट बनाते हैं। प्रक्रिया से बाहर निकलने पर विंडो को बंद करने के लिए आप प्रोफाइल को बदलने के लिए टर्मिनल प्रिफरेंस का भी उपयोग कर सकते हैं, लेकिन यह सबसे अच्छा समाधान नहीं है यदि आप उपयोगकर्ता सहभागिता के बिना केवल शेल स्क्रिप्ट चलाना चाहते हैं।
क्रिस पेज

31

एक्सटेंशन को पूरी तरह से हटा दें और फिर उसे डबल-क्लिक करें। अधिकांश सिस्टम शेल स्क्रिप्ट इस प्रकार हैं। जब तक यह एक शेबंग है यह काम करेगा।


1
BTW, "शेबंग" ज्यादातर किसी भी लाइनों के सामने यह रेखा है: #! / बिन / श लेकिन यह अलग हो सकता है, अन्य मामलों के लिए लिंक प्रदान पढ़ें।
लुकास लाइज़िस

क्या इस दृष्टिकोण को चामोद करने की आवश्यकता नहीं है?
अतुल

11

आप फाइंडर को .shटर्मिनल में फाइल खोलने के लिए कह सकते हैं :

  1. फ़ाइल का चयन करें
  2. उस पर जानकारी (cmd-i) प्राप्त करें
  3. "ओपन विथ" सेक्शन में, पॉपअप मेनू में "अन्य ..." चुनें
  4. एप्लिकेशन के रूप में टर्मिनल चुनें

इसका ठीक वैसा ही प्रभाव होगा, जैसा कि इसे .commandछोड़कर इसका नाम ... आपको इसका नाम बदलने की आवश्यकता नहीं है :)


8
  1. टर्मिनल लॉन्च करें
  2. प्रकार -> नैनो फ़ाइलनाम
  3. फ़ाइल सामग्री चिपकाएँ और इसे सहेजें
  4. टाइप करें -> chmod + x fileName
  5. यह exe फाइल बनाएगा अब आप डबल क्लिक कर सकते हैं।

फ़ाइल का नाम दोहरे कोट्स के अंतर्गत होना चाहिए। चूंकि मैं मैक-> का उपयोग कर रहा हूं, मेरे मामले में बैच फ़ाइल की सामग्री है

सीडी / उपयोगकर्ता / आपका नाम / दस्तावेज / सेलेनियम सेवर

जावा -जर सेलेनियम-सर्वर-स्टैंडअलोन-3.3.1.जार -लोल हब

यह निश्चित रूप से काम करेगा


0

आप chmodइस तरह का उपयोग करके फ़ाइल निष्पादन योग्य बदल सकते हैं

chmod 755 file.sh

और निष्पादित करने के लिए इस कमांड का उपयोग करें

./file.sh

एसओ में आपका स्वागत है! आपका उत्तर पहले से स्वीकार किए गए उत्तर में कुछ भी नहीं जोड़ता है। कृपया समझाएं कि यह पहले से मौजूद अन्य उत्तरों से अलग क्यों है।
गैब्रियलऑशिरो
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.