एसएच स्क्रिप्ट) निष्पादन योग्य कैसे बनाएं, इसलिए इसे टर्मिनल से चलाया जा सकता है

मेरे पास एक है script.sh फ़ाइल और इस फ़ाइल का प्रकार शेलस्क्रिप्ट फ़ाइल है । मैं इस फ़ाइल को एप्लिकेशन/एक्स-निष्पादन योग्य फ़ाइल के रूप में बनाना चाहता हूं । मैं इसे कैसे बना सकता हूं?

आप फ़ाइल को निष्पादन योग्य के रूप में चिह्नित कर सकते हैं:

chmod +x filename.sh

फिर आप इसे इस तरह निष्पादित कर सकते हैं:

./filename.sh

यदि आप इसे प्रारंभ करने के लिए किसी भिन्न कमांड का उपयोग करना चाहते हैं, तो आप एक उपनाम जोड़ सकते हैं:

gedit ~/.bashrc

इसे फ़ाइल के अंत में जोड़ें:

alias <new name>='/home/<full path to script>/filename.sh'

एक नया टर्मिनल सत्र खोलें या टाइप करें source ~/.bashrc आवेदन करने के लिए अपने टर्मिनल में । फिर स्क्रिप्ट शुरू करने के लिए बस नए नाम का उपयोग करें ।

फ़ाइल निष्पादन योग्य बनाने के दो तरीके हैं:

जीयूआई विधि:

फ़ाइल पर राइट-क्लिक करें और गुण चुनें । अनुमतियां टैब पर जाएं, फिर बॉक्स पर टिक करें Execute: [ ] Allow executing file as program या नॉटिलस में Program: [ ] Allow this file to run as a program में Thunar.

टर्मिनल / कमांड विधि:

आप या तो उपयोग कर सकते हैं:

cd /to/my/required/directory

फिर भागो

chmod +x filename.extension

या बस भागो:

chmod +x /path/to/your/filename.extension

chmod क्या कुछ और उन्नत विकल्प भी हैं:

रिक्त स्थान यह दिखाना है कि यह विभाजित है: - rwx --- ---

का पहला सेट --- उपयोगकर्ता है। दूसरा समूह है और अंतिम अन्य है (कोई और)

आर पढ़ने के लिए खड़ा है, डब्ल्यू लिखने के लिए और एक्स निष्पादित करने के लिए ।

इसलिए सभी को इसे पढ़ने की अनुमति देने के लिए, लेकिन केवल समूह को निष्पादित करने और उपयोगकर्ता को इसे पढ़ने और लिखने के लिए (लेकिन किसी कारण से निष्पादित नहीं) होगा:

-rw- rx- r-- लेकिन इसे कमांड में जोड़ा जाएगा:

chmod +rw-rx-r-- /path/to/file.extension

chmod संख्या में भी ऐसा कर सकते हैं । यह बाइनरी पर आधारित है (मुझे लगता है, क्योंकि यह 1,2 और 4 है)

तो ये संख्याएं हैं:

उपयोगकर्ता द्वारा निष्पादित है 100.समूह द्वारा निष्पादित है 010.अन्य द्वारा निष्पादित है 001.

उपयोगकर्ता द्वारा लिखें है 200.समूह द्वारा लिखें है 020.अन्य द्वारा लिखना है 002.

उपयोगकर्ता द्वारा पढ़ा गया है 400.समूह द्वारा पढ़ा जाता है 040.अन्य द्वारा पढ़ा है 004.

फिर आप वांछित संयोजन प्राप्त करने के लिए इन्हें एक साथ जोड़ते हैं ।

इसलिए सभी को इसे पढ़ने की अनुमति देने के लिए, लेकिन केवल समूह को निष्पादित करने के लिए और उपयोगकर्ता को इसे लिखने के लिए (लेकिन किसी कारण से निष्पादित नहीं) होगा:

400 + 040 + 004 और 010 और 200

कि करने के लिए कहते हैं 600 + 050 + 004 = 654.

फिर आप कमांड चला सकते हैं ।

chmod +654 /path/to/file.extension इसे सेट करने के लिए ।

और सभी अनुमतियों को सेट करने के लिए आप टाइप कर सकते हैं:

chmod +rwxrwxrwx /path/to/file.extension

या (यह लिखना थोड़ा आसान है, लेकिन हर एक को याद रखना कठिन है):

chmod +777 /path/to/file.extension

अंत में, आप कर सकते हैं:

chmod -777 /path/to/file.extension

सभी अनुमतियों को सभी से दूर ले जाने के लिए ।

और:

chmod +300 /path/to/file.extension

उपयोगकर्ता के लिए पढ़ने और लिखने के लिए, किसी भी अन्य अनुमतियों को प्रभावित किए बिना (जैसे अनुमतियां निष्पादित करें) ।

इस वेबसाइट एक बहुत ही उपयोगी छोटी ग्रिड चेकबॉक्स चीज़ है, जिससे आप अपने इच्छित विकल्पों पर टिक कर सकते हैं और यह आपको कमांड देता है:

