Wildcard verprügeln

Wildcard verprügeln
Wenn wir nach Shell -Befehlen nach irgendetwas suchen müssen, müssen wir ein Muster für die Suche definieren. Wildcard -Zeichen werden verwendet, um das Muster zum Suchen oder Abzug von Text auf Stringdaten in der Bash -Shell zu definieren. Eine weitere häufige Verwendung von Wildcard -Charakteren besteht darin, regelmäßige Ausdrücke zu erstellen. Wie Sie verschiedene Arten von Wildcard -Zeichen zum Durchsuchungsdateien verwenden können, wird in diesem Tutorial angezeigt.

Wildcard -Charaktere

Die drei wichtigsten Wildcard -Charaktere sind,

  • Stern oder Sternchen (*)
  • Fragezeichen (?)
  • Eckige Klammern ([])

Sternchen (*) wird verwendet, um nach einem bestimmten Zeichen für null oder mehrmals nach einem bestimmten Zeichen zu suchen. Fragezeichen (?) wird verwendet, um nach einer festen Anzahl von Zeichen zu suchen, bei denen jedes Fragezeichen (?) Zeigt jedes Zeichen an. Quadratklammern werden mit den Zeichen eines definierten Bereichs oder einer Gruppe von Zeichen übereinstimmen. Die Verwendungen dieser Zeichen werden im nächsten Teil dieses Tutorials gezeigt.

Verwendung von Sternchen (*)

Sternchen (*) kann auf verschiedene Arten mit Shell -Befehlen zum Durchsuchungsdateien verwendet werden. Die unterschiedliche Verwendung des Sternchens (*) werden in den folgenden Beispielen angezeigt.

Beispiel - 1: Durchsuchen einer spezifischen Datei mit Dateiname und '*'

'ls' ' Der Befehl wird verwendet, um die Liste der Dateien und Ordner des aktuellen Verzeichnisses herauszufinden. 'ls a*' Der Befehl sucht und druckt alle Dateinamen des aktuellen Verzeichnisses, das mit dem Zeichen beginnt, 'A'.

$ ls
$ ls a*

Ausgang:

Gemäß der folgenden Ausgabe gibt es 12 Dateien im aktuellen Verzeichnis, das mit dem Zeichen "a" beginnt.

Beispiel - 2: Durchsuchen der Datei mit einer bestimmten Erweiterung und '*'

Sie können jede Datei mithilfe des Sternchens (*) und der Dateierweiterung durchsuchen. Wenn Sie alle Dateien mit suchen möchten Die '.txt' Erweiterung aus dem aktuellen Verzeichnis führen dann den folgenden Befehl aus dem Terminal aus. Hier kann der Dateiname alle Zeichen und eine beliebige Anzahl von Zeichen sein.

$ ls *.txt

Sie können auch Dateien unterschiedlicher Erweiterungen durch den Sternchen (*) durchsuchen (*). Der folgende Befehl sucht alle Dateien mit Erweiterung ''.Sch' oder ''.txt'

$ ls *.Sch *.txt

Ausgang:

Die Ausgabe zeigt die Liste aller vorhandenen Dateien des aktuellen Verzeichnisses mit der Erweiterung '.Sh 'und'.txt.

Beispiel - 3: Datei nach teilweise Übereinstimmung und '*' entfernen

Sie können das Sternchen (*) verwenden. Der folgende Befehl entfernt die Datei, die die enthält 'prüfen' Wort in einem Teil des Dateinamens.

$ ls
$ rm *test *
$ ls

Ausgang:

Die folgende Ausgabe zeigt, dass im aktuellen Verzeichnis zwei Dateien vorhanden sind, das das Wort "Test" enthält, und diese Dateien wurden entfernt, nachdem der Befehl "RM" ausgeführt wurde.

Verwendung des Fragezeichens (?)

Wenn Sie die genauen Zahlen der Zeichen kennen, die Sie suchen möchten, dann das Fragezeichen (?) Wildcard kann verwendet werden. Die folgenden Beispiele zeigen die unterschiedliche Verwendung von Fragezeichen (?) Wildcard.

Beispiel - 1: Durchsuchen der Datei mit Dateiname und '?''

