bash alias começando com pipe não funciona?

1

Estou tentando criar um alias que comece com um pipe.

ex:

echo -i "hello\nworld" | grep world
> world
alias gr="| grep"
echo -i "hello\nworld" gr world
> hello
> world gr world

Ou seja, se o alias começar com um canal, o aliasing parece não funcionar corretamente. Existe uma maneira de fazer isso?

    
por Leo Ufimtsev 09.08.2016 / 23:14

3 respostas

4

De man bash :

Aliases allow a string to be substituted for a word when it is used as the first word of a simple command.

O cano não pode ser a primeira palavra de um comando simples.

    
por 09.08.2016 / 23:25
2

Ah, seu alias funciona. Tente gr sozinho e seu shell lançará um erro de sintaxe devido a | no início da linha. Isso significa claramente que o alias funciona, ou seja, substitui uma string por outra quando é suposto .

No seu exemplo, gr é tratado como um argumento para echo , e é por isso que não há substituição. Não seria, mesmo se não houvesse nenhum tubo dentro do alias. O símbolo do pipe inicial não decide se o aliasing ocorre ou não; no entanto, isso leva a um erro quando ocorre, mas esse erro não tem nada a ver com a mecânica do alias.

    
por 09.08.2016 / 23:51
0

Se você pode / quer mudar de shell, você pode fazer isso em zsh, definindo o alias como

alias -g gr="| grep"
    
por 03.09.2016 / 20:34

Tags