Schrift von Shell

Eine Schale-Schrift ist eine Schrift, die für die Schale oder Befehl-Liniendolmetscher von einem Betriebssystem geschrieben ist. Die Schale wird häufig als eine einfache bereichsspezifische Programmiersprache betrachtet. Typische durch Schale-Schriften durchgeführte Operationen schließen Dateimanipulation, Programm-Ausführung und Drucktext ein.

Viele Schale-Schrift-Dolmetscher verdoppeln sich als Befehl-Linienschnittstelle, wie die verschiedenen Schalen von Unix, Windows PowerShell oder das MS-DOS. Andere, wie AppleScript oder der grafische Windows-Schrift-Gastgeber (WScript.exe), fügen scripting Fähigkeit zu Rechenumgebungen hinzu, ohne eine Befehl-Linienschnittstelle zu verlangen. Andere Beispiele von Programmiersprachen, die in erster Linie für die Schale scripting beabsichtigt sind, schließen DCL und JCL ein.

Fähigkeiten

Abkürzungen

In seiner grundlegendsten Form kann eine Schale-Schrift eine günstige Schwankung eines Systembefehls zur Verfügung stellen, wo spezielle Umgebungseinstellungen, Befehl-Optionen, oder Postverarbeitung automatisch, aber in einem Weg angewandt wird, der der neuen Schrift erlaubt, noch als ein völlig normaler Befehl von Unix zu handeln.

Ein Beispiel würde eine Version von ls, der Befehl schaffen sollen, Dateien zu verzeichnen, ihm einen kürzeren Befehl-Namen dessen gebend, der normalerweise in einem Verzeichnis eines Benutzers als, und ein Verzug-Satz von vorgelieferten Befehl-Optionen gespart würde.

  1. !/bin/sh

LC_COLLATE=C ls-FCas "$"

</Quelle>

Hier zeigt die erste Linie (Bude) das an, welcher Dolmetscher verwendet werden sollte, um den Rest der Schrift durchzuführen, und die zweite Linie eine Auflistung mit Optionen für Dateiformat-Hinweise, Säulen, alle Dateien (keines Weggelassenes), und eine Größe in Blöcken macht. Die Sätze die Verzug-Vergleichungsordnung, Groß- und Kleinschreibung zusammen und die Ursachen irgendwelche Rahmen nicht zu falten, die gegeben sind, als Rahmen zu ls durchgeführt zu werden, so dass alle normalen Optionen und andere ls bekannte Syntax noch verwendet werden können.

Der Benutzer würde dann im Stande sein, einfach für die meistens verwendete kurze Auflistung zu verwenden.

Ein anderes Beispiel einer Schale-Schrift, die als eine Abkürzung verwendet werden konnte, würde eine Liste aller Dateien oder Verzeichnisses [s] innerhalb eines gegebenen Verzeichnisses drucken sollen.

!/bin/sh

klarer

ls-l-a

</Quelle>

In diesem Fall würde die Schale-Schrift mit seiner normalen Startlinie dessen anfangen. Im Anschluss daran führt die Schrift den Befehl durch, der Terminal des ganzen Textes vor dem Gehen zur folgenden Linie klärt. Die folgende Linie stellt die Hauptfunktion der Schrift zur Verfügung. Der Befehl verzeichnet die Dateien und Verzeichnisse, die im Verzeichnis sind, in dem die Schrift geführt wird. Die Befehl-Attribute konnten geändert werden, um die Bedürfnisse nach dem Benutzer zu widerspiegeln.

Gruppe-Jobs

Schriften von Shell erlauben mehrere Befehle, in die manuell an einer Befehl-Linienschnittstelle eingegangen würde, die automatisch durchzuführen ist, und ohne auf einen Benutzer warten zu müssen, um jede Bühne der Folge auszulösen. Zum Beispiel, in einem Verzeichnis mit drei C Quellcodedateien, anstatt die vier Befehle manuell zu führen, die erforderlich sind, das Endprogramm von ihnen zu bauen, konnte man stattdessen eine C-Schale-Schrift schaffen, die hier genannt und im Verzeichnis mit ihnen behalten ist, die sie automatisch kompilieren würden:

  1. !/bin/csh

das Echo-Kompilieren...

Cc-c foo.c

Cc-c bar.c

Cc-c qux.c

Cc-o myprog foo.o bar.o qux.o

getanes Echo.

</Quelle>

Die Schrift würde einem Benutzer erlauben, die Datei zu sparen, die wird editiert, der Redakteur Pause zu machen, und dann gerade zu laufen, um das aktualisierte Programm zu schaffen, es zu prüfen, und dann zum Redakteur zurückzukehren. Seit den 1980er Jahren oder so, jedoch, sind Schriften dieses Typs durch Dienstprogramme ersetzt worden mögen machen, die spezialisiert werden, um Programme zu bauen.

