No es inútil: es una forma especializada del >
operador de redireccionamiento simple (y, quizás de manera confusa, nada que ver con tuberías). bash
y la mayoría de los otros shells modernos tienen una opción noclobber
, que evita que la redirección sobrescriba o destruya un archivo que ya existe. Por ejemplo, si noclobber
es verdadero y el archivo /tmp/output.txt
ya existe, entonces esto debería fallar:
$ some-command > /tmp/output.txt
Sin embargo, puede anular explícitamente la configuración de noclobber
con el >|
operador de redirección: la redirección funcionará, incluso si noclobber
está configurada.
Puede averiguar si noclobber
está configurado en su entorno actual con set -o
.
Para la nota histórica, tanto la opción "noclobber" como sus funciones de derivación provienen de csh
(finales de los 70). ksh
lo copió (principios de los 80) pero se usó en >|
lugar de >!
. POSIX especificó la ksh
sintaxis (por lo que todos los shells POSIX, incluidos bash, derivados de cenizas más nuevos utilizados como sh en algunos sistemas lo admiten). Zsh admite ambas sintaxis. No creo que se haya agregado a ninguna variante de shell Bourne, pero podría estar equivocado.
>|
en: stackoverflow.com/questions/818255/in-the-bash-shell-what-is-21/…