Artikelverzeichnis
Vorwort:
Als ich etwas über Raspberry Pi lernte, habe ich eine Zusammenfassung der ersten Schritte mit Bash-Skripten erstellt und diese in den folgenden drei Blogs zusammengefasst.
Das Buch, auf das ich mich damals bezog, war „Playing with Linux from Raspberry Pi“, und die folgende Linux-Lernreihe basierte auf „Brother Niaos Linux Private Kitchen Basics Learning Chapter“. 3,4,5
Letzteres ist detaillierter als Ersteres, daher sind die nächsten Blogs Ergänzungen zu den vorherigen drei.
Linux-Lernen [3] – Shell-Skript-Bash-Skript – Referenz zur Variablenzuweisung, mathematische Operationen und einfaches Schreiben von Skripten.
Linux-Lernen [4] – Shell-Skript-Bash-Skript – einfache Funktionen und Aufrufe.
Linux-Lernen [5] – Shell-Skript-Bash-Skript – Beurteilung und Wahl & Schleife
1. Bash-Funktion
Wenn wir in der Linux-Konsole ↑ ↓
drücken, können wir zwischen zuvor eingegebenen Befehlen wechseln. Dies liegt daran, dass Bash über die Befehlsbearbeitungsfunktion, also die Verlaufsfunktion, verfügt.
Wenn wir dieses Verzeichnis eingeben möchten /home/abcdefghijklmn/
, müssen wir es eigentlich nur eingeben /home/abcd+[tab]
, und die nachfolgenden Verzeichnisnamen werden automatisch vervollständigt. Wenn es mehrere Verzeichnisse gibt, die mit abcd beginnen, müssen Sie möglicherweise mehrmals die Tabulatortaste drücken, um alle ausfüllbaren Optionen aufzulisten. Geben Sie dann einige Zeichen ein und drücken Sie zum Abschluss die Tabulatortaste.
Diese Vervollständigungsfunktion ist tatsächlich eine der leistungsstarken Funktionen von Bash.
Wir ls -al
schließen versteckte Dateien ein, indem wir Details aller Dateien im aktuellen Verzeichnis auflisten. Der Hauptteil dieses Befehls ist ls
, gefolgt von zwei Optionen -a,-l
. Wir können das Ganze komplett lm nennen, zum Beispiel: alias lm='ls -al'
. Nach dieser Einstellung entspricht die nachfolgende Eingabe von lm der Eingabe von ls -al. Dieser Befehl ist relativ kurz und Sie sehen möglicherweise keinen Nutzen. Wenn er jedoch einige lange Befehle umfasst und später häufig verwendet werden muss, ist der Effekt der Verwendung eines Alias immer noch sehr erheblich.
Wenn wir ein bestimmtes Programm ausführen und es auf halbem Weg stoppen möchten, können wir es mit Strg + C stoppen. Dies ist die Verkörperung der Bash-Steuerungsfunktion.
Das einfache Bash-Skript, das ich zuvor geschrieben habe, ist eigentlich eine Art Shell-Skript und auch die programmatische Skriptfunktion von Bash.
Später beinhaltet Bash einige Pipeline-Befehle, sodass Platzhalter eine sehr wichtige Rolle spielen können. Tatsächlich haben viele der Codes, mit denen wir normalerweise in Kontakt kommen, universelle Zeichen, die beispielsweise *
beliebige Zeichen von 0 bis unendlich darstellen.
Einige Tipps für Bash:
1. Wenn wir beispielsweise cd
Befehle verwenden, um ein sehr, sehr vielschichtiges Verzeichnis aufzurufen, ist eine Zeile oft dicht geschrieben und das Ganze ist unordentlich. Dann können wir \+[enter]
die Methode verwenden, um neue Zeilen einzugeben.
Der folgende Effekt ist äquivalent zu cd xxxxxxxxxx/yyyy-xilinx-5.24/gcc-linux-ar
, natürlich kann er in ein paar weitere Zeilen unterteilt werden, um ihn organisierter erscheinen zu lassen.
2. Wenn der Befehl, den Sie eingeben müssen, besonders lang ist oder Sie eine Reihe falscher Befehle eingegeben haben, möchten Sie außerdem schnell die gesamte Befehlsreihe löschen. Im Allgemeinen drücken wir die Entf-Taste.
Tastenkombination | Funktion |
---|---|
[Strg]+U/[Strg]+K | Sie sollen die Befehlszeichenfolge vorwärts vom Cursor löschen ([Strg]+u) und die Befehlszeichenfolge rückwärts löschen ([Strg]+k). |
[Strg]+a/[Strg]+e | Bewegen Sie den Cursor an den Anfang ([Strg]+a) bzw. an das Ende ([Strg]+e) der gesamten Befehlszeichenfolge. |
2. Variablen
2.1 Variablenzuweisung
Verwenden Sie echo, um Variablen auszugeben, und fügen Sie eins vor der Variablen hinzu, $
um den Wert der Variablen zu erhalten.
Zum Beispiel unsere häufig verwendeten Anweisungen:echo $PATH
Auf das $-Symbol dieser Anweisung folgt jedoch ein Variablenname. Auf Zeichen kann der Variablenname nicht direkt folgen. Wenn der Wert der PATH-Variablen ausgegeben und IS verwendet wird, ist dieser falsch, was bedeutet, dass
der echo $PATHIS
Wert PATHIS
der Variable wird ausgegeben.
Für diese Situation müssen wir im Allgemeinen Ausgabevariablen hinzufügen {}
.
Zum Beispiel das Folgendeecho ${PATH}IS
Variablen werden im Allgemeinen mit dem Gleichheitszeichen zugewiesen. Es gibt viele Anwendungsszenarien bei der Zuweisung von Werten. Hier ist eine Tabelle zur einfachen Übersicht.
Beispiel | Bedienungsanleitung |
---|---|
meinname=edwinwzy | Weisen Sie einer Variablen myname einen Wert zuedwinwzy |
错误示例: meinname = edwinwzy |
Auf beiden Seiten des Gleichheitszeichens dürfen keine Leerzeichen direkt platziert werden. |
错误示例: 1myname=edwinwzy |
Variablennamen können nur englische Buchstaben und Zahlen sein, das erste Zeichen darf jedoch keine Zahl sein. |
meinname=edwinwzy\$ | Hier wird myname der Wert edwinwzy$ zugewiesen, es handelt sich jedoch $ um ein Sonderzeichen, sodass es \ zur Umwandlung in ein allgemeines Zeichen verwendet werden . |
meinname=$(uname -r) | Wir können den Ausgabeinhalt einer Anweisung auch als Wert einer Variablen verwenden $ , um den Wert zu erhalten |
PATH=${PATH}:/home/bin | Wenn wir unter Linux Umgebungsvariablen hinzufügen, können wir diese Zuweisungsmethode verwenden, um sie zu akkumulieren, dh den folgenden Inhalt zum ursprünglichen PATH hinzuzufügen. |
export myname | Nachdem die Variable zugewiesen wurde, können wir die Variable durch Exportieren zu einer Umgebungsvariablen machen, sodass andere Bahs-Skripte diese Variable verwenden können. |
2.2 Nicht gesetzte Abbruchvariablen
Wenn Sie einige Variablen falsch gesetzt haben und diese nicht mehr verwenden möchten, können Sie sie mit unset abbrechen.
Die allgemeine Verwendung ist unset 变量名
zum Beispiel:unset myname
2.3 Umgebungsvariablen
Mein persönliches Verständnis von Umgebungsvariablen ist, dass das System erkennen kann, welcher Funktion Ihr Befehl entspricht, wenn Sie einen Befehl in das Terminal eingeben.
Wenn Sie beispielsweise ein Cross-Compilation-Chain-Tool manuell installieren, müssen GCC und GDB manuell zur Umgebungsvariablen PATH (Suchpfad für ausführbare Dateien) hinzugefügt werden, damit das System dies weiß, wenn Sie gcc -v auf der Konsole eingeben welche Version von gcc Sie überprüfen möchten.
Der zum Anzeigen von Umgebungsvariablen verwendete Befehl lautet env
. Beispielsweise können wir ihn in die virtuelle Maschine eingeben env
, um alle Variablen und ihren Inhalt der aktuellen Shell-Umgebung anzuzeigen.
Das Folgende ist ein Abfangen des Inhalts nach der Eingabe von env. Sie können sehen, dass PATH auch eine Art Umgebungsvariable ist.
Einige der Felder werden im Folgenden erläutert:
Feldname | Bedeutung |
---|---|
HEIM | Home-Ordner des Benutzers |
HÜLSE | Welches SHELL-Programm wird in der aktuellen Umgebung verwendet, d. h. handelt es sich um ein /bin/bash-Skript oder ein anderes Skriptprogramm? |
HISTSIZE | Anweisungen zur Historie. Die Anzahl der von uns eingegebenen Werte, die das System speichert, wird dadurch bestimmt. |
WEG | : Suchpfad für ausführbare Dateien, getrennt nach Verzeichnissen |
SPRACHE | Sprachfamilie. Mein Ubuntu hier ist standardmäßig en_US.UTF-8 und die Kodierungsmethoden für verschiedene Sprachfamilien sind unterschiedlich. Der A-Code ist beispielsweise AaBbCc…Zz; der B-Code ist ABCD…Zabcd…z. Unterschiedliche Codes führen zu Unterschieden in der Art und Weise, wie der Programmcode geschrieben wird. |
{ Variablenbereich }
Unsere benutzerdefinierten Variablen werden zu benutzerdefinierten Variablen.
Wenn man die Analogie der Variablen in der C-Sprache verwendet, ist der Unterschied zwischen Umgebungsvariablen und benutzerdefinierten Variablen wahrscheinlich der Unterschied zwischen globalen Variablen und lokalen Variablen.
Benutzerdefinierte Variablen können durch Export in Umgebungsvariablen umgewandelt werden und von Unterprogrammen referenziert werden.
Zusammenfassen
Dieser Blog extrahiert einige Inhalte zu Bash-Variablen aus dem Buch und zeichnet sie auf der Grundlage meiner eigenen Lernerfahrung auf. Ich habe hier keine ungewöhnliche Verwendung aufgezeichnet.