Generalisation

Einfache Gruppe-Jobs sind für isolierte Aufgaben ziemlich üblich, aber Schale-Schleifen verwendend, stellen Tests und Variablen viel mehr Flexibilität Benutzern zur Verfügung. Ein Heftiger Schlag (Schale von Unix) Schrift, um JPEG Images zu PNG Images umzuwandeln, wo die Bildtitel auf der Befehl-Linie - vielleicht über Wildcards - statt jedes zur Verfügung gestellt werden, innerhalb der Schrift verzeichnet werden, kann mit dieser Datei geschaffen werden, die normalerweise in einer Datei wie gespart ist

  1. !/bin/bash

für jpg im "$"; tun Sie # verwenden $jpg im Platz jedes Dateinamens gegeben, der Reihe nach

png =" $ {jpg%.jpg}.png" # finden die PNG Version des Dateinamens durch das Ersetzen.jpg mit.png

das Echo-Umwandeln "$jpg"... # Produktionsstatus-Info dem Benutzer, der die Schrift führt

wenn Bekehrter "$jpg" jpg.to.png; dann # verwenden das Bekehrter-Programm (üblich in Linux), um den PNG in einer Zeitsekretärin-Datei zu schaffen

mv jpg.to.png "$png" #, wenn es gearbeitet hat, benennen Sie das vorläufige PNG Image zum richtigen Namen um

sonst # beklagen sich... sonst und gehen aus der Schrift ab

Echo 'Fehler: Erfolglose Produktion hat in "jpg.to.png" gespart.'

1>&2

herrschen Sie über 1

fi # das Ende "wenn" Testkonstruktion

getan # das Ende "für" die Schleife

hallen Sie alle Konvertierungen erfolgreich # erzählen dem Benutzer die guten Nachrichten

herrschen Sie über 0

</Quelle>

Der Befehl kann dann auf einem kompletten Verzeichnis geführt werden, das mit JPEG Images mit gerade voll

ist

Wahrscheinlichkeit

Ein Hauptmerkmal von Schale-Schriften ist, dass die Beschwörung ihrer Dolmetscher als eine Kernbetriebssystemeigenschaft behandelt wird. So aber nicht eine Schale eines Benutzers, die nur im Stande ist, Schriften auf der Sprache dieser Schale oder eine Schrift nur durchzuführen, die seine Dolmetscher-Direktive richtig behandelt, wenn es von einer Schale geführt wurde (von denen beide Beschränkungen im frühen Bach-Schale-Berühren von Schriften waren), Schale-Schriften werden aufgestellt und durch den OS selbst durchgeführt. Eine moderne Schale-Schrift ist nicht nur auf demselben Stand, wie System befiehlt, aber eher sind viele Systembefehle wirklich Schale-Schriften (oder mehr allgemein, Schriften, da einige von ihnen durch eine Schale, aber stattdessen von Perl, Pythonschlange oder einer anderen Sprache nicht interpretiert werden). Das streckt sich bis zu das Zurückbringen von Ausgangscodes wie andere Systemdienstprogramme aus, um Erfolg oder Misserfolg anzuzeigen, und erlaubt ihnen, als Bestandteile von größeren Programmen unabhängig davon genannt zu werden, wie jene größeren Werkzeuge durchgeführt werden.

Wie Standardsystembefehle lassen Schale-Schriften klassisch jede Art des Dateiformates, wenn nicht beabsichtigt, weg, in eine laufende Schale durch einen speziellen Mechanismus für diesen Zweck gelesen zu werden (solcher als 's"", oder 's).

Programmierung

Viele moderne Schalen liefern auch verschiedene Eigenschaften gewöhnlich hat nur auf hoch entwickelteren Mehrzweckprogrammiersprachen, wie Kontrollfluss-Konstruktionen, Variablen, Anmerkungen, Reihe, Unterprogramme und so weiter gefunden. Mit diesen Sorten von verfügbaren Eigenschaften ist es möglich, vernünftig hoch entwickelte Anwendungen als Schale-Schriften zu schreiben. Jedoch werden sie noch durch die Tatsache beschränkt, dass die meisten Schale-Sprachen wenig oder keine Unterstützung für tippende Datensysteme, Klassen, das Einfädeln, die komplizierte Mathematik und die anderen allgemeinen vollen Spracheigenschaften haben, und auch allgemein viel langsamer sind als kompilierter Code oder interpretierte Sprachen, die mit der Geschwindigkeit als eine Leistungsabsicht geschrieben sind.

Andere scripting Sprachen

