मैं .sh स्क्रिप्ट कैसे चला सकता हूँ?


344

जब भी मैं एक .sh फ़ाइल खोलता हूं, तो यह टर्मिनल के बजाय गेडिट में खुल जाती है। मुझे राइट क्लिकओपन विथअन्य एप्लिकेशन ...टर्मिनल के समान कोई विकल्प नहीं मिल रहा है ।

मैं इस फ़ाइल को टर्मिनल में कैसे खोलूँ?


क्या उस लिपि का लक्ष्य आगे के उपयोग के लिए env वैरिएबल स्थापित करना है?
रोब

1
आपको स्क्रिप्ट पर एक्सटेंशन का उपयोग नहीं करना चाहिए। भविष्य में किसी बिंदु पर, आप पा सकते हैं कि एक अलग भाषा आपके वर्तमान स्क्रिप्ट को करने वाले कार्य को करने के लिए अधिक उपयुक्त है। और फिर आपको एक समस्या है। क्या आप पुराने नाम को पूरी तरह से भ्रामक विस्तार के साथ रखते हैं, या क्या आप इसका नाम रखते हैं, संभवत: उन स्थानों का एक हिस्सा संपादित करने के लिए जहां आपकी स्क्रिप्ट का उपयोग किया जाता है?
जिरह

आपको फ़ाइल एक्सटेंशन की आवश्यकता नहीं है। यह अच्छा है, लेकिन इसकी जरूरत नहीं है। OS फ़ाइल एक्सटेंशन को नहीं देखता है। यह डेटा को देखता है
एक्शनपार्सनिप

5
मेह, यदि आप रूबी में foo.sh को फिर से लिखते हैं, तो आप लॉन्च करने के लिए .sh फ़ाइल का उपयोग कर सकते हैंruby foo.rb
ग्लेन जैकमैन

डॉल्फिन में आप F4 दबा सकते हैं और एक कंसोल खुलता है
Motte001

जवाबों:


523

अपनी स्क्रिप्ट को निष्पादित करने की अनुमति दें:

chmod +x /path/to/yourscript.sh

और अपनी स्क्रिप्ट चलाने के लिए:

/path/to/yourscript.sh

चूंकि .वर्तमान निर्देशिका को संदर्भित करता है: यदि yourscript.shवर्तमान निर्देशिका में है, तो आप इसे सरल कर सकते हैं:

./yourscript.sh

13
+1 केवल टर्मिनल में निष्पादित अनुमतियाँ जोड़ने का केवल एक तरीका है।
हैलवुड

83
यदि आप ऐसा करते हैं, bash /path/to/yourscript.shतो आपको ज़रूरत नहीं हैchmod +x
हांग्जो लेवचुक

4
वास्तव में, आप उपयोग कर सकते हैं . /path/to/yourscript.shयदि स्क्रिप्ट को कुछ पर्यावरण चर सेट करना है।
रोब

1
कोई भी पारंपरिक का उल्लेख नहीं करता है: ./path/to/yourscript.sh(अंतरिक्ष के बिना .)? मुझे लगता है कि एक सबसे सरल और सबसे आसान उपयोग है ... लेकिन वैसे भी, यहाँ मेरा विकल्प है कि लगभग वैसा ही करना चाहिए ./, हालांकि मैं यह नहीं देखता कि आप इसका उपयोग क्यों नहीं करेंगे ./: (FILENAME=~/rem4space.sh;SLL=$(cat $FILENAME|head -1|sed 's:^#!\(.*\):\1:g');[ ! -z $SLL ] && exec $SLL $FILENAME;sh $FILENAME)... FILENAMEअपनी पसंद के अनुसार संपादित करें । यह भी ध्यान दें कि shअगर कोई विकल्प नहीं है तो इसका उपयोग किया जाएगा।
MiJyn

88

आपको फ़ाइल प्रबंधक से उन्हें चलाने के लिए शेल स्क्रिप्ट को निष्पादन योग्य के रूप में चिह्नित करना होगा:

  1. अपनी .shफ़ाइल पर राइट क्लिक करें और गुण चुनें :

    यहां छवि विवरण दर्ज करें

  2. में अनुमतियाँ टैब में, देखें कार्यक्रम के रूप में फ़ाइल को क्रियान्वित करने की अनुमति दें :

    यहां छवि विवरण दर्ज करें

  3. गुण विंडो बंद करें और फ़ाइल को डबल-क्लिक करें। एक डायलॉग आपको टर्मिनल में स्क्रिप्ट चलाने का विकल्प देगा।

    यहां छवि विवरण दर्ज करें


