Determinar los tipos de archivos

LinuxBeginner
Practicar Ahora

Introducción

En Windows o macOS, está acostumbrado a que las extensiones indiquen qué es un archivo. Si termina en .jpg, es una imagen. Si termina en .exe, es un programa.

Sin embargo, en Linux, los nombres de archivo son solo etiquetas. Y, como sucede en la vida real, las etiquetas pueden estar equivocadas. Puede tomar un frasco de sal y escribir «Azúcar» en la etiqueta, pero su contenido seguirá teniendo sabor salado.

Linux no confía en la etiqueta —el nombre del archivo—. En su lugar, examina el contenido para determinar qué es realmente.

Esto refleja una idea más amplia de Unix: el significado suele depender de cómo están estructurados y cómo se utilizan los datos, no solo de su nombre. Las extensiones pueden ser pistas prácticas para las personas, pero no son la fuente definitiva de información.

En este laboratorio utilizará el comando file para determinar la verdadera naturaleza de los archivos, independientemente de sus nombres.

Esta habilidad es importante en las operaciones reales. Puede encontrarse con archivos descargados, registros, volcados, scripts o archivos adjuntos sospechosos con nombres engañosos. Antes de abrirlos, ejecutarlos o editarlos, es recomendable identificar qué son realmente.

Comprobar un archivo de texto

Comencemos con un archivo que es exactamente lo que indica su nombre.

Primero, vaya al directorio del proyecto:

cd ~/project
ls -l

Verá welcome.txt. La etiqueta .txt sugiere que es un archivo de texto. Pero recuerde: no confiamos en las etiquetas.

Pida al comando file que lo examine:

file welcome.txt

Verá un resultado similar a este:

welcome.txt: ASCII text

file ha comprobado el contenido y ha confirmado: «Sí, esto es texto ASCII».

Comandos como cat, less y los editores funcionan mejor cuando ya sabe si un archivo es de texto. El comando file le ayuda a tomar esa decisión de forma segura.

Esto significa que puede leerlo sin riesgo. Puede utilizar comandos como cat:

cat welcome.txt

Comprobar un archivo binario

Los programas del sistema, como ls, mkdir o cat, no son archivos de texto. Son archivos binarios, escritos en un lenguaje que solo entiende el procesador del equipo.

Veamos el propio comando ls. Se encuentra en la carpeta /bin.

Pida a file que lo identifique:

file /bin/ls

El resultado puede parecer alarmante, pero contiene información muy útil:

/bin/ls: ELF 64-bit LSB pie executable, x86-64, ...

No se preocupe. Esta es la explicación:

  • ELF: formato estándar de los programas de Linux, similar a .exe en Windows.
  • executable: un programa que puede ejecutar.

ELF significa Executable and Linkable Format, el formato binario estándar utilizado por muchos sistemas Linux. No necesita recordar el nombre completo, pero es útil reconocer ELF como «esto es un ejecutable de Linux».

La conclusión principal es que file le ha indicado que se trata de un ejecutable. Si intentara ejecutar cat /bin/ls, la pantalla se llenaría de símbolos extraños. Saber que un archivo es binario le advierte: «No lo lea; ejecútelo».

Identificar archivos desconocidos

Ahora viene el trabajo de detective. En la carpeta del proyecto hay dos archivos sospechosos: mystery_file y fake_image.jpg.

Caso 1: El archivo sin nombre

mystery_file no tiene extensión. ¿Es texto? ¿Es un programa?

Póngalo a prueba:

file mystery_file

Resultado:

mystery_file: PNG image data, ...

¡Ajá! Es una imagen PNG. Aunque no tiene una etiqueta en su nombre, Linux ha identificado la firma interna de una imagen PNG.

Caso 2: El mentiroso

Ahora observe fake_image.jpg. La etiqueta dice «imagen JPEG». Pero ¿lo es realmente?

file fake_image.jpg

Resultado:

fake_image.jpg: ASCII text

¡Es una mentira! Solo es un archivo de texto.

Como sabemos que es texto, podemos leerlo de forma segura:

cat fake_image.jpg

Esta habilidad específica —identificar archivos por su contenido en lugar de por su nombre— es lo que diferencia a los usuarios expertos de Linux de los principiantes.

También es una de las razones por las que Linux depende menos de las extensiones que algunos sistemas operativos de escritorio. Las extensiones son convenciones útiles, pero el sistema suele obtener más información al inspeccionar directamente el archivo.

Resumen

Ha aprendido a mirar más allá de la etiqueta y reconocer la verdadera naturaleza de los archivos.

  • file filename: el comando que revela la verdad.
  • Las extensiones pueden engañar: .jpg no siempre significa que sea una imagen.
  • ¿No hay extensión? No hay problema: Linux no necesita extensiones para saber qué es un archivo.

Ahora está preparado para trabajar con cualquier archivo desconocido que encuentre.