Exclusión a tareas que ejecutes en Bash

A veces necesitamos ejecutar un comando, por ejemplo cambiar los permisos de una carpeta y su contenido, no obstante deseamos que NO se aplique este cambio a un archivo en específico, o a una carpeta en específica… aún cuando se encuentre dentro de la carpeta sobre la cual ejecutamos el comando.

Para que se entienda mejor, tengo una carpeta (archivos) y dentro de ella 4 archivos (doc.txt , file.mp4, lista.txt y tesis.doc), deseo cambiar el permiso de esos archivos para que solo el propietario pueda acceder, hacer eso excepto con lista.txt, que quiero todos puedan ver, o sea, que no cambien sus permisos.

Resumiendo:

  • doc.txt , file.mp4 y tesis.doc SOLO podrán ser vistos por el propietario
  • lista.txt podrá ser visto por todos, o sea, no quiero que sus permisos varíen.

Para lograr esto puedo cambiar los permisos a todos los archivos y luego, además cambiarle los permisos a lista.txt para que los tenga como antes. Esto serían dos líneas… pero, como casi siempre en Linux, hay una forma de optimizar 😉

bash

Veamos cómo:

  1. Para cambiar los permisos a que solo el propietario pueda acceder usaremos: chmod 700
  2. Para que le cambie los permisos en todos los archivos de esa carpeta (recuerdo que se llama: archivos) usaremos: archivos/
  3. Para excluir el archivo lista.txt usaremos: /!(lista.txt)

O sea el comando final sería:

chmod 700 archivos/!(lista.txt)

Así de simple, aquí les dejo un screenshot de los permisos antes de los archivos de esa carpeta, la ejecución del comando, y luego como quedan los permisos:
exclusion-chmod-bash

En caso de que queramos excluir más de un archivo, por ejemplo lista.txt y además tesis.doc , podemos separar esos archivos con | … o sea:

chmod 700 archivos/!(lista.txt|tesis.doc)

¿A que es simple? 😀

Bueno nada más que agregar, es una sencillez pero que cuando se trabaja con grandes volúmenes de información, puede salvar el día 😉

i-love-bin-bash_by-kzkggaara


Deja tu comentario

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

*

*

  1. Responsable de los datos: Miguel Ángel Gatón
  2. Finalidad de los datos: Controlar el SPAM, gestión de comentarios.
  3. Legitimación: Tu consentimiento
  4. Comunicación de los datos: No se comunicarán los datos a terceros salvo por obligación legal.
  5. Almacenamiento de los datos: Base de datos alojada en Occentus Networks (UE)
  6. Derechos: En cualquier momento puedes limitar, recuperar y borrar tu información.

  1.   Erick dijo

    La verdad nunca se me hubiera ocurrido, lo de excluir aunque a veces me he topado con este dilema, Saludos

  2.   Nick dijo

    Excelente TIP, Saludos

  3.   José Emilio Badía Valdés dijo

    Kaze, soy emilio del ipi cepero bonilla, como estás? Gracias por el artículo, me sirvió cantidad

    1.    KZKG^Gaara dijo

      Hola que tal chaval 😀

  4.   PegasusOnline dijo

    Muy bueno !!!!!

    gracias por compartilo