10
यह Ubuntu 13.04 में काम नहीं कर रहा है। वैसे भी गेडिट में खुलता रहता है, कभी मुझे निष्पादित करने के लिए नहीं कहता है। संपादित करें: Nvm, imjustmatthew इसका उत्तर देते हैं।
एमपीएन

इसे इस्तेमाल करने से पहले हमें chmod का उपयोग करते हुए फ़ाइल को अनुमति देने की आवश्यकता है। chmod + x filename.sh या chmod 755 filename.sh
अरविंद रावत

मेरे पास पॉपअप नहीं है! आईडीई को सीधे खोला जाता है, न कि पॉपअप
ग्रीन

मैं अपने इंटरफ़ेस पर कहीं भी "रन इन टर्मिनल" नहीं पा सकता हूँ? (उबंटू 18.04)
डैनियल मोलर

1
@ डैनियल मेलर, यहाँ आपके प्रश्न का उत्तर है। askubuntu.com/questions/38661/how-do-i-run-sh-files/…
अखिलेश धर दुबे

33

एक टर्मिनल खोलें और उस फ़ोल्डर में नेविगेट करें जहां .shफ़ाइल स्थित है। फिर टाइप करें:

sh <name of file>.sh

किसी भी एप्लिकेशन को खोलने का सबसे अच्छा तरीका है। .Sh निर्देशिका पर नेविगेट करें और फिर इसे कमांड प्रॉम्प्ट में खोलें। फ़ाइल का उपयोग <<फ़ाइल का नाम जैसा कि ऊपर दिखाया गया है>। अगर उसे अनुमति की आवश्यकता है chmod + x /path/to/yourscript.sh या राइट क्लिक करें और सभी के लिए अनुमति बदलें
दुर्गेश कुमार

24

शर्त

.Sh फ़ाइल को चलाने से पहले, आपको इसे निष्पादन योग्य बनाने की आवश्यकता है:

  1. फ़ाइल पर राइट-क्लिक करें
  2. गुण का चयन करें
  3. अनुमतियाँ चुनें
  4. प्रोग्राम के रूप में फ़ाइल निष्पादित करने की अनुमति दें का चयन करें

चेतावनी

सुनिश्चित करें कि आप उस स्रोत पर भरोसा करते हैं जहां से आपको फ़ाइल मिली थी। यह एक वायरस हो सकता है ।

बहुत ही सरल तरीका

  1. फ़ाइल पर डबल-क्लिक करें
  2. टर्मिनल में रन पर क्लिक करें

इससे समस्या है। टर्मिनल तुरंत बंद हो जाएगा और आप आउटपुट नहीं देख पाएंगे।

सरल तरीका है

  1. ओपन एप्लीकेशन -> सहायक उपकरण -> टर्मिनल
  2. टर्मिनल में .sh फ़ाइल को खींचें और छोड़ें और Enter दबाएँ

जिस तरह से प्रोफेशनल्स करते हैं

  1. ओपन एप्लीकेशन -> सहायक उपकरण -> टर्मिनल
  2. जहां .sh फ़ाइल खोजें

    • का प्रयोग करें lsऔर cdआदेशों
    • lsवर्तमान फ़ोल्डर में फ़ाइलों और फ़ोल्डरों को सूचीबद्ध करेगा । इसे आज़माएँ: "ls" टाइप करें और Enter दबाएँ।
    • एक बार जब आप उस फ़ोल्डर को देख लेते हैं, जिसमें आप जाना चाहते हैं, भागना cd, उसके बाद एक स्थान, उसके बाद एक फ़ोल्डर नाम
    • यदि आप उस फ़ोल्डर में जाते हैं जिसे आप नहीं चाहते हैं, तो cd ..एक स्तर ऊपर जाने के लिए चलाएं
  3. .Sh फ़ाइल चलाएँ

    • एक बार जब आप इसे चलाने के script1.shसाथ उदाहरण के लिए देख सकते हैं ls:

      ./script.sh

यह जटिल तरीका क्यों है?

