Es ist in der Tat etwas seltsam, die „Eröffnung“ im letzten Abschnitt zu schreiben. Der Anfang des ersten Artikels (Numerische Operationen) ist jedoch eigentlich eine kleine Eröffnung. Es wird erwähnt, dass die gesamte Serie eine gewisse Grundlage der Shell-Programmierung erfordert, um es Lesern zu ermöglichen, die keine Grundlagen der Shell-Programmierung haben Als ich diese Serie las, kam ich zum Schluss und musste dieses Eröffnungskapitel neu schreiben. Das Eröffnungskapitel stellt hauptsächlich vor, was Shell ist, die Shell-Betriebsumgebung, grundlegende Shell-Syntax und Debugging-Kenntnisse.
Schauen wir uns zunächst die Position von Shell im gesamten Betriebssystem anhand der folgenden Abbildung an. Der äußere Kreis der Abbildung beschreibt das gesamte Betriebssystem (z
Debian/Ubuntu/Slackwareusw.), der innere Kreis beschreibt den Kern des Betriebssystems (z. B.
Linux-Kernel),Und
HülseUnd
GUIDient auch als Schnittstelle zwischen dem Benutzer und dem Betriebssystem.
GUIBietet eine grafische Benutzeroberfläche, die sehr einfach zu bedienen und zu erlernen ist
HülseEs stellt Benutzern eine Befehlszeilenschnittstelle zur Verfügung, empfängt die Tastatureingaben des Benutzers, analysiert und führt die Befehle in der Eingabezeichenfolge aus und gibt dann die Ausführungsergebnisse an den Benutzer zurück. Die Verwendung ist möglicherweise komplizierter, beansprucht jedoch weniger Ressourcen , Darüber hinaus kann die Arbeitseffizienz verbessert werden, nachdem man sich mit der Bedienung vertraut gemacht hat, und es verfügt über die Funktion der Stapelverarbeitung, sodass es in einigen Anwendungen sehr beliebt ist.
HülseAls Benutzeroberfläche handelt es sich tatsächlich um einen Interpreter (z. B. in
LinuxDie folgenden werden häufiger verwendet
Bash), können wir den Strom anzeigen
Hülse:
$ echo $Shell/bin/bash$ ls -l /bin/bash-rwxr-xr-x 1 root root 702160 2008-05-13 02:33 /bin/bash
Der Interpreter kann nicht nur einfache Befehle interpretieren, sondern auch eine Datei mit einer bestimmten Syntaxstruktur, die als Skript bezeichnet wird. Wie es diese Befehle und Skriptdateien konkret interpretiert, wird hier nicht ausführlich analysiert. Bitte lesen Sie einen anderen Artikel, den ich 2008 geschrieben habe: „Der Moment der Programmausführung auf der Linux-Befehlszeile.“
Da das Programm Dateien mit einer bestimmten grammatikalischen Struktur interpretieren kann, können wir beim Schreiben einer bestimmten Grammatik folgen. Welche Art von Grammatik hat es, wie wird es ausgeführt und wie wird es debuggt? Unten verwenden wir
BashLassen Sie uns diese Aspekte anhand eines Beispiels diskutieren.
Um die folgenden Übungen zu erleichtern, richten wir zunächst eine grundlegende Betriebsumgebung ein: In einem Linux-Betriebssystem gibt es eine laufende
BashDie Befehlszeile wartet darauf, dass wir den Befehl eingeben. Diese Befehlszeile kann sich unter der grafischen Oberfläche befinden.
Terminal(Zum Beispiel
UbuntuSehr kraftvoll
Terminator), oder es kann eine Zeichenschnittstelle sein
Konsole(kann verwendet werden
STRG+ALT+F1~6umschalten), wenn Sie den Strom finden
HülseNEIN
Bash, bitte ersetzen Sie es durch:
$ chsh $USER -s /bin/bash$ su $USER
Oder geben Sie einfach Bash ein:
$ bash$ echo $Shell # /bin/bash bestätigen
Wenn Sie kein Linux-Betriebssystem installiert haben, können Sie auch die Nutzung virtueller Linux-Experimentierdienste in Betracht ziehen, die von einigen öffentlichen Communities bereitgestellt werden und im Allgemeinen Remote-Dienste bereitstellen
Hülse, du kannst passieren
Telnetoder ist
PsstMelden Sie sich zum Üben beim Client an.
Wie führt man in der grundlegenden Betriebsumgebung die vom Benutzer eingegebenen Befehle oder die vom Benutzer geschriebenen Skriptdateien aus?
?
Angenommen, wir haben ein Shell-Skript namens geschrieben
test.sh.
Die erste Möglichkeit besteht darin, sicherzustellen, dass der von uns ausgeführte Befehl über ausführbare Berechtigungen verfügt, und dann den Befehl direkt einzugeben, um ihn auszuführen:
$ chmod +x /path/to/test.sh$ /path/to/test.sh
Die zweite Methode besteht darin, das Skript direkt als zu schreiben
BashDie Parameter des Interpreters werden übergeben in:
$ bash /path/to/test.sh
oder
$ Quelle /path/to/test.sh
oder
$ ./path/to/test.sh
Eines zuerst
Hallo WeltProgramm.
Lassen Sie uns die Grundstruktur eines Shell-Programms vorstellen
Hallo WeltZum Beispiel:
#!/bin/bash -v# test.shecho Hallo Welt
Speichern Sie den obigen Code unter
test.sh, und führen Sie es dann auf die oben genannten zwei verschiedenen Arten aus. Sie können die folgenden Auswirkungen sehen.
Methode eins:
$ chmod +x test.sh$ ./test.sh ./test.sh #!/bin/bash -v echo Hallo Welt Hallo Welt
Methode zwei:
$ bash test.shHello, World$ Quelle test.shHello, World$
Wir haben festgestellt, dass es einen Unterschied zwischen den beiden Laufergebnissen gibt. Warum? Hier müssen wir aufpassen
test.shDer Inhalt der Datei besteht nur aus zwei Zeilen, die zweite Zeile wird gedruckt
Hallo WeltBeide Methoden erfüllen ihren Zweck, aber die erste Methode druckt mehr Inhalt der Skriptdatei selbst. Warum?
Der Grund liegt in der ersten Zeile der Datei. Wenn wir die Skriptdatei direkt ausführen, weist diese Zeile das Betriebssystem an, es zu verwenden
#!Der Interpreter und die entsprechenden Parameter nach dem Symbol werden zur Interpretation der Skriptdatei verwendet. Durch die Analyse der ersten Zeile haben wir festgestellt, dass der entsprechende Interpreter und die entsprechenden Parameter vorhanden sind
/bin/bash -v,Und
-vEs geht zwar darum, den Quellcode des Programms auszudrucken, aber wir haben ihn bei der zweiten Methode nicht angegeben.
BashÜbergeben Sie alle zusätzlichen Argumente, damit einfach die Skriptdatei selbst interpretiert wird.
Weitere Syntaxdetails finden Sie direkt in den „Shell Programming Study Notes“, Anhang 1 am Ende dieses Buches.
Die Shell-Sprache ist eine interpretierte Sprache und ihr Programmierprozess unterscheidet sich etwas von dem kompilierter Sprachen. Der grundlegende Prozess ist wie folgt:
Entwurfsalgorithmus
Verwenden Sie Shell, um Skripte zur Implementierung von Algorithmen zu schreiben
Führen Sie das Skript direkt aus
Es ist ersichtlich, dass es nicht über den mühsamen Kompilierungs- und Verknüpfungsprozess kompilierter Sprachen verfügt, aber genau aus diesem Grund ist das Debuggen nicht sehr praktisch, wenn ein Fehler auftritt, da zur Laufzeit Syntaxfehler und Logikfehler auftreten. Im Folgenden stellen wir kurz die Debugging-Methode vor.
Sie können direkt auf Folgendes verweisen: Shell-Skript-Debugging-Technologie oder BASH-Debugging-Methode.
Als interpretierte Sprache kann die Shell-Sprache eine große Anzahl vorhandener Tools verwenden, darunter numerische Berechnungen, symbolische Verarbeitung, Dateioperationen, Netzwerkoperationen usw. Daher ist der Schreibprozess möglicherweise effizienter, aber da er interpretiert wird, ist er erforderlich Während des Prozesses kann das ständige Aufrufen externer Programme von der Festplatte und das Wechseln zwischen Prozessen Nachteile in Bezug auf die Betriebseffizienz haben. Daher sollten wir uns je nach Anwendung für die Verwendung von Shell oder anderen Sprachen entscheiden.
Der Moment, in dem das Programm auf der Linux-Befehlszeile ausgeführt wird
Studiennotizen zur Linux-Shell-Programmierung
Shell-Skript-Debugging-Technologie
BASH-Debugging-Methoden