Se puoi permetterti di digitare tutte le virgole della quantità di smoothcomandi che desideri, puoi trarre vantaggio dall'espansione di parentesi separata dalla virgola della shell.
TL; DR
L'intera riga di comando per il caso di esempio sarebbe:
generate | eval 'smooth |'{,,,,} plot
Nota:
- aggiungere o rimuovere le virgole se si desidera più o meno ripetizioni di
smooth |
- non c'è
|prima plotperché è incluso nell'ultima smooth |stringa prodotta da Brace Expansion
- è inoltre possibile fornire argomenti a
smooth, purché sia possibile includerli correttamente nella parte fissa quotata che precede la parentesi graffa aperta; in ogni caso ricorda che li forniresti a tutte le ripetizioni del comando
Come funziona
L'espansione di parentesi graffe separate da virgola consente di produrre in modo dinamico stringhe, ciascuna composta da una parte fissa specificata più le parti variabili specificate. Produce tante stringhe quante sono le parti variabili indicate, come a{b,c,d}produce ab ac ad.
Il piccolo trucco qui è che se invece si crea un elenco di parti variabili vuote , ovvero con solo virgole all'interno delle parentesi graffe, l'espansione Brace produrrà solo copie della parte fissa. Per esempio:
smooth{,,,,}
produrrà:
smooth smooth smooth smooth smooth
Si noti che 4 virgole producono 5 smoothstringhe. Ecco come funziona questa espansione Brace: produce stringhe quante più virgole più una.
Ovviamente nel tuo caso devi anche |separare ciascuno smooth, quindi aggiungilo nella parte fissa ma fai attenzione a citarlo correttamente per fare in modo che la shell non lo interpreti immediatamente. Questo è:
'smooth|'{,,,,}
produrrà:
'smooth|' 'smooth|' 'smooth|' 'smooth|' 'smooth|'
Fare attenzione a posizionare sempre la parte fissa immediatamente adiacente alla staffa aperta, cioè senza spazi tra la ' e la {.
(Si noti inoltre che per formare la parte fissa è possibile utilizzare anche virgolette doppie anziché virgolette singole, se è necessario espandere le variabili della shell nella parte fissa. Basta occuparsi dell'escaping aggiuntivo necessario quando si verificano i caratteri speciali di alcune shell all'interno di una stringa tra virgolette doppie).
A questo punto hai bisogno di eval applicarlo a quella stringa per far sì che la shell finalmente la interpreti come il comando pipeline che dovrebbe essere.
Quindi, per riassumere tutto, l'intera riga di comando per il tuo caso di esempio sarebbe:
generate | eval 'smooth |'{,,,,} plot