स्क्रिप्ट चलाने के लिए .sh फ़ाइल के बजाय .txt फ़ाइल को निष्पादन योग्य क्यों नहीं बनाया जाए?


18

मैं सोच रहा था कि .shएक स्क्रिप्ट बनाने के लिए फ़ाइल के अंदर निष्पादन योग्य कमांड डालने की क्या आवश्यकता है , क्योंकि मैं एक .txtफाइल के अंदर कमांड डालकर और इसे निष्पादन योग्य बनाकर उपयोग कर सकता हूं chmod

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


19
यूनिक्स पारंपरिक रूप से फ़ाइल एक्सटेंशन की परवाह नहीं करता है। तो आप सही हैं - इससे कोई फर्क नहीं पड़ता। यह विशुद्ध रूप से पाठक के लिए स्पष्ट है कि यह एक शेल स्क्रिप्ट है
vidarlo

8
लिनक्स में फाइल एक्सटेंशन का उपयोग ओएस द्वारा किसी भी वास्तविक फैशन में नहीं किया जाता है। .Sh एक्सटेंशन लगाना केवल उपयोगकर्ता को बताता है कि यह एक शेल स्क्रिप्ट है, किसी अन्य प्रकार की फ़ाइल के विपरीत, जैसे कि पायथन या पर्ल स्क्रिप्ट। व्यक्तिगत रूप से, मैं अपनी स्क्रिप्ट पर एक्सटेंशन नहीं लगाता।
doneal24

2
यह केवल आपको या किसी और को यह बताने की आवश्यकता है कि यह एक शेल स्क्रिप्ट है। यदि आप यह बताने से गुरेज नहीं करते हैं कि कौन सी .txt फाइलें चलाने के लिए स्क्रिप्ट हैं और कौन से टेक्स्ट को एक संपादक में खोला जाना है, तो सब कुछ नाम करने के लिए महसूस करें!
daboross

2
Right.txt, but.txt if.txt everything.txt end.txt with.txt .txt.txt .txt प्रत्यय। Txt। .txt) समझ। txt। प्रत्येक। txt फ़ाइल। txt is.txt there.txt for.txt।
लेफ्टनैबाउटआउट

1
यह उस प्रश्न के समान है जिसके बारे में यह माना जाता है कि यह एक डुप्लिकेट है, लेकिन यह प्रश्न वास्तव में इसका उत्तर नहीं देता है।
केनी एविट

जवाबों:


47

कुछ भी विशिष्ट मिलान करने के लिए फ़ाइल एक्सटेंशन की कोई आवश्यकता नहीं है, जैसा कि आपने सही ढंग से पता लगाया है।

यूनिक्स जैसी प्रणालियों पर, फ़ाइल प्रकार आमतौर पर फ़ाइल की सामग्री (यानी "जादू नंबर" या पहले कुछ बाइट्स में अन्य विशिष्ट संरचनाओं) से प्राप्त होते हैं, न कि उनके नाम से। आप विस्तार को पूरी तरह से छोड़ सकते हैं, जो अक्सर निष्पादन योग्य के लिए किया जाता है।

fileकमांड को चेक करें , यह आपको वह जानकारी दिखाता है जो इसकी सामग्री से किसी फ़ाइल प्रकार के बारे में पता लगा सकती है।

एक निष्पादन योग्य स्क्रिप्ट के लिए, सिस्टम पहली पंक्ति में एक तथाकथित "शेबंग" की उम्मीद करता है, जो कि उदाहरण के लिए दिखता है

#!/usr/bin/env python3

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

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

ध्यान दें कि हालांकि कुछ अपवाद हैं, जहां नाम और विस्तार मायने रखता है (उदाहरण के लिए कुछ सिस्टम फ़ाइलों का नामकरण सम्मेलन का पालन करना चाहिए, या कई छवि दर्शकों और संपादकों को भी फ़ाइल प्रकार को इंगित करने के लिए विस्तार की आवश्यकता होती है)।

आप Do पर भी नज़र डाल सकते हैं -एक्सटेंशन का कोई उद्देश्य (ऑपरेटिंग सिस्टम के लिए) है?


3
फ़ाइल एक्सटेंशन शेल में मायने नहीं रखते हैं, लेकिन GUI OSes की दुनिया में, आपको डबल क्लिकिंग वर्क को सही ढंग से करने के लिए इनकी बहुत आवश्यकता है।
बॉलपॉइंटबैन

@BallpointBen दो बिंदु असंबंधित हैं। यहां तक ​​कि एक GUI के तहत एक फ़ाइल का "प्रकार" एक मेटाडेटा के रूप में संग्रहीत किया जा सकता है, और एक्सटेंशन होने के बावजूद एक विशिष्ट निष्पादन को ट्रिगर कर सकता है। MacOS फ़ाइल नाम एक्सटेंशन नहीं है और एक जीयूआई है और यह बहुत अच्छी तरह से बचता ...
पैट्रिक Mevzek

