.Sh dosyası nedir?


92

Bu nedenle, çok sayıda dosya türü ile uğraşma konusunda deneyimli değilim ve tam olarak hangi .shdosyaların olduğu hakkında fazla bilgi bulamadım . İşte yapmaya çalıştığım şey:

Ayrı ayrı indirilebilen parçalar halinde düzenlenmiş harita veri setlerini indirmeye çalışıyorum: http://daymet.ornl.gov/gridded

Bir kerede bir dizi döşemeyi indirmek için, komut dosyasını indirmeyi söylüyorlar, bu da sonunda daymet-nc-retrieval.sh: https://github.com/daymet/scripts/blob/master/Bash/daymet-nc-retrieval.sh

Öyleyse, bu kodla tam olarak ne yapmam gerekiyor? Web sitesi, kullanıcıların onunla ne yapacaklarını bildiklerini varsayarak daha fazla talimat sağlamaz. Sanırım kodu başka bir tarayıcı için adı geçmeyen bir uygulamaya yapıştırmanız gerekiyor (bu durumda Chrome veya Firefox kullanarak)? Neredeyse Firefox / Greasemonkey'e yapıştırılabilecek bir şeye benziyor, ancak tam olarak değil. Sadece dosya türündeki hızlı bir Google tarafından, yazı tura gelemedim.

Eminim orada bu dosyalarla ne yapılacağına dair basit bir açıklama vardır, ancak insanların zaten bu dosyalarla ne yapacağınızı bildiğinizi varsaydıkları birçok gönderide gömülü görünüyor. Kodun bulunduğu sayfaya geldikten sonra onu gerçekten uygulamak için kare bir noktadan ne yapılması gerektiğini basitçe söylemek isteyen var mı? Teşekkürler.


7
.sh uzantısı kabuk komut dosyası içindir.
rai.skumar

3
Unix sistemde misiniz? Çünkü aksi halde bu senaryo pek yardımcı olmayacak.
melpomene

Yanıtlar:


51

İkinci bağlantınızı bir tarayıcıda açarsanız, kaynak kodunu görürsünüz:

#!/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

Yani bu bir bash betiği. Linux var mı?


Her durumda, komut dosyası bir dizi HTTP alımından başka bir şey değildir. Hem wget hem de curl çoğu işletim sistemi için mevcuttur ve neredeyse tüm dillerin HTTP kitaplıkları vardır, bu nedenle başka herhangi bir teknolojide yeniden yazmak oldukça önemsizdir. Bash'in kendisinin bazı Windows bağlantı noktaları da vardır (git bir tane içerir). Son olarak, Windows 10 artık Linux ikili dosyaları için yerel desteğe sahiptir .


3
Linux'um yok, Windows 7 üzerinde çalışıyorum. Bu sadece Linux kullanıcıları tarafından kullanılabilir mi?
Tony H

7
Windows hariç çoğu işletim sisteminde (Linux, Unix, MacOS ...) kullanılabilir.
Álvaro González

1
Pencerelerde bash betikleri üzerinde biraz araştırma yaptım ve bu konu biraz ele alınmış gibi görünüyor: stackoverflow.com/questions/6413377/… Nasıl çalıştığını görmek için bir şeyler deneyeceğim.
Tony H

4
Linux var mı? Günün en iyi cevabı
Adam Erickson

121

.Sh uzantılı bir dosya nedir?

Bir Bourne kabuğu betiğidir . UNIX benzeri işletim sistemlerinin birçok varyasyonunda kullanılırlar. "Dilleri" yoktur ve kabuğunuz tarafından yorumlanır (terminal komutlarının yorumlayıcısı) veya ilk satır formdaysa

#!/path/to/interpreter

o belirli tercümanı kullanacaklar. Dosyanızda ilk satır var:

#!/bin/bash

ve bu, bash denilen Bourne Again Shell'i kullandığı anlamına gelir. Tüm pratik amaçlar için eski güzel sh için bir yedektir.

Tercümana bağlı olarak, dosyanın yazıldığı farklı bir dile sahip olacaksınız.

Unix dünyasında dosyanın ne olduğunu belirleyen şeyin dosyanın uzantısı olmadığını unutmayın (bkz. Kabuk betiği nasıl çalıştırılır).

DOS / Windows dünyasından geliyorsanız, .bat veya .cmd uzantılı dosyalara (toplu iş dosyaları) aşina olacaksınız. İçerik olarak benzer değiller, ancak tasarım açısından benzerler.

Bir kabuk betiği nasıl çalıştırılır

