bash alias renomeiam a função com argumentos

0

Eu tenho tentado o dia todo sem sucesso para receber o bash para receber argumentos: a referência mais próxima a isso que eu posso encontrar é:

Como passar parâmetros para um alias?

se eu executar:

rename -v -n 's/^the.//' * 

faz exatamente o que eu preciso, mas eu gostaria de me transformar em um alias que receba "o". string em tempo de execução. Existe uma maneira de fazer isso?

Por favor, qualquer idéia seria bem vinda!

Eu tentei isso, mas sem sucesso:

alias rp="_rp(){ rename 's/"$1"//' *; unset -f _rp; }; _rp"
    
por user2804894 15.08.2017 / 23:10

1 resposta

3

Você não pode usar argumentos em um alias. (Você pode anexar itens depois, mas isso apenas complica essa situação). Veja a página do manual ( man bash ) diz sobre eles:

The first word of each simple command, if unquoted, is checked to see if it has an alias. If so, that word is replaced by the text of the alias. [...]

There is no mechanism for using arguments in the replacement text. If arguments are needed, a shell function should be used. [...]

For almost every purpose, aliases are superseded by shell functions.

Portanto, em vez de um alias, você deve usar uma função.

rp() { rename "s{$1}{}" *; }    # No "{}" characters in the substitution

Uso

rp 'the.'    # Quotes optional but recommended. Remember . represents any character
    
por 15.08.2017 / 23:19