Se você puder digitar tantas vírgulas quanto a quantidade de smoothcomandos que desejar, poderá aproveitar a expansão Brace separada por vírgula do shell.
TL; DR
A linha de comando inteira para o seu caso de amostra seria:
generate | eval 'smooth |'{,,,,} plot
Nota:
- adicione ou remova vírgulas se desejar mais ou menos repetições de
smooth |
- não há
|antes, plotporque isso está incluído na última smooth |string produzida pela Brace Expansion
- você também pode fornecer argumentos
smooth, desde que possa incluí-los corretamente na parte fixa citada que precede a chave aberta; de qualquer forma, lembre-se de que você as forneceria a todas as repetições do comando
Como funciona
A expansão de cinta separada por vírgula permite produzir dinamicamente seqüências de caracteres, cada uma feita de uma parte fixa especificada mais as partes variáveis especificadas. Produz tantas seqüências quanto as partes variáveis indicadas, como a{b,c,d}produz ab ac ad.
O pequeno truque aqui é que, se você preferir fazer uma lista de peças variáveis vazias , ou seja, com apenas vírgulas dentro dos aparelhos, a expansão de aparelho produzirá apenas cópias da peça fixa. Por exemplo:
smooth{,,,,}
vai produzir:
smooth smooth smooth smooth smooth
Observe que 4 vírgulas produzem 5 smoothstrings. É assim que essa expansão de cinta funciona: produz seqüências de caracteres tantas vírgulas quanto uma.
É claro que, no seu caso, você também precisa |separar cada um deles smooth, portanto, basta adicioná-lo na parte fixa, mas tenha o cuidado de citá-lo adequadamente para que o shell não o interprete de uma só vez. Isso é:
'smooth|'{,,,,}
vai produzir:
'smooth|' 'smooth|' 'smooth|' 'smooth|' 'smooth|'
Sempre coloque a peça fixa imediatamente adjacente ao suporte aberto, ou seja, não há espaços entre o ' e o {.
(Observe também que para formar a parte fixa, você também pode usar aspas duplas em vez de aspas simples, se precisar expandir variáveis de shell na parte fixa. Apenas cuide da fuga extra que é necessária quando ocorrem alguns caracteres especiais do shell dentro de uma sequência de aspas duplas).
Neste ponto, você precisa de uma eval aplicação aplicada a essa string para fazer com que o shell finalmente a interprete como o comando em pipeline que deveria ser.
Portanto, para resumir tudo, toda a linha de comando do seu caso de amostra seria:
generate | eval 'smooth |'{,,,,} plot