Evitar la escritura accidental en Linux con noclobber

Un pequeño tip donde aprendemos a evitar la escritura accidental en GNU/Linux con noclobber. Para conseguirlo, solo debemos exportar el valor «noclobber» a las variables de la sesión de la shell de BASH

Como sabemos para enviar la salida standard a otro fichero lo haríamos como sigue:

  1. comando > fichero.txt

Está claro que, si en ese fichero tenemos información importante, que otra persona o nosotros mismos, por error, enviamos información con stdout «>«, podemos tener un grave problema. Para evitarlo debemos declarar el valor «noclobber» en la sesión de la shell.

De esta manera indicaremos a shell de BASH, que no elimine datos ni contenidos de archivos por error.

¿Cómo añadimos el valor noclobber?

Debemos abrir la terminal y escribir

  1. # set -o noclobber

Una vez hecho esto, si queremos escribir sobre un archivo:

  1. [root@servcentos ~]# cat > salida.txt
  2. -bash: salida.txt: no se puede sobreescribir un fichero existente

También lo podemos añadir a las variables de entorno de manera permanente, editando el fichero «.bashrc»

¿Cómo deshabilitar la protección de noclobber?

Para poder deshabilitarlo, solo hemos de escribir:

  1. # set +o noclobber

Si no queremos deshabilitarla, por precaución, también podemos forzar la escritura, de la siguiente manera:

  1. # cat >| Salida.txt

Espero que os sea de utilidad esta información en algún momento.

Para más información:

Artículo de Wikipedia sobre Clobbering