Escrevi hoje um pequeno script que continha
grep -q ^local0 /etc/syslog.conf
Durante a revisão, um colega de trabalho sugeriu que ^local0
fosse citado porque ^
significa "tubo" na casca de Bourne. Surpreso com essa afirmação, tentei rastrear qualquer referência que mencionasse isso. Nada que eu encontrei na internet sugeria que isso era um problema.
No entanto, verifica-se que a implementação de bsh
(que afirma ser o shell Bourne) no AIX 7 realmente tem esse comportamento:
> bsh
$ ls ^ wc
23 23 183
$ ls | wc
23 23 183
Nenhuma das outras implementações do "shell Bourne" que tentei se comportar dessa maneira (ou seja, ^
não é considerada um metacaractere do shell). Eu tentei sh
no CentOS (que é realmente o bash) e sh
no FreeBSD (o que não é o bash). Não tenho muitos outros sistemas para tentar.
Esse comportamento é esperado? Quais conchas consideram ^
um metacaractere de tubo?
[ x"$foo" = x"bar" ]
.
bsh
não é o Bourne Shell. O nome foi abusado apenas para o Bourne Shell no AIX. bsh
é um shell introduzido por mim em 1984 na H.Berhold AG no UNOS (o primeiro clone do UNIX). Note-se que AIX não era inexistente em 1984.
^
é um caractere de negação no zsh e também no espaço regex. Como um comentário separado, geralmente é aconselhável usar aspas simples na expressão grep para portabilidade entre shells.