जोड़ना क्या करता है?


10

मैं टर्मिनल का उपयोग करने के लिए वास्तव में नया हूं और मैं यह जानने के बिना आँख बंद करके गाइड का पालन कर रहा हूं कि ऐसा क्यों है और यह क्या करता है..हालांकि यह गाइड मुझे vmware प्लेयर स्थापित करने में मदद करता है।

फ़ाइल को निष्पादन योग्य बनाने, फ़ाइल पर क्लिक करने, और चलाने के बाद से यह मेरे लिए काम करता है।

sudo sh vmwareplayer.txt (इसका नाम बदलकर छोटा किया गया)

किसी तरह मुझे पता है कि क्या sudoकरता है लेकिन क्या करता shहै? इसके बिना यह "vmwareplayer.txt नहीं मिला"। और बंडल फ़ाइलों के लिए .txt के साथ समाप्त क्यों होता है?


यह एक भाषा दुभाषिया है
टैचियन्स

@ टैचियन यदि आप प्रश्न का उत्तर जानते हैं, तो इसे और अधिक विस्तार से समझाएं और उत्तर के रूप में पोस्ट करें! :)
अलवर

व्याख्याकारों (जैसे श, बैश) और शेबंग आदि के बारे में बहुत गहराई से व्याख्या करने वाले उत्तरों के साथ एक संबंधित प्रश्न भी देखें

1
@ मिक यह उस प्रश्न का डुप्लिकेट नहीं है। यह पूछ रहा shहै कि एक कमांड में क्या करता है जो एक स्क्रिप्ट को आमंत्रित करता है। यह प्रश्न स्क्रिप्ट फ़ाइल के अंदर कैसे #!काम करता है, इसके बारे में है । पूरी तरह से अलग।
एलिया कागन

@EliahKagan हाँ, मैं शायद इसे नक़ल के रूप में उद्धृत करने के लिए बहुत जल्दबाजी कर रहा था: मुझे दूसरे उत्तर का हवाला देते समय 'संबंधित, लेकिन डुप्लिकेट नहीं' रखना चाहिए था। आप हमेशा की तरह सही हैं; यदि आप किसी मॉडरेटर को फिर से खोलने के लिए पूछना चाहते हैं तो ठीक है। मैं पहले से ही फिर से खोलने के लिए मतदान कर चुका हूं।

जवाबों:


16

sh का अर्थ "शेल" है और शेल पुराना है, यूनिक्स कमांड लाइन दुभाषिया की तरह है। एक दुभाषिया एक प्रोग्राम है जो एक प्रोग्रामिंग या स्क्रिप्टिंग भाषा में लिखे गए विशिष्ट निर्देशों को निष्पादित करता है। तो मूल रूप से आप कहते हैं "मेरे लिए उस फ़ाइल को निष्पादित करें"।

आपको समझना चाहिए कि फ़ाइल (या प्रोग्राम) क्या है यह निर्धारित करने के लिए लिनक्स वास्तव में फ़ाइल एक्सटेंशन को नहीं देखता है। तो जब तक उस फ़ाइल की सामग्री इस तरह से लिखी जाती है कि sh दुभाषिया समझता है, यह काम करेगा। लेकिन सिर्फ पठनीयता के लिए, ऐसी फाइलों को आम तौर पर एक .sh एक्सटेंशन दिया जाता है और मुझे नहीं पता कि डेवलपर उस समय क्या सोच रहा था जब उसने उस फ़ाइल को .txt एक्सटेंशन दिया था।


5

उबंटू में, shया /bin/shबस को इंगित करता है dashshडिफ़ॉल्ट कमांड दुभाषिया चलाना है, जो dashउबंटू के लिए है। 1 dash डेबियन अल्मक्विस्ट शेल को संदर्भित करता है।

एक खोल प्रणाली के लिए एक कमांड लाइन दुभाषिया है। कई अन्य के गोले की तरह bash, csh, zshआदि यहाँ के आदमी पृष्ठ से एक संक्षिप्त अंश है dash:

 The shell is a command that reads lines from either a file or the termi‐
 nal, interprets them, and generally executes other commands.  It is the
 program that is running when a user logs into the system (although a user
 can select a different shell with the chsh(1) command).  The shell imple‐
 ments a language that has flow control constructs, a macro facility that
 provides a variety of features in addition to data storage, along with
 built in history and line editing capabilities.  It incorporates many
 features to aid interactive use and has the advantage that the interpre‐
 tative language is common to both interactive and non-interactive use
 (shell scripts).  That is, commands can be typed directly to the running
 shell or can be put into a file and the file can be executed directly by
 the shell.

