È solo una domanda "perché voglio sapere" o c'è un vero caso d'uso per questo? Potremmo fare un po' di ginnastica per farlo:
$ eval echo\ {a,b,c}\;
a
b
c
Ma darei la caccia a chiunque inserisse questo tipo di comandi offuscanti nei nostri script di sistema.
Perché non puntare invece sulla chiarezza:
$ for X in {a,b,c}; do echo $X; done
Potresti anche andare fino in fondo e inserire un paio di newline e indentarlo un po' in modo da essere sempre in grado di capire cosa stavi cercando di fare.
Sulla base della risposta selezionata di Mark Mann, sono stato in grado di derivare ulteriormente questo esempio, che funziona alla grande:
$ eval echo\ category_{17,32,33}.properties\{,.bak\}\;
category_17.properties category_17.properties.bak
category_32.properties category_32.properties.bak
category_33.properties category_33.properties.bak
Ciò che mostra è che quando si utilizzano più occorrenze di espansione delle parentesi graffe all'interno di una linea, l'esempio originale di Mark avrebbe stampato ogni variazione individualmente. Invece, volevo usare la sua risposta per spostare/rinominare più file. Per garantire che l'output corrisponda al formato mv
normalmente si aspetta (mv oldfilename newfilename
), ho eseguito l'escape della seconda occorrenza dell'espansione delle parentesi graffe, in modo che non venga valutata fino a dopo il eval
iniziale comando era stato eseguito.
Poiché l'output di cui sopra è apparso come previsto, sono stato in grado di eseguire il seguente comando:
$ eval mv\ category_{17,32,33}.properties\{,.bak\}\;
$ ls
category_17.properties.bak category_32.properties.bak category_33.properties.bak
Mille grazie a Mark per la sua risposta originale. Vota positivamente la sua risposta se ti piace ciò che la sua risposta mi ha permesso di fare :-)