.Sh फ़ाइल क्या है?


91

इसलिए मुझे फ़ाइल प्रकारों की अधिकता से निपटने का अनुभव नहीं है, और मैं बिल्कुल जानकारी नहीं पा सका हूं कि .shफाइलें क्या हैं। यहाँ मैं क्या करने की कोशिश कर रहा हूँ:

मैं उन मानचित्र डेटा सेटों को डाउनलोड करने का प्रयास कर रहा हूं, जो टाइलों में व्यवस्थित हैं जिन्हें व्यक्तिगत रूप से डाउनलोड किया जा सकता है: http://daymet.ornl.gov/gridded

एक बार में कई टाइलें डाउनलोड करने के लिए, वे अपनी स्क्रिप्ट डाउनलोड करने के लिए कहते हैं, जो अंततः आगे बढ़ती है daymet-nc-retrieval.sh: https://github.com/daymet/scripts/blob/master/Bash/daymet-nc-retrieval.sh

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

मुझे यकीन है कि इन फ़ाइलों के साथ क्या करना है, इस पर एक सरल स्पष्टीकरण है, लेकिन ऐसा लगता है कि यह बहुत सारे पदों पर दफन है जहां लोग पहले से ही मान रहे हैं कि आप जानते हैं कि इन फ़ाइलों के साथ क्या करना है। कोई भी बस यह कहना चाहता है कि वास्तव में इसे लागू करने वाले कोड के साथ पृष्ठ पर पहुंचने के बाद वर्ग एक से क्या करने की आवश्यकता है? धन्यवाद।


7
.sh एक्सटेंशन शेल स्क्रिप्ट के लिए है।
राय.कुमार

3
क्या आप यूनिक्स प्रणाली पर हैं? क्योंकि अन्यथा वह स्क्रिप्ट ज्यादा मदद करने वाली नहीं है।
melpomene

जवाबों:


51

यदि आप किसी ब्राउज़र में अपना दूसरा लिंक खोलते हैं तो आपको स्रोत कोड दिखाई देगा:

#!/bin/bash
# Script to download individual .nc files from the ORNL
# Daymet server at: http://daymet.ornl.gov

[...]

# For ranges use {start..end}
# for individul vaules, use: 1 2 3 4 
for year in {2002..2003}
do
   for tile in {1159..1160}
        do wget --limit-rate=3m http://daymet.ornl.gov/thredds/fileServer/allcf/${year}/${tile}_${year}/vp.nc -O ${tile}_${year}_vp.nc
        # An example using curl instead of wget
    #do curl --limit-rate 3M -o ${tile}_${year}_vp.nc http://daymet.ornl.gov/thredds/fileServer/allcf/${year}/${tile}_${year}/vp.nc
     done
done

तो यह एक बैश स्क्रिप्ट है। लिनक्स मिल गया?


किसी भी मामले में, स्क्रिप्ट कुछ भी नहीं है, लेकिन HTTP पुनर्प्राप्ति की एक श्रृंखला है। Wget और curl दोनों ही ज्यादातर ऑपरेटिंग सिस्टम के लिए उपलब्ध हैं और लगभग सभी भाषा में HTTP लाइब्रेरी हैं इसलिए किसी भी अन्य तकनीक में इसे फिर से लिखना काफी तुच्छ है। वहाँ भी bash के कुछ विंडोज पोर्ट ही हैं (git में एक शामिल है)। पिछले नहीं बल्कि कम से कम, विंडोज 10 में अब लिनक्स बायनेरिज़ के लिए मूल समर्थन है


3
मेरे पास लिनक्स नहीं है, मैं विंडोज 7 पर चल रहा हूं। क्या यह केवल लिनक्स उपयोगकर्ताओं के लिए उपलब्ध है?
टोनी एच

7
यह विंडोज को छोड़कर अधिकांश ऑपरेटिंग सिस्टम (लिनक्स, यूनिक्स, मैकओएस ...) के लिए उपलब्ध है।
अल्वारो गोंजालेज

1
मैंने विंडोज़ में बैश स्क्रिप्ट पर थोड़ी खोज की और ऐसा लग रहा है कि इस विषय को थोड़ा कवर किया गया है: stackoverflow.com/questions/6413377/… मैं चीजों को देखने की कोशिश करूँगा कि यह कैसे काम करता है।
टोनी एच

4
लिनक्स मिल गया? दिन का सर्वश्रेष्ठ उत्तर
एडम एरिकसन

121

एक्सटेंशन के साथ एक फाइल क्या है।

यह एक बॉर्न शेल स्क्रिप्ट है । उनका उपयोग UNIX जैसे ऑपरेटिंग सिस्टम के कई रूपों में किया जाता है। उनके पास कोई "भाषा" नहीं है और आपके शेल (टर्मिनल कमांड के दुभाषिया) द्वारा व्याख्या की जाती है या यदि पहली पंक्ति के रूप में है

#!/path/to/interpreter

वे उस विशेष दुभाषिया का उपयोग करेंगे। आपकी फ़ाइल में पहली पंक्ति है:

#!/bin/bash

