27Jun
Sie haben gelernt, Skripte zu erstellen, Argumente zu verwenden und für Schleifen zu erstellen. Sehen wir uns nun einige grundlegende Befehle, die Manipulation von Textdateien und das Umleiten von Ein- und Ausgaben in Dateien und andere Befehle an.
Einige grundlegende nützliche Befehle
Wir haben Ihnen bereits eine grundlegende Aufschlüsselung von Shell-Skripten und eine Beispiel-basierte Gliederung von for-Schleifen gegeben, aber schauen Sie sich diese Artikel an, wenn Sie unser Shell-Skript-Handbuch bis jetzt verpasst haben.
Die Befehlszeile ist aus vielen Gründen wunderbar, und die Umleitung ist eine der wichtigsten. Wenn Sie die Ausgabe jedes Befehls notieren und reproduzieren müssen, um weitere Maßnahmen zu ergreifen oder diese für etwas anderes zu verwenden, wären wir alle längst verrückt geworden. Die Umleitung ermöglicht es uns, diese Ausgabe zu verwenden und sie zu speichern oder sie sofort als Eingabe für einen anderen Befehl zu verwenden. Wir können auch Dateien als Eingaben für andere Befehle verwenden.
Bevor wir fortfahren, wollen wir einige grundlegende Befehle behandeln, die an vielen verschiedenen Stellen nützlich sein können.
echo - Dieser Befehl druckt( zeigt) das gesamte Argument in der Befehlszeile als Ausgabe an.
echo Argument mit Leerzeichen
Wie Sie sehen, müssen Sonderzeichen "maskiert" werden, damit sie normal behandelt werden. Dies geschieht durch einen umgekehrten Schrägstrich( \) vor dem Zeichen. Es ist eine bessere Idee, Zitate zu verwenden. Der Befehl echo funktioniert auch mit Variablen.
Wie Sie sehen, verhalten sich einzelne und doppelte Anführungszeichen unterschiedlich. Weitere Informationen finden Sie unter Was ist der Unterschied zwischen einfachen und doppelten Anführungszeichen in der Bash Shell?
cat - 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 sehen, dass sie ausgegeben wird.
grep - Dies ist einer der mächtigsten und nützlichsten Befehle unter Linux. Es steht für Global / Regular Expression Print. Es durchsucht eine Datei und gibt alle Zeilen aus, die einem bestimmten Muster entsprechen. Da dieses Muster auf "regulärem Ausdruck" basiert, kann eine prägnante Linie eine Vielzahl von Mustern ergeben, die angepasst werden müssen. Für nicht jedoch, können Sie ein tern für das Suchen eingeben.
Grep Pattern-Datei
Ich versichere Ihnen, Grep kann mehr tun, aber jetzt bleiben wir bei den einfacheren Sachen.
Umleiten von Ausgaben
Um die Ausgabe eines Befehls in eine Datei umzuleiten, verwenden wir ein Sonderzeichen, das Größer-als-Zeichen( & gt;).
Lass uns unsere Liste ändern, oder? Geben Sie den folgenden Befehl ein:
echo pepperoni & gt;list
Sie können sehen, dass echo die Zeile nicht mehr anzeigt, und wenn wir uns den Inhalt der "list" -Datei ansehen, sehen wir, was wir dort widergegeben haben.
Beachten Sie auch, dass der vorherige Inhalt der "Liste" entfernt wurde. Versuchen Sie es erneut:
Dies kann nützlich sein, wenn Sie eine Datei wiederverwenden möchten, aber oft nur zu einer vorhandenen Datei hinzufügen möchten. Dazu verwenden wir zwei aufeinanderfolgende Größer-als-Symbole:
echo gelbe Paprika & gt; & gt;Liste
Einfach! Lassen Sie uns diesen Befehl verwenden, um eine größere Liste zu erstellen, oder?
Dort gehen wir. Ich denke, Sie können sehen, warum so viele Geeks die Befehlszeile verwenden, um To-Do-Listen und ähnliches zu erstellen, aber es wird noch besser.
Nehmen wir die Ausgabe eines Befehls und legen Sie sie in eine Datei:
ls -al / & gt;~ / rootlist
Noch nie war es einfacher, Listen von Dateien zu erstellen, sie zu bearbeiten und Befehle auszuführen. Und während wir diese grundlegenden Funktionen in der Befehlszeile ausführen, funktionieren diese auch in Skripts gut.
Piping oder Verkettung
Piping wird so benannt, weil es die Pipe verwendet( |; mit der \ Taste auf den meisten Tastaturen).Im Wesentlichen nimmt es die Ausgabe eines Befehls und füttert sie direkt an einen anderen. Sie können lange Befehlsketten erstellen, um auf diese Weise eine sehr spezifische gewünschte Ausgabe zu erhalten, und es ist sehr praktisch für Befehle wie grep.
Es verhält sich sehr ähnlich wie "& gt;", außer dass es mehrmals verkettet werden kann und seine Wirkung allgemeiner ist, da es nicht durch eine Textdatei gehen muss.
Wie Sie sehen, unterscheidet grep zwischen Groß- und Kleinschreibung. Sie können das Flag "-i" verwenden, um Groß- und Kleinschreibung zu ignorieren.
Umleiten von Eingängen
Sie können Eingänge auch von Dateien für Befehle verwenden, indem Sie das Kleiner-als-Symbol( & lt;) verwenden.
Katze & lt;Liste
"Das ist nichts anderes als ein Argument zu benutzen!" Könnte man sagen. Nun, in diesem Fall hättest du recht. Die Umleitung von Eingaben ist besonders nützlich, wenn Befehle aneinander gekoppelt werden.
Nehmen wir an, wir möchten jedes Wort, das "pep" enthält, aus unserer aktuellen "list" -Datei in eine neue Datei namens "revisions" filtern.
Grep Pep & lt;Liste & gt;Revisionen
Wiederholen wir diesen Befehl, und fügen Sie eine Sortierung hinzu.
Grep Pep & lt;Liste |sortieren & gt;Revisionen
Dies verwendet "pep" als Suchbegriff aus der Eingabedatei "list", sortiert sie in alphabetischer Reihenfolge( alle Großbuchstaben gefolgt von allen Kleinbuchstaben) und geben sie dann in die Datei "revisions" aus.
Um den Befehl sort zu illustrieren, schauen wir uns das folgende Beispiel an:
Wie Sie sehen, erlaubt das Hinzufügen des Flags "-f" zum Befehl sort Ihnen, Groß- / Kleinschreibung zu ignorieren. Dies macht es uns leicht, Zeilen in Textdateien zu alphabetisieren und die Großschreibung zu ignorieren, wenn es keine Rolle spielt.
Ein einfaches Skript
Lassen Sie uns ein Skript erstellen, das die folgende Form hat:
Skript Suchterm Listendatei
Es wird den Begriff nehmen und grep verwenden, um durch eine Listendatei zu suchen, die Ergebnisse zu sortieren und sie dann in eine andere Datei auszugeben.
Hier ist das Verzeichnis, in dem wir das Skript testen werden:
Und wir können eine Liste von dem erstellen, was hier drin ist, und dann das Skript ausführen.
Los geht's! Je mehr Sie die Regeln regulärer Ausdrücke lernen, desto genauer können Sie einen Suchbefehl zusammenstellen. Und alles, was in Anführungszeichen gültig ist, kann Ihr erstes Argument ersetzen!
Was die Sortierung angeht, können Sie mehr als nur alphabetisch sortieren. Sehen Sie sich die man-Seite für einige der folgenden Befehle an:
- tsort - eine erweiterte topologische Sortierfunktion
- tr - lässt Sie bestimmte Zeichen anderen Zeichen zuordnen und zwischen ihnen transkribieren.
- uniq - entfernt alle nicht eindeutigen( lesen: duplizieren)
- awk - eine sehr fortschrittliche Textverarbeitungssprache / Funktion, die verwendet werden kann, um Felder in Dateinamen zu trennen
- Ausschneiden, Einfügen / Verknüpfen - Befehle zum Isolieren von Feldern aus Textdateien und Hinzufügenneue Daten in Spalten
- -Look - sucht wie grep, verwendet aber eine Dictionary-Datei( die vom Benutzer angegeben werden kann) für die Suche
- wc - können Sie Wortanzahl, Zeilenzahl, Anzahl der Zeichen und mehr
Wir haben einen BlickHeute kann es auf der Kommandozeile genauso nützlich sein wie in Skripten. Textbasierte Daten stehen oft im Mittelpunkt von Dingen, die wir täglich verwenden. Es ist daher wichtig, mit ihnen zu arbeiten, sie zu durchsuchen und sie zu manipulieren.
Was sind deine Lieblingsskripts? Haben Sie spezielle Scripts für textbasierte Dateien? Teilen Sie, was Sie in den Kommentaren wissen!