O caractere ^
como sinônimo de |
data do shell Thompson . Eles foram apresentados ao mesmo tempo no Unix v4 e são mencionados juntos na página do manual . Sven Mascheck menciona que ^
foi “provavelmente [introduzido] por razões de conveniência no início de maiúsculas somente terminais ", onde digitar |
foi" um pouco doloroso ".
A casca de Thompson desapareceu há muito tempo, mas o seu sucessor Bourne shell manteve a mesma sintaxe (apesar de sua man page menciona apenas |
).
Shells sucessores como ash, bash e ksh entendem apenas |
como o caractere de pipe. Você não encontrará um shell Bourne real em variantes unix de código-fonte aberto, já que há muito tempo não havia nenhum release de código aberto do shell Bourne. (Eu acho que o OpenSolaris incluiu um, mas não foi adotado em outro lugar, já que por esse tempo ele ficou obsoleto por novas implementações).
A especificação Unix única não menciona ^
como um caractere especial, que efetivamente significa que os shells POSIX devem interpretá-lo literalmente. Eu acho que nunca houve uma variante totalmente compatível com POSIX do shell Bourne (apenas implementações independentes).
^
é especial em zsh quando a opção extendedglob
está ativada, mas não em seu modo de compatibilidade sh. Em seu modo padrão, ele se afasta do POSIX de várias maneiras.
Eu recomendo citar ^
em uma expressão regular de qualquer forma para maior clareza. Cite a expressão regular em um script, independentemente de quais caracteres aparecem nela.
¹ Exceto como o primeiro caractere de uma expressão de colchetes em um padrão curinga, em que !
é o caractere de negação padrão, mas as implementações também podem interpretar ^
da mesma maneira.