मैं अपने पायथन प्रोग्राम को सीधे शेल से कैसे चला सकता हूं?


10

मैंने एक स्क्रिप्ट लिखी थी। जब यह शुरू होता है, यह बंद नहीं होगा, और यह इंटरनेट से डेटा प्राप्त करता रहता है। मैं इसे इस तरह कह सकता हूं:

cd /User/Desktop/project/internetScanner/
python3 main.py start

लेकिन मैं इसे टर्मिनल से सीधे इस तरह से कॉल करना चाहूंगा, जैसे कि गंतव्य के भीतर:

internetScanner start

ऐसा मैं किस प्रकार करूं?


2
मुझे आश्चर्य है कि अगर शीर्षक इस पर बदला जा सकता है ..
user606723

@ user606723 इसे बदलने के लिए एक संपादन का सुझाव देने के लिए स्वतंत्र महसूस करें। पहला शीर्षक "मेरे कार्यक्रम को शेल पर कैसे चल सकता है?" बहुत अच्छा नहीं था।
slhck

जवाबों:


27

आपको शायद अपनी फ़ाइल main.pyका नाम बदल देना चाहिए internetScanner। * निक्स पर एक्सटेंशन्स पूरी तरह से वैकल्पिक हैं। यहां बात नहीं होनी चाहिए।

mv main.py internetScanner

फिर, इस फ़ाइल में शुरुआत में दाईं ओर निम्न पंक्ति जोड़ें:

#!/usr/bin/env python3

यह सुनिश्चित करेगा कि जब शेल फ़ाइल को निष्पादित करता है, तो यह python3सामग्री की व्याख्या करने के लिए उपयोग करने के लिए पता चल जाएगा । इसे शेबंग के नाम से जाना जाता है । अब, फ़ाइल को निष्पादन योग्य बनाएं:

chmod +x internetScanner

अब आप अपना कार्यक्रम भीतर से चला सकते हैं /User/Desktop/project/internetScanner/:

./internetScanner start

आपका कार्यक्रम अग्रभूमि में चलेगा और तब तक चलता रहेगा जब तक आप दबाते हैं Ctrl- C। यदि आप ऐसा नहीं चाहते हैं, तो आप कमांड के बाद एक एम्परसेंड जोड़कर, पृष्ठभूमि में कार्यक्रम भी शुरू कर सकते हैं:

./internetScanner start &

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

यदि आप अब सिस्टम पर कहीं से भी प्रोग्राम चलाना चाहते हैं, तो आपको internetScannerनिर्देशिका को अपने साथ जोड़ना होगा PATH: PATH और अन्य पर्यावरण चर क्या हैं, और मैं उन्हें कैसे सेट या उपयोग कर सकता हूं?


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

@BenHocking धन्यवाद, मैंने इसे उत्तर में जोड़ा।
slhck

X &नियंत्रण शेल से प्रक्रिया को अलग नहीं करता है, यह केवल प्रक्रिया को पृष्ठभूमि देता है, जिसका अर्थ है कि अगर यह शेल बाहर निकलता है तो इसे भेजे गए TERM सिग्नल मिलेगा; ताकि आप नहीं करना चाहते हैं कि आप का उपयोग करना चाहिए अलग करें , detach ./internetScanner start
दान डी।


यह ध्यान देने योग्य हो सकता है कि इसे अभी भी नामित main.pyकिया जा सकता है जब तक कि इसे internetScanner$ PATH में कहीं से सहानुभूति न हो।
जेर्मैहद

2

/User/Desktop/project/internetScanner/यदि आप किसी एकल उपयोगकर्ता, लिंक ( ln -s) के main.pyलिए स्थापित करना चाहते हैं, तो कोई अन्य फ़ाइलों की आवश्यकता नहीं है $HOME/bin/internetScanner। आपको $HOME/binपहले mkdir की आवश्यकता होगी ।

अगली बार जब आप लॉग इन $HOME/binकरेंगे , तो संभवतः आपके PATH में जुड़ जाएंगे। यदि आप इसे सभी उपयोगकर्ताओं के लिए उपलब्ध चाहते हैं, तो इसे कॉपी करें /usr/local/bin

यदि इसे कार्यान्वित करना है /User/Desktop/project/internetScanner/, तो आयात करके osऔर कॉल करके प्रारंभ करें

os.chdir('/User/Desktop/project/internetScanner/') 

या उस लिपि में एक लॉन्चर लिपि बनाएं $HOME/binया बदलें और लिपि को निष्पादित करें।/usr/local/bin/User/Desktop/project/internetScanner/


0

रखो alias internetScanner "python /User/Desktop/project/internetScanner/main.py".aliases फ़ाइल (csh के लिए) में। बैश के लिए, alias internetScanner="python /User/Desktop/project/internetScanner/main.py".bashrc में डालें । उसके बाद आप कहीं से भी InternetScanner की शुरुआत का उपयोग कर सकते हैं।


मैंने कभी किसी .aliasesफाइल के बारे में नहीं सुना । क्या यह बैश के लिए कुछ मानक है? या क्या आपको इसे स्पष्ट रूप से अपने में रखना है .bashrc?
काज़ार्क
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.