enter image description here

हालांकि, सभी संभावित संयोजन उपयोग करने के लिए समझदार नहीं हैं; उपयोग किए जाने वाले मुख्य निम्नलिखित हैं:

755 - Owner सब है, और Group और Other पढ़ सकते हैं और निष्पादित कर सकते हैं

700 - Owner सभी है

644 - Owner पढ़ और लिख सकते हैं, और Group और Other पढ़ सकते हैं

600 - Owner पढ़ और लिख सकते हैं

और, यदि आप गैर-तुच्छ उपयोगकर्ता समूहों का उपयोग कर रहे हैं:

775 - Owner पढ़ और लिख सकते हैं, और Group और Other पढ़ सकते हैं

770 - Owner और Group सब है, और Other पढ़ सकते हैं और निष्पादित कर सकते हैं

750 - Owner सब है, और Group पढ़ सकते हैं और निष्पादित कर सकते हैं

664 - Owner और Group पढ़ और लिख सकते हैं, और Other बस पढ़ सकते हैं

660 - Owner और Group पढ़ और लिख सकते हैं

640 - Owner पढ़ और लिख सकते हैं, और Group पढ़ सकते हैं

777 और 666 का उपयोग शायद ही कभी /टीएमपी को छोड़कर किया जाता है ।

धन्यवाद Ilmari Karonen के लिए बाहर की ओर इशारा करते हुए आम उपयोग में हैं!

भागो:

chmod +x /path/to/file.sh

इसे गैर-निष्पादन योग्य बनाने के लिए, चलाएं:

chmod -x /path/to/file.sh

उदाहरण के लिए मैंने बनाया .sh फ़ाइल:

vi tester12.sh

छठी संपादक पर कुछ कोड लिखने के बाद, मैं छठी संपादक से बाहर निकलूंगा:

:wq!chmod +x tester12.sh./tester12.sh

सभी उपयोगकर्ताओं को अपनी स्क्रिप्ट चलाने दें

जैसा कि कहा गया है कि आप इसे निष्पादन योग्य बनाने के लिए फ़ाइल का निष्पादन बिट सेट कर सकते हैं chmod +x. लेकिन आप भी इस्तेमाल कर सकते हैं chmod a+x:

$ ll file_command.txt-rw-rw-r-- 1 rick rick 17 Sep 19 08:55 file_command.txt$ chmod a+x file_command.txt$ ll file_command.txt-rwxrwxr-x 1 rick rick 17 Sep 19 08:55 file_command.txt*

नोट्स:

  • एक स्क्रिप्ट को समाप्त नहीं करना है .sh यह में समाप्त हो सकता है .txt जैसा कि यहां दिखाया गया है, या कोई विस्तार नहीं है ।
  • बस के बजाय +x (केवल आप स्क्रिप्ट निष्पादित कर सकते हैं), उपयोग करें a+x तो सभी उपयोगकर्ता स्क्रिप्ट निष्पादित कर सकते हैं ।
  • फ़ाइल नाम में एक है * यह इंगित करने के लिए संलग्न है कि यह निष्पादन योग्य है । साथ ही अधिकांश सिस्टम पर फ़ाइल का नाम हरे रंग में बदल जाता है ।

make script executable


स्क्रिप्ट को निष्पादन योग्य बनाए बिना चलाएं

आप अभी भी इसे निष्पादन योग्य बनाने के बिना बैश स्क्रिप्ट चला सकते हैं । उदाहरण के लिए:

$ echo "echo Hello World" > file_command.txt$ cat file_command.txtecho Hello World$ bash file_command.txtHello World

नोट्स:

  • पहले हम एक स्क्रिप्ट बनाते हैं जिसमें echo Hello World.
  • फिर हम नामक स्क्रिप्ट की पुष्टि करते हैं file_command.txt सही है ।
  • अंत में हम कॉल करके स्क्रिप्ट चलाते हैं bash और इसे स्क्रिप्ट नाम पास करना । द bashकमांड वास्तव में स्टोर के रूप में है /bin/bash और यह सभी उबंटू सिस्टम पर एक निष्पादन योग्य है ।
  • आदेशों की एक फ़ाइल बनाना आपको जोड़ने से बचाता है शेबांग #!/bin/bash एक स्क्रिप्ट में पहली पंक्ति के रूप में ।
  • आदेशों की एक फ़ाइल बनाना आपको इसे निष्पादन योग्य बनाने से बचाता है chmod +x या chmod a+x.

से संबंधित मैं टर्मिनल में .श फाइलें कैसे चलाऊं?

फ़ाइलों को कैसे चलाऊं?] (command line - How do I run .sh scripts? - Ask Ubuntu)

यह एक डुप्लिकेट नहीं है, क्योंकि मैंने विशेष रूप से इसे एप्लिकेशन/एक्स-निष्पादन योग्य बनाने के बारे में पूछा है । दूसरा सवाल सिर्फ टर्मिनल में एसएच फ़ाइल खोलने के लिए कहता है ।