Bash: ¿Qué hace "> |"?

Acabo de ver esto escrito;

$ some-command >| /tmp/output.txt 

Los tubos verticales se utilizan en networkingirecciones estándar "cparsing" la salida de un command a otro, es >| de hecho completamente inútil, ya que sería lo mismo que simplemente > en este escenario?

No es inútil, es una forma especializada del operador de networkingirección simple (y, tal vez de manera confusa, no tiene nada que ver con las tuberías). bash y la mayoría de las demás conchas modernas tienen una opción noclobber , que impide que la networkingirección sobrescriba o destruya un file que ya existe. Por ejemplo, si noclobber es verdadero y el file /tmp/output.txt ya existe, entonces esto debería fallar:

 $ some-command > /tmp/output.txt 

Sin embargo, puede anular explícitamente la configuration de noclobber con el >| operador de networkingirección: la networkingirección funcionará, incluso si noclobber se establece noclobber .

Puede averiguar si noclobber está configurado en su entorno actual con el set -o .

Para la nota histórica, tanto la opción "noclobber" como sus características de derivación provienen de csh (finales de los 70). ksh copió (principios de los 80) pero lo usó >| en lugar de >! . POSIX especificó la syntax ksh (por lo que todos los shells POSIX incluyendo bash, derivados de ceniza más nuevos utilizados como sh en algunos sistemas lo admiten). Zsh admite ambas syntax. No creo que se haya agregado a ninguna variante de Bourne shell, pero podría estar equivocado.