GNU/Linux >> LINUX-Kenntnisse >  >> Linux

Was ist eine .sh-Datei?

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) interpretiert oder wenn die erste Zeile in der Form

ist
#!/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, sogenannte Bash, verwendet. Es ist praktisch ein Ersatz für das gute alte Sch.

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

Denken Sie daran, dass es in der UNIX-Welt nicht die Erweiterung der Datei ist, die bestimmt, was die Datei ist (siehe So führen Sie ein Shell-Skript aus).

Wenn Sie aus der DOS/Windows-Welt kommen, kennen Sie Dateien mit der Endung .bat oder .cmd (Batch-Dateien). Inhaltlich sind sie nicht ähnlich, aber im Design ähnlich.

So führen Sie ein Shell-Skript aus

Im Gegensatz zu einigen dummen Betriebssystemen verlässt sich *nix nicht ausschließlich auf Erweiterungen, um zu bestimmen, was mit einer Datei geschehen soll. Berechtigungen werden ebenfalls verwendet. Das bedeutet, wenn Sie versuchen, das Shell-Skript nach dem Herunterladen auszuführen, entspricht dies dem Versuch, 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 file.sh heruntergeladen , können Sie dann in Ihrem Terminal ausführen:

chmod +x file.sh

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

Sie können es auch in GUI tun. Meistens können Sie mit der rechten Maustaste auf die Datei klicken und Eigenschaften auswählen, in XUbuntu sehen die Berechtigungsoptionen so aus:

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

bash file.sh

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

Wie sicher ist es?

Möglicherweise finden Sie es seltsam, dass Sie eine andere Aufgabe manuell ausführen müssen, um eine Datei auszuführen. Dies liegt jedoch teilweise an dem starken Sicherheitsbedürfnis.

Wenn Sie ein Bash-Skript herunterladen und ausführen, ist das im Grunde dasselbe, als würde Ihnen jemand sagen:"Führen Sie alle diese Befehle nacheinander auf Ihrem Computer aus, ich verspreche, dass die Ergebnisse gut und sicher sind". Fragen Sie sich, ob Sie der Partei vertrauen, die diese Datei bereitgestellt hat, fragen Sie sich, ob Sie sicher sind, dass Sie die Datei von der gleichen Stelle heruntergeladen haben, wie Sie dachten, werfen Sie vielleicht sogar einen Blick hinein, um zu sehen, ob etwas fehl am Platz aussieht (obwohl dies erforderlich ist dass Sie etwas über *nix-Befehle und Bash-Programmierung wissen).

Abgesehen von der obigen Warnung kann ich leider keine Schritt-für-Schritt-Beschreibung dessen geben, was Sie tun sollten, um zu verhindern, dass Ihrem Computer böse Dinge 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."


Wenn Sie Ihren zweiten Link in einem Browser öffnen, sehen Sie den Quellcode:

#!/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. Haben Sie 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 haben HTTP-Bibliotheken, sodass es ziemlich trivial ist, sie in jeder anderen Technologie umzuschreiben. Es gibt auch einige Windows-Portierungen von bash selbst (git enthält eine). Nicht zuletzt bietet Windows 10 jetzt native Unterstützung für Linux-Binärdateien.


sh Dateien sind ausführbare Unix (Linux) Shell-Dateien, sie sind das Äquivalent (aber viel leistungsfähiger) von bat Dateien unter Windows.

Sie müssen es also von einer Linux-Konsole ausführen, indem Sie einfach seinen Namen eingeben, genau wie bei bat-Dateien unter Windows.


Linux
  1. Was ist eine .so.2-Datei?

  2. Was ist usage() im Shell-Scripting?

  3. Was ist eine .so-Datei?

  4. Kann eine .sh-Datei Malware sein?

  5. cp-L vs. cp-H

Was ist umask unter Linux?

Was ist die Shell unter Linux?

Was ist php.ini?

Was ist Subshell in Linux?

Was ist die Login-Shell in Linux?

Was ist eine .bashrc-Datei unter Linux?