Shell-Erweiterungen
Während der Arbeit in einer Shell werden oft Sätze oder Bereiche von Informationen wiederholt. Die Shell-Erweiterung hilft beim Generieren einer großen Anzahl von Shell-Tokens mit kompakten Syntaxen. Die Erweiterung wird in der Befehlszeile ausgeführt, nachdem der Befehl in Tokens aufgeteilt wurde. Von den vielen verfügbaren Erweiterungen werden der Pfadname, der Dateiname und die geschweiften Erweiterungen im Voraus erklärt.
Pfadnamenerweiterung
Die Erweiterung des Pfadnamens vereinfacht Standortänderungen innerhalb der Verzeichnishierarchie. Die Erweiterung des Pfadnamens umfasst:
– Die Tilde (~) -Zeichen, das den absoluten Pfadnamen des Home-Verzeichnisses des aktuellen Benutzers darstellt
– Das Tilde-Zeichen (~) mit einem Benutzernamen, das das Home-Verzeichnis des angegebenen Benutzers darstellt
– Der Bindestrich ( -) Zeichen, das das vorherige Arbeitsverzeichnis darstellt
Betrachten Sie die folgenden Beispiele für jedes Erweiterungszeichen:
1. Wechseln Sie mit dem Tilde-Zeichen (~) in das Verzeichnis dir1.
$ cd ~/dir1 $ pwd /home/user/dir1/
2. Wechseln Sie mit dem Tilde-Zeichen (~) gefolgt von einem Benutzernamen in das Home-Verzeichnis des Benutzers.
$ cd ~user $ pwd /home/user
3. Wechseln Sie mit dem Erweiterungszeichen – zwischen den Verzeichnissen user und tmp.
$ cd $ pwd /home/user
$ cd /tmp $ pwd /tmp
$ cd - /export/home/user1 $ cd - /tmp
Dateinamenerweiterung
Die Dateinamenerweiterungen sind:
- Das Sternchen (*)
- Das Fragezeichen (?)
- Die eckigen Klammern ([]) Zeichen
1. Sternchen (*) Zeichen
Das Erweiterungszeichen Sternchen (*) wird auch als Platzhalterzeichen bezeichnet und stellt null oder mehr Zeichen dar, mit Ausnahme des führenden Punkts (.) einer versteckten Datei. Listen Sie beispielsweise alle Dateien und Verzeichnisse auf, die mit dem Buchstaben f beginnen, gefolgt von null oder mehr anderen Zeichen.
$ ls f* file.1 file.2 file.3 file4
Ein weiteres Beispiel ist das Auflisten aller Dateien und Verzeichnisse, die mit der Zahl 3 enden, denen null oder mehr Zeichen vorangestellt sind.
$ ls *3 file.3 file3
2. Fragezeichen (?) Zeichen
Das Fragezeichen (?) wird auch als Platzhalterzeichen bezeichnet und steht für ein beliebiges einzelnes Zeichen mit Ausnahme des führenden Punkts (.) einer versteckten Datei. Listen Sie beispielsweise alle Dateien und Verzeichnisse auf, die mit der Zeichenfolge dir beginnen, gefolgt von einem weiteren Zeichen.
$ ls dir? dir1: coffees fruit trees dir2: beans notes recipes
Wenn keine Dateien zu einem Eintrag mit dem Fragezeichen (?) passen, erscheint eine Fehlermeldung.
$ ls z? z?: No such file or directory
3. Eckige Klammern ([]) Zeichen
Die eckige Klammer ([] )-Zeichen stellen eine Menge oder einen Bereich von Zeichen für eine einzelne Zeichenposition dar.
– Eine Zeichenmenge ist eine beliebige Anzahl bestimmter Zeichen, z. B. [acb]. Die Zeichen in einem Satz müssen nicht unbedingt in beliebiger Reihenfolge vorliegen. Beispielsweise ist [abc] dasselbe wie [cab].
– Ein Zeichenbereich ist eine Reihe geordneter Zeichen.
- Ein Bereich listet das erste Zeichen auf, gefolgt von einem Bindestrich (-) und dem letzten Zeichen, z. B. [a–z] oder [0–9].
- Wenn Sie einen Bereich angeben, ordnen Sie die Zeichen in der Reihenfolge an, in der sie in der Ausgabe erscheinen sollen.
- Verwenden Sie beispielsweise [A–Z] oder [a–z], um nach Groß- bzw. Kleinbuchstaben zu suchen.
Listen Sie beispielsweise alle Dateien und Verzeichnisse auf, die mit den Buchstaben a bis f beginnen.
$ ls [a-f]* brands dante_1 file.1 file2 file4 celery feathers file1 file.3 fruit dante feathers_6 file.2 file3 fruit2
Listen Sie beispielsweise alle Dateien und Verzeichnisse auf, die mit den Buchstaben f oder p beginnen.
$ ls [fp]* perm file.1 file.2 file.3 file4 fruit2 feathers_6 file1 file2 file3 fruit
Die Klammererweiterung
Die Klammer {}-Erweiterung ist ein Mechanismus, mit dem beliebige Zeichenfolgen generiert werden können. Muster, die durch geschweifte Klammern erweitert werden sollen, haben die Form einer optionalen Präambel, gefolgt von entweder einer Reihe von durch Kommas getrennten Zeichenfolgen oder einem Sequenzausdruck zwischen zwei geschweiften Klammern, gefolgt von einem optionalen Postskriptum. Die Präambel „a“ wird jeder Zeichenfolge vorangestellt, die in geschweiften Klammern enthalten ist, und das Postskriptum „e“ wird dann an jede resultierende Zeichenfolge angehängt und von links nach rechts erweitert.
$ echo a{d,c,b}e ade ace abe