Acabei de ver isso escrito;
$ some-command >| /tmp/output.txt
Tubos verticais são usados em redirecionamentos padrão "canalizando" a saída de um comando para outro, é >|
de fato completamente inútil, pois seria o mesmo que apenas >
neste cenário?
bash
io-redirection
pipe
jwbensley
fonte
fonte
>|
em: stackoverflow.com/questions/818255/in-the-bash-shell-what-is-21/…Respostas:
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çãonoclobber
, que impede o redirecionamento de sobrescrever ou destruir um arquivo que já existe. Por exemplo, senoclobber
for verdadeiro e o arquivo/tmp/output.txt
já existir, isso deverá falhar:No entanto, você pode substituir explicitamente a configuração
noclobber
pelo>|
operador de redirecionamento - o redirecionamento funcionará, mesmo quenoclobber
esteja definido.Você pode descobrir se
noclobber
está definido em seu ambiente atual comset -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 aksh
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.fonte
sh
temnoclobber
, uma vez que cerca de Maio de 2002.