¿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?

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.


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

¿Sabes por qué err &>| outno funciona?
Sanghyun Lee
Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.