Oft verwende ich die Parametererweiterung in der Befehlszeile, z
cp a.{ext1,ext2}
das ist erweitert zu
cp a.ext1 a.ext2
In vielen Fällen verwende ich jedoch nicht cp
, sondern ein anderes Tool, nennen wir es cat
, und ich würde eine Ausgabeumleitung durchführen, wie z
cat a.ext1 > a.ext2
In meinem Fall a
kann es variieren oder ziemlich lang sein, daher möchte ich in der Lage sein, eine Art Klammererweiterung zu verwenden, die mindestens ein Vorkommen a
im Einzeiler benötigt. Wie kann ich das bekommen?
Ich benutze speziell
$ bash --version
GNU bash, version 3.2.51(1)
Aber auch Antworten mit anderen Shells werden geschätzt.
quelle
cat > a.ext{2,1}
bekomme ich eine mehrdeutige Weiterleitung. Irgendeine Idee warum das so ist? Tut{
etwas Besonderes?bash
jeder Zeit passieren Sie etwas , das sich ausdehnt , um mehr als ein Argument an eine Umleitungsoperator. Gleich ina='a b'; echo > $a
. Mitzsh
, das würde einige mult_ios tun (die Ausgabe in beide Dateien abschlagen )cat > a.ext{2,1} other_file
. Aber es gibt den Inhaltother_file
an beidea.ext1
unda.ext2
. Ich weiß nicht, wie es gelingt, die Umleitung zu duplizieren.zsh
Geräte eintee
intern.Wie wäre es mit:-
quelle
${PR}
Verwenden Sie eine Shell-Funktion
dann
erweitert sich auf
quelle
.1
und.2
sind für mich normalerweise nicht universell.