Angenommen, die Dateierweiterung, die Gesamtzahl der Zeichen einer Datei und einige Zeichen der Datei sind bekannt. Dann können Sie diese Wildcard verwenden, um die Datei zu durchsuchen. Der erste Befehl sucht die Dateien mit der Erweiterung ''.txt'. Der zweite Befehl sucht die Dateien, die vier Zeichen lang sind, das letzte Zeichen ist 't' und die Erweiterung der Datei ist '.txt'.

$ ls *.txt
$ ls ???T.txt

Ausgang:

Die Ausgabe zeigt, dass 7 Dateien im aktuellen Verzeichnis mit dem 'vorhanden sind.TXT 'Erweiterung und eine Textdatei existieren 4 Zeichen lang und das letzte Zeichen ist' T '.

Beispiel -2: Suchen Sie die Datei mit Erweiterung und '?''

Angenommen, Sie kennen den Dateinamen und die Gesamtzahl der Zeichen der Dateierweiterung, dann können Sie das Fragezeichen verwenden (?) Wildcard, um die Datei zu durchsuchen. Der folgende Befehl sucht die Datei mit Dateiname 'Hallo' und die Erweiterung ist drei Zeichen lang.

$ ls
$ ls Hallo.???

Ausgang:

Gemäß der Ausgabe gibt es im aktuellen Verzeichnis, der den Namen "Hallo" hat, zwei Dateien und die Erweiterung sind drei Zeichen lang.

Verwendung von quadratischen Klammern ([])

Verschiedene Zeichenbereiche oder Zeichengruppen von Zeichen können in quadratischen Klammern ([]) zum Durchsuchen von Dateien basierend auf dem Bereich verwendet werden.

Beispiel -1: Suchen Sie Dateien jeder Erweiterung mit zwei Bereichenwerten

Der folgende Befehl sucht in jeder Datei, deren Name ein Zeichen innerhalb von 'enthält.'a-p"Und jede Ziffer innerhalb"0-5'Und die Dateierweiterung kann ein beliebiges Zeichen sein.

$ ls
$ ls [a-p0-5]*.*

Ausgang:

Die folgende Ausgabe zeigt die Liste aller Dateien, die dem im Befehl verwendeten Muster übereinstimmen.

Beispiel-2: Die Suchdatei beginnt mit einem bestimmten Zeichen und folgt von einem anderen Charakter

In diesem Beispiel wird der zweite Befehl die Dateinamen durchsucht, beginnend mit einem dieser Zeichen [AFGH], gefolgt vom Charakter 'O' mit jeder Erweiterung.

$ ls
$ ls [afgh]*o*

Ausgang:

Die folgende Ausgabe zeigt die Liste aller Dateien, die dem im Befehl verwendeten Muster übereinstimmen.

Beispiel-3: Suchen Sie Dateinamen mit dem Präfixwert durch

Der folgende Befehl stimmt mit den Dateien überein, deren Name beginnt mit 'fn' und folgt eine Zahl innerhalb von 0 bis 5.

$ ls fn [0-5]

Der folgende Befehl stimmt mit den Dateien überein, die den Namen "Hallo" enthalten, und die Erweiterung enthält ein beliebiges Zeichen von t nach Z.

$ ls Hallo.[T-Z]*

Ausgang:

Die folgende Ausgabe zeigt die Liste aller Dateien, die mit dem in den Befehlen verwendeten Muster übereinstimmen.

Die Zeichenklasse kann in den dritten Klammern verwendet werden, um den Dateinamen oder die bestimmte Zeichenfolge im Skript zu entsprechen. Verschiedene Klassen, die im Muster verwendet werden können, hat unten beschrieben.

