Was ist eine .sh-Datei?

87

Ich habe also keine Erfahrung im Umgang mit einer Vielzahl von Dateitypen, und ich konnte nicht viele Informationen darüber finden, was genau .shDateien sind. Folgendes versuche ich zu tun:

Ich versuche, Kartendatensätze herunterzuladen, die in Kacheln angeordnet sind, die einzeln heruntergeladen werden können: http://daymet.ornl.gov/gridded

Um eine Reihe von Kacheln gleichzeitig herunterzuladen, müssen sie ihr Skript herunterladen. Dies führt schließlich zu daymet-nc-retrieval.sh: https://github.com/daymet/scripts/blob/master/Bash/daymet-nc-retrieval.sh

Also, was genau soll ich mit diesem Code machen? Die Website enthält keine weiteren Anweisungen, vorausgesetzt, die Benutzer wissen, was sie damit tun sollen. Ich vermute, Sie sollten den Code in eine andere nicht erwähnte Anwendung für einen Browser einfügen (in diesem Fall mit Chrome oder Firefox)? Es sieht fast wie etwas aus, das in Firefox / Greasemonkey eingefügt werden könnte, aber nicht ganz. Nur durch ein kurzes Google über den Dateityp konnte ich weder Kopf noch Zahl darauf bekommen.

Ich bin mir sicher, dass es eine einfache Erklärung gibt, was mit diesen Dateien zu tun ist, aber sie scheint in vielen Posts vergraben zu sein, in denen die Leute bereits davon ausgehen, dass Sie wissen, was Sie mit diesen Dateien tun sollen. Möchte jemand einfach sagen, was von Anfang an zu tun ist, nachdem er die Seite mit dem Code aufgerufen hat, um ihn tatsächlich zu implementieren? Vielen Dank.

Tony H.
quelle
7
Die Erweiterung .sh ist für Shell-Skripte.
Rai.skumar
3
Bist du auf einem Unix-System? Denn sonst hilft dieses Skript nicht viel.
Melpomene

Antworten:

48

Wenn Sie Ihren zweiten Link in einem Browser öffnen, wird der Quellcode angezeigt:

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

Es ist also ein Bash-Skript. Hast du Linux?


In jedem Fall ist das Skript nichts anderes als eine Reihe von HTTP-Abrufen. Sowohl wget als auch curl sind für die meisten Betriebssysteme verfügbar, und fast alle Sprachen verfügen über HTTP-Bibliotheken, sodass das Umschreiben in jeder anderen Technologie ziemlich trivial ist. Es gibt auch einige Windows-Ports von Bash selbst (Git enthält einen). Last but not least bietet Windows 10 jetzt native Unterstützung für Linux-Binärdateien .

Álvaro González
quelle
3
Ich habe kein Linux, ich arbeite unter Windows 7. Steht dies nur Linux-Benutzern zur Verfügung?
Tony H
7
Es ist für die meisten Betriebssysteme (Linux, Unix, MacOS ...) außer Windows verfügbar.
Álvaro González
1
Ich habe ein wenig nach Bash-Skripten in Windows gesucht und es sieht so aus, als wäre dieses Thema ein wenig behandelt worden: stackoverflow.com/questions/6413377/… Ich werde Dinge ausprobieren, um zu sehen, wie es funktioniert.
Tony H
4
Hast du Linux? Beste Antwort des Tages
Adam Erickson
117

Was ist eine Datei mit der Erweiterung .sh?

Es ist ein Bourne-Shell-Skript . Sie werden in vielen Variationen von UNIX-ähnlichen Betriebssystemen verwendet. Sie haben keine "Sprache" und werden von Ihrer Shell (Interpreter von Terminalbefehlen) oder wenn die erste Zeile in der Form ist, interpretiert

#!/path/to/interpreter

Sie werden diesen bestimmten Dolmetscher verwenden. Ihre Datei hat die erste Zeile:

#!/bin/bash

und das bedeutet, dass es Bourne Again Shell verwendet, sogenannte Bash. Es ist für alle praktischen Zwecke ein Ersatz für gute alte sh.

Je nach Interpreter haben Sie eine andere Sprache, in der die Datei geschrieben ist.

Beachten Sie, dass in der UNIX-Welt nicht die Dateierweiterung die Datei bestimmt (siehe Ausführen eines Shell-Skripts).

Wenn Sie aus der Welt von DOS / Windows kommen, sind Sie mit Dateien vertraut, die die Erweiterungen .bat oder .cmd (Batch-Dateien) haben. Sie sind inhaltlich nicht ähnlich, aber im Design ähnlich.

So führen Sie ein Shell-Skript aus

Im Gegensatz zu einigen albernen Betriebssystemen stützt sich * nix nicht ausschließlich auf Erweiterungen, um zu bestimmen, was mit einer Datei geschehen soll. Berechtigungen werden ebenfalls verwendet. Dies bedeutet, dass wenn Sie versuchen, das Shell-Skript nach dem Herunterladen auszuführen, dies dem Versuch entspricht, eine beliebige Textdatei "auszuführen". Die Erweiterung ".sh" dient nur dazu, diese Datei zu erkennen.

