La guía definitiva para entender los archivos en Linux

Introducción

Después del artículo anterior, estoy seguro de que estás ansioso y deseoso por adentrarte en algunos comandos más y comenzar a jugar con el sistema.

Llegaremos a eso en breve, pero primero necesitamos cubrir algo de teoría para que cuando comencemos a jugar con el sistema puedas entender por qué se está comportando de la manera que es y cómo puedes usar los comandos que aprendiste anteriormente.

Eso es lo que intentaré hacer en este post y el siguiente. Después de eso comenzará a ponerse interesante, te lo prometo.

Todo es un archivo

De acuerdo, lo primero que debemos apreciar con Linux es que, bajo el capó, todo es en realidad un archivo. Un archivo de texto es un archivo, un directorio es un archivo, tu teclado es un archivo (uno que solo lee el sistema), tu monitor es un archivo (uno en el que solo escribes el sistema) etc. Para empezar, esto no afecta demasiado lo que hacemos, pero tenlo en cuenta, ya que ayuda a comprender el comportamiento de Linux a medida que administramos archivos y directorios.

Linux es un sistema sin extensión

Esto a veces puede ser difícil de entender, pero a medida que trabajes en los artículos siguientes comenzará a tener más sentido. Una extensión de archivo normalmente es un conjunto de 2 a 4 caracteres después de un nombre completo al final de un archivo, que denota qué tipo de archivo es. Las siguientes son extensiones comunes:

  • archivo.exe: un archivo ejecutable o programa.
  • archivo.txt: un archivo de texto sin formato.
  • archivo.png, archivo.gif, archivo.jpg: una imagen.

En otros sistemas como Windows, la extensión es importante y el sistema la usa para determinar qué tipo de archivo es. En Linux, el sistema en realidad ignora la extensión y mira dentro del archivo para determinar qué tipo de archivo es.

Entonces, por ejemplo, podrías tener un archivo yomismo.png que es una foto mía. Podría cambiar el nombre del archivo yomismo.txt o solo a yomismo y Linux aún trataría felizmente el archivo como un archivo de imagen.

Como tal, a veces puede ser difícil saber con certeza qué tipo de archivo es un archivo en particular. Afortunadamente, hay un comando llamado file que podemos usar para averiguarlo.

File[ruta de archivo]

Ahora puede que te preguntes por qué especifiqué el argumento de la línea de comandos anterior como ruta en lugar de archivo.

Si recuerdas el artículo anterior, cada vez que especificamos un archivo o directorio en la línea de comandos, en realidad es una ruta. Además, dado que los directorios (como se mencionó anteriormente) en realidad son solo un tipo especial de archivo, sería más exacto decir que una ruta es un medio para llegar a una ubicación particular en el sistema y que esa ubicación es un archivo.

Linux es sensible a mayúsculas y minúsculas

Esto es muy importante y una fuente común de problemas para las personas nuevas en Linux. Otros sistemas como Windows no distinguen entre mayúsculas y minúsculas cuando se trata de referirse a archivos. Linux no es así. Como tal, es posible tener dos o más archivos y directorios con el mismo nombre, pero con letras mayúsculas y minúsculas que los hacen diferentes.

Linux ve todo esto como archivos distintos y separados.

También ten en cuenta la distinción entre mayúsculas y minúsculas al tratar con las opciones de línea de comandos. Por ejemplo, con el comando ls hay dos opciones s y S, que hacen cosas diferentes.

Un error común es ver una opción que está en mayúscula, pero la ingresas en minúscula y te preguntas por qué el resultado no coincide con tus expectativas.

Espacios en los nombres

Los espacios en los nombres de archivo y directorio son perfectamente válidos, pero debemos tener un poco de cuidado con ellos. Como recordarás, un espacio en la línea de comandos es cómo separamos los elementos. Es de esta manera cómo sabemos cuál es el nombre del programa y podemos identificar cada argumento de línea de comandos. Si quisiéramos movernos a un directorio llamado Holiday Photos, por ejemplo, lo siguiente no funcionaría.

Lo que sucede es que Holiday Photos se ve como dos argumentos de línea de comandos. cd  te mueve a cualquier directorio especificado por el primer argumento de línea de comandos solamente. Para evitar esto, debemos identificar en la terminal que deseamos que Holiday Photos se vea como un argumento de línea de comando único. Hay dos formas de hacerlo, de cualquier manera, es igual de válido.

Comillas

El primer enfoque implica el uso de comillas alrededor de todo el elemento. Puedes usar comillas simples o dobles (más adelante veremos que hay una sutil diferencia entre las dos, pero por ahora esa diferencia no es un problema). Cualquier cosa entre comillas se considera un solo elemento.

Caracter Escape

Otro método es usar lo que se llama un carácter de escape, que es una barra invertida (\). Lo que hace la barra invertida es escapar (o anular) el significado especial del siguiente carácter.

En el ejemplo anterior, el espacio entre Holiday y Photos normalmente tendría un significado especial que es separarlos como argumentos de línea de comandos distintos. Debido a que colocamos una barra invertida frente a él, ese significado especial fue eliminado.

Truco

En la sección anterior aprendimos sobre algo llamado Tab Completion. Si usas esto antes de encontrar el espacio en el nombre del directorio, la terminal usará Escape automáticamente en cualquier espacio en el nombre.

Archivos y directorios ocultos

Linux en realidad tiene un mecanismo muy simple y elegante para especificar que un archivo o directorio está oculto. Si el nombre del archivo o directorio comienza con un . (punto final), entonces se considera oculto.

Ni siquiera necesitas un comando o acción especial para ocultar un archivo. Los archivos y directorios pueden estar ocultos por varias razones. Los archivos de configuración para un usuario en particular (que normalmente se almacenan en su directorio de inicio) están ocultos, por ejemplo, para que no se interpongan en el camino del usuario en sus tareas cotidianas.

Para ocultar un archivo o directorio, todo lo que necesitas hacer es crear el archivo o directorio con el nombre comenzando con  un . o renómbralo para que parezca como tal.

Del mismo modo, puedes cambiar el nombre de un archivo oculto para eliminar el . y se volverá oculto. El comando ls que hemos visto en la sección anterior no enumerará los archivos y directorios ocultos por defecto. Podemos modificarlo incluyendo la opción de línea de comandos -a para que muestre archivos y directorios ocultos.

En el ejemplo anterior, verás que cuando enumeramos todos los elementos en nuestro directorio actual, los dos primeros elementos fueron. y … Si no estás seguro de cuáles son, puedes leer nuestro post anterior sobre Rutas.

Resumen

Lo que aprendimos

file

Te permite obtener información sobre qué tipo de archivo es un archivo o directorio.

ls -a

Sirve para listar el contenido de un directorio, incluidos los archivos ocultos.

Conceptos importantes

En el fondo todo es un archivo Linux

Incluso directorios.

Linux es un sistema sin extensión

Los archivos pueden tener cualquier extensión que te guste o ninguna.

Linux distingue entre mayúsculas y minúsculas

Cuidado con los errores triviales.

Practicando lo aprendido

Bien, es momento de poner en práctica lo aprendido. Prueba lo siguiente:

  • Intenta ejecutar el comando file asignando algunos argumentos diferentes. Asegúrate de usar una variedad de rutas absolutas y relativas al hacer esto.
  • Ahora emite un comando que enumere el contenido de tu directorio de inicio, incluidos los archivos y directorios ocultos.