टर्मिनल में शक्तिशाली उपकरणों का एक समृद्ध सेट है जो कमांड टाइप करके सुलभ हैं। पेशेवर टाइप करके .sh फ़ाइल का पता लगाते हैं lsऔर cd। एक बार जब आप सही वर्तमान फ़ोल्डर में होते हैं, तो आप स्क्रिप्ट को इस तरह से चला सकते हैं:

./script1.sh

या आप रन कर सकते हैं और आउटपुट को किसी फ़ाइल में रीडायरेक्ट कर सकते हैं:

./script1.sh > out.txt

या आप कीवर्ड के लिए आउटपुट फ़िल्टर कर सकते हैं (उदाहरण के लिए "सेब") एक फ़ाइल के लिए फिर से निर्देशित करें:

./script1.sh | grep apples > ./only-apples

हजारों चीजें हैं जो आप बस कुछ कमांड टाइप करके उस फाइल में कर सकते हैं।

एक और, आप एक साधारण कमांड से इंटरनेट से एक फ़ाइल डाउनलोड कर सकते हैं:

wget www.google.com/images/logos/ps_logo2.png

और फिर फ़ाइल को इस तरह खोलें:

shotwell ps_logo2.png

6
इम बारे में सुनिश्चित नहीं है कि जिस तरह से पेशेवरों यह करना सही है, इसे और अधिक का एक मामला है आसान तरीका उन्नत (के लिए उत्पादन के नियंत्रण के लिए) रास्ता
Hailwood

यह जानना अच्छा है कि मैंने इसे वैसे ही किया जैसे पेशेवरों ने इसे मेरे पहले परीक्षण पर किया था। मुझे लगा कि यह मूल उपयोगकर्ता का तरीका था।
नेल्सनगॉन

19

Ubuntu 13.04 पर Nautilus में खोली गई निष्पादन योग्य फाइलें अब उपयोगकर्ता द्वारा निष्पादित करने के लिए संकेत देने के बजाय डिफ़ॉल्ट रूप से gedit में खोली गई हैं। वरीयताओं को समायोजित करने के लिए आवश्यक क्लासिक व्यवहार को सक्षम करने के लिए:

Nautilus → संपादन मेनू → प्राथमिकताएँ → व्यवहार टैब → हर बार पूछें के पास रेडियो बटन पर क्लिक करें।


प्रश्न पूछने वाले व्यक्ति Ubuntu 10.10 के बारे में बात कर रहे हैं
edwin

1
धन्यवाद!!! मुझे नहीं पता कि वे इसे क्यों बदलेंगे, यह पता नहीं लगा सकते कि किसी भी चीज़ को कैसे निष्पादित किया जाए।
एमपीएन

1
यह नवीनतम ऑबंटस के लिए सही उत्तर है।
गाछ

आप 15.10 में Nautilus को कैसे प्राप्त करेंगे?
याकोव आइंसपैन

उबंटू 18.04 के अनुसार, आप एक निर्देशिका खोलकर और फिर शीर्ष पट्टी में "फाइलें -> प्राथमिकताएं" पर क्लिक करके वरीयताओं तक पहुंच सकते हैं।
टपरर

7

उस निर्देशिका पर जाएं जहां .shफ़ाइल का उपयोग करके है cd। इस उदाहरण में मैंने अपनी shफ़ाइल को इस रूप में संग्रहीत किया है~/Desktop/shell_practice/test.sh

पहले यह pwdपता लगाने के लिए कि आप कहां हैं, और यदि यह वापस आता है /home/username(जहां usernameआपका वास्तविक उपयोगकर्ता नाम है), तो आप चला सकते हैं

cd Desktop/shell/practice

यदि आप कहीं और प्रतीत होते हैं, तो आप निरपेक्ष पथ का उपयोग कर सकते हैं

cd ~/Desktop/shell/practice

या

cd $HOME/Desktop/shell/practice

या और भी

cd /home/$USER/Desktop/shell/practice

ये सभी एक ही स्थान का वर्णन करने के तरीके हैं। एक बार जब आप इसे अपनी स्क्रिप्ट के स्थान पर बना लेते हैं, तो टाइप करें

ls

