Ich verstehe, was Klammererweiterung ist, aber ich weiß nicht, wie ich sie am besten verwenden soll.
Wann benutzt du es
Bitte bringen Sie mir einige praktische und bemerkenswerte Beispiele bei, wenn Sie Ihren eigenen Tipp haben.
Ich verstehe, was Klammererweiterung ist, aber ich weiß nicht, wie ich sie am besten verwenden soll.
Wann benutzt du es
Bitte bringen Sie mir einige praktische und bemerkenswerte Beispiele bei, wenn Sie Ihren eigenen Tipp haben.
Die Klammererweiterung ist sehr nützlich, wenn Sie lange Pfadnamen haben. Ich benutze es als eine schnelle Möglichkeit, eine Datei zu sichern :
cp /a/really/long/path/to/some/file.txt{,.bak}
kopiert /a/really/long/path/to/some/file.txt
nach/a/really/long/path/to/some/file.txt.bak
Sie können es auch in einer Sequenz verwenden . Ich habe dies einmal getan, um viele Seiten aus dem Internet herunterzuladen:
wget http://domain.com/book/page{1..5}.html
oder
for i in {1..100}
do
#do something 100 times
done
program -f file1 -f file2 -f file3
, können Sieprogram "-f file"{1..3}
program
bekommt drei Worten:"-f file1" "-f file2" "-f file3"
statt 6:"-f" "file1" "-f" "file2" "-f" "file3"
.for
Schleife ist etwas sinnlos, da Sie schreiben könnenfor ((i=1; i<=100; i++))
und sie effizienter ist.Die Erweiterung von Klammern ist sehr praktisch, wenn Sie große Verzeichnisstrukturen erstellen:
Dies wird dir geben
Sie können sogar noch einen Schritt weiter gehen und die Klammererweiterung in die Klammererweiterung einfügen:
Dadurch erhalten Sie die gleiche Verzeichnisstruktur wie im obigen Beispiel.
quelle
mkdir -p dir1/{subdir{1,2}}/{subsubdir{1,2}}
) erfüllt eigentlich keinen Zweck. Sie könnten nur das getan:mkdir -p dir1/subdir{1,2}/subsubdir{1,2}
.subdir1
undsubdir2
im nicht-wörtlichen Sinne. Ersetzen Siesubdir1
mitcat
undsubdir2
mitdog
zum Beispiel.Ich benutze es, wenn ich das Tippen reduzieren möchte:
Ein anderes Beispiel:
quelle
Ich verwende es, um die tatsächliche Testleistung mit der gewünschten Testleistung während der Entwicklung zu vergleichen. Wenn Test Nr. 41 fehlschlägt, können Sie leicht den Unterschied zwischen der Testausgabe (in der Datei tests.output / 041) und der gewünschten Ausgabe (in der Datei tests.out / 041) erkennen:
quelle
Einige häufige Fälle für mich sind:
Zum Umbenennen:
oder
oder
(Obwohl es weniger umständlich ist, die Versionskontrolle für die letzten beiden Aufgaben zu verwenden.)
Zum Vergleichen (bereits erwähnt):
quelle
Hier gibt es mehrere gute Antworten, von denen jedoch keine erwähnt, wann keine Klammererweiterung verwendet werden soll. Wie die anderen Antwortenden verwende ich die geschweifte Klammer in der Befehlszeile ziemlich oft. Ich benutze es auch in meinen Aliasen und Funktionen, da ich eine intelligente Shell erwarten kann.
Ich nicht verwenden es in meinem Shell - Skripten (es sei denn , ein anderer Grund, sollten die Skripte bash oder zsh sein, obwohl in diesen Fällen ist es am besten zu einem „echten“ Skriptsprache zu aktualisieren wie
perl
oderpython
). Die Klammererweiterung ist nicht portabel, da sie nicht im POSIX-Shell-Standard enthalten ist. Auch wenn es in Ihrem Werk/bin/sh
- shebang ed Shell - Skripten, wird es nicht mehr ausgezogen auf Systemen/bin/sh
Schalen (zBdash
).Bei einem Unterschied von einer einzelnen Ziffer benötigen Sie keine Klammererweiterung. Eine Zeichenklasse wird ausreichen:
Baschismus:
Tragbar:
quelle
file{1,2}
immer auf erweitert wirdfile1 file2
, währendfile[12]
nur vorhandene Dateinamen erweitert werden: dh, wennfile1
vorhanden,file2
aber nicht, wird nur auffile[12]
erweitertfile1
. Die[]
Erweiterung ist wirklich eine eingeschränkte Version der?
Erweiterung (und sie werden "Pfadnamenerweiterungen" genannt).