* Archivos ejecutables: Estos son archivos que pueden ser ejecutados directamente por el sistema operativo. En Ubuntu (y otros sistemas de Linux), estos generalmente tienen el sufijo `.out` (aunque este no es siempre el caso), o ningún sufijo en absoluto. A menudo están en el elfo (formato ejecutable y vinculable).
* Archivos de código fuente: Estos son archivos legibles por humanos que contienen las instrucciones escritas por un programador. La extensión del archivo depende del lenguaje de programación:
* `.c` (c)
* `.cpp` o` .cc` (c ++)
* `.Java` (Java)
* `.py` (Python)
* `.Go` (ir)
* `.js` (JavaScript - a menudo para los programas node.js)
* `.rs` (óxido)
* y muchos más ...
* Archivos de objetos compilados: Estos son archivos intermedios creados durante el proceso de compilación. Por lo general, tienen la extensión '.o`.
* Bibliotecas estáticas: Estas son colecciones de archivos de objetos compilados agrupados. Por lo general, tienen una extensión '.a`.
* Bibliotecas compartidas (bibliotecas dinámicas): Estas también son colecciones de código compilado, pero se cargan en tiempo de ejecución. Normalmente tienen una extensión '.so`.
* Scripts: A menudo, estos son archivos de texto que contienen comandos que pueden ser ejecutados por un intérprete (como scripts bash con una extensión `sh` o scripts de python con una extensión `.py`).
En resumen, un programa en Ubuntu puede existir en muchos formatos de archivo diferentes, dependiendo de su etapa de desarrollo y las tecnologías utilizadas para crearlo. El ejecutable en sí, listo para ejecutar, suele ser un archivo ELF, pero el código fuente y los archivos asociados pueden tener muchas extensiones diferentes.