यदि आप shफ़ाइल को आउटपुट में देख सकते हैं , तो आप chmodइसे निष्पादन योग्य बनाने के लिए उपयोग कर सकते हैं । मेरे मामले में, याद रखें, फ़ाइल नाम है test.sh, इसलिए मैं चलाऊंगा

chmod u+x test.sh

अब जब हम स्क्रिप्ट के समान निर्देशिका में हैं, तो हमें उस शेल को निर्दिष्ट करना होगा जिसे हम फ़ाइल को उसका स्थान ./(वर्तमान निर्देशिका पथ विभाजक द्वारा फ़ाइल नाम से अलग करना) देकर निष्पादित करना चाहते हैं । अपनी फ़ाइल चलाने के लिए मैं टाइप करूँगा:

./test.sh

यदि आपकी स्क्रिप्ट सही ढंग से लिखी गई है, तो यह त्रुटियों के बिना चलेगी ...

यहाँ एक जीवंत उदाहरण है: इसका जीता जागता उदाहरण है


इसने मेरे लिए ubuntu
RuD3B0y

1
Wb, @ RuD3B0y, मैंने उत्तर को सर्वश्रेष्ठ के लिए रखने की कोशिश की, कोई उच्च तकनीकी सामग्री नहीं, अगर आपके पास कुछ संपादन हैं तो आपका स्वागत है।
theExorcist

4

2 मुख्य चरण।

  1. टर्मिनल में, डेस्कटॉप पर ".sh" एक्सटेंशन के साथ स्क्रिप्ट लिखने और सहेजने के लिए gedit का उपयोग करें। (लेकिन किसी भी टेक्स्ट एडिटर का इस्तेमाल किया जा सकता है)

  2. Nautilus खोलें और script.sh फ़ाइल पर राइट क्लिक करें।

    • गुणों के तहत, चेक बॉक्स "फ़ाइल निष्पादित करने की अनुमति दें .."

    • Nautilus मेनू में, फ़ाइल, फिर प्राथमिकताएं, फिर व्यवहार पर क्लिक करें

    • जब वे खोले जाते हैं तो "निष्पादन योग्य पाठ फ़ाइलों को चलाएँ"।

अब, जब आप डेस्कटॉप पर फ़ाइल को डबल क्लिक करते हैं, तो इसे निष्पादित करना चाहिए। .या के लिए कोई ज़रूरत नहीं./


3
  1. .shफ़ाइल को राइट-क्लिक करें और इसे निष्पादन योग्य बनाएं।

  2. एक टर्मिनल ( Ctrl+ Alt+ T) खोलें ।

  3. .shफ़ाइल को टर्मिनल विंडो में खींचें और विस्मय में देखें।


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

3

ऐसा करने के कुछ तरीके हैं।

विकल्प 1

  1. टर्मिनल में, निर्देशिका बैश फ़ाइल का उपयोग cd(परिवर्तन निर्देशिका) में है।

    पूर्व। cd Downloads

  2. Daud bash <filename>.sh

    यह .run फ़ाइलों के साथ भी काम करता है। रिदमबॉक्स को अपडेट करने पर इस वेबपेज पर इस उपयोग का एक उदाहरण है

विकल्प 2

  1. टर्मिनल में, bash फ़ाइल निर्देशिका में नेविगेट करें।

  2. Daud chmod +x <filename>.sh

  3. Nautilus में, फ़ाइल खोलें।


3

के लिए उबंटू 18.04 , वहाँ एक छोटे संशोधन, जैसा कि आप एक पॉप-अप डायलॉग नहीं मिलता है।

तो आपको क्या करने की आवश्यकता है:

फ़ाइलों पर राइट क्लिक करें, प्राथमिकताएँ चुनें> व्यवहार टैब चुनें> मार्क 'पूछें कि निष्पादन योग्य पाठ फ़ाइल के तहत क्या करना है' विकल्प।

अब, जब आप किसी भी .sh फ़ाइल पर डबल-क्लिक करते हैं, तो आपको एक पॉपअप मिलेगा, वहाँ आप अपनी .sh फ़ाइल को चलाने के लिए "टर्मिनल में रन" विकल्प का चयन कर सकते हैं।

यहां छवि विवरण दर्ज करें


2

Ubuntu 16.04 में इसे टर्मिनल में कैसे खोला जाता है:

पर जाएं File Manager > Edit > Preferences > Behaviorके लिए Executable Text Filesऔर चुनें Ask each time

