¿Cómo anulo la opción bash "noclobber"?

17

La bash noclobberopción evita que uno sobrescriba archivos con redireccionamiento. Pero a veces realmente quiero. cshtiene una opción similar y se puede anular colocando un !antes de los nombres de archivo. ¿Hay alguna forma de hacer esto bash?

vy32
fuente

Respuestas:

19

Si. Añadir |al operador de redireccionamiento para formar >|. Esto se encuentra en el § 3.6.2 del Manual de referencia de Bash , qv

Si el operador de redireccionamiento es '>', y la opción noclobber para el conjunto incorporado se ha habilitado, la redirección fallará si el archivo cuyo nombre resulta de la expansión de la palabra existe y es un archivo normal. Si el operador de redirección es '> |', o el operador de redirección es '>' y la opción noclobber no está habilitada, la redirección se intenta incluso si el archivo nombrado por palabra existe.

Visita este tutorial sobre la opción noclobber . Puede ser de ayuda.

JdeBP
fuente
3

Use |("pipe") en bashlugar de !("bang") como lo haría en csh. Por ejemplo:

echo done >| out

Tenga en cuenta que si quiere volver a dirigir stderra stdout y anular noclobber, ni >|&tampoco &>|va a funcionar; use la forma larga en su lugar:

cmd-with-errors done >| out 2>&1
Turvalar
fuente
¿Sabes por qué err &>| outno funciona?
Sanghyun Lee