Problema do alias de Bash

3

Não consigo entender por que usar o alias solicita um erro, mas usar a mesma sintaxe sem alias não ...

alias grep='egrep -iIs '
19:47:24 ~
cat /etc/services | \grep ssh
ssh     22/tcp              # SSH Remote Login Protocol
19:47:26 ~
cat /etc/services | grep ssh
grep: option requires an argument -- 'X'
Usage: grep [OPTION]... PATTERN [FILE]...
Try 'grep --help' for more information.
19:47:33 ~
cat /etc/services | egrep -iIs ssh
ssh     22/tcp              # SSH Remote Login Protocol

Você pode explicar isso?

    
por johnmuir 14.09.2017 / 19:56

1 resposta

10

Conforme observado na seção ALIASES de man bash

If the last character of the alias value is a blank, then the next command word following the alias is also checked for alias expansion.

Como você definiu seu grep alias com um último caractere em branco, o shell também expandirá qualquer alias que você tenha definido para ssh - se for alias ssh='ssh -X' , por exemplo, o comando se tornará

cat /etc/services | egrep -iIs ssh -X

que passa o -X como um argumento adicional para egrep .

A menos que haja um motivo específico para incluir o espaço em branco, basta definir o alias sem ele, ou seja,

alias grep='egrep -iIs'
    
por 15.09.2017 / 01:52

Tags