Terminal in Linux – Reguläre Ausdrücke

Dieser Artikel ist der vierte von 10 Teilen zum Thema Linux Terminal in 10 Teilen. Ein wichtiges Thema: Jokerzeichen und Reguläre Ausdrücke ebenso das Quoting wird hier kurz besprochen.

» Zur Übersicht der Artikelserie «

Jokerzeichen und Reguläre Ausdrücke in der Bash

Damit man im Terminal mit Dateien und Verzeichnissen arbeiten kann, muss man wissen wie Datei- und Pfadnamen aufgebaut sind. Generell gibt es natürlich noch einige Unterschiede wie z.B. Case-Sensitive (Unterscheidung von Groß- und Kleinschreibung), allerdings hängt dies vom Dateisystem ab. Folgende Aspekte sollte man aber unbedingt beachten:

  • Sonderzeichen in Dateinamen sind erlaubt – Sollte man aber nicht verwenden
  • Dateinamen die Leerzeichen enthalten, müssen in Hochkommas eingeschlossen sein
  • Dateinamen die mit einem Punkt beginnen sind versteckt
  • Der forward slash (/) ist das Trennzeichen für Verzeichnisse

Mit Hilfe von Jokerzeichen (Wildcards) wird die Shell angewiesen zunächst den gesuchten Dateinamen zu finden und erst dann den kompletten Namen der gefundenen Dateien als Argument dem Kommando zu übergeben. Die Kombination von den verschiedenen Jokerzeichen nennt man Reguläre Ausdrücke.

Wichtige Jokerzeichen:

  • ?: steht für genau ein beliebiges Zeichen
  • *: steht für kein oder beliebig viele Zeichen
  • [123]: genau eines der angegebenen Zeichen
  • [a-g]: ein Zeichen aus dem angegebenen Bereich
  • [!abc]: keines der angegebenen Zeichen
  • [^abc]:keines der angegebenen Zeichen

Beispiel 1: Alle Dateien anzeigen, die mit einem Buchstaben von b bis g beginnen

ls [b-g]*

Beispiel 2: Alle Dateien anzeigen, die nicht mit einem .c oder .g enden

ls *.[!cg]

Diese verschiedenen Jokerzeichen sind sehr hilfreich, wenn man im Linux Dateisystem (Verzeichnisstruktur) nach bestimmten Dateien sucht. Natürlich gibt es noch weitere andere Möglichkeiten wie z.B. grep oder sed. Die Regulären Ausdrücke sehen hier aber teilweise ganz anders aus. Wir haben uns im obigen Fall nur auf die Bash konzentriert.

Quoting

Natürlich gibt es auch noch Sonderfälle. Was ist, wenn man nicht möchte das ein Jokerzeichen bereits durch die Shell ausgewertet wird. Hierfür muss man dem Sonderzeichen seine Sonderbedeutung entziehen. Der Fachausdruck lautet übrigens: Quoting.

Zwei Möglichkeiten:

  1. Backslash (“”) vor jedes Jokerzeichen
  2. Den komplette Regulären Ausdruck in einfache Hochkommas (‘) setzen

Beispiel 1: Ohne Quoting werden alle Dateien angezeigt, welche zwei beliebige Endungen aufweisen. Z.B. test.??, test.aa, test.ab …

ls *.??

Beispiel 2: Mit Quoting wird nur die Datei mit den beiden Fragezeichen als Endungen angezeigt.

ls *.'??'

 » Teil 3 «          » Zur Übersicht der Artikelserie «          » Teil 5 «