लिनक्स गोले के बारे में बहुत सारे ट्यूटोरियल हैं, आप इस विकिपीडिया लेख से शुरू कर सकते हैं ।

आपके प्रश्न पर आते हैं, यदि आप लिखते हैं sh file, तो आपके लिए dashनिष्पादित होता fileहै।


यह एक अच्छी व्याख्या है कि श क्या है, लेकिन ऊपर दिए गए विशिष्ट प्रश्न में ऐसा नहीं है।
NilsB

कुछ और जानकारी जोड़ी, यह अब पर्याप्त होना चाहिए
प्रज्वलित करें

1

टिप्पणी का सिर्फ एक शब्द:

sudorootविशेषाधिकारों के साथ एक कमांड निष्पादित करता है । जब आप कॉल करते हैं sudo vmwareplayer.txtजिसका स्पष्ट अर्थ है "रूट एक्सेस के साथ कमांड vmwareplayer.txt रन" और विफल रहता है, क्योंकि ऐसा कोई प्रोग्राम नहीं है।

sudo sh command" sh commandरूट विशेषाधिकारों के साथ निष्पादित "

और sh commandबॉर्न शेल के तहत एक कमांड निष्पादित करेगा।

नया सवाल उठता है। गोले क्या हैं? यह एक लम्बा प्रश्न है और आपको विकी I के बारे में कुछ जानकारी मिलेगी।

इस बीच, याद रखें manआपका सबसे अच्छा दोस्त है।


1

मेरा मानना ​​है कि पहले के उत्तरदाताओं में से किसी ने भी उस सवाल का जवाब नहीं दिया था जो आपने वास्तव में जी से पूछा था, इसलिए मैं इस पर एक शॉट लूंगा। shजब आप किसी प्रोग्राम को निष्पादित कर रहे हों , तब इंटरपोज़ करना , प्रोग्राम को गैर-संवादात्मक उपधारा में निष्पादित करता है । जब आप प्रोग्राम चलाते थे तो आपके द्वारा उपयोग किए जा रहे मानक इंटरेक्टिव शेल से गैर-इंटरेक्टिव शेल अलग तरह से व्यवहार करते हैं (उदाहरण के लिए प्रारंभिककरण )।

ईमानदारी से मुझे नहीं पता कि इसका क्या व्यावहारिक प्रभाव है। जैसा कि आपने देखा sh vmwareplayer.txtहै (आमतौर पर) एक ही फ़ोल्डर में कुछ निष्पादित करने में सक्षम है, जहां बस टाइपिंग vmwareplayer.txt(आमतौर पर) नहीं होगी। खोल वातावरण करना है; यह शेल के लिए कोई भी मूल निवासी नहीं है या खुद ही उप-लोड हो रहा है। आप निश्चित रूप से वर्तमान निर्देशिका में किसी प्रोग्राम को रूट के रूप में सीधे निष्पादित कर सकते हैं sudo ./vmwareplayer.txt:। मेरे अनुभव में यह हमेशा की तरह ही काम करता है sudo sh vmwareplayer.txt। मैं उम्मीद कर रहा था कि कोई व्यक्ति साथ आएगा और समझाएगा कि सबमिशन कभी-कभी वांछनीय क्यों होता है।


0

shउपयोगिता एक कमांड भाषा अनुवादक / एक आदेश है कि कार्यान्वित आदेशों एक कमांड लाइन स्ट्रिंग, मानक इनपुट या किसी निर्दिष्ट फ़ाइल से पढ़ने है। एप्लिकेशन यह सुनिश्चित करता है कि निष्पादित किए जाने वाले कमांड शेल कमांड लैंग्वेज में वर्णित भाषा में व्यक्त किए गए हैं।

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

निम्नलिखित एक स्ट्रिंग से शेल कमांड sh -c "cat myfile.txt" निष्पादित करता है : अर्थात कमांड को निष्पादित करता है--cat myfile.txt

इन-डेप्थ स्पष्टीकरण के लिए निम्न लिंक देखें: http://pubs.opengroup.org/onlinepubs/009695399/utilities/sh.html

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.