Sie müssen die Datei ausführbar machen. Nehmen wir an, Sie haben Ihre Datei als heruntergeladen file.shund können sie dann in Ihrem Terminal ausführen:

chmod +x file.sh

chmodist ein Befehl zum Ändern der Dateiberechtigungen, +xsetzt Ausführungsberechtigungen (in diesem Fall für alle) und schließlich haben Sie Ihren Dateinamen.

Sie können dies auch in der GUI tun. Meistens können Sie mit der rechten Maustaste auf die Datei klicken und Eigenschaften auswählen. In XUbuntu sehen die Berechtigungsoptionen folgendermaßen aus:

Dateiberechtigungen in XUbuntu

Wenn Sie die Berechtigungen nicht ändern möchten. Sie können die Shell auch zwingen, den Befehl auszuführen. Im Terminal können Sie ausführen:

bash file.sh

Die Shell sollte dieselbe sein wie in der ersten Zeile Ihres Skripts.

Wie sicher ist es?

Es kann seltsam sein, dass Sie eine andere Aufgabe manuell ausführen müssen, um eine Datei auszuführen. Dies ist jedoch teilweise auf das starke Sicherheitsbedürfnis zurückzuführen.

Wenn Sie ein Bash-Skript herunterladen und ausführen, ist es im Grunde dasselbe, als würde Ihnen jemand sagen, dass "alle diese Befehle nacheinander auf Ihrem Computer ausgeführt werden. Ich verspreche, dass die Ergebnisse gut und sicher sind". Fragen Sie sich, ob Sie der Partei vertrauen, die diese Datei bereitgestellt hat, und ob Sie sicher sind, dass Sie die Datei von derselben Stelle heruntergeladen haben, an der Sie gedacht haben, und werfen Sie vielleicht sogar einen Blick hinein, um festzustellen, ob etwas nicht am richtigen Ort ist (obwohl dies erforderlich ist) dass Sie etwas über * nix-Befehle und Bash-Programmierung wissen).

Abgesehen von der obigen Warnung kann ich leider nicht Schritt für Schritt beschreiben, was Sie tun sollten, um zu verhindern, dass böse Dinge mit Ihrem Computer passieren. Denken Sie also daran, dass Sie jedes Mal, wenn Sie eine ausführbare Datei von jemandem erhalten und ausführen, sagen: "Sicher, Sie können meinen Computer verwenden, um etwas zu tun."

v010dya
quelle
9
Dies sollte die ausgewählte Antwort sein.
Pacerier
35

shDateien sind ausführbare Unix-Shell-Dateien (Linux). Sie entsprechen (aber sind viel leistungsfähiger) batDateien unter Windows.

Sie müssen es also von einer Linux-Konsole aus ausführen und den Namen genauso eingeben wie bei Bat-Dateien unter Windows.

Nelson
quelle
2
Abhängig vom spezifischen Betriebssystem müssen Sie möglicherweise ausführenchmod +x file.sh
Pranav A.
Ich würde sagen, Bash ist eher wie VBS für Windows, nicht Batch für Windows, da Batch eine DOS-Sprache war.
Wechseln Sie
4

In der Regel ist eine .sh-Datei ein Shell-Skript, das Sie in einem Terminal ausführen können. Insbesondere ist das von Ihnen erwähnte Skript ein Bash-Skript, das Sie sehen können, wenn Sie die Datei öffnen und in die erste Zeile der Datei schauen, die als Shebang- oder Magic-Zeile bezeichnet wird.

David Bauer
quelle
1

Ich weiß, dass dies eine alte Frage ist und ich werde wahrscheinlich nicht helfen, aber viele Linux-Distributionen (z. B. Ubuntu) haben eine "Live cd / usb" -Funktion. Wenn Sie dieses Skript wirklich ausführen müssen, können Sie versuchen, Ihren Computer zu starten in Linux. Brennen Sie einfach eine ISO-Datei auf ein Flash-Laufwerk (so http://goo.gl/U1wLYA ), starten Sie Ihren Computer mit angeschlossenem Laufwerk und drücken Sie die Taste F für das Startmenü. Wenn Sie "... USB ..." wählen, starten Sie das Betriebssystem, das Sie gerade auf das Laufwerk gelegt haben.

Sam
quelle
Die Datei wird jedoch nur in der Live-Version ausgeführt. Der Benutzer müsste Dateien zurück auf das Hauptbetriebssystem (Windows) kopieren.
Pranav A.
-2

Öffnen Sie den Speicherort im Terminal und geben Sie die folgenden Befehle ein: 1. chmod + x filename.sh 2. ./filename.sh das war's

PRAKHAR GUPTA
quelle