alias 'gsi=<<eof grep --color'
Funcionar como alias é como a substituição de texto do pré-processador, em que a substituição é interpretada como código de shell novamente.
O seu não estava funcionando como você tinha que "$1"
. Com gsi file.txt
substituído por cat <<eof | grep --color "$1" file.txt
, o shell continua a interpretar essa linha de comando e $1
nesse ponto é o primeiro parâmetro posicional do shell que provavelmente está vazio, a menos que você tenha feito um set something
antes. Então, você deseja remover esse "$1"
aqui. Você pode remover o UUOC também.
gsi() { cat <<eof | grep --color "$1" ; }
está errado de um ponto de vista de sintaxe, pois a linha eof
está ausente depois desse cat <<eof
.