¿Cómo proteger el archivo de shell de Linux usando noclobber en bash Shell?

La mayoría de los shells de Linux (bash, csh, ksh, tcsh) tienen un mecanismo de protección de archivos incorporado para evitar que los archivos se sobrescriban accidentalmente. En este artículo, veremos cómo prevenirlo configurando la opción noclobber.

paliza

Redirigir la salida estándar a un archivo que ya existe sobrescribiría el contenido del archivo existente, lo que provocaría la pérdida de datos. Este proceso de sobrescribir los datos existentes se denomina clobbing. Para evitar sobrescribir, el shell proporciona una opción llamada «noclobber»

Protección de archivos usando noclobber:

Cuando se establece la opción noclobber, el shell se quejará si una redirección de shell (>) intenta sobrescribir un archivo existente. La opción noclobber se activa usando el comando set en bash/ksh. Por defecto, la opción está deshabilitada.

ajuste noclobber

Una vez habilitada la opción, bash se quejará si intentamos sobrescribir un archivo,

Error de sobreescritura de archivo

Protecciones superiores:

Para anular temporalmente el comportamiento de noclobber, se utiliza un operador de redirección especial (>|),

Deshabilite noclobber usando >|

Otra forma es volver al comportamiento predeterminado deshabilitando la opción de shell,

Deshabilitar noclobber en shell

De forma predeterminada, la opción noclobber está deshabilitada, y para habilitarla cada vez que se genera un nuevo shell, debe agregarse en el script de inicio (~/.bashrc),

Agregar noclobber en bashrc

La opción noclobber protege las sobrescrituras de archivos solo para la redirección. Eliminar el archivo a través de rm y agregarlo al archivo a través de la redirección «>>» funciona normalmente.

noclobber solo para >

Truncar un archivo de registro:

Los archivos de registro se mantienen abiertos por el servicio que registra los datos. No es posible eliminarlos ya que el sistema operativo mantiene una pestaña en los identificadores de archivos abiertos. Para truncar el archivo de registro, redirigimos /dev/null al archivo mediante el operador de anulación.

/dev/null >| my_logfile.log

Publicación traducida automáticamente

Artículo escrito por kani_26 y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *