Ein tiefes Verständnis der spitzen Klammern in Bash (für Anfänger)

Ein tiefes Verständnis der spitzen Klammern in Bash (für Anfänger)

Vorwort

Bash verfügt über viele wichtige integrierte Befehle wie ls, cd und mv sowie viele nützliche Tools wie grep, awk und sed. Darüber hinaus gibt es in Bash jedoch auch viele Satzzeichen, die als Bindeglied fungieren können, wie etwa der Punkt (.), das Komma (,), Klammern (<>), Anführungszeichen (") usw. Als Nächstes werfen wir einen Blick auf die spitzen Klammern (<>), die zur Datenkonvertierung und -übertragung verwendet werden können.

Datenübertragung

Wenn Sie sich mit anderen Programmiersprachen auskennen, wissen Sie, dass spitze Klammern < und > im Allgemeinen als logische Operatoren verwendet werden, um das Größenverhältnis zwischen zwei Werten zu vergleichen. Wenn Sie noch HTML schreiben, sind Ihnen spitze Klammern als Teil verschiedener Tags vertraut.

In Shell-Skripten können spitze Klammern verwendet werden, um Daten von einem Ort zum anderen zu übertragen. Sie können Daten beispielsweise in einer Datei wie dieser speichern:

ls > dir_content.txt

Im obigen Beispiel weist das Symbol > die Shell an, die Ausgabe des Befehls ls in dir_content.txt zu schreiben, anstatt sie direkt auf der Befehlszeile anzuzeigen. Beachten Sie, dass Bash die Datei „dir_content.txt“ für Sie erstellt, wenn sie nicht vorhanden ist. Wenn es sich bei „dir_content.txt“ jedoch um eine vorhandene, nicht leere Datei handelt, wird ihr Inhalt überschrieben. Seien Sie also vorsichtig, bevor Sie ähnliche Vorgänge durchführen.

Sie können auch >> statt > verwenden, um neue Daten an das Ende der Datei anzuhängen, ohne vorhandene Daten zu überschreiben. Zum Beispiel:

ls $HOME > dir_content.txt; wc -l dir_content.txt >> dir_content.txt

Bei dieser Befehlsreihe wird zunächst der Inhalt des Home-Verzeichnisses in die Datei dir_content.txt geschrieben, anschließend wird die Zeilenanzahl in der Datei dir_content.txt (also die Anzahl der Dateien im Home-Verzeichnis) mit wc -l berechnet und an das Ende von dir_content.txt angehängt.

Nach der Ausführung des obigen Befehls auf meinem Computer sieht der Inhalt von dir_content.txt wie folgt aus:

Anwendungen
bin
Wolke
Desktop
Unterlagen
Downloads
Spiele
ISOs
Bibliothek
Protokolle
Musik
OpenSCAD
Bilder
Öffentlich
Vorlagen
test_dir
Videos
17 dir_content.txt

Sie können sich > und >> als Pfeile vorstellen. Natürlich kann die Richtung dieses Pfeils auch umgekehrt sein. Beispielsweise werden in der Datei CBActors einige Schauspieler der Coen-Brüder und die Häufigkeit ihrer Auftritte in den Filmen wie folgt gespeichert:

John Goodman 5
John Turturro 3
George Clooney 2
Frances McDormand 6
Steve Buscemi 5
Jon Polito 4
Tony Shalhoub 3
James Gandolfini 1

Sie können den Befehl wie folgt ausführen:

sortieren < CBActors
Frances McDormand 6 # Sie erhalten eine Ausgabe wie diese George Clooney 2
James Gandolfini 1
John Goodman 5
John Turturro 3
Jon Polito 4
Steve Buscemi 5
Tony Shalhoub 3

Mit dem Befehl „Sortieren“ können Sie sich diese Liste alphabetisch geordnet ausgeben lassen. Der Sortierbefehl kann jedoch bereits eine Datei als Argument akzeptieren, sodass die Verwendung von < hier überflüssig wäre und die direkte Ausführung von sort CBActors das gewünschte Ergebnis liefern würde.

Wenn Sie wissen möchten, wer der Lieblingsschauspieler der Coen-Brüder ist, erfahren Sie hier, wie Sie es herausfinden können. Erste:

während lesen Name Nachname Filme; mache echo $films $name $nachname > filmsfirst.txt; fertig < CBActors

Die obige Befehlsfolge lässt sich möglicherweise leichter lesen, wenn sie auf mehreren Zeilen geschrieben wird:

während ich Vor- und Nachnamenfilme lese;\
Tun
echo $films $name $nachname >> filmsfirst;\
fertig < CBActors

Lassen Sie uns analysieren, was diese Befehle bewirken:

  • while …; do … done ist eine Schleifenstruktur. Wenn die Bedingung nach „while“ erfüllt ist, wird der Teil zwischen „do“ und „done“ wiederholt ausgeführt.
  • Die Read-Anweisung liest den Inhalt zeilenweise ein. „read“ liest weiter von der Standardeingabe, bis nichts mehr zu lesen ist.
  • Der Inhalt der CBActors-Datei wird über < von der Standardeingabe gelesen, sodass die While-Schleife die CBActors-Datei Zeile für Zeile vollständig liest.
  • Der Lesebefehl kann jede Zeile entsprechend den Leerzeichen in drei Felder unterteilen und diese drei Felder dann den Variablen „Name“, „Nachname“ und „Filme“ zuweisen. Auf diese Weise können Sie die Reihenfolge der Felder einfach neu anordnen und sie mit echo $films $name $surname >> filmsfirst;\ in der Datei „filmsfirst“ speichern.

Nachdem die Ausführung abgeschlossen ist, überprüfen Sie die Datei filmsfirst. Der Inhalt sieht wie folgt aus:

5 John Goodman
3 John Turturro
2 George Clooney
6 Frances McDormand
5. Steve Buscemi
4 Jon Polito
3 Tony Shalhoub
1 James Gandolfini

Verwenden Sie jetzt den Sortierbefehl:

sort -r Filme zuerst

Man kann sehen, dass Frances McDormand der Lieblingsschauspieler der Coens ist. (Der Parameter -r bedeutet absteigende Reihenfolge, McDormand steht also ganz oben.)

Zusammenfassen

Das Obige ist der vollständige Inhalt dieses Artikels. Ich hoffe, dass der Inhalt dieses Artikels einen gewissen Lernwert für Ihr Studium oder Ihre Arbeit hat. Wenn Sie Fragen haben, können Sie eine Nachricht hinterlassen. Vielen Dank für Ihre Unterstützung von 123WORDPRESS.COM.

Das könnte Sie auch interessieren:
  • Weitere Möglichkeiten zur Verwendung von spitzen Klammern in Bash
  • Verwenden von Klammern und Backticks in Bash-Skripten

<<:  2017 neueste Version der Windows-Installation MySQL-Tutorial

>>:  JavaScript zum dynamischen Laden und Löschen von Tabellen

Artikel empfehlen

Tiefgreifendes Verständnis des Slot-Scopes in Vue (für Anfänger geeignet)

Es gibt bereits viele Artikel über Slot-Scope auf...

So fügen Sie eine Schnittstellen-Abhörmaske in ein Vue-Projekt ein

1. Geschäftshintergrund Die Verwendung einer Mask...

Zwei Tools zum Teilen des Bildschirms im Linux-Befehlszeilenterminal

Hier sind zwei Terminal-Split-Screen-Tools: scree...

Detaillierte Erklärung der Verwendung und Funktion des MySQL-Cursors

[Verwendung und Funktion des MySQL-Cursors] Beisp...

Erläuterung zum Erstellen der Graphdatenbank neo4j in einer Linux-Umgebung

Neo4j (eines der NoSQL-Modelle) ist eine leistung...

Einführung in die Verwendung von CSS3-Filterattributen

1. Einleitung Beim Schreiben von Animationseffekt...

Erläuterung der HTML-Tags

Erläuterung der HTML-Tags 1. HTML-Tags Tag: !DOCT...

So verwenden Sie Nginx zur Simulation einer Blue-Green-Bereitstellung

Dieser Artikel stellt die Blue-Green-Bereitstellu...

Zen-Codierung für Editplus – Beispielcodebeschreibung

Er gibt beispielsweise ein: XML/HTML Code div#Seit...