Presentación
Instrucciones para la presentación
1. Piense en el nombre de un animal que inicie con la primera letra de su nombre.
2. Este no deberá repetirse.
3. Al presentarse deberá completar la siguiente frase: Mi nombre es: _______ y he venido sobre un/a: _______ a la escuela desde _____
4. Dar respuesta a las preguntas:
4.1 ¿Porqué estudio está carrera?
4.2 ¿Qué me ha gustado de la carrera hasta ahora?
Temas del curso
Unidad 1. Introducción
1.1. Sistemas unix/linux.
1.2. El sistema de archivos.
Temas del curso
Unidad 2. El shell.
2.1. Uso del shell.
2.2. Programación en el shell
2.2.1. Variables, operadores y expresiones.
2.2.2. Control de flujo.
2.2.3. Funciones.
2.2.4. Expresiones. Regulares.
2.2.5. Entrada y salida estándar.
2.2.6. Entubamientos.
Temas del curso
Unidad 3. Programación con entrada y salida estándar.
3.1. Entrada y salida estándar.
3.2. Argumentos de programas.
3.3. Archivos.
3.4. Depuración.
Temas del curso
Unidad 4. Llamadas al sistema
4.1. Entrada y salida de bajo nivel.
4.2. Procesos.
4.3. Señales e interrupciones.
Temas del curso
Unidad 5. Programación del kernel.
5.1. Compilación e instalación del kernel y módulos. 5.2. Creación de módulos.
5.3. Programación de módulos para hardware.
Temas del curso
Unidad 6 El entorno gráfico
6.1. Servidor x
6.2. Lenguajes y juegos de herramientas
6.2.1. tk, gtk , qt
6.2.4. wxwidgets
6.2.5. Otros
6.3. Administrador de ventanas
6.4. Comunicación entre componentes y procesos. 6.5. Eventos y salida.
6.6. Programación de scripts.
6.7. Generadores de código.
6.8. Consideraciones de diseño.
Políticas de clase
- Teléfono móvil en modo silencio.
- Las llamadas urgentes /prio se contestan fuera del salón.
- Turnos de una sola persona para ir al WC.
- Dos faltas a la semana sin justificante perderían derecho a las cuestiones de aprendizaje.
- Levantar la mano para participar.
- Respetar la participación de cada alumno.
Lineamientos de clase
- Mantenerse informado acerca de las lecturas, actividades y tareas del curso asistiendo por lo menos dos veces por semana, durante la duración del curso.
- Cumplir dentro del aula virtual con todas las tareas, foros y actividades detalladas por el programa académico y el profesor, en el tiempo y forma establecidos.
-
El incumplimiento de las tareas en tiempo y forma llevarán a una no aprobación del curso.
Lineamientos de clase
- Mantenerse informado acerca de las actividades del curso asistiendo mínimo dos veces por semana, durante la duración del curso.
- Cumplir dentro del aula virtual con todas las tareas, en el tiempo y forma establecidos.
-
El incumplimiento de las tareas en tiempo y forma llevarán a una no aprobación del curso.
-
Realizar el seguimiento personal desde el Aula Virtual.
-
Estar pendiente de los resultados de las evaluacion/es parcial/es y final/es.
-
Notificar al tutor por escrito, con copia a la coordinación académica, si, por alguna razón excepcional, se encontrara en una circunstancia especial que le impidiera continuar con el curso y recibir así indicaciones de cómo proceder a partir de ese momento.
Descripción de las actividades
Unidad 1 Introducción.
- Tabla comparativa
- Cuestionamientos de aprendizaje
Descripción de las actividades
Unidad 2 El shell.
- Solución de ejercicios.
- Cuestionamientos de aprendizaje
Descripción de las actividades
Unidad 3 Programación con entrada y salida estándar.
- Ejercicios
- Cuestionamientos de aprendizaje
Descripción de las actividades
Unidad 4 Llamadas al sistema
- Ejercicios.
- Cuestionamientos de aprendizaje
Descripción de las actividades
Unidad 5 Programación del kernel.
- Ejercicios
- Cuestionamientos de aprendizaje
Descripción de las actividades
Unidad 6 El entorno gráfico
- Estudio de casos
- Cuestionamientos de aprendizaje
Actividades de encuadre
Actividades de encuadre
Instrucciones:
- En una hoja escribe la respuesta a la siguiente pregunta:
- ¿Qué esperas que se enseñe en este curso?
Tiempo de la actividad: 6 minutos.
Actividades de encuadre
Instrucciones:
- Debajo de la pregunta anterior responde la siguiente cuestión:
- ¿A qué te comprometes en este curso?
Tiempo de la actividad: 6 minutos.
Actividades de encuadre
Instrucciones:
- Debajo de la pregunta anterior responde la siguiente cuestión:
- ¿Qué deseas aprender en este curso?
Tiempo de la actividad: 6 minutos.
Actividades de encuadre
Una vez contestadas las preguntas anteriores escribir en el foro respectivo la respuesta a cada pregunta.
Tiempo de la actividad: 6 minutos.
Recomendaciones para las actividades
Trabajos:
- Presentación / portada
- Introducción
- Conclusión
Párrafos:
- Mayores a tres líneas
- Menores a ocho líneas
- Coherencia entre párrafos
Ortografía - Gramática
- Acentuación.
- Evitar redundancia.
- Pleonasmos.
- Mínimo tres errores.
Recomendaciones para las actividades
Referencias bibliográfica
- Al menos tres citas dentro del trabajo.
- En formato APA 7ma edición.
Lista referencia bibliográfica
- Al menos tres fuentes de diversos autores.
- Con sangría francesa al inicio de cuatro espacios.
- Fuente Times New Roman.
- 12 puntos.
- Sin enlaces activos.
Recomendaciones para las actividades
Introducción y conclusión
- Al menos tres párrafos.
Formato del trabajo
- Fuente Arial.
- Tamaño de título: 14 puntos.
- Tamaño de texto: 12 puntos.
- Interlineado 1.5
- Alineación justificada del texto.
- Los títulos alineados a la izquierda.
- En el encabezado del documento colocar el logotipo del instituto alineado a la derecha. Nombre de la carrera a la izquierda.
Recomendaciones para las actividades
Diagramas:
- Hacerlos en día.
- Exportarlos a jpg / png
Códigos fuentes:
- Colocarlos en github.
- En el documento a entregar, colocar el enlace al código.
Tablas:
- Colocarle al pie de la tabla un nombre a la tabla, bajo el siguiente formato: <nombre_tabla numero consecutivo>. <nombre_tabla> <fuente:> <donde_fue_tomada> .
- Colocar un párrafo descriptivo
Recomendaciones para las actividades
Imagenes / diagramas / gráficas:
- Colocarle al pie de la imagen / diagrama / gráfica un nombre, bajo el siguiente formato: <nombre_objeto numero consecutivo>. <nombre_objeto> <fuente:> <donde_fue_tomada> .
- Colocar un párrafo donde se describa la imagen / diagrama / gráfica
¿Dudas / Preguntas / comentarios?
Unidad 1
1. Introducción.
1.1. Sistemas unix/linux.
1.2. El sistema de archivos.
# Unix
¿Qué es Unix?
- Es un sistema operativo multitarea y multiusuario desarrollado en la década de 1960 y 1970 en los laboratorios Bell de AT&T.
- Conocido por su diseño modular, su capacidad para soportar múltiples usuarios concurrentes y su flexibilidad.
- Influyo en muchos sistemas operativos modernos y ha sido una base fundamental para el desarrollo de sistemas operativos tipo Unix, como Linux y macOS.
# Unix
Aspectos claves
Multiusuario:
UNIX permite que múltiples usuarios accedan al sistema simultáneamente. Cada usuario tiene su propio espacio de trabajo y puede ejecutar procesos independientes.
Multitarea:
Permite la ejecución simultánea de múltiples procesos, lo que significa que el sistema puede realizar varias tareas al mismo tiempo.
# Unix
Aspectos claves
Sistema de Archivos Jerárquico:
Los archivos y directorios en UNIX están organizados en una estructura de árbol jerárquico. Esto facilita la organización y navegación de archivos.
Interfaz de Línea de Comandos (CLI):
UNIX es conocido por su interfaz de línea de comandos, donde los usuarios interactúan con el sistema ingresando comandos en una terminal.
# Unix
Aspectos claves
Shell:
El shell es la interfaz de usuario entre el usuario y el núcleo del sistema operativo. Proporciona un intérprete de comandos que ejecuta comandos dados por el usuario.
Programas Pequeños y Especializados:
En lugar de utilizar programas monolíticos, UNIX sigue el principio de tener programas pequeños y especializados que realizan tareas específicas y se pueden combinar mediante la canalización (pipes) para lograr funcionalidades más complejas.
# Unix
Aspectos claves
Seguridad
UNIX tiene un sistema de permisos robusto que controla el acceso a los archivos y recursos del sistema. Cada archivo y proceso tiene atributos de permisos que especifican quién puede leer, escribir o ejecutarlos.
Portabilidad
La filosofía de diseño de UNIX ha influido en sistemas operativos posteriores, y muchos de sus conceptos se han adoptado en diferentes plataformas.
# Unix
Aspectos claves
Redes:
UNIX tiene una sólida capacidad de red, lo que lo hace muy adecuado para servidores y entornos de red.
Variantes:
Es importante señalar que hay varias variantes de UNIX, como AIX, HP-UX, Solaris y BSD. Cada una tiene sus propias características y peculiaridades. Además, Linux, aunque no es estrictamente UNIX, sigue muchos de los principios y conceptos de diseño de UNIX.
# Unix
Aspectos claves
Redes:
UNIX tiene una sólida capacidad de red, lo que lo hace muy adecuado para servidores y entornos de red.
Variantes:
Es importante señalar que hay varias variantes de UNIX, como AIX, HP-UX, Solaris y BSD. Cada una tiene sus propias características y peculiaridades. Además, Linux, aunque no es estrictamente UNIX, sigue muchos de los principios y conceptos de diseño de UNIX.
# Unix
Actividad de aprendizaje
- En la barra de búsqueda teclea la palabra: frexus.
- Pulsa en la opción que dice: Generando valor agregado.
- Haz clic sobre la opción academia. Luego en el nombre de la materia.
- Lee el recurso: Unix para la exploración espacial.
- Responde lo siguiente:
- ¿Por qué la Agencia Espacial XYZ eligió UNIX como entorno operativo para el desarrollo de software en misiones de exploración espacial?
- ¿Cómo abordó la agencia el gran volumen de datos recopilados durante las misiones de exploración espacial?
- ¿Cuáles fueron las características clave de UNIX que contribuyeron a la estabilidad operativa del sistema desarrollado por la agencia?
Unidad 1
Sistemas Unix/Linux
# Unix / linux
Unix
Linux
- Multiusuario: Permite a varios usuarios acceder simultáneamente.
- Multitarea: Realiza varias tareas al mismo tiempo.
- Portabilidad: Es portable en diversas plataformas.
- Jerarquía de Archivos: Organiza los archivos en una estructura de árbol o jerarquía.
- CLI: La interacción se realiza principalmente a través de comandos escritos en la terminal.
- Núcleo Monolítico: Las funciones esenciales del O.S, se ejecutan en el espacio del núcleo.
- Multiplataforma: Se ejecuta en una variedad de arquitecturas de hardware.
- Escalabilidad: Utilizado desde dispositivos embebidos hasta server
- Seguridad: Mecanismos robustos de control de acceso y seguridad.
- Código Abierto: Es accesible para cualquier persona.
# Unix / linux
Unix
Desarrollado a fines de la década de 1960 en los laboratorios Bell de AT&T por Ken Thompson, Dennis Ritchie y otros.
Iniciado por Linus Torvalds en 1991 como un sistema operativo compatible con Unix y de código abierto.
Linux
Origen
Similitud
- Linux fue modelado de acuerdo a los principios de Unix.
- Utilizan una estructura de archivos similar y comparten muchos comandos y utilidades en la línea de comandos.
- Son sistemas operativos poderosos y versátiles que han sido fundamentales en el desarrollo de la informática.
- Linux, por ser de código abierto, flexibilidad y robustez; ha ganado adopción.
# Unix / linux
Aspectos claves de linux
Núcleo (Kernel) de Linux:
- El núcleo de Linux es el componente central del sistema operativo.
- Gestiona recursos del hardware y proporciona servicios esenciales para el funcionamiento del sistema.
Sistema de Archivos Hierárquico:
- Organiza archivos y directorios en una estructura jerárquica.
- Utiliza una convención de nomenclatura y ubicación de archivos estándar.
# Unix / linux
Aspectos claves de linux
Interfaz de Línea de Comandos (CLI) y Entorno Gráfico:
- Proporciona una interfaz de línea de comandos poderosa y versátil.
- Los entornos gráficos como GNOME y KDE ofrecen interfaces visuales.
Código Abierto y Licencia GNU:
- Linux es un sistema operativo de código abierto, lo que significa que su código fuente es accesible y modificable.
- Se distribuye bajo la Licencia Pública General de GNU (GNU GPL).
# Unix / linux
Aspectos claves de linux
Multitarea y Multiusuario:
- Permite la ejecución simultánea de múltiples procesos y la interacción de varios usuarios.
Seguridad:
- Incorpora funciones de seguridad, como permisos de archivos y autenticación de usuarios.
- Actualizaciones frecuentes para abordar vulnerabilidades de seguridad.
# Unix / linux
Aspectos claves de linux
Gestión de Paquetes:
- Utiliza sistemas de gestión de paquetes como APT (Advanced Package Tool) y YUM para facilitar la instalación y actualización de software.
Redes y Comunicación:
- Soporta una variedad de protocolos de red.
- Funciones de servidor y cliente para servicios de red como SSH, HTTP, FTP, entre otros.
# Unix / linux
Aspectos claves de linux
Amplia Variedad de Software:
- Ofrece una amplia gama de software y herramientas para diversas aplicaciones y propósitos.
- Desarrollo de software, servidores web, bases de datos, herramientas de productividad, etc.
Comunidad Activa y Documentación Extensa:
- La comunidad de usuarios y desarrolladores de Linux es activa y colaborativa.
- Existe una amplia documentación en línea y foros de soporte.
# Unix / linux
Aspectos claves de linux
Portabilidad:
- Linux es conocido por su capacidad para ejecutarse en una variedad de arquitecturas de hardware.
Actualizaciones y Personalización:
- Recibe actualizaciones regulares del núcleo y software.
- Permite una gran flexibilidad y personalización según las necesidades del usuario.
Actividad de aprendizaje
- En la barra de búsqueda teclea la palabra: frexus.
- Pulsa en la opción que dice: Generando valor agregado.
- Haz clic sobre la opción academia. Luego en el nombre de la materia.
- Lee el recurso: Linux y el entorno empresarial.
- Responde lo siguiente:
- ¿Cuáles fueron los motivos principales que llevaron a la empresa a considerar la migración a Linux?
- ¿Cuáles fueron los principales beneficios observados después de la migración a Linux en términos de eficiencia operativa y reducción de costos?
- ¿Cuál fue el papel de la monitorización continua en el mantenimiento del rendimiento y la seguridad?
# Unix / linux
Unidad 1
El sistema de ficheros
# Sistema de fichero
Un sistema de archivos (o sistema de ficheros) es una estructura lógica utilizada por las computadoras para organizar y almacenar datos en dispositivos de almacenamiento (discos duros, SSD, USB, entre otros).
En un sistema de archivos típico, se organizan en directorios (o carpetas), y fichero con nombre único que lo identifica. Incluyen métodos para realizar operaciones (leer, escribir, borrar y renombrar), así como para crear y eliminar directorios.
Cada O.S. tiene su propio sistema de archivos, y los más comunes son NTFS y FAT en sistemas Windows, HFS+ en macOS, y ext4 en sistemas basados en Linux.
# Sistema de fichero
Aspectos claves de NTF (New Technology File System)
Seguridad:
- NTFS ofrece características de seguridad avanzadas, como permisos de archivos y cifrado de archivos.
Compresión:
- Permite la compresión de archivos y carpetas para ahorrar espacio de almacenamiento.
# Sistema de fichero
Aspectos claves de NTF (New Technology File System)
Recuperación:
- Tiene capacidades de recuperación de archivos y permite la creación de puntos de restauración del sistema.
# Sistema de fichero
Aspectos claves de FAT (File Allocation Table)
Compatibilidad:
- Es un sistema de archivos simple que es compatible con una amplia variedad de sistemas operativos y dispositivos.
Limitaciones:
- Tiene limitaciones en el tamaño máximo de archivos y particiones.
# Sistema de fichero
Aspectos claves de FAT (File Allocation Table)
Sin seguridad avanzada:
- No ofrece características avanzadas de seguridad o control de acceso.
# Sistema de fichero
Aspectos claves de HFS+ (Hierarchical File System Plus)
Diseñado para macOS:
- Es el sistema de archivos principal utilizado en sistemas operativos macOS anteriores a macOS High Sierra.
Soporte para metadatos:
- Ofrece un soporte eficiente para metadatos y permite el registro de acceso a archivos.
# Sistema de fichero
Aspectos claves de ext4 (Fourth Extended File System)
Tamaño de archivo y sistema de archivos grande:
- Permite tamaños de archivo y sistemas de archivos mucho más grandes en comparación con sus predecesores.
Journaling:
- Incluye journaling para una mayor integridad del sistema de archivos y recuperación después de fallos del sistema.
# Sistema de fichero
Aspectos claves de ext4 (Fourth Extended File System)
Compatibilidad con versiones anteriores:
- Es compatible con versiones anteriores de ext2 y ext3.
Actividad de aprendizaje
- En la barra de búsqueda teclea la palabra: frexus.
- Pulsa en la opción que dice: Generando valor agregado.
- Haz clic sobre la opción academia. Luego en el nombre de la materia.
- Lee el recurso: Gestión de datos.
- Responde lo siguiente:
- ¿Cuáles son los desafíos clave que enfrenta la institución de investigación científica en relación con la gestión de datos?
- ¿Cómo se abordan las necesidades de seguridad de los datos en el caso del sistema NTFS?
- ¿Qué ventajas ofrece el sistema de archivos ext4 en el entorno basado en Linux de la institución?
# Sistema de ficheros
Unidad 2
Unidad 2
Shell
# Shell
- Un shell es una interfaz de línea de comandos que proporciona un medio para que los usuarios interactúen con un sistema operativo.
- Es una capa de software que permite a los usuarios ingresar comandos y recibir respuestas del sistema.
- Los shells son comunes en sistemas operativos tipo Unix, como Linux y macOS, aunque también existen variantes en sistemas operativos Windows.
# Shell
Aspectos claves
Interfaz de Línea de Comandos (CLI):
- Los usuarios interactúan con el sistema ingresando comandos de texto directamente en el shell.
Intérprete de Comandos::
- El shell interpreta los comandos ingresados por el usuario y los ejecuta. Puede realizar diversas tareas, desde la manipulación de archivos hasta la ejecución de programas.
# Shell
Aspectos claves
Automatización mediante Scripts:
- Los usuarios interactúan con el sistema ingresando comandos de texto directamente en el shell.
Intérprete de Comandos:
- Los usuarios pueden escribir scripts, que son secuencias de comandos almacenados en archivos, para realizar tareas repetitivas o complejas.
# Shell
Aspectos claves
Redirección y Piping:
- Los shells permiten la redirección de la entrada y salida estándar, lo que significa que los resultados de un comando pueden utilizarse como entrada para otro. Esto se conoce como piping.
Personalización:
- Los usuarios pueden personalizar su entorno de shell configurando variables de entorno, creando alias para comandos y utilizando diferentes tipos de shells.
# Shell
Actividad de aprendizaje
- En la barra de búsqueda teclea la palabra: frexus.
- Pulsa en la opción que dice: Generando valor agregado.
- Haz clic sobre la opción academia. Luego en el nombre de la materia.
- Lee y ejecutar el recurso: Tails.
- Responde lo siguiente:
- ¿Qué fue lo más dificil?
- ¿A qué problemas se enfrentó y como los resolvio?
- ¿Qué dificultad encontro al ejecutar tails desde la usb?
Unidad 2
Uso del Shell
# Usando el Shell
Abrir la Terminal:
- En sistemas basados en Linux, puedes abrir la Terminal desde el menú de aplicaciones o utilizando combinaciones de teclas como
Ctrl + Alt + T
. - En sistemas Unix (como macOS), puedes encontrar la Terminal en la carpeta "Utilidades" dentro de la carpeta "Aplicaciones".
# Usando el Shell
Navegación por Directorios:
cd [directorio]
Donde [directorio]
es la ruta al directorio al cual deseas cambiar.
Cambiar al directorio "Documentos":
cd Documentos
Cambiar al directorio superior (directorio padre):
cd ..
Cambiar al directorio personal del usuario:
cd ~
Cambiar al directorio raíz:
cd /
Ejemplos
# Usando el Shell
Listar Archivos y Directorios:
ls [opciones] [directorio]
Donde:
[opciones]
son parámetros adicionales que puedes incluir para personalizar la salida del comando.
[directorio]
es el directorio del cual quieres listar el contenido. Si no se especifica, por defecto lista el contenido del directorio actual.
-
-l
: Muestra la lista en formato largo, incluye permisos, propietario, grupo, tamaño y fecha de modificación. -
-a
: Muestra todos los archivos, incluyendo los ocultos. -
-h
: Con la opción-l
, muestra los tamaños de los archivos en formato legible para humanos (por ejemplo, KB, MB). -
-R
: Lista de manera recursiva, mostrando el contenido de subdirectorios.
# Usando el Shell
Manipular archivos y directorios:
mkdir nombre_directorio
-
-p
: Crea directorios padres si no existen.
Crear directorio:
# Usando el Shell
Manipular archivos y directorios:
rm nombre_archivo
-
-f
: Elimina sin confirmación. -
-r
o-R
: Elimina directorios y su contenido.
Eliminar archivos:
# Usando el Shell
Manipular archivos y directorios:
cp origen destino
-
-r
o-R
: Copia directorios y su contenido.
Copiar archivos y directorios:
# Usando el Shell
Manipular archivos y directorios:
mv origen destino
- También se utiliza para renombrar.
Mover o renombrar archivos y directorios:
# Usando el Shell
Manipular archivos y directorios:
cat nombre_archivo
-
less
omore
: Permiten visualizar el contenido de un archivo página por página.
Visualizar el contenido de un archivo:
# Usando el Shell
Manipular archivos y directorios:
nano nombre_archivo
- También puedes usar
vim
oemacs
.
Editar un archivo:
# Usando el Shell
Acceder a la Ayuda:
man nombre_comando
- Muchos comandos tienen opciones y parámetros.
- Utilizando el comando
man
que significa "manual"
# Usando el Shell
Actividad de aprendizaje
- En la barra de búsqueda teclea la palabra: frexus.
- Pulsa en la opción que dice: Generando valor agregado.
- Haz clic sobre la opción academia. Luego en el nombre de la materia.
- Lee y ejecutar el recurso: Usando el shell.
- Responde lo siguiente:
- ¿Qué comando te permite ver los permisos del fichero que creaste?
- ¿Qué comando te permitió ver el contenido del fichero?
- ¿Qué dificultad encontro al crear los directorios y archivos?
Unidad 2
Programación en el shell
# Programando el Shell
- Conocida como scripting de shell, implica la creación de secuencias de comandos que el intérprete del shell ejecuta de manera secuencial.
- Estos scripts pueden contener una serie de comandos que automatizan tareas, toman decisiones basadas en condiciones y realizan otras operaciones útiles.
# Programando el Shell
Nociones básicas y conceptos clave
Interprete de Comandos:
Los scripts de shell son interpretados por el shell, lo que significa que el intérprete del shell ejecuta cada comando en el script uno tras otro.
# Programando el Shell
Nociones básicas y conceptos clave
Variables:
Puedes definir y utilizar variables en tus scripts. Las variables almacenan información que puede ser referenciada y modificada a lo largo del script.
# Programando el Shell
Nociones básicas y conceptos clave
Control de Flujo:
Al igual que en otros lenguajes de programación, puedes utilizar estructuras de control de flujo, como bucles (for
, while
) y condicionales (if
, else
), para controlar la ejecución de tus comandos.
# Programando el Shell
Nociones básicas y conceptos clave
Funciones:
Puedes definir funciones en tus scripts para modularizar y reutilizar código.
# Programando el Shell
Nociones básicas y conceptos clave
Entrada/Salida:
Puedes interactuar con archivos y directorios, leer y escribir datos, y utilizar la entrada y salida estándar.
# Programando el Shell
Nociones básicas y conceptos clave
Comentarios:
Puedes incluir comentarios en tus scripts precediendo líneas con el símbolo #
.
# Programando el Shell
Nociones básicas y conceptos clave
Ejecución de Comandos Externos:
Puedes ejecutar comandos externos, programas y utilidades desde tu script.
# Programando el Shell
Nociones básicas y conceptos clave
Ejemplo
#!/bin/bash
# Script que imprime los nombres de archivos en un directorio
DIRECTORIO="/ruta/al/directorio"
for FILE in $DIRECTORIO/*; do
if [ -f "$FILE" ]; then
echo "Nombre del archivo: $FILE"
fi
done
# Programando el Shell
Actividad de aprendizaje
- En la barra de búsqueda teclea la palabra: frexus.
- Pulsa en la opción que dice: Generando valor agregado.
- Haz clic sobre la opción academia. Luego en el nombre de la materia.
- Lee y ejecutar el recurso: Programando el shell.
- Responde lo siguiente:
- ¿Cómo harías un "hola mundo"?
- ¿Cómo podrías imprimir los primeros 10 números naturales?
- ¿Cómo harías la suma de dos números introducidos por el usuario?
Unidad 2
Entubamiento
# Entubamiento
En la programación en el shell, la tubería (|
) es un mecanismo que permite combinar la salida de un comando con la entrada de otro. Esto es útil para realizar operaciones más complejas y encadenar varios comandos.
# Entubamiento
Aspectos claves
Sintaxis Básica:
- La sintaxis para usar tuberías es mediante el operador
|
. - Por ejemplo:
comando1 | comando2
- La salida decomando1
se convierte en la entrada decomando2
.
# Entubamiento
Aspectos claves
Comunicación entre Procesos:
- Las tuberías permiten la comunicación directa entre dos comandos, donde la salida del primero se convierte en la entrada del segundo.
# Entubamiento
Aspectos claves
Encadenamiento de Comandos:
- Se pueden encadenar varios comandos utilizando múltiples operadores de tubería.
comando1 | comando2 | comando3.
# Entubamiento
Aspectos claves
Flujo de Datos Unidireccional:
- Las tuberías permiten un flujo de datos unidireccional, desde el primer comando hacia el siguiente.
# Entubamiento
Aspectos claves
Uso en Scripts:
- Las tuberías son comúnmente utilizadas en scripts de shell para combinar la funcionalidad de varios comandos.
# Entubamiento
Aspectos claves
Filtros y Procesamiento de Datos:
- Se utilizan para filtrar y procesar datos de manera eficiente.
- Por ejemplo:
ls -l | grep "file" | awk '{print $1}'
- lista los permisos de los archivos que contienen "file".
# Entubamiento
Aspectos claves
Redirección de Salida:
- La salida del último comando en una cadena de tuberías se puede redirigir a un archivo si es necesario.
- Por ejemplo:
comando1 | comando2 > salida.txt
.
# Entubamiento
Aspectos claves
Uso con Comandos de Texto:
- Las tuberías son particularmente útiles con comandos que manejan texto, como
grep
,sed
yawk
.
# Entubamiento
Aspectos claves
Eficiencia y Conveniencia:
- Las tuberías permiten realizar operaciones complejas de manera eficiente y a menudo son más convenientes que escribir programas separados.
# Entubamiento
Aspectos claves
Interoperabilidad:
- Diferentes comandos y utilidades pueden combinarse de manera flexible mediante tuberías para lograr resultados deseados.
# Entubamiento
Actividad de aprendizaje
- En la barra de búsqueda teclea la palabra: frexus.
- Pulsa en la opción que dice: Generando valor agregado.
- Haz clic sobre la opción academia. Luego en el nombre de la materia.
- Lee y ejecutar el recurso: Tuberías.
- Responde lo siguiente:
- ¿Qué tipo de tubería tendrías que hacer para sacar a un archivo de texto la información de tu computadora?
- ¿Del archivo anterior cuantas palabras tiene?
- ¿Qué otros puedes encontrar al uso de las tuberías?
Unidad 3
Unidad 3
Programación con entrada y salida estándar
# Programación con entrada y salida estándar
La programación de entrada y salida estándar en el shell se refiere a la manipulación de datos que fluyen entre un programa y el entorno del sistema operativo a través de los canales de entrada y salida estándar. Estos canales son normalmente el teclado (entrada estándar) y la pantalla (salida estándar).
# Programación con entrada y salida estándar
Aspectos Claves
Redirección de Entrada y Salida:
Redirección de Salida (>
):
Permite redirigir la salida estándar de un comando hacia un archivo en lugar de la pantalla.
ls > lista_archivos.txt
# Programación con entrada y salida estándar
Aspectos Claves
Redirección de Entrada y Salida:
Redirección de Entrada (<
):
Permite que un comando lea su entrada estándar desde un archivo en lugar del teclado.
sort < archivo_desordenado.txt
# Programación con entrada y salida estándar
Aspectos Claves
Redirección de Entrada y Salida:
Redirección de Salida y Anexar (>>
):
Agrega la salida estándar al final de un archivo en lugar de sobrescribirlo.
echo "Nuevo contenido" >> archivo_existente.txt
# Programación con entrada y salida estándar
Aspectos Claves
Pipes (|
):
Permite tomar la salida estándar de un comando y utilizarla como entrada estándar para otro.
cat archivo.txt | grep "palabra"
# Programación con entrada y salida estándar
Aspectos Claves
Comandos de Lectura y Escritura:
echo
: Imprime texto en la salida estándar.
echo "Hola, mundo!"
# Programación con entrada y salida estándar
Aspectos Claves
Comandos de Lectura y Escritura:
read
: Lee la entrada desde el teclado y asigna el valor a una variable.
read -p "Ingrese su nombre: " nombre
# Programación con entrada y salida estándar
Aspectos Claves
Comandos de Lectura y Escritura:
printf
: Imprime texto con formato.
printf "El resultado es: %d\n" 42
# Programación con entrada y salida estándar
- En la barra de búsqueda teclea la palabra: frexus.
- Pulsa en la opción que dice: Generando valor agregado.
- Haz clic sobre la opción academia. Luego en el nombre de la materia.
- Lee y ejecutar el recurso: i/o standar en the shell.
- Copia y pega el contenido del recurso, del punto anterior, en un fichero con nombre standar_io.txt.
- Responde lo siguiente:
- ¿Qué comandos usarías para que se muestre en pantalla la palabra pipes?
- ¿Qué comando usarías para agregar tu nombre al fichero standar_io.txt?
Actividad de aprendizaje
Unidad 3
Argumentos de programas
- Los argumentos son los valores que se proporcionan a un script o comando cuando se ejecutan.
- Estos valores son suministrados después del nombre del script o comando en la línea de comandos.
- Permiten que el script o comando actúe de manera diferente según la información proporcionada durante la ejecución.
# Argumentos de programas
Ejemplo
# Argumentos de programas
./mi_script.sh argumento1 argumento2
Los scripts de shell pueden acceder a estos argumentos dentro del código y utilizarlos para realizar operaciones específicas.
En un script de shell en bash, puedes referenciar los argumentos utilizando variables especiales. Por ejemplo:
# Argumentos de programas
#!/bin/bash
echo "El primer argumento es: $1"
echo "El segundo argumento es: $2"
En un script de shell en bash, puedes referenciar los argumentos utilizando variables especiales. Por ejemplo:
# Argumentos de programas
#!/bin/bash
echo "El primer argumento es: $1"
echo "El segundo argumento es: $2"
Al ejecutar el script como ./mi_script.sh valor1 valor2
El primer argumento es: valor1
El segundo argumento es: valor2
Actividad de aprendizaje
# Argumentos de programas
- En la barra de búsqueda teclea la palabra: frexus.
- Pulsa en la opción que dice: Generando valor agregado.
- Haz clic sobre la opción academia. Luego en el nombre de la materia.
- Lee y ejecutar el recurso: argumentos.
- Copia y pega el contenido del recurso, del punto anterior, en un fichero con nombre argumentos.txt.
- Responde lo siguiente:
- ¿Qué resultados se mostro en la pantalla?
- ¿Qué líneas de código modificarías para que el script resolviera suma pasando dos números como argumentos?
Unidad 3
Archivos
# Archivos
Los archivos son esenciales para manipular datos almacenados en dispositivos de almacenamiento.
# Archivos
Se puede crear archivos directamente desde el shell utilizando comandos como touch
o echo
.
Aspectos claves
Creación y Manipulación de Archivos:
echo "Hola, mundo" > archivo.txt
Ejemplo
# Archivos
Se puede editar archivos directamente desde el shell utilizando editores de texto como nano
, vim
, o emacs
.
Aspectos claves
Edición de Archivos:
nano demo.txt
Ejemplo
# Archivos
Puedes eliminar archivos con el comando rm
.
Aspectos claves
Eliminación de Archivos:
rm archivo.txt
Ejemplo
# Archivos
Comandos como cp
(copiar), mv
(mover), y ln
(crear enlaces) te permiten realizar operaciones avanzadas con archivos.
Aspectos claves
Operaciones con Archivos:
# Archivos
- El comando
chmod
te permite cambiar los permisos de un archivo. - El comando
chown
te permite cambiar el propietario de un archivo.
Aspectos claves
Permisos y Propietarios:
# Archivos
Actividad de aprendizaje
- En la barra de búsqueda teclea la palabra: frexus.
- Pulsa en la opción que dice: Generando valor agregado.
- Haz clic sobre la opción academia. Luego en el nombre de la materia.
- Lee y ejecutar el recurso: archivos.
- Responde lo siguiente:
- ¿Qué comandos usarías para crear un script que pueda restar dos números proporcionado por el usuario pero que la salida este en un fichero?
- ¿Qué problemas tuviste al realizar este ejercicio?
Unidad 4
Unidad 4
Llamadas al sistema
# Llamadas al sistema
- Son funciones proporcionadas por el kernel del sistema operativo que permiten a los programas de usuario interactuar con el hardware y realizar diversas operaciones.
- Se utilizan para realizar operaciones de bajo nivel, como la manipulación de archivos, la gestión de procesos y la interacción con el sistema operativo.
# Llamadas al sistema
Aspectos claves
Creación y Gestión de Procesos:
-
fork()
: Esta llamada al sistema se utiliza para crear un nuevo proceso hijo. El proceso hijo es una copia exacta del proceso padre, pero tiene su espacio de memoria independiente. -
exec()
: Después defork()
,exec()
reemplaza la imagen del proceso actual con un nuevo programa. Puede serexecvp
,execl
, etc. -
wait()
ywaitpid()
: Estas llamadas al sistema permiten que un proceso padre espere a que su proceso hijo termine la ejecución.
# Llamadas al sistema
Aspectos claves
Manipulación de Archivos:
-
open()
yclose()
:open()
se utiliza para abrir un archivo, mientras queclose()
se utiliza para cerrar un descriptor de archivo abierto. -
read()
ywrite()
: Permiten la lectura y escritura de datos desde/hacia un archivo. -
lseek()
: Se utiliza para cambiar la posición del puntero de archivo en el archivo abierto. -
unlink()
: Elimina un enlace a un archivo, y si es el último enlace, elimina el archivo.
# Llamadas al sistema
Aspectos claves
Gestión de Procesos:
-
kill()
: Se utiliza para enviar señales a procesos. Por ejemplo,kill -9 PID
envía la señal SIGKILL para terminar un proceso. -
ps()
ytop()
: Aunque no son llamadas al sistema directas, son comandos que proporcionan información sobre los procesos en ejecución.
# Llamadas al sistema
Aspectos claves
Comunicación entre Procesos:
-
pipe()
: Crea una tubería para la comunicación entre dos procesos. -
shmget()
,shmat()
, yshmdt()
: Estas llamadas al sistema se utilizan para la gestión de memoria compartida entre procesos.
# Llamadas al sistema
Aspectos claves
Otros:
-
chdir()
: Cambia el directorio de trabajo del proceso. -
umask()
: Establece la máscara de modo del proceso. -
time()
ydate()
: Proporcionan información sobre la hora actual.
# Llamadas al sistema
Actividad de aprendizaje
- En la barra de búsqueda teclea la palabra: frexus.
- Pulsa en la opción que dice: Generando valor agregado.
- Haz clic sobre la opción academia. Luego en el nombre de la materia.
- Lee y ejecutar el recurso: Llamadas.
- Responde lo siguiente:
- ¿Qué comandos usarías para crear un script que pueda leer un fichero y contar las palabras que esté contiene?
- ¿Qué problemas tuviste al realizar este ejercicio?
Unidad 4
Entrada y salida de bajo nivel
# Entrada y salida bajo nivel
Se refieren a operaciones que interactúan directamente con los descriptores de archivo y se centran en la manipulación detallada de los datos.
# Entrada y salida bajo nivel
Aspectos claves
Descriptores de Archivo:
Los descriptores de archivo son enteros que identifican una conexión abierta con un archivo o un dispositivo. En la programación de shell, los descriptores de archivo se utilizan para manipular las entradas y salidas.
-
stdin
(Descriptor 0):- Es el descriptor de archivo estándar para la entrada. Se utiliza para leer datos desde el teclado o desde la salida de otro comando.
# Entrada y salida bajo nivel
Aspectos claves
Descriptores de Archivo:
-
stdout
(Descriptor 1):-
Se utiliza para escribir datos que se mostrarán en la pantalla o se redirigirán a un archivo.
-
-
stderr
(Descriptor 2):-
Se utiliza para escribir mensajes de error que no deben interferir con la salida estándar.
-
# Entrada y salida bajo nivel
Aspectos claves
Redirección de Entrada y Salida:
La redirección es una técnica que permite cambiar la fuente o el destino de los datos.
Se utiliza el símbolo >
para redireccionar la salida a un archivo y <
para redireccionar la entrada desde un archivo.
# Redirigir la salida estándar a un archivo
echo "Hola, mundo" > salida.txt
# Redirigir la entrada estándar desde un archivo
cat < entrada.txt
# Entrada y salida bajo nivel
Aspectos claves
Duplicación de Descriptores de Archivo:
La duplicación de descriptores de archivo (dup
y dup2
) permite copiar un descriptor de archivo existente a otro. Esto es útil para redirigir la salida estándar a un archivo, por ejemplo.
# Duplicar la salida estándar y redirigirla a un archivo
exec 3>&1
exec > salida.txt
# ...comandos...
# Restaurar la salida estándar
exec 1>&3
# Entrada y salida bajo nivel
Aspectos claves
Archivos Especiales:
En la programación de shell, algunos archivos especiales simplifican la entrada y salida.
-
/dev/null
: Un archivo especial que descarta todo lo que se escribe en él. Útil para suprimir la salida.
# Redirigir la salida estándar a /dev/null
comando > /dev/null
# Entrada y salida bajo nivel
Aspectos claves
Archivos Especiales:
/dev/tty
: Se refiere al terminal actual y se puede usar para redirigir la salida a la pantalla.
# Redirigir la salida estándar al terminal actual
comando > /dev/tty
# Entrada y salida bajo nivel
Actividad de aprendizaje
- En la barra de búsqueda teclea la palabra: frexus.
- Pulsa en la opción que dice: Generando valor agregado.
- Haz clic sobre la opción academia. Luego en el nombre de la materia.
- Lee y ejecutar el recurso: Archivos, tuberias y Llamadas.
- Responde lo siguiente:
- ¿Qué comandos usarías para crear un script que pueda leer un fichero y contar las palabras que esté contiene, mostrandolo en la pantalla y sacando a otro fichero las veces que se repitio?
- ¿Qué problemas tuviste al realizar este ejercicio?
Unidad 4
Procesos
# Procesos
Es una instancia en ejecución de un programa. Cuando ejecutas un programa en el shell, se crea un nuevo proceso para ese programa.
# Procesos
Aspectos Claves
Creación de Procesos:
Al ejecutar un programa en el shell, se crea un nuevo proceso. Puedes hacer esto usando comandos como ./nombre_del_programa
o simplemente escribiendo el nombre del comando.
# Procesos
Aspectos Claves
Identificación de Procesos:
Cada proceso tiene un identificador único llamado PID (Identificador de Proceso). Puedes ver los PIDs de los procesos en ejecución usando comandos como ps
o top
.
# Procesos
Aspectos Claves
Llamadas al Sistema:
- Las llamadas al sistema son interfaz entre el espacio de usuario (tu programa) y el núcleo del sistema operativo.
- Algunas llamadas al sistema comunes incluyen
fork()
para crear un nuevo proceso,exec()
para reemplazar la imagen del proceso actual con otro programa, ywait()
para esperar a que un proceso hijo termine.
# Procesos
Aspectos Claves
Comunicación entre Procesos:
- Los procesos pueden comunicarse entre sí. Los pipes (
|
) y redirecciones (>
,<
) son ejemplos de cómo los procesos pueden compartir información a través del shell.
# Procesos
Aspectos Claves
Fondo y Primer Plano:
- Puedes ejecutar procesos en primer plano (ocupando la terminal) o en segundo plano (liberando la terminal). Para ejecutar en segundo plano, puedes agregar un
&
al final del comando.
# Procesos
Aspectos Claves
Señales:
- Los procesos pueden enviar y recibir señales para comunicarse. Por ejemplo, puedes enviar la señal
SIGKILL
para terminar un proceso.
# Procesos
Aspectos Claves
Ejemplo
#!/bin/bash
# Crear un nuevo proceso
echo "Hola desde el proceso padre $$"
# Crear un proceso hijo
./mi_programa_hijo.sh &
# Esperar a que el proceso hijo termine
wait
echo "Proceso hijo finalizado"
# Procesos
Actividad de aprendizaje
- En la barra de búsqueda teclea la palabra: frexus.
- Pulsa en la opción que dice: Generando valor agregado.
- Haz clic sobre la opción academia. Luego en el nombre de la materia.
- Lee y ejecutar el recurso: Procesos
- Responde lo siguiente:
¿Qué problemas tuviste al realizar cada ejecución?
Unidad 4
Señales e Interrupciones
# Señales e Interrupciones
Señales:
-
Algunas señales comunes incluyen:
- SIGTERM (15): Solicita la terminación del proceso de manera ordenada.
- SIGKILL (9): Solicita la terminación inmediata e incondicional del proceso.
-
SIGINT (2): Enviada cuando se interrumpe el proceso con
Ctrl+C
en la terminal.
Las señales son mecanismos de comunicación asincrónica entre procesos o entre el núcleo y los procesos. Son utilizadas para notificar eventos o solicitar ciertas acciones.
# Señales e Interrupciones
Manejo de Señales en Shell:
Se puede establecer cómo tu script de shell manejará ciertas señales mediante el comando trap
.
# Ejemplo de manejo de señales en un script de shell
trap 'echo "Recibida la señal SIGINT (Ctrl+C)"; exit' SIGINT
trap 'echo "Recibida la señal SIGTERM"; exit' SIGTERM
# Resto del script
echo "El script está en ejecución..."
# Espera indefinida
while true; do
sleep 1
done
# Señales e Interrupciones
Interrupciones y Programas en Segundo Plano:
Cuando se ejecuta un programa en segundo plano y luego se cierra la terminal, el proceso puede recibir la señal SIGHUP (hang-up) si la terminal se cierra. Se puedes prevenir esto usando nohup
o redirigiendo la entrada y salida estándar.
# Ejecutar un programa en segundo plano sin verse afectado por SIGHUP
nohup ./mi_programa.sh &
# Señales e Interrupciones
Interrupciones con Ctrl+C:
Cuando se presiona Ctrl+C
en la terminal, se envía la señal SIGINT al proceso en primer plano. Se puedes interceptar esta señal para realizar acciones específicas antes de que el programa termine.
# Ejemplo de manejo de la señal SIGINT en un script
trap 'echo "Script interrumpido por Ctrl+C"; cleanup_function' SIGINT
cleanup_function() {
# Realizar acciones de limpieza o manejo antes de salir
echo "Realizando limpieza..."
exit
}
# Resto del script
echo "El script está en ejecución..."
# Espera indefinida
while true; do
sleep 1
done
# Señales e Interrupciones
Interrupciones con Ctrl+C:
Cuando se presiona Ctrl+C
en la terminal, se envía la señal SIGINT al proceso en primer plano. Se puedes interceptar esta señal para realizar acciones específicas antes de que el programa termine.
# Ejemplo de manejo de la señal SIGINT en un script
trap 'echo "Script interrumpido por Ctrl+C"; cleanup_function' SIGINT
cleanup_function() {
# Realizar acciones de limpieza o manejo antes de salir
echo "Realizando limpieza..."
exit
}
# Resto del script
echo "El script está en ejecución..."
# Espera indefinida
while true; do
sleep 1
done
# Señales e Interrupciones
Actividad de aprendizaje
- En la barra de búsqueda teclea la palabra: frexus.
- Pulsa en la opción que dice: Generando valor agregado.
- Haz clic sobre la opción academia. Luego en el nombre de la materia.
- Lee y ejecutar el recurso: Señales
- Responde lo siguiente:
¿Qué comandos debes de utilizar para que en un script se ejecute un ping a google.com y aún que se precione ctrl+c no se interrumpa?