1.
Introducción a Linux ,
Elaborado por: Ricardo Garvin
Fecha: 17 de marzo de 2022
Aviso importante: cuando usemos letra cursiva nos estaremos refiriendo a un comando que se lanza por
terminal, por ejemplo: cd /home/usuario es un comando para ubicarse dentro del directorio usuario que
está dentro del directorio home.
¿Qué es el software libre?
Software libre significa que los usuarios tienen la libertad de ejecutar, copiar, estudiar, distribuir,
modificar y mejorar el software. Existen cuatro libertades fundamentales definidas que van de la 0 a la
3. Aquí puedes ver la página oficial de la organización que promueve el software libre y hasta colaborar
participando en proyectos con ellos de forma voluntaria, cualquier persona puede hacerlo, sin importar
su nivel de conocimiento. Front Page — Free Software Foundation — working together for free software
([Link])
¿Que es un mainframe?
Un mainframe o también conocido como una unidad central, siendo esta una computadora que es
usada principalmente para el procesamiento de una gran cantidad de datos a gran velocidad o
velocidades cercanas a la mayor velocidad que es posible en su tiempo. En la antigüedad se les llamaba
así porque ocupaban gabinetes y cuartos enteros. Unidad central - Wikipedia, la enciclopedia libre.
¿Qué es una consola?
En los inicios de la computación las que consolas eran unidades de hardware que se conectaban a los
mainframes para poder introducir datos o enviar órdenes. Hoy en día, las consolas pueden ser
completamente en software. Las consolas van de la mano con las terminales. Con respecto a un
mainframe, una consola era a la vez el puerto, la conexión digital y una terminal física conectada
directamente a una unidad [Link] (informática) - Wikipedia, la enciclopedia libre.
¿Qué es una terminal?
En los inicios del sistema operativo Unix (es lo que GNU quiso remplazar ya que era un sistema propietario
que requería licencia), se utilizaba un dispositivo físico que se parecía a una máquina de escribir y a veces
llamada teletipo o tty. El nombre “terminal” vino desde el punto de vista electrónico.
Terminal (informática) - Wikipedia, la enciclopedia libre
¿Qué es Linux?
Es un Kernel, el Kernel es el software principal que se encarga de comunicarse con el hardware y
gestionarlo. El Kernel para describirlo de una forma simplificada es el conjunto de rutinas que permiten a
todo el software interactuar con el hardware, la mayoría de sus líneas de código que son millones son los
llamados drivers, todos los sistemas operativos tienen un Kernel (núcleo), y por eso Linux es tan
importante ya que inicialmente el proyecto GNU de software libre, iniciado por Richard Stallman (Richard
Stallman - Wikipedia), tenía ya adelantadas muchas herramientas necesarias para conformar un sistema
operativo, pero faltaba el Kernel que es la parte más importante, el núcleo del sistema, el programa o los
conjuntos de programas para gestión y planificación del uso de los recursos de Hardware y esto fue lo que
Linus Torval (Linus Torvalds - Wikipedia, la enciclopedia libre ) aportó. Para comprender mejor lo que
significa Linux y el gran impacto que ha tenido para el desarrollo de la tecnología les recomiendo ver este
documental The Code Story of Linux - Español | Código Linux - 2001 - HD - YouTube.
Arquitectura de tres capas GNU/LINUX simplificada
Fuente: 3.1 Introducción a GNU/Linux – Ricardo Carrera Hernández ([Link])
¿Qué es la terminal CLI (Command Line Interface)?
La terminal CLI es el método más directo usado para administrar todo tipo de dispositivos
basados en el kernel Linux. Un entendimiento básico del terminal es esencial para trabajar con la
mayoría de los sistemas basados en Linux.
¿Qué es una Shell?
La shell es la interfaz de línea de comandos. Algunos ejemplos de Shell son BASH, CSH, KSH,
ZSH. Es muy importante saber con cual Shell estamos trabajando ya que los comandos se pueden
llamar igual, pero comportarse diferente. Estas Shell toman comandos escritos a mano y le dicen
al sistema operativo como ejecutarlos, o puede tomar secuencias de comandos e interpretar la
lógica dentro de ellos, además da instrucciones al sistema operativo para ejecutar los comandos
contenidos en un archivo que generalmente se conoce como script o algunas veces también a
este archivo lo llaman Shell, aunque eso es incorrecto,
Actualmente muchos de los términos básicos descritos ya se han virtualizado y son también considerados
programas o aplicaciones que cumplen la misma función por esta razón vamos a definir estos mismos
términos, pero ya como los encontramos en el día a día de nuestro trabajo.
Terminal: Un terminal se refiere a un programa contenedor que ejecuta un Shell, hoy en día se
habla ya no de teclados y pantallas que se conectan por puertos a un sistema más grande sino
de emuladores de terminal que inician un entorno donde se ejecutará un shell en el que puede
ingresar comandos. La consola es un tipo especial de terminal para la comunicación directa a un
nivel bajo con el sistema operativo. Los sistemas GNU/Linux modernos ofrecen consolas virtuales.
Se accede a ellos mediante combinaciones de teclas (por ejemplo, con la combinación de teclas
Ctrl+ Alt+ F12). La interacción con la consola también se realiza mediante un programa de shell.
Las consolas se enumeran utilizando TTYx (por ejemplo: TTY1, TTY2, etc), esto históricamente
viene de las siglas de abreviatura de los terminales teletipos. El termino shell está más orientado
a interactuar con usuarios programadores y personas que no necesitan conocimientos profundos
de ciencias de la computación, como tal vez si lo requieren los que usan consolas donde se
realizan configuraciones vitales para el funcionamiento del sistema de cómputo. El shell es el
programa que procesa comandos y devuelve resultados. Los principales shells también gestionan
procesos en primer plano y en segundo plano, historial de comandos y edición de línea de
comandos.
Ejercicio 1 Conociendo el entorno de trabajo:
Digite en su terminal GNU/Linux de la distribución xxxx (la distribución es el sabor o la marca del
Linux que usted está usando, por citar ejemplos puede ser Ubuntu, xubuntu, redhat, fedora,
centos, suse. La mayoría de distribuciones Linux corporativas robustas siguen un estándar o tratan
de compatibilizar con POSIX si quiere conocer un poco más de este estándar consultar estos links
¿Qué es POSIX? Conceptos fundamentales - El Camino del Sysadmin ([Link]) POSIX -
Wikipedia
El ejercicio consiste en digitar estos comandos y explorar cual es la interpretación de la respuesta recibida:
echo $TERM (tipo de terminal de texto que está utilizando)
tty (número de la terminal de texto que está utilizando)
echo $SHELL (nombre del programa shell que está definido por default para su usuario)
uname -r (Versión del Kernel de Linux de su distribución)
hostnamectl (Información más detallada de sistema operativo)
cat /etc/os-release (Información detallada de sistema operativo)
cat /proc/version (información del Kernel y del compilador de c)
¿cómo solicitamos ayuda acerca del sistema operativo?
man
help
apropos
info
whatis
Comandos muy utilizados:
clear
history
cd
ls
mkdir
pwd
rmdir
whoami
cat
cmp
cp
cut
diff
dirname
basename
ln
lsof
mv
ldd
rm
grep
sort
touch
uniq
wc
du
df
id
date
time
¿Qué son los streams en Linux?
Linux maneja tres canales o streams para interactuar con programas estos son:
Standard input STDIN es cualquier comando que se teclee.
Standard output STDOUT la salida o resultado del comando que se tecleó.
Standard error STDERROR si se producen mensajes de advertencia o errores salen por default en
la terminal.
Para mayor información consultar este link Viernes de Terminal: Standard Stream | Desde Linux
¿Qué son los pipes?
El pipe cuyo símbolo es | sirve para encadenar comandos de tal manera que nos permite
encadenar secuencias de comandos haciendo que la salida de un comando sea la entrada del
siguiente, produciendo efectos de transformación complejos en una sola entrada de la línea de
comandos (CLI)
¿Qué son los redireccionadores?
Cuando necesitamos que los streams de Linux se guarden en archivos o sirvan como entradas o
salidas a otros archivos, programas o comandos utilizamos la redirección I/O o también llamada
I/O o standard I/O. Cada Stream tiene un FD o File descriptor:
STDIN FD=0
STDOUT FD=1
STDERROR FD=2
Por esta razón se dice que todo en Linux es un archivo, por cierto cada dispositivo físico
internamente se maneja como un archivo con su FD.
Para comprobar esto digitemos el comando ls -l /dev/std* .
A continuación un resumen de los redireccionamientos posibles:
Símbolo Descripción
Redirecciona stdout hacía un archivo. Lo crea si no existe, si existe lo sobreescribe.
> ls -l > [Link] (La salida del comando se envía a un archivo en vez de la
terminal.)
Redirecciona stdout hacía un archivo. Lo crea si no existe, si existe concatena la salida
>> al final de este.
ps -ef >> [Link] (Concatena al archivo [Link] la salida del comando.)
Redirecciona stdin desde un archivo. El contenido de un archivo es la entrada o input
del comando.
<
mail user < [Link] (El cuerpo del correo a enviar proviene desde un archivo, en
vez del teclado).)
2> Redirecciona stderr hacía un archivo. Crea (>) o concatena (>>) la salida de errores a
2>> un archivo. (ver ejemplos)
1>&2 Redirecciona stdout hacía donde stderr apunte. (ver ejemplos)
2>&1 Redirecciona stderr hacía donde stdout apunte. (ver ejemplos)
Laboratorio #1
1) Utilice un comando de sistema para obtener la ayuda del comando pwd.
2) Cámbiese a la ruta /cursolinux/practicas y dentro de ese directorio cree un directorio con
su nombre de usuario Linux, a partir del punto 3 todo lo trabajará en ese archivo.
3) Verifique si el directorio se creó guarde la salida en un archivo de nombre [Link].
4) Ahora saque una copia de respaldo de su archivo [Link] llamelo [Link].
5) Compare si el contenido de los dos archivos es igual utilice un comando.
6) Busque los datos de su sistema operativo y almacénelos en [Link] sin borrar el contenido
de ese archivo.
7) Cuente el número de líneas de ese archivo [Link]
8) Filtre la versión del kernel del archivo [Link] y muéstrelo en pantalla.
9) Almacene el historial de comandos en un archivo de nombre [Link]
10) Cree un archivo de nombre [Link] con el siguiente contenido
Manzana
Pera
Banano
Uva
Mango
Tomate
Manzana
Pera
Banano
Manzana
Fresa
Cereza
Utilizando las técnicas de pipe o redireccionamiento ordene el contenido de forma
ascendente A-Z, elimine los duplicados creando otro archivo de nombre
[Link]