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
2
[root@servcentos ~]# cat > salida.txt
-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