Das Einsteigerhandbuch für das Shell-Scripting 3 Weitere grundlegende Befehle und Ketten
Sie haben gelernt, wie Sie Skripts erstellen, Argumente verwenden und for-Schleifen erstellen. Schauen wir uns nun einige grundlegende Befehle an, die Bearbeitung von Textdateien und das Umleiten von Eingabe und Ausgabe in Dateien und andere Befehle.
Einige grundlegende nützliche Befehle
Wir haben Ihnen bereits eine grundlegende Aufschlüsselung der Shell-Skripte und eine beispielhafte Gliederung von for-Schleifen gegeben. Wenn Sie jedoch unsere Shell-Scripting-Anleitung bisher verpasst haben, sollten Sie diese Artikel lesen.
Die Befehlszeile ist aus vielen Gründen wunderbar und die Weiterleitung ist eine der prominentesten. Wenn Sie die Ausgabe jedes Befehls notieren und reproduzieren mussten, um weitere Maßnahmen zu ergreifen oder für etwas anderes zu verwenden, wären wir alle schon längst verrückt geworden. Bei der Umleitung können wir diese Ausgabe verwenden und speichern oder sofort als Eingabe für einen anderen Befehl verwenden. Wir können Dateien auch als Eingaben für andere Befehle verwenden.
Bevor wir fortfahren, behandeln wir einige grundlegende Befehle, die an vielen verschiedenen Orten von Nutzen sein können.
Echo - Dieser Befehl druckt (zeigt) einfach das gesamte Argument in der Befehlszeile als Ausgabe an
Echoargument mit Leerzeichen
Wie Sie sehen können, müssen Sonderzeichen "Escape-Zeichen" sein, damit sie normal behandelt werden. Dies geschieht durch einen umgekehrten Schrägstrich (\) vor dem Zeichen. Es ist eine bessere Idee, Anführungszeichen zu verwenden. Der Befehl echo funktioniert auch mit Variablen.
Wie Sie sehen, verhalten sich einfache und doppelte Anführungszeichen unterschiedlich. Weitere Informationen finden Sie unter Was ist der Unterschied zwischen einfachen und doppelten Anführungszeichen in der Bash-Shell?
Katze - Dieser Befehl zeigt den Inhalt von Textdateien als Ausgabe an.
cat file_to_be_read
Nehmen wir an, wir erstellen diese Textdatei in Nano:
Wenn wir den Befehl cat für die Datei verwenden, können wir deren Ausgabe sehen.
grep - Dies ist einer der leistungsfähigsten und nützlichsten Befehle, die Ihnen in Linux zur Verfügung stehen. Es steht für Global / Regular Expression Print. Es durchsucht eine Datei und druckt jede Zeile, die einem bestimmten Muster entspricht. Da dieses Muster auf „regulären Ausdrücken“ basiert, kann eine kurze Linie eine Vielzahl von Mustern ergeben, die abgeglichen werden sollen. Wenn nicht, können Sie jedoch eine Suchse eingeben.
grep-Musterdatei
Ich versichere Ihnen, dass grep mehr kann, aber lassen Sie uns jetzt auf die einfacheren Sachen achten.
Ausgänge umleiten
Um die Ausgabe eines Befehls in eine Datei umzuleiten, verwenden wir ein Sonderzeichen, das Größer-als-Symbol (>)..
Lassen Sie uns unsere Liste ändern, oder? Geben Sie den folgenden Befehl ein:
Echo Pepperoni> Liste
Sie können sehen, dass das Echo die Linie nicht mehr anzeigt, und wenn wir uns den Inhalt der "List" -Datei ansehen, sehen wir, was wir dort drückten.
Beachten Sie auch, dass der vorherige Inhalt von "list" entfernt wurde. Versuchen Sie es erneut:
Dies kann nützlich sein, wenn Sie eine Datei wiederverwenden möchten. Oft möchten wir jedoch nur eine vorhandene Datei hinzufügen. Dafür verwenden wir zwei aufeinanderfolgende Größer-als-Symbole:
Echo gelbe Paprikaschoten >> Liste
Einfach! Verwenden Sie diesen Befehl, um eine größere Liste zu erstellen?
Da gehen wir. Ich denke, man kann sehen, warum so viele Geeks die Befehlszeile verwenden, um Aufgabenlisten und ähnliches zu erstellen, aber es wird noch besser.
Nehmen wir die Ausgabe eines Befehls und legen Sie ihn in einer Datei ab:
ls -al /> ~ / rootlist
Das Erstellen von Listen von Dateien, das Bearbeiten von Dateien und das Ausführen von Befehlen für die gewünschten Dateien waren noch nie einfacher. Während wir diese grundlegenden Funktionen in der Befehlszeile ausführen, funktionieren diese auch in Skripts.
Piping oder Verkettung
Piping wird so benannt, weil es die Pipe verwendet (|; wird mit der \ -Taste der meisten Tastaturen verwendet). Im Wesentlichen nimmt es die Ausgabe eines Befehls und leitet ihn direkt an einen anderen Befehl weiter. Sie können lange Befehlsketten erstellen, um auf diese Weise eine ganz bestimmte gewünschte Ausgabe zu erhalten. Dies ist für Befehle wie grep sehr praktisch.
Es verhält sich viel wie ">", nur dass es mehrmals verkettet werden kann und seine Wirkung allgemeiner ist, da es nicht erforderlich ist, eine Textdatei zu durchlaufen.
Wie Sie sehen, ist bei grep die Groß- und Kleinschreibung zu beachten. Sie können das Flag "-i" verwenden, um die Groß- / Kleinschreibung zu ignorieren.
Eingänge umleiten
Sie können auch Eingaben aus Dateien für Befehle übernehmen, indem Sie das Symbol "weniger als" (<).
Katze < list
"Das unterscheidet sich nicht von einer Argumentation!", Könnte man sagen. Nun, Sie wären in diesem Fall richtig. Wo die Umleitung der Eingabe wirklich nützlich ist, ist das Verketten von Befehlen.
Nehmen wir an, wir möchten jedes Wort, das "pep" enthält, aus unserer aktuellen "list" -Datei in eine neue Datei mit dem Namen "revisions" filtern..
grep pep revisionen
Wiederholen Sie diesen Befehl und fügen Sie eine Sortierung hinzu.
grep pep revisionen
Dabei wird "pep" als Suchbegriff aus der Eingabedatei "list" verwendet, in alphabetischer Reihenfolge sortiert (alle Großbuchstaben gefolgt von allen Kleinbuchstaben) und anschließend in die "Revisionsdatei" ausgegeben.
Um den Sortierbefehl zu veranschaulichen, betrachten wir das folgende Beispiel:
Wie Sie sehen, können Sie durch Hinzufügen des Flag "-f" zum Sortierbefehl die Groß- / Kleinschreibung ignorieren. Dies macht es uns leicht, Zeilen in Textdateien alphabetisch zu ordnen und die Großschreibung zu ignorieren, wenn es keine Rolle spielt.
Ein einfaches Skript
Lassen Sie uns ein Skript mit folgendem Formular erstellen:
Skript-Suchbegriff-Listendatei
Der Begriff wird verwendet und mit grep eine Listendatei durchsucht, die Ergebnisse sortiert und dann in eine andere Datei ausgegeben.
Hier ist das Verzeichnis, in dem wir das Skript testen werden:
Und wir können eine Liste von dem erstellen, was sich hier befindet, und dann das Skript ausführen.
Da gehts! Je mehr Sie die Regeln regulärer Ausdrücke lernen, desto genauer können Sie einen Suchbefehl zusammenstellen. Alles, was in Anführungszeichen steht, kann für Ihr erstes Argument verwendet werden!
Was das Sortieren angeht, können Sie mehr als nur alphabetisch sortieren. In der Manpage finden Sie einige der folgenden Befehle:
- tsort - eine erweiterte topologische Sortierfunktion
- Mit tr können Sie bestimmte Zeichen anderen Zeichen zuordnen und zwischen ihnen transkribieren.
- uniq - entfernt alle nicht eindeutigen (gelesen: Duplikat)
- awk - eine wirklich fortgeschrittene Textverarbeitungssprache / -funktion, mit der Felder in Dateinamen getrennt werden können
- Ausschneiden, Einfügen / Verbinden - Befehle, die zum Isolieren von Feldern aus Textdateien und zum Hinzufügen neuer Daten in Spalten nützlich sind
- look - sucht wie grep, verwendet jedoch eine Wörterbuchdatei (die vom Benutzer angegeben werden kann) für die Suche
- wc - Liefert die Anzahl der Wörter, die Anzahl der Zeilen, die Anzahl der Zeichen und mehr
Wir haben uns heute einige weitere Grundlagen angesehen, die auf der Kommandozeile ebenso nützlich sein können wie in Skripten. Textbasierte Daten bilden oft den Kern der Dinge, die wir täglich verwenden. Daher ist es wichtig, damit zu arbeiten, sie zu durchsuchen und zu manipulieren.
Was sind deine Lieblingsskripte? Haben Sie spezielle Skripts für textbasierte Dateien? Teilen Sie mit, was Sie in den Kommentaren wissen!