Viele starke scripting Sprachen sind für Aufgaben eingeführt worden, die zu groß oder kompliziert sind, um mit gewöhnlichen Schale-Schriften bequem behandelt zu werden, aber für den die Vorteile einer Schrift wünschenswert sind und würde die Entwicklung oben einer voll aufgeblühten, kompilierten Programmiersprache nachteilig sein. Die Details dessen, was scripting Sprachen von Programmiersprachen auf höchster Ebene trennt, sind eine häufige Quelle der Debatte. Aber im Allgemeinen ist eine scripting Sprache diejenige, die einen Dolmetscher verlangt.

Lebenszyklus

Schriften von Shell dienen häufig als eine anfängliche Bühne in der Softwareentwicklung, und sind häufig der Konvertierung später zu einer verschiedenen zu Grunde liegenden Durchführung unterworfen, meistens zu Perl, Pythonschlange oder C umgewandelt. Die Dolmetscher-Direktive erlaubt dem Durchführungsdetail, innerhalb der Schrift völlig verborgen zu werden, anstatt als ein Dateiformat ausgestellt zu werden, und sorgt für nahtlose Wiederdurchführung auf verschiedenen Sprachen ohne Einfluss auf Endbenutzer.

Vorteile und Nachteile

Häufig ist das Schreiben einer Schale-Schrift viel schneller als das Schreiben des gleichwertigen Codes auf anderen Programmiersprachen. Die vielen Vorteile schließen leichtes Programm oder Dateiauswahl, schnellen Anfang und das interaktive Beseitigen ein. Eine Schale-Schrift kann verwendet werden, um einen sequencing und Beschlussfassungsverbindung um vorhandene Programme zur Verfügung zu stellen, und für gemäßigt große Schriften ist die Abwesenheit eines Kompilationsschritts ein Vorteil. Das interpretierende Laufen macht es leicht, Beseitigen-Code in eine Schrift zu schreiben und es zu wiederholen, um Programmfehler zu entdecken und zu bestechen. Nichterfahrene Benutzer können scripting verwenden, um das Verhalten von Programmen zu schneidern, und scripting zu schälen, stellt ein beschränktes Spielraum für die Mehrverarbeitung zur Verfügung.

Andererseits ist Schale scripting für kostspielige Fehler anfällig. Unachtsame Tippfehler solcher als (statt des beabsichtigten) sind Volkskunde in der Gemeinschaft von Unix; ein einzelner Extraraum wandelt den Befehl von demjenigen um, der alles in den Unterverzeichnissen zu demjenigen löscht, das alles löscht — und auch versucht, alles im Wurzelverzeichnis zu löschen. Ähnliche Probleme können sich verwandeln und zu gefährlichen Waffen, und der Missbrauch des Umadressierens kann den Inhalt einer Datei löschen. Das wird problematischer durch die Tatsache gemacht, dass sich viele UNIX-Befehle im Namen durch nur einen Brief unterscheiden: usw.

Ein anderer bedeutender Nachteil ist die langsame Ausführungsgeschwindigkeit und das Bedürfnis, einen neuen Prozess für fast jeden durchgeführten Schale-Befehl zu starten. Wenn ein Job einer Schrift durch die Aufstellung einer Rohrleitung vollbracht werden kann, in der effiziente Filterbefehle den grössten Teil der Arbeit durchführen, wird die Verlangsamung gelindert, aber eine komplizierte Schrift ist normalerweise mehrere Größenordnungen langsamer als ein herkömmliches kompiliertes Programm, das eine gleichwertige Aufgabe durchführt.

Es gibt auch Vereinbarkeitsprobleme zwischen verschiedenen Plattformen. Larry Wall, Schöpfer von Perl, hat berühmt geschrieben, dass "Es leichter ist, eine Schale zu tragen, als eine Schale-Schrift."

Ähnlich können kompliziertere Schriften in die Beschränkungen der Schale scripting Sprache selbst geraten; die Grenzen machen es schwierig, Qualitätscode zu schreiben, und Erweiterungen durch verschiedene Schalen, um Probleme mit der ursprünglichen Schale-Sprache zu verbessern, können Probleme schlechter machen.

Viele Nachteile, einige Schrift-Sprachen zu verwenden, werden durch Designfehler innerhalb der Sprachsyntax oder Durchführung verursacht, und werden durch den Gebrauch einer textbasierten Befehl-Linie nicht notwendigerweise auferlegt; es gibt mehrere Schalen, die andere Schale-Programmiersprachen oder sogar flügge Sprachen wie Scsh verwenden (der Schema verwendet).

Siehe auch

  • Leim-Code
  • Dolmetscher-Direktive
  • Bude-Symbol (#!)
  • Unix schält
  • Windows PowerShell
  • Windows-Schrift-Gastgeber

Links


Cyanoacrylate / Untertitel
Impressum & Datenschutz