Bazı aptal işletim sistemlerinden farklı olarak, * nix, bir dosyayla ne yapılacağını belirlemek için yalnızca uzantılara güvenmez. İzinler de kullanılır. Bu, indirdikten sonra kabuk komut dosyasını çalıştırmayı denerseniz, bunun herhangi bir metin dosyasını "çalıştırmaya" çalışmakla aynı olacağı anlamına gelir. ".Sh" uzantısı yalnızca bu dosyayı tanımanız için size kolaylık sağlamak içindir.

Dosyayı çalıştırılabilir yapmanız gerekecek. Dosyanızı olarak indirdiğinizi varsayalım file.sh, daha sonra terminalinizde çalıştırabilirsiniz:

chmod +x file.sh

chmoddosyanın izinlerini değiştirmek için bir komuttur, +xyürütme izinlerini ayarlar (bu durumda herkes için) ve son olarak dosya adınızı alırsınız.

Bunu GUI'de de yapabilirsiniz. Çoğu zaman dosyaya sağ tıklayıp özellikleri seçebilirsiniz, XUbuntu'da izin seçenekleri aşağıdaki gibi görünür:

XUbuntu'daki dosya izinleri

İzinleri değiştirmek istemiyorsanız. Kabuğu komutu çalıştırmaya da zorlayabilirsiniz. Terminalde şunları çalıştırabilirsiniz:

bash file.sh

Kabuk, betiğinizin ilk satırındaki ile aynı olmalıdır.

Ne kadar güvenli?

Bir dosyayı yürütmek için manuel olarak başka bir görevi yerine getirmeniz garip gelebilir. Ancak bu kısmen güçlü bir güvenlik ihtiyacından kaynaklanmaktadır.

Temel olarak bir bash betiğini indirip çalıştırdığınızda, birisinin size "tüm bu komutları bilgisayarınızda sırayla çalıştır, sonuçların iyi ve güvenli olacağına söz veriyorum" demesiyle aynı şeydir. Kendinize, bu dosyayı sağlayan tarafa güvenip güvenmediğinizi sorun, kendinize dosyayı düşündüğünüz yerden indirdiğinizden emin olup olmadığınızı sorun, hatta bir şeyin yerinde görünüp görünmediğini görmek için içeriye bir göz atın * nix komutları ve bash programlama hakkında bir şeyler bildiğinizi).

Ne yazık ki, yukarıdaki uyarı dışında, bilgisayarınızda kötü şeyler olmasını önlemek için ne yapmanız gerektiğine dair adım adım açıklama veremem; Bu nedenle, herhangi birinden çalıştırılabilir bir dosya aldığınızda ve çalıştırdığınızda aslında "Elbette, bir şeyler yapmak için bilgisayarımı kullanabilirsiniz" dediğinizi unutmayın.


10
Bu seçilen cevap olmalıdır.
Pacerier

36

shdosyalar unix (linux) kabuk çalıştırılabilir dosyalarıdır, batWindows'taki dosyalara eşdeğerdir (ancak çok daha güçlüdür) .

Bu yüzden onu bir linux konsolundan çalıştırmanız gerekiyor, sadece ismini pencerelerde bat dosyalarında yaptığınız gibi yazarak.


2
Belirli bir işletim sistemine bağlı olarak, çalıştırmanız gerekebilirchmod +x file.sh
Pranav A.

Batch bir DOS dili olduğundan bash'ın Windows için VBS'ye benzediğini söyleyebilirim.
Anahtar

4

Tipik olarak bir .sh dosyası, bir terminalde çalıştırabileceğiniz bir kabuk betiğidir. Özellikle, bahsettiğiniz komut dosyası, dosyayı açıp açmadığınızı ve dosyanın shebang veya sihirli satır olarak adlandırılan ilk satırına bakıp bakmadığınızı görebileceğiniz bir bash betiğidir.


1

Bunun eski bir soru olduğunu biliyorum ve muhtemelen yardım etmeyeceğim, ancak birçok Linux dağıtımında (örneğin, ubuntu) "Live cd / usb" işlevi var, bu yüzden bu komut dosyasını gerçekten çalıştırmanız gerekiyorsa, bilgisayarınızı başlatmayı deneyebilirsiniz. Linux içine. Bir flash sürücüye bir .iso yazmanız yeterlidir ( http://goo.gl/U1wLYA nasıl yapılır ), bilgisayarınızı sürücü takılı olarak başlatın ve önyükleme menüsü için F tuşuna basın. "... USB ..." yi seçerseniz, sürücüye koyduğunuz işletim sistemine önyükleme yaparsınız.


ancak dosya yalnızca canlı sürümde çalıştırılır. kullanıcının dosyaları ana işletim sistemine (Windows) geri kopyalaması gerekir.
Pranav A.

-2

konumu terminalde açın ve şu komutları yazın 1. chmod + x dosyaadı.sh 2. ./filename.sh işte bu kadar

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.