Não é inútil - é uma forma especializada do >
operador de redirecionamento simples (e, talvez confuso, nada a ver com pipes). bash
e a maioria dos outros shells modernos tem uma opção noclobber
, que impede o redirecionamento de sobrescrever ou destruir um arquivo que já existe. Por exemplo, se noclobber
for verdadeiro e o arquivo /tmp/output.txt
já existir, isso deverá falhar:
$ some-command > /tmp/output.txt
No entanto, você pode substituir explicitamente a configuração noclobber
pelo >|
operador de redirecionamento - o redirecionamento funcionará, mesmo que noclobber
esteja definido.
Você pode descobrir se noclobber
está definido em seu ambiente atual com set -o
.
Para a nota histórica, a opção "noclobber" e seus recursos de derivação vêm do csh
(final dos anos 70). ksh
copiado (início dos anos 80), mas usado em >|
vez de >!
. O POSIX especificou a ksh
sintaxe (portanto, todos os shells POSIX, incluindo bash, derivados de cinzas mais recentes usados como sh em alguns sistemas, o suportam). O Zsh suporta as duas sintaxes. Eu não acho que foi adicionado a qualquer variante Bourne shell, mas posso estar errado.
>|
em: stackoverflow.com/questions/818255/in-the-bash-shell-what-is-21/…