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:

  1. Qué son los archivos y por qué son la unidad básica de almacenamiento en los sistemas digitales.
  2. Qué son los directorios (carpetas) y cómo nos ayudan a mantener nuestros proyectos organizados.
  3. Cómo funcionan los sistemas de archivos y las rutas (absolutas y relativas) que permiten ubicar nuestros programas.
  4. 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.
  5. 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 .txt para texto o .jpg para imágenes.

  • Se almacenan en directorios y se pueden crear, modificar, mover, y eliminar usando:

  1. Comandos en la terminal,
  2. o Herramientas gráficas.

Tipos de archivos

Los principales tipos de archivos que existen, son:

  1. Archivos de texto:

    • Contienen solo caracteres legibles por humanos.
    • Usan extensiones como .txt, .md, .csv.
    • Ejemplos: Documentos, archivos de configuración.
  2. 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

  1. Archivos de imagen:

    • Contienen datos gráficos.
    • Usan extensiones como .jpg, .png, .gif.
    • Ejemplos: Fotos, gráficos.
  2. Archivos de audio:

    • Contienen datos de sonido.
    • Usan extensiones como .mp3, .wav.
    • Ejemplos: Música, grabaciones de voz.
  3. Archivos de vídeo:

    • Contienen datos de vídeo.
    • Usan extensiones como .mp4, .avi, .mkv.
    • Ejemplos: Películas, videoclips.
  4. Archivos comprimidos:

    • Contienen uno o más archivos empaquetados y comprimidos.
    • Usan extensiones como .zip, .rar, .tar.gz.
    • Ejemplos: Archivos descargados de internet, backups.
  5. Archivos de documento:

    • Contienen documentos de texto con formato.
    • Usan extensiones como .docx, .pdf, .odt.
    • Ejemplos: Reportes, libros electrónicos.
  6. 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.
  7. 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.

  1. Windows: NTFS, FAT32, exFAT.
  2. Unix/Linux: ext4, ext3, XFS, Btrfs.
  3. macOS: APFS, HFS+.

Cada sistema operativo implementa comandos y utilidades específicas para interactuar con el sistema de archivos.

  1. Windows: dir, echo.
  2. 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 CLI permite 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:

  1. CLI,
  2. Terminal.
  3. Consola.
  4. 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 Bash en sistemas Unix/Linux y PowerShell en 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:

  1. cd /ruta/a/directorio: Cambia al directorio especificado por la ruta completa.
  2. cd ..: Sube un nivel en la jerarquía de directorios (va al directorio padre).
  3. cd /: Cambia al directorio raíz.
  4. cd ~: Cambia al directorio de inicio del usuario actual.
  5. cd -: Cambia al último directorio en el que estabas antes del actual.
  1. En Windows; use cd /d <unidad>:\ruta\a\directorio para 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.