Introducción
Antes de empezar a programar en Python, es importante comprender cómo se organiza y almacena la información dentro de una computadora. Todo lo que usamos —desde los documentos y fotos, hasta los programas y juegos— está guardado en archivos, que a su vez se encuentran dentro de carpetas o directorios.
Python, como cualquier otro lenguaje de programación, trabaja directamente con estos archivos y carpetas: los crea, los modifica, los lee y los usa para ejecutar instrucciones o guardar resultados. Por eso, antes de escribir una sola línea de código, debemos conocer dónde están nuestros programas, cómo acceder a ellos y cómo el sistema operativo los gestiona.
Esta clase nos ayudará a entender:
- Qué son los archivos y por qué son la unidad básica de almacenamiento en los sistemas digitales.
- Qué son los directorios (carpetas) y cómo nos ayudan a mantener nuestros proyectos organizados.
- Cómo funcionan los sistemas de archivos y las rutas (absolutas y relativas) que permiten ubicar nuestros programas.
- Qué son las CLI (Interfaces de Línea de Comandos) y cómo los programadores interactúan con el sistema mediante texto, sin usar ventanas gráficas.
- Qué es un prompt y cómo nos indica que el sistema está listo para recibir órdenes.
💬>
Instrucción del profesor
Lee atentamente y comprende la siguiente información. Si algo no te queda claro, anótalo para preguntarlo al profesor.
Qué son los archivos
Los archivos:
-
Son unidades de almacenamiento de datos en un sistema de archivos.
-
Contienen información que puede ser texto, imágenes, programas, o cualquier otro tipo de datos.
-
Tienen un nombre y una extensión que indica su tipo, como
.txtpara texto o.jpgpara imágenes. -
Se almacenan en directorios y se pueden crear, modificar, mover, y eliminar usando:
- Comandos en la terminal,
- o Herramientas gráficas.
Tipos de archivos
Los principales tipos de archivos que existen, son:
-
Archivos de texto:
- Contienen solo caracteres legibles por humanos.
- Usan extensiones como
.txt,.md,.csv. - Ejemplos: Documentos, archivos de configuración.
-
Archivos binarios:
- Contienen datos en formato binario, no legibles directamente por humanos.
- Usan extensiones como
.bin,.dat. - Ejemplos: Imágenes, vídeos, bases de datos.
Cualquier archivo que no sea texto puro (como los archivos .txt o .md) es considerado un archivo binario. Esto incluye imágenes, audios, vídeos, archivos comprimidos, documentos con formato, ejecutables, etc.
Archivos binarios
-
Archivos de imagen:
- Contienen datos gráficos.
- Usan extensiones como
.jpg,.png,.gif. - Ejemplos: Fotos, gráficos.
-
Archivos de audio:
- Contienen datos de sonido.
- Usan extensiones como
.mp3,.wav. - Ejemplos: Música, grabaciones de voz.
-
Archivos de vídeo:
- Contienen datos de vídeo.
- Usan extensiones como
.mp4,.avi,.mkv. - Ejemplos: Películas, videoclips.
-
Archivos comprimidos:
- Contienen uno o más archivos empaquetados y comprimidos.
- Usan extensiones como
.zip,.rar,.tar.gz. - Ejemplos: Archivos descargados de internet, backups.
-
Archivos de documento:
- Contienen documentos de texto con formato.
- Usan extensiones como
.docx,.pdf,.odt. - Ejemplos: Reportes, libros electrónicos.
-
Archivos de sistema:
- Usados por el sistema operativo para su funcionamiento.
- Usan extensiones como
.sys,.dll(Windows), no siempre tienen extensión (Linux). - Ejemplos: Controladores, bibliotecas.
-
Archivos ejecutables:
- Contienen código que la computadora puede ejecutar.
- Usan extensiones como
.exe(Windows),.sh(scripts de shell),.bin(Linux). - Ejemplos: Programas, scripts.
Cada tipo de archivo tiene un propósito específico y se maneja de diferentes maneras en un sistema de archivos.
Qué son los directorios
Los directorios, también conocidos como carpetas, son contenedores que organizan y almacenan archivos y otros directorios en un sistema de archivos.
Funcionan como estructuras jerárquicas que permiten organizar y gestionar tus archivos de manera lógica y eficiente. Esta estructura se asemeja a un árbol, con un directorio raíz y subdirectorios.
.
└── proyectos/
├── proyecto1/
│ ├── src
│ └── README.txt
└── proyecto2/
├── src
└── docs
Directorio raíz
El directorio raíz es el punto de partida de la jerarquía de directorios en un sistema de archivos.
Es el directorio principal y contiene todos los demás directorios y archivos del sistema.
- En Unix/Linux, se representa con una barra diagonal
/. - En Windows, es típicamente la unidad de disco principal, como
C:\.
Rutas
- Las rutas especifican la ubicación de un archivo o directorio.
- Pueden ser absolutas (desde la raíz) o relativas (desde el directorio actual).
Acceso y Permisos
Los sistemas de archivos gestionan permisos para controlar el acceso y las operaciones en directorios.
Permisos de lectura, escritura y ejecución.
Tipos de sistemas de archivos.
Cada sistema operativo tiene su propio sistema de archivos nativo optimizado para proporcionar el mejor rendimiento y estabilidad.
Cada sistema de archivos ofrece funcionalidades específicas (como journaling, cifrado, y soporte para grandes volúmenes) que son aprovechadas por el sistema operativo.
- Windows: NTFS, FAT32, exFAT.
- Unix/Linux: ext4, ext3, XFS, Btrfs.
- macOS: APFS, HFS+.
Cada sistema operativo implementa comandos y utilidades específicas para interactuar con el sistema de archivos.
- Windows: dir, echo.
- Unix/Linux: ls, touch.
Rutas absolutas y relativas
Entender y usar correctamente las rutas absolutas y relativas es crucial para una navegación eficiente y precisa en cualquier sistema de archivos.
Rutas Absolutas
Una ruta absoluta es una ruta completa desde el directorio raíz hasta el archivo o directorio deseado.
Rutas Relativas
Una ruta relativa es una ruta que se define en relación con el directorio actual, lo que puede llevar a errores si no se maneja adecuadamente.
Rutas Absolutas 🆚> Relativas
| Rutas Absolutas | Rutas Relativas |
|---|---|
| Más larga y compleja de escribir | Más corta y fácil de escribir |
| No depende del directorio actual | Depende del directorio actual |
| Ideal para scripts y archivos de configuración | Útil para proyectos |
Usa rutas absolutas cuando necesites especificar con precisión la ubicación de un archivo o directorio sin importar tu ubicación actual en el sistema de archivos.
¿Qué son las CLI?
- CLI (Command-Line Interface, o interfaz de línea de comandos)
- La
CLIpermite a los usuarios dar instrucciones a algún programa informático o al sistema operativo usando comandos de texto.
Hoy, las CLI siguen siendo vitales para muchos profesionales de TI (administradores de sistemas, desarrolladores, analistas de datos, expertos en ciberseguridad) debido a su eficiencia, flexibilidad y potencia para realizar tareas complejas y automatización.
Herramientas que ofrecen un CLI
- npm: Gestión de paquetes para JavaScript.
- Docker: Contenedorización y despliegue de aplicaciones.
- Maven: Gestión de proyectos y dependencias en Java.
- Git: Control de versiones y colaboración.
- Nmap: Escaneo de redes y descubrimiento de hosts.
- Metasploit: Pruebas de penetración y explotación de vulnerabilidades.
- Wireshark: Análisis y captura de tráfico de red.
- John the Ripper: Cracking de contraseñas.
- OpenVAS: Escaneo y evaluación de vulnerabilidades.
- Python: Lenguaje de programación para análisis de datos.
- R: Software estadístico para análisis de datos.
- SQL: Lenguaje para gestión y consulta de bases de datos.
- Apache Spark: Procesamiento de datos a gran escala.
- Jupyter Notebook: Entorno interactivo para análisis de datos y visualización.
- y un largo etc.
Las CLI ha evolucionado, pero su esencia permanece.
¿Qué son los Prompt?
La palabra prompt se usa para señalar que algo está pidiendo una acción del usuario. Es decir; señala que el sistema está listo para recibir un comando.
En una CLI, el prompt es el símbolo o conjunto de caracteres que aparecen antes del cursor.
El prompt suele incluir información como:
- El nombre del usuario,
- El nombre del host,
- El directorio de trabajo actual,
- y Otros datos contextuales.
El prompt es una parte fundamental de las CLI, ya que proporciona un punto de referencia visual y contextual desde el cual el usuario puede ingresar y ejecutar comandos.
El concepto de prompt en IA es distinto al de una CLI. En IA, el prompt es lo que escribes para guiar a la IA en su respuesta.
El prompt es personalizable y puede variar entre diferentes sistemas operativos y shells.
Bash (Linux/Mac):
user@hostname:~$
Aquí, user es el nombre del usuario, hostname es el nombre del equipo, ~ indica el directorio de inicio del usuario y $ es el símbolo estándar del prompt para usuarios no root.
Command Prompt (Windows):
C:\Users\user>
Aquí, C:\Users\user indica el directorio actual y > es el símbolo del prompt.
PowerShell (Windows):
PS C:\Users\user>
Aquí, PS indica que se está utilizando PowerShell, C:\Users\user es el directorio actual y > es el símbolo del prompt.
Diferencias entre CLI, Terminal, Consola y Shell
Los conceptos de:
- CLI,
- Terminal.
- Consola.
- y Shell,
suelen utilizarse como sinónimos, pero no son lo mismo:
CLI(Command-Line Interface)- Es un paradigma de interfaz de usuario, que permite a los usuarios ejecutar comandos ingresándolos en forma de texto y recibir respuestas del sistema también en forma de texto.
La contraparte de CLI es la GUI (Graphical User Interface / interfaz gráfica de usuario) que consiste en proporcionar un entorno visual sencillo para permitir la comunicación con el sistema operativo.
- Terminal
- Es un programa que simula una consola antigua dentro de un entorno de sistema operativo moderno.
- Consola
- La consola es el medio por el cual accedemos y utilizamos la CLI.
Consola y Terminal son similares, pero tradicionalmente, la consola se refiere a un entorno físico donde los usuarios interactúan directamente con el sistema.
- Shell
- Es un programa que procesa comandos (un intérprete) para mostrar los resultados en la salida del terminal. Ejemplos de shells incluyen
Bashen sistemas Unix/Linux yPowerShellen Windows.
Shells
A continuación puedes ver algunos de los shells más utilizados y los sistemas operativos con los que están asociados.
| Shell | Sistema Operativo | Descripción |
|---|---|---|
| Sh (Bourne Shell) | Unix | Fue el shell original de Unix y es el predecesor directo de Bash. |
| Bash (Bourne Again Shell) | Linux, Unix, macOS | Es el shell estándar en la mayoría de distribuciones de Linux y macOS. |
| Cmd.exe | Windows | El shell de línea de comandos tradicional en sistemas Windows antes de PowerShell. |
| PowerShell | Windows, Linux, macOS | Desarrollado por Microsoft, es potente en la automatización y administración de sistemas. |
Otros shells
Cada shell tiene sus propias características y ventajas que pueden ser preferidas según las necesidades específicas del usuario y la naturaleza del trabajo a realizar.
| Shell | Sistema Operativo | Descripción |
|---|---|---|
| Zsh (Z Shell) | Unix, Linux, macOS | Es conocido por su mejoras de facilidad de uso y su capacidad de personalización. |
| Csh (C Shell) | Unix, Linux | Inspirado en la sintaxis del lenguaje C, popular entre ciertos usuarios por este motivo. |
| Ksh (Korn Shell) | Unix, Linux | Combina características de otros shells y fue destinado a ser más eficiente y poderoso. |
| Fish | Unix, Linux, macOS | Destacado por su interfaz de usuario amigable y características avanzadas de autocompletado. |
Comandos básicos de Shell
Conocer los comandos básicos de Shell es esencial para trabajar con herramientas que no tienen una interfaz gráfica o que mediante comandos permiten realizar muchas de sus operaciones.
Trabajar con Shell permite automatizar tareas repetitivas, facilita la resolución de problemas y es más eficiente.
Print Working Directory
Muestra la ruta completa del directorio actual en el que te encuentras trabajando.
| Unix/Linux | Windows |
|---|---|
pwd |
cd |
List
Lista el contenido del directorio actual. Muestra los archivos y subdirectorios dentro del directorio actual.
| Unix/Linux | Windows | PowerShell |
|---|---|---|
ls |
dir |
Get-ChildItem |
Opciones:
| Unix/Linux | Windows | PowerShell | Descripción |
|---|---|---|---|
ls -l o ls -lh |
dir /Q |
Get-ChildItem | Format-List |
Muestra detalles adicionales de los archivos listados |
ls -a |
dir /A |
Incluye archivos ocultos (los que comienzan con un punto .) |
Dependiendo el shell mostrará información como permisos, propietario, tamaño y fecha de modificación.
Change Directory
Cambia el directorio de trabajo actual a otro directorio.
cd <directorio>
Opciones:
cd /ruta/a/directorio: Cambia al directorio especificado por la ruta completa.cd ..: Sube un nivel en la jerarquía de directorios (va al directorio padre).cd /: Cambia al directorio raíz.cd ~: Cambia al directorio de inicio del usuario actual.cd -: Cambia al último directorio en el que estabas antes del actual.
- En Windows; use
cd /d <unidad>:\ruta\a\directoriopara cambiar al directorio especificado en otra unidad.
Los sistema de archivos de Unix/Linux no se organizan en diferentes unidades con letras como C:\ en Windows. En lugar de eso, todos los directorios y dispositivos se encuentran dentro de un único árbol de directorios que comienza en el directorio raíz (/).
En resumen, en Unix/Linux no necesitas una opción como /d para cambiar entre unidades.
Clear Screen
Limpia la pantalla de la terminal.
| Unix/Linux | Windows |
|---|---|
clear |
cls |
Help
El comando help muestra una lista de comandos y su descripción.
| Unix/Linux | Windows |
|---|---|
man <comando> |
help <comando> |
Después de leer el manual, presionas q en tu teclado para salir del manual y regresar al prompt de la terminal. |
El comando help (sin argumentos) muestra la información de ayuda para todos los comandos. |
💬>
Instrucción del profesor
Selecciona un Nivel de comprensión y Haz clic en Finalizar.