GNU/Linux >> Linux Esercitazione >  >> Linux

Espansione delle parentesi graffe:esegui diversi comandi invece di espandere su una riga?

È 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 :-)


Linux
  1. Espansione e variabili Bash Brace?

  2. In che modo questo comando Su -c "..." sembra passare due comandi invece di uno?

  3. Come eseguire più comandi che hanno e in una riga di comando?

  4. Bash Brace Expansion Tutorial:6 esempi di espansione di espressioni all'interno di parentesi graffe

  5. Come posso eseguire correttamente gli script della riga di comando Perl one liner?

Come eseguire i comandi Linux in background

Come eseguire più comandi Linux in un unico comando

Come eseguire comandi Sudo senza password

Come eseguire sudo comandi senza password

argomenti della riga di comando per eseguire docker

Conversione di una bella stampa JSON in una riga