Die mächtigen Bash-Platzhalter in Linux

Die mächtigen Bash-Wildcards - 2.0

Ohne diese coolen kleinen Dinge, die als Shell-Platzhalter bezeichnet werden, ist das Arbeiten an der Linux-Befehlszeile ziemlich schmerzhaft. Stellen Sie also sicher, dass Sie die Platzhalter gut einsetzen.

Was sind Shell-Wildcards? >

Wildcards sind eine Shell-Funktion, die die Befehlszeile viel leistungsfähiger macht als alle GUI-Dateimanager. Sie sehen, wenn Sie eine große Gruppe von Dateien in einem grafischen Dateimanager auswählen möchten, müssen Sie diese normalerweise mit der Maus auswählen. Dies mag einfach erscheinen, kann aber in einigen Fällen sehr frustrierend sein. Angenommen, Sie haben ein Verzeichnis mit einer großen Anzahl von Dateien und Unterverzeichnissen aller Art, und Sie beschließen, alle HTML-Dateien mit dem Wort "Linux" irgendwo in der Mitte ihres Namens aus diesem großen Verzeichnis in dieses Verzeichnis zu verschieben ein anderes Verzeichnis. Was ist ein einfacher Weg, dies zu tun? Wenn das Verzeichnis eine große Anzahl von HTML-Dateien mit unterschiedlichen Namen enthält, ist Ihre Aufgabe alles andere als einfach!

In der Linux-CLI ist diese Aufgabe genauso einfach auszuführen wie das Verschieben nur einer HTML-Datei, und sie ist aufgrund der Shell-Platzhalter. Platzhalter sind Sonderzeichen, mit denen Sie Dateinamen auswählen können, die bestimmten Zeichenmustern entsprechen. Auf diese Weise können Sie auch nur eine große Gruppe von Dateien auswählen, indem Sie nur wenige Zeichen eingeben. In den meisten Fällen ist dies einfacher als die Auswahl der Dateien mit der Maus.

Hier ist eine Liste der am häufigsten verwendeten Platzhalter in Bash:

Wildcard Streichhölzer
* null oder mehr Zeichen
? genau ein Zeichen
[abcde] genau ein Zeichen aufgeführt
[ae] genau ein Zeichen im angegebenen Bereich
[! abcde] jedes Zeichen, das nicht aufgeführt ist
[! ae] jedes Zeichen, das nicht im angegebenen Bereich liegt
{debian, linux} genau ein ganzes Wort in den angegebenen Optionen

Sie können Platzhalterzeichen mit jedem Befehl verwenden, der Dateinamen als Argumente akzeptiert.

 

Wildcard-Beispiele >

Lassen Sie uns ein paar Beispiele haben. Wahrscheinlich ist Ihnen das Zeichen * bereits bekannt, da es auch an vielen anderen Orten weit verbreitet ist, nicht nur unter Linux. Im Folgenden wird beispielsweise jede Datei aus dem aktuellen Verzeichnis entfernt:
rm *

Der folgende Befehl verschiebt alle HTML-Dateien, deren Namen das Wort "Linux" enthalten, aus dem Arbeitsverzeichnis in ein Verzeichnis mit dem Namen dir1:
mv *linux*.html dir1

Ich habe Ihnen gesagt, dass das Verschieben mehrerer Dateien genauso einfach sein kann wie das Verschieben nur einer Datei!

Im Folgenden werden alle Dateien angezeigt, die mit beginnen d und enden mit .txt:
less d*.txt

Der folgende Befehl entfernt alle Dateien, deren Namen mit beginnen junk., gefolgt von genau drei Zeichen:
rm junk.???

Mit diesem Befehl listen Sie alle Dateien oder Verzeichnisse auf, deren Namen mit beginnen hda, gefolgt von genau einer Ziffer:
ls hda[0-9]

Dies listet alle Dateien oder Verzeichnisse auf, die mit beginnen hda, gefolgt von genau zwei Ziffern:
ls hda[0-9][0-9]

Im Folgenden werden alle Dateien oder Verzeichnisse aufgelistet, deren Name mit einem der beiden beginnt hd or sd, gefolgt von einem beliebigen Zeichen zwischen a und c:
ls {hd,sd}[a-c]

Dieser Befehl kopiert alle Dateien, die mit einem Großbuchstaben beginnen, in das Verzeichnis dir2:
cp [A-Z]* dir2

Dadurch werden alle Dateien gelöscht, die nicht mit enden ceh or g:
rm *[!cehg]

Ich könnte mit diesen Beispielen fortfahren, aber Sie haben die Idee. Sie können einfache Muster verwenden oder verschiedene Platzhalterzeichen kombinieren und sehr komplexe Muster erstellen. Wie ich bereits sagte, können Sie sie mit beliebigen Befehlen verwenden, die Dateinamen als Argumente akzeptieren.