Was bedeutet „Diff“ mit geschweiften Klammern?

Was bedeutet „Diff“ mit geschweiften Klammern?
for i in $(find template -type f | sed 's/^template//') ; do
    diff -wBNu {,./template}$i

Ich verstehe die For-Schleife, die alle Dateien im templateVerzeichnis durchläuft und dann alle Sätze, die mit Vorlage beginnen, durch ersetzt ''. Ist dieses Verständnis richtig? Was macht das diffhier?

Antwort1

Die Klammern führen eine „Klammernerweiterung“ der Shell aus. Die Konstruktion {,./template}$i erzeugt ein Wortpaar, das beide den Wert von $i enthält, wobei letzterem jedoch ./template vorangestellt ist. Versuchen Sie den Befehl

echo foo{,bar}

an der Shell-Eingabeaufforderung, um es in Aktion zu sehen. Dies ist im Bash-Handbuch unter „Klammernerweiterung“ dokumentiert.

verwandte Informationen