समस्या यह है कि यह डिफ़ॉल्ट रूप से सेट है View Executable Files when they are opened


1

यदि आप अपनी शेल स्क्रिप्ट या अन्य निष्पादन योग्य बनाते हैं, जो आप / usr / लोकल / बिन में बनाते हैं, तो यह पाया जाएगा और कमांड लाइन में एक फ़ोल्डर पथ प्रदान करने या जोड़ने के बिना निष्पादित किया जाएगा। / नाम के लिए। उदाहरण के लिए मैंने डिस्क यूयूआईडी प्रदर्शित करने के लिए निम्नलिखित सरल 3 लाइन बैश स्क्रिप्ट बनाई:

#!/bin/bash
echo "* UUIDs must match in /etc/fstab and /boot/grub/menu.lst"
sudo blkid

मैंने फाइल को uuid कहा और इसे / usr / लोकल / बिन में रखा। मुझे कमांड लाइन पर प्रवेश करने की आवश्यकता है:

uuid

0

खैर, मुझे भी उसी समस्या का सामना करना पड़ा। मैं .sh फ़ाइल को निष्पादित करना चाहता था और यह CentOS 7 पर Gedit के साथ खोला गया। तो यहां मैंने वही किया है:

  1. मैंने उस .shफ़ाइल के पथ पर नेविगेट किया जिसे मैं निष्पादित करना चाहता था।
  2. मैंने टर्मिनल खोला।
  3. और मैंने बस टर्मिनल विंडो पर घसीटा और गिरा दिया और यह स्वचालित रूप से इनपुट के रूप में पथ के साथ उस फ़ाइल को ले गया।
  4. दर्ज करें मारो और तुम जाने के लिए अच्छे हैं!

0

कुछ वितरणों पर मुझे जो समस्या मिली है, वह यह है कि उन्होंने Nautilus में वरीयताएँ विकल्प छिपाया है, लेकिन इसे Ubuntu और Gnome3 का उपयोग करने वाले अन्य वितरणों में ठीक करने के लिए एक ही है (शाब्दिक रूप से सिर्फ फेडोरा संस्करण किया है और मुझे याद दिलाने के लिए वास्तविक निर्धारण पोस्ट करना है। भविष्य में कैसे)।

  1. इंस्टॉल करें I dconf-editor

    sudo apt-get install dconf-editor
  2. dconf-editorउस उपयोगकर्ता खाते का उपयोग करके चलाएं जिसे आप चाहते हैं, अर्थात रूट नहीं

    dconf-editor
  3. निम्न स्कीमा पर नेविगेट करें:

    org.gnome.nautilus.preferences

  4. डिफ़ॉल्ट विकल्प को डिफ़ॉल्ट रूप से न खोलने के लिए बदलें:

    खोजें executable-text-activationक्लिक शब्द displayऔर करने के लिए बदलask

यह आपको आगे बढ़ने वाली फ़ाइल को संपादित करने, देखने या चलाने का विकल्प देगा


0

मैं लिनक्स में एक noob हूँ और मुझे बस यही समस्या थी। यदि सभी अन्य विफल होते हैं:

  1. टर्मिनल खोलें
  2. .Sh फ़ाइल युक्त फ़ोल्डर खोलें
  3. फ़ाइल को टर्मिनल विंडो में खींचें और छोड़ें
  4. फ़ाइल का पथ टर्मिनल में दिखाई देता है। प्रेस करें Enter
  5. वोइला, आपकी .sh फ़ाइल चलाई जाती है।

-2

आप .अन्य उत्तरों के सुझाव के साथ भी ट्रिक्स का उपयोग कर सकते हैं ।

उदाहरण के लिए:

chmod +x filename.shयह मानते हुए कि आप पहले ही फाइल करने के लिए रास्ते पर जा चुके हैं, फिर इनमें से किसी एक कमांड से फाइल को चलाएं:

sh filename.sh

./filename.sh

. filename.sh

2
चेतावनी : ये तीन आदेश समतुल्य नहीं हैं । यदि आपका शेबंग एक अलग बाइनरी (स्टैक की तरह) का संदर्भ देता है, तो तीसरा कमांड बैश के साथ तर्क देने की कोशिश करेगा, जो विफल हो जाएगा।
जेजेन थॉमस
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.