और इसका मतलब है कि यह बॉर्न अगेन शेल का उपयोग करता है, जिसे बाश कहा जाता है। यह सभी व्यावहारिक उद्देश्यों के लिए अच्छा पुराने श के लिए एक प्रतिस्थापन है।

दुभाषिया के आधार पर आपके पास अलग भाषा होगी जिसमें फ़ाइल लिखी गई है।

ध्यान रखें, कि UNIX दुनिया में, यह फ़ाइल का विस्तार नहीं है जो यह निर्धारित करता है कि फ़ाइल क्या है (शेल स्क्रिप्ट को कैसे निष्पादित करें देखें)।

यदि आप DOS / Windows की दुनिया से आते हैं, तो आप उन फ़ाइलों से परिचित होंगे जिनके पास .bat या .cmd एक्सटेंशन (बैच फ़ाइलें) हैं। वे सामग्री में समान नहीं हैं, लेकिन डिजाइन में समान हैं।

शेल स्क्रिप्ट को कैसे निष्पादित करें

कुछ मूर्खतापूर्ण ऑपरेटिंग सिस्टम के विपरीत, * निक्स किसी फ़ाइल के साथ क्या करना है यह निर्धारित करने के लिए विशेष रूप से एक्सटेंशन पर निर्भर नहीं करता है। अनुमतियाँ भी उपयोग की जाती हैं। इसका मतलब है कि यदि आप इसे डाउनलोड करने के बाद शेल स्क्रिप्ट को चलाने का प्रयास करते हैं, तो यह किसी भी पाठ फ़ाइल को "रन" करने की कोशिश के समान होगा। ".Sh" एक्सटेंशन केवल उस फ़ाइल को पहचानने के लिए आपकी सुविधा के लिए है।

आपको फ़ाइल को निष्पादन योग्य बनाने की आवश्यकता होगी। मान लें कि आपने अपनी फ़ाइल डाउनलोड कर ली है file.sh, तो आप अपने टर्मिनल में भाग सकते हैं:

chmod +x file.sh

chmodफ़ाइल की अनुमतियाँ बदलने के लिए एक आदेश है, अनुमतियाँ +xनिष्पादित करता है (इस मामले में हर किसी के लिए) और अंत में आपके पास आपका फ़ाइल नाम है।

आप इसे GUI में भी कर सकते हैं। अधिकांश समय आप फ़ाइल पर राइट क्लिक कर सकते हैं और गुणों का चयन कर सकते हैं, XUbuntu में अनुमतियाँ विकल्प इस तरह दिखते हैं:

XUbuntu में फ़ाइल अनुमतियाँ

यदि आप अनुमतियाँ बदलना नहीं चाहते हैं। आप शेल को कमांड चलाने के लिए भी बाध्य कर सकते हैं। टर्मिनल में आप चला सकते हैं:

bash file.sh

शेल आपकी स्क्रिप्ट की पहली पंक्ति के समान होना चाहिए।

यह कितना सुरक्षित है?

आपको यह अजीब लग सकता है कि किसी फ़ाइल को निष्पादित करने के लिए आपको मैन्युअल रूप से कोई अन्य कार्य करना होगा। लेकिन यह आंशिक रूप से सुरक्षा की मजबूत आवश्यकता के कारण है।

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

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


10
यह चयनित उत्तर होना चाहिए।
पेसियर

36

shफाइलें यूनिक्स (लिनक्स) शेल निष्पादन योग्य फाइलें हैं, वे batखिड़कियों पर फाइलों के बराबर (लेकिन अधिक शक्तिशाली) हैं।

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


2
विशिष्ट OS के आधार पर, आपको चलाने की आवश्यकता हो सकती हैchmod +x file.sh
प्रणव A.

मैं कहूंगा कि बैश खिड़कियों के लिए वीबीएस की तरह है, न कि खिड़कियों के लिए बैच के रूप में बैच एक डॉस भाषा थी।
स्विच करें

4

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


1

मुझे पता है कि यह एक पुराना सवाल है और मैं शायद मदद नहीं करूंगा, लेकिन कई लिनक्स वितरण (जैसे, ubuntu) में "लाइव सीडी / यूएसबी" फ़ंक्शन होता है, इसलिए यदि आपको वास्तव में इस स्क्रिप्ट को चलाने की आवश्यकता है, तो आप अपने कंप्यूटर को बूट करने की कोशिश कर सकते हैं। लिनक्स में। बस .iso को एक फ्लैश ड्राइव पर जलाएं (यहां बताया गया है कि http://goo.gl/U1wLYA ), अपने कंप्यूटर को प्लग इन ड्राइव के साथ शुरू करें और बूट मेनू के लिए F कुंजी दबाएं। यदि आप "... USB ..." चुनते हैं, तो आप उस OS पर बूट कर देंगे जिसे आपने ड्राइव पर रखा है।


हालाँकि फ़ाइल केवल लाइव संस्करण पर ही चलाई जाएगी। उपयोगकर्ता को मुख्य OS (Windows) की फ़ाइलों को कॉपी करना होगा।
प्रणव ए।

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