Errores punto y estrella en la línea de comandos

En inglés, se denomina dot-star errors a las torpezas que se cometen al pasar por alto el significado de los caracteres . y *. En la línea de comandos, el . representa el directorio actual. Por otro lado, * es un comodín propenso a la expansión de nombre de archivos en Bash. En este post te voy a contar cómo aprendí esto luego de mandarme una macana hace años. Mi consuelo es que en ese momento estaba trabajando sobre una máquina virtual. Por eso, no fue mayor el daño pero la experiencia me marcó. Veamos a continuación cómo prevenir lo que a partir de este momento llamaremos errores punto y estrella. Espero que después de leer esta publicación no le pase lo mismo a ningún nuevito como lo era yo en ese entonces.

Errores punto y estrella

Para empezar, déjenme contarles qué es lo que estaba haciendo al momento de aprender la lección. Había creado una serie de archivos en mi directorio home para hacer pruebas. Algunos de ellos estaban vacíos y otros no, e incluso algunos estaban ocultos. Para empeorar las cosas, mi usuario tenía permisos absolutos de root mediante sudo. Sin limitaciones en dichos permisos, este escenario equivale a estar logueado como root. Veamos por qué esto fue una muy, pero muy mala idea.

Al ejecutar chmod -R 777 .* para intentar  cambiar los permisos de todos los archivos ocultos me di cuenta de que Bash expande .* al directorio actual y al padre. Peor aún, al utilizar la opción -R me encontré con que todos los archivos y directorios contenidos en los mismos tenían ahora el nuevo permiso.

En ese momento no se me ocurrió hacer un dry-run con echo (ver Fig. 1) primero. Si lo hubiera hecho, me hubiera ahorrado el dolor de cabeza.

Un dry-run con echo puede ayudarnos a evitar errores punto y estrella
Fig. 1 – Un dry-run con echo puede ayudarnos a evitar errores punto y estrella

¡Espero que no cometan el mismo error que yo!

Hasta la próxima.

¡Aprovechá la oportunidad de suscribirte al blog para recibir en tu correo el post nuestro de cada día, novedades, y promociones exclusivas!