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

So ändern Sie in Nginx die über http aufgerufene Website in https

Inhaltsverzeichnis 1. Hintergrund 2. Voraussetzun...

So schreiben Sie Konfigurationsdateien und verwenden MyBatis einfach

So schreiben Sie Konfigurationsdateien und verwen...

Detaillierte Erklärung des Kopierobjekts von jQuery

<!DOCTYPE html> <html lang="de"...

So lösen Sie das Problem ERROR 2003 (HY000) beim Starten von MySQL

1. Problembeschreibung Beim Starten von MySQL tri...

Installations- und Nutzungsprotokoll von VMware ESXi (mit Download)

Inhaltsverzeichnis 1. Installieren Sie ESXi 2. ES...

So gehen Sie mit Zeitzonenproblemen in Docker um

Hintergrund Als ich in diesen beiden Tagen Docker...

So lösen Sie das Problem, dass der Docker-Container keinen Vim-Befehl hat

Finden Sie das Problem Als ich heute versuchte, d...

HTML übertrifft das Implementierungsprinzip und den Code des Textzeilenabfangs

Der HTML-Code zum Abfangen von mehrzeiligem Text l...

JavaScript imitiert den Jingdong-Karusselleffekt

In diesem Artikel wird der spezifische Code für J...

Detaillierte Erläuterung des Mysql Self-Join-Abfragebeispiels

Dieser Artikel beschreibt die Mysql-Self-Join-Abf...