1
@PatrickMevzek कैसे MacOS एक्सटेंशन नहीं है? मैंने उन्हें दिखाने में सक्षम किया और सभी फाइलें उनके पास हैं। क्या मैं कुछ भूल रहा हूँ ? मैं MacOS प्लेटफ़ॉर्म पर नया हूँ
Ciprian Tomoiagă

1
@ CiprianTomoiagă आप अपनी फ़ाइलों को वैसे भी नाम दे सकते हैं, ओएस को उन पर सही ढंग से काम करने के लिए विस्तार की आवश्यकता नहीं है। उदाहरण के लिए देखें: howtogeek.com/192628/…
पैट्रिक मेव्ज़ेक

1
@barbecue सबसे कम आम भाजक को लक्षित करता है ... उस के साथ क्या गलत हो सकता है :-) (जैसे ईमेल संलग्न फ़ाइलों के माध्यम से हमलों के बारे में कहा जाता है। )। दरअसल, इंटरऑपरेबिलिटी के लिए फ़ाइल एक्सटेंशन एक अच्छा अभ्यास हो सकता है। एक को यह सीखना है कि यह स्पष्ट रूप से मूल रूप से डॉस द्वारा पेश किया गया दोष है और विभिन्न ओएस बिना एक्सटेंशन के फाइलों के साथ पूरी तरह से खुश हैं।
पैट्रिक मेव्ज़ेक

3

UNIX / Linux फ़ाइल नाम में फ़ाइल "एक्सटेंशन" या "प्रकार" जैसी कोई चीज नहीं है।

जैसा कि अन्य ने बताया है, "कमांड" फाइल कमांड का उपयोग करके पाया जा सकता है कि प्रासंगिक मैजिक आपके सिस्टम पर उपलब्ध है। UNIX / Linux फ़ाइल नाम में आमतौर पर कोई भी चरित्र उपलब्ध हो सकता है, लेकिन यह अक्सर नाम के लिए किसी प्रकार के सम्मेलन का उपयोग करने में सहायक होता है, ताकि मानव और मशीन दोनों सामग्री के रूप में निर्णय ले सकें (और इसलिए सामग्री का उपयोग)।

एक उदाहरण के रूप में, मैं अक्सर फ़ाइल नाम के पहले चरित्र के रूप में कॉमा का उपयोग करता हूं, जैसे कि फ़ाइल नाम के अंत में स्ट्रिंग ".tmp" का उपयोग करने के बजाय एक अस्थायी फ़ाइल को इंगित करने के लिए। परिणाम समान है, एक फ़ाइल जिसमें डेटा केवल थोड़े समय के लिए आवश्यक है, लेकिन नाम के लिए "a" होना आवश्यक नहीं है। इसके भीतर न ही स्ट्रिंग "tmp"। फ़ाइल नाम की सूची पार्स करते समय यह कभी-कभी लाभ हो सकता है। लेकिन यह मेरा कन्वेंशन है और कोई दूसरा किसी अस्थायी फ़ाइल के लिए उनके नाम के कन्वेंशन के रूप में ".tmp" का उपयोग करते हुए भी दूसरे पर फैसला कर सकता है।

तो आपके लिए मेरा उत्तर यह है कि UNIX / Linux फ़ाइल एक्सटेंशन जैसी कोई चीज नहीं है, केवल सम्मेलनों का एक सेट है जो आम तौर पर अन्य ऑपरेटिंग सिस्टम और उनके फ़ाइल सिस्टम में उपयोग किए जाने वाले फ़ाइल एक्सटेंशन की तरह दिखता है।


एफडब्ल्यूआईडब्ल्यू, मैं अपने लिए एक गैर-मानक सम्मेलन का भी उपयोग करता हूं। मेरी स्क्रिप्ट्स जिनके नाम के साथ शुरू होता "."है, वे शेल द्वारा बिंदीदार होने के लिए होती हैं (वे एक उपधारा में सार्थक रूप से नहीं चल सकती हैं)। इसके विपरीत, मैं अपनी उपनामों / लिपियों में डिफ़ॉल्ट "प्रारंभिक डॉट = छिपी फ़ाइल" सम्मेलन को अक्षम करता हूं जो उपयोग करता है lsताकि मैं "छिपी हुई" सहित सभी फाइलों को देख सकूं। इसी तरह विंडोज पर, मैं "फाइल एक्सटेंशन छिपाएँ" सेटिंग को अक्षम करता हूं।
jrw32982
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.