Linux® es un sistema operativo de código abierto. Originalmente fue concebido y creado como un pasatiempo por Linus Torvalds en 1991. Linus, mientras estaba en la universidad de Helsinki, buscó crear una versión alternativa, gratuita y de código abierto del sistema operativo Minix, que a su vez se basaba en los principios y el diseño de Unix. Desde entonces, ese pasatiempo se ha convertido en el sistema operativo con la base de usuarios más grande, el sistema operativo más utilizado en los servidores de Internet disponibles públicamente y el único sistema operativo utilizado en las 450 supercomputadoras más rápidas. Quizás lo mejor de Linux es que es de código abierto.
Linux se publica bajo la Licencia Pública General GNU (GPL). Eso significa que cualquiera puede ejecutar, estudiar, compartir y modificar el software. El código modificado también se puede redistribuir e incluso vender, pero debe hacerse bajo la misma licencia. Esto difiere mucho de los sistemas operativos tradicionales —Unix y Windows, por ejemplo— que son propietarios, están bloqueados y se entregan tal cual y no se pueden modificar.
Como parte de su ascenso a la prominencia, el aumento de la complejidad, el alcance y el número de contribuyentes del proyecto, el proyecto del núcleo requería la infraestructura tecnológica, administrativa y legal necesaria para escalar con la comunidad. Como resultado, la Fundación Linux se creó en el año 2000 como el Laboratorio de desarrollo de código abierto (que posteriormente cambió su nombre por el de Fundación Linux).
Hoy en día, Linux es un líder indiscutible de la industria, pero debes recordar que no siempre fue así. En el momento de la creación de la fundación, Linux ocupaba solo una participación minoritaria en el mercado de la informática de alto rendimiento. En el año 2020 tiene un dominio completo del mercado de supercomputadoras, desplazando por completo a UNIX, que tenía el 85 por ciento de todos los sistemas de cómputo de alto rendimiento, tan solo 20 años antes.
Como resultado de los esfuerzos de las comunidades de la Fundación Linux durante las últimas dos décadas y las contribuciones de código abierto, Linux ahora ocupa una participación mayoritaria en la industria automotriz, sistemas integrados, dispositivos móviles y computación en la nube.
Básicos sobre las distribuciones de Linux y sus usos
Una distribución de Linux (a menudo abreviada como distro) es un sistema operativo creado a partir de una colección de software que se basa en el kernel de Linux y, a menudo, en un sistema de administración de paquetes.
Los usuarios de Linux generalmente obtienen su sistema operativo descargando una de las distribuciones de Linux, que están disponibles para una amplia variedad de sistemas que van desde dispositivos integrados (por ejemplo, OpenSTLinux) y computadoras personales (por ejemplo, Ubuntu) hasta poderosas supercomputadoras (por ejemplo, Rocks Cluster). Una distribución típica de Linux comprende un kernel de Linux, herramientas y bibliotecas GNU, software adicional, documentación, un sistema de ventanas, un administrador de ventanas y un entorno de escritorio.
Como hay más de 1000 versiones de Linux conocidas a la fecha, existen varias formas de clasificarlas para darles seguimiento. Las formas usuales de clasificación son las siguientes: por manejador de paquetes, por fuente original y por grado de innovación en funcionalidades.
Los sistemas de manejo de paquetes más usuales son los siguientes:
Al instalar cualquier distribución de Linux es muy importante considerar el end of life (EOL) esperado para esa versión. Por ejemplo, CentOS anunció el EOL de CentOS Linux para finales de 2021 para migrar a Centos Stream, el cual tiene un EOL esperado para 2024. Las versiones de CentOS van coordinadas con Red Hat Enterprise Linux (RHEL) y son basadas en rpm.
Programación (scripting) en Shell
Cuando Linux empezó todas las órdenes eran por medio de comandos de texto de una manera nativa, con los cambios que ha tenido a través de los años los usuarios pueden encontrarse con un entorno amigable muy parecido al de Windows. Aun así, Linux sigue contando con el modo de comandos de texto en consola que se le conoce como Shell, el cual analiza los comandos y los ejecuta.
En GNU/Linux, un Shell es un programa que sirve de interfaz entre el usuario y el sistema operativo. Los tipos de Shell que hay son los siguientes:
En esta sección hay una lista de las operaciones más comunes que se pueden realizar en el Shell de la mayoría de los sistemas operativos Linux modernos. En este caso, Z Shell para efectos demostrativos.
En un sistema operativo Linux, la interfaz de comandos con Shell se ejecuta desde una terminal. Para ejecutar la terminal/consola/shell desde CentOS hay que pulsar el menú de actividades localizado en la parte superior izquierda de la pantalla. Posteriormente, haz clic en el ícono en forma de cuadro negro con un pequeño cursor que está debajo del ícono del salvavidas.
Esta pantalla se obtuvo directamente del software que se está explicando en la computadora, para fines educativos.
Después de presionar el ícono, aparecerá una pantalla similar a esta:
Esta pantalla se obtuvo directamente del software que se está explicando en la computadora, para fines educativos.
Cuando esto suceda teclea la instrucción uname -mrs y presiona enter.
Ahí podrás ver sistema, versión y release del sistema que estás utilizando.
Observa cómo utiliza un guion después de la instrucción. Los parámetros de Shell script son las entidades que se utilizan para almacenar variables en Shell. Un parámetro puede ser un argumento o una variable se puede llamar como parámetro, aunque no se utilice como parte de un argumento de comando. Los parámetros especiales están preestablecidos por el Shell y estos parámetros son de solo lectura. Las variables son administradas por el Shell o por los usuarios.
¿Cómo puedes saber los parámetros especiales que espera un comando en Shell? Para eso existe la instrucción man.
Esta pantalla se obtuvo directamente del software que se está explicando en la computadora, para fines educativos.
Esta instrucción despliega las páginas del manual de instrucciones relacionadas con el comando que se le pasa como argumento. Presiona la tecla q para salir del manual.
Esta pantalla se obtuvo directamente del software que se está explicando en la computadora, para fines educativos.
Los argumentos son las palabras separadas por espacio que van después de la instrucción. Observa cómo en el ejemplo usas man unamey no hay un guion enfrente de la palabra uname. Esto se debe a que uname no es un parámetro que modifica el comportamiento de la instrucción, sino que es un argumento necesario para que esta funcione.
La instrucción pwd regresa a la salida estándar (stdout), la trayectoria absoluta del directorio de trabajo actual de acuerdo con Pedamkar (s.f.).
El comando ls enlista el nombre de todos los archivos contenidos en el directorio de trabajo actual. Cuando se ejecuta sin parámetros, solo enlista el nombre de los archivos que se encuentran en la carpeta actual de trabajo. No se muestran atributos de los archivos ni el contenido de carpetas dentro del mismo.
Esta pantalla se obtuvo directamente del software que se está explicando en la computadora, para fines educativos.
Cuando se añade el parámetro –R la instrucción despliega un listado de los contenidos de las carpetas (subdirectorios) que están dentro del directorio actual de trabajo.
Cuando se añade el parámetro -l la instrucción despliega los permisos de acceso con los que cuenta el archivo, su creador y el grupo de archivos al que pertenece. El atributo de permisos es sumamente importante cuando trabajas con scripts, pues es lo que determina si puedes leer, escribir o ejecutar un archivo.
Los parámetros después del guion se pueden combinar para obtener un resultado que modifica la instrucción, según los parámetros que selecciones. Por ejemplo, si tecleas ls – lR se desplegarán los archivos del directorio actual de trabajo y sus subdirectorios, cada uno con los atributos correspondientes.
Esta pantalla se obtuvo directamente del software que se está explicando en la computadora, para fines educativos.
En la imagen se puede apreciar que ahora el listado contiene una descripción de los permisos, el usuario que creó el archivo, el grupo de archivos a los que pertenece, la cantidad de bytes que consume el archivo en disco, la fecha y hora de última modificación y el nombre del archivo.
La instrucción cd (change directory) sirve para cambiar el directorio sobre el cual trabajas. Para acceder a un subdirectorio tecleas cd y nombre_del_subdirectorio. Si quieres regresar al directorio que está un nivel arriba, hay que teclear cd .. para hacerlo. Si sabes la ubicación exacta a la que quieres ir, teclea cd/directorio/subdirectorio/locacion_a_la_que_deseas_ir (este ejemplo asume que la ubicación a la que quieres ir es a un subdirectorio, dentro del directorio principal y, por último, a la ubicación del archivo).
Esta pantalla se obtuvo directamente del software que se está explicando en la computadora, para fines educativos.
La instrucción mkdir crea directorios en la trayectoria que se especifica como argumento a la misma.
Esta pantalla se obtuvo directamente del software que se está explicando en la computadora, para fines educativos.
La instrucción rm borra archivos especificados en la trayectoria provista como argumento. Si un directorio no está vacío, no podrá ser borrado hasta que todos los archivos que contiene sean borrados también. Esta es una instrucción muy poderosa y se les sugiere estudiar a detalle el manual (man rm) para utilizarla. Es muy importante que no uses el parámetro -Rf con rm hasta que hayas leído con detalle el manual, ya que puedes borrar archivos importantes para el funcionamiento del sistema operativo.
La instrucción rmdir borra directorios de la misma manera que rm borra archivos.
Con estas instrucciones adquiriste el conocimiento suficiente para desplazarte dentro del sistema de archivos de una computadora que usa GNU/Linux como sistema operativo.
Ahora aprenderás cómo crear archivos y archivos con scripts ejecutables desde el Shell. Para empezar, necesitas conocer cómo crear un archivo. Hay muchos editores disponibles para escribir archivos en el Shell de Linux. Algunos de ellos son vi, emacs, nano, pico, joe, jed, ex, ed y ne. Durante esta experiencia utilizarás nano, pues es de los más amigables con el usuario y su curva de aprendizaje es reducida.
El primer paso es validar si nano está instalado por defecto en la versión de CentOS Linux que estás utilizando:
Esta pantalla se obtuvo directamente del software que se está explicando en la computadora, para fines educativos.
Esta pantalla se obtuvo directamente del software que se está explicando en la computadora, para fines educativos.
Una vez instalado, puedes crear tu primer archivo de texto.
Para crear un archivo, invoca el editor de textos nano, como se muestra en la pantalla de anterior.
Una vez abierto el editor, puedes teclear el contenido que necesites agregar al archivo.
Esta pantalla se obtuvo directamente del software que se está explicando en la computadora, para fines educativos.
Para proseguir este ejemplo, teclea el nombre de los siguientes platillos mexicanos:
Mole
Menudo
Pozole
Tortilla
Escamole
Tlayuda
Papadzul
Cabrito
Al terminar de elaborar la lista presiona la tecla Ctrl y x al mismo tiempo.
Esta pantalla se obtuvo directamente del software que se está explicando en la computadora, para fines educativos.
El programa pregunta si deseas guardar el buffer como archivo. Teclea Y como respuesta. Guarda el archivo con el nombre platillos.txt
Esta pantalla se obtuvo directamente del software que se está explicando en la computadora, para fines educativos.
Al listar los contenidos del directorio con el comando ls, debe aparecer el archivo platillos.txt.
Esta pantalla se obtuvo directamente del software que se está explicando en la computadora, para fines educativos.
Felicidades, has creado tu primer archivo usando un Shell de Linux.
Con la instrucción cat puedes ver el contenido de un archivo que se pasa a la instrucción como un argumento.
Esta pantalla se obtuvo directamente del software que se está explicando en la computadora, para fines educativos.
Utiliza la instrucción cp para copiar un archivo de una trayectoria de origen a una trayectoria de destino. Por ejemplo, copia el archivo platillos.txt a otro archivo que se llame platillos2.txt.
Esta pantalla se obtuvo directamente del software que se está explicando en la computadora, para fines educativos.
Utiliza la instrucción mv para mover un archivo de una trayectoria de origen a una trayectoria de destino. Por ejemplo, crea el subdirectorio listas y copia ahí el archivo platillos.txt a otro archivo que se llame platillos2.txt.
Esta pantalla se obtuvo directamente del software que se está explicando en la computadora, para fines educativos.
El comando grep sirve para buscar un patrón dentro de un archivo. Regresa todas las líneas donde encontró ese patrón. Para probar esto vamos a buscar todas las ocurrencias de ole en platillos.txt. Teclea la instrucción grep ole platillos2.txt. Observa cómo solo se despliegan las palabras que contienen la partícula ‘ole’. Se pueden usar expresiones regulares para buscar patrones especiales en los textos.
Esta pantalla se obtuvo directamente del software que se está explicando en la computadora, para fines educativos.
Geeks For Geeks (2019) provee varios ejemplos sobre cómo las expresiones regulares permiten encontrar patrones dentro de un texto de manera muy flexible.
Cuando ejecutas un comando Shell y al final añades el operador > y el nombre de un archivo, lo que ocurre es que el sistema operativo crea un archivo con ese nombre y pone dentro de este el resultado que arroja el comando de Shell. Por ejemplo, mandas el listado del contenido del directorio actual a un archivo que se llame listado.txt, ejecutando la instrucción ls > listado.txt en el directorio de trabajo actual.
Esta pantalla se obtuvo directamente del software que se está explicando en la computadora, para fines educativos.
Utilizando el operador | puedes hacer que una operación encadene con otra. Por ejemplo, si usas la siguiente secuencia cat platillos2.txt | grep ole > platillos_con_ole.txt, el script leerá el archivo platillos2.txt en el directorio de trabajo actual, alimentando la instrucción grep ole y arrojará el resultado en un archivo llamado platillos_con_ole.txt
Esta pantalla se obtuvo directamente del software que se está explicando en la computadora, para fines educativos.
Ahora que ya conoces algunas instrucciones que se pueden usar en el Shell de Linux, aprenderás a generar scripts que automaticen tareas repetitivas en la operación diaria.
Empieza por abrir un archivo y nómbralo eventos.txt. Llénalo con la siguiente información cuidando que cada registro de venta quede en una sola línea:
Esta pantalla se obtuvo directamente del software que se está explicando en la computadora, para fines educativos.
Después de hacer esto, ahora harás un script que automatice el procesamiento y separe las ventas por mesero o por caja, según un argumento provisto por el cliente y lo lleve a un archivo que se llame meseroN_fecha .txt o cajeroN_fecha.txt dependiendo del parámetro que pase el usuario.
Esta pantalla se obtuvo directamente del software que se está explicando en la computadora, para fines educativos.
Esta pantalla se obtuvo directamente del software que se está explicando en la computadora, para fines educativos.
Atención: la falta de espacios antes de asignar valor a las variables y el espaciado en las condiciones del if son intencionales y requeridas para que el script funcione apropiadamente.
Los scripts de Shell pueden ser utilizados en múltiples formas. En administración de sistemas se pueden usar para crear cuentas de usuarios, monitorear el estado del sistema, cuantificar los usos de memoria e incluso determinar los procesos que están afectando el desempeño de un grupo de procesos. Muchas empresas utilizan el sistema operativo Linux por su flexibilidad, escalabilidad y los términos favorables de licenciamiento, especialmente en uso masivo.
El utilizar un sistema Linux te abre un abanico de opciones en cuanto a Shells utilizados para interactuar con el sistema operativo y la variedad de instrucciones para acceder a propiedades del sistema operativo.
Asegúrate de: