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


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


182
2017-12-16 12:27


मूल


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


जवाब:


ठीक है आप इसे कर कर बना सकते हैं

chmod +x filename.sh

तो जब आप इसे कॉल करेंगे तो यह निष्पादित होगा

./filename.sh

और आप उस स्क्रिप्ट को एप्लिकेशन के रूप में भी एक्सेस कर सकते हैं।

अपना टर्मिनल खोलें और अपनी होम निर्देशिका से नीचे टाइप करें।

gedit .bashrc

फिर खुली फ़ाइल में, इसे अंतिम पंक्ति पर टाइप करें।

alias <Name_with which you wanna call it >='./filename.sh'

सहेजें और बंद करें ।

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

सुनिश्चित करें कि आपने होम निर्देशिका में रखा है।

अन्य

alias <Name_with which you wanna call it >='./<path to your script >.sh'

उम्मीद है की वो मदद करदे।


244
2017-12-16 12:33



क्या आप कमांड दर्ज करने के बाद sudo कमांड का उपयोग कैसे करें: "alias command1 = '/home/user_name/dir/script.sh'। मेरा, यह सूडो के बिना काम करता है, लेकिन इसके साथ नहीं। - Aditya
.Bashrc रन को संपादित करने के बाद आपको बैश को पुनरारंभ करने की आवश्यकता है: बैश को पुनरारंभ करने के लिए exec bash। - Sampath Perera
निष्पादन योग्य फ़ाइल क्यों होती है ./filename.sh और न सिर्फ filename.sh? - user1993
@ user1993 हां, मैं इसे निष्पादन योग्य बनाने के लिए भी एक तरीका ढूंढ रहा हूं filename और नहीं ./filename - MycrofD
@ user1993 आम तौर पर, का उपयोग कर ./filename.sh वर्तमान निर्देशिका में एक फाइल निर्दिष्ट करता है और उपयोग कर रहा है filename.sh वर्तमान निर्देशिका या पथ की किसी भी निर्देशिका में एक फ़ाइल निर्दिष्ट करता है। पहला उपयोग किसी भी अनिश्चितता को हटा देता है कि किस फ़ाइल तक पहुंचा जा सकता है। इस मामले में, आप स्क्रिप्ट को बैश या किसी अन्य दुभाषिया के साथ निष्पादित करने का प्रयास कर रहे हैं (माना जाता है #!/bin/bash अपनी लिपि में पहली पंक्ति के रूप में) बस फ़ाइल नाम दर्ज करके। इस उपयोग के लिए निर्देशिका निर्दिष्ट है। वैकल्पिक रूप से, आप कोशिश कर सकते हैं bash filename.sh जो अनिर्दिष्ट निर्देशिका के साथ काम करता प्रतीत होता है। - a505999


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

जीयूआई विधि:

अनुमति टैब पर जाएं, फिर बॉक्स निष्पादित करें: [] फ़ाइल को प्रोग्राम के रूप में निष्पादित करने की अनुमति दें।

enter image description here

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

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

cd /to/my/required/directory

तो भागो

chmod +x filename.extension

या बस चलाएं:

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

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

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

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

आर पढ़ने के लिए खड़ा है, लिखने के लिए w और eXecute के लिए x।

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

-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 का उपयोग शायद ही कभी किया जाता है, / tmp को छोड़कर।

धन्यवाद Ilmari Karonen के लिये संकेत द्वारा दिखाना आम उपयोग में हैं!


31
2018-06-18 12:22



क्या यह बाइनरी (2-आधारित) के बजाय ऑक्टल (8-बेस) पर आधारित नहीं है? बाइनरी में आपके पास केवल 0 और 1 हो सकते हैं, जबकि ऑक्टल में आपके पास 0, 1, ... 6, 7 हो सकता है - Justinas
@ जस्टिनस बाइनरी उस 7 = 4 + 2 + 1 - 111 में पढ़ता है और लिखता है और निष्पादित करता है। - Tim


चलाएँ:

chmod +x /path/to/file.sh

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

chmod -x /path/to/file.sh

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

vi tester12.sh

वीआई संपादक पर कुछ कोड लिखने के बाद, मैं वीआई संपादक से बाहर निकल जाऊंगा:

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

7
2018-06-18 12:39