Klassenname Zweck
[:Alpha:] Es wird verwendet, um mit einem beliebigen Groß- und Kleinbuchstaben übereinzustimmen und zu [A-Za-Z] entspricht.
[:Ziffer:] Es wird verwendet, um mit allen Ziffern übereinzustimmen und entspricht [0-9].
[: Alnum:] Es wird verwendet, um Alphabet und Ziffern zu entsprechen. Es entspricht [A-Za-Z].
[:Oberer, höher:] Es entspricht nur dem Großbuchstaben und entspricht [A-Z]
[:untere:] Es entspricht nur dem Großbuchstaben und entspricht [A-Z]
[:leer:] Es wird verwendet, um mit Platz und Registerkarte zu passen.
[:drucken:] Es wird verwendet, um mit druckbaren Zeichen übereinzustimmen.
[: cntrl:] Es wird verwendet, um nicht gedruckte Zeichen zu entsprechen.
[:Raum:] Es wird verwendet, um mit dem Weltraum zu passen.
[: xdigit:] Es wird verwendet, um mit hexadezimalen Ziffern übereinzustimmen.
[:ASCII:] Es wird verwendet, um mit ASCII -Zeichen übereinzustimmen.
[:Wort:] Es wird an alphanumerische Zeichen einschließlich Unterstrich verwendet (_).

Die Verwendung von vier meist verwendeten Klassen hat in den folgenden vier Beispielen erklärt.

Beispiel 1: Verwendung von [: Alpha:] im Bash-Skript

Das folgende Skript prüft, dass die vom Benutzer genommenen Eingabe nur alphabetische Zeichen enthält.

#!/Bin/Bash
echo -n "Wie heißt du?? "
# Zuweisen Sie der Variablen Eingabewert
Name lesen
# Überprüfen Sie, ob der Eingangswert nur das Alphabet enthält
if [["$ name" = ~ ^[[: alpha:]]]]; Dann
echo "Ihr Name ist $ name."
anders
Echo "Geben Sie nur einen alphabetischen Charakter ein."
fi

Ausgang:
Die folgende Ausgabe zeigt die Nachricht für ungültige und gültige Eingaben an.

Beispiel 2: Verwendung von [: Ziffer:] im Bash-Skript

Das folgende Skript prüft, dass die vom Benutzer genommene Eingabe nur numerische Zeichen enthält.

#!/Bin/Bash
echo -n "Geben Sie Ihre ID ein:"
# Zuweisen Sie der Variablen Eingabewert
ID lesen
# Legen Sie den ID -Wert fest
Id = "id- $ id"
# Setzen Sie das Muster mit [[: Ziffer:]] Klasse
regex = "id-[[: vigit:]]+"
# Überprüfen Sie, ob der Eingangswert nur die Nummer enthält
if [[$ id = ~ $ regex]]; Dann
echo "$ id ist gültig."
anders
echo "$ id ist ungültig."
fi

Ausgang:

Die folgende Ausgabe zeigt die Nachricht für ungültige und gültige Eingaben an.

Beispiel-3: Verwendung von [: Alnum:] im Bash-Skript

Das folgende Skript prüft, dass die vom Benutzer genommenen Eingabe nur alphanumerische Zeichen enthält.

#!/Bin/Bash
echo -n "Geben Sie Ihre Adresse ein:"
# Zuweisen Sie der Variablen Eingabewert
ADDR lesen
# Überprüfen Sie den Eingangswert enthält das Alphabet und die Nummer nur
if [[$ addr = ~ ^ ^[[: Alnum:]]]]; Dann
Die Echo -Adresse ist gültig."
anders
Die Echo -Adresse ist ungültig."
fi

Ausgang:

Die folgende Ausgabe zeigt die Nachricht für ungültige und gültige Eingaben an.

Beispiel-4: Verwendung von [: obere:] im Bash-Skript

Das folgende Skript prüft, dass die vom Benutzer genommenen Eingabe nur Großbuchstaben enthält.

#!/Bin/Bash
echo -n "Geben Sie Ihren Code in Großbuchstaben ein:"
# Zuweisen Sie der Variablen Eingabewert
Code lesen
# Überprüfen Sie, ob der Eingangswert alle Großbuchstaben enthält
if [[$ code = ~ ^[[: obere:]]]]; Dann
Der Echo -Code ist korrekt."
anders
Echo "Code kann nur Großbuchstaben enthalten."
fi

Ausgang:

Die folgende Ausgabe zeigt die Nachricht für ungültige und gültige Eingaben an.

Abschluss

In diesem Tutorial wurden die grundlegenden Verwendungen von Wildcard -Zeichen zum Durchsuchen von Dateien im Terminal und zur Validierung von Daten mithilfe des BASH -Skripts gezeigt. Ich hoffe.