LINUX ESSENTIALS 1.6 ESPAÑOL.pdf
Document Details
Uploaded by LowCostLaplace
2022
LPI
Tags
Full Transcript
Linux Essentials (Versión 1.6) | Tema 1: La Comunidad Linux y una carrera en el mundo del código abierto Version: 2022-01-21 | Esta obra está bajo la licencia CC BY-NC-ND 4.0. | learning.lpi.org | 1 Linux Essentials (Versión 1.6) | Tema 1: La Comunidad Linux y una carrera en el mundo del código abie...
Linux Essentials (Versión 1.6) | Tema 1: La Comunidad Linux y una carrera en el mundo del código abierto Version: 2022-01-21 | Esta obra está bajo la licencia CC BY-NC-ND 4.0. | learning.lpi.org | 1 Linux Essentials (Versión 1.6) | Tema 1: La Comunidad Linux y una carrera en el mundo del código abierto 1.1 Los sistemas operativos populares y la evolución de Linux Referencia al objetivo del LPI Linux Essentials version 1.6, Exam 010, Objective 1.1 Importancia 2 Áreas de conocimiento clave Distribuciones Sistemas embebidos Linux en la nube Lista parcial de archivos, términos y utilidades Debian, Ubuntu (LTS) CentOS, openSUSE, Red Hat, SUSE Linux Mint, Scientific Linux Raspberry Pi, Raspbian Android 2 | learning.lpi.org | Esta obra está bajo la licencia CC BY-NC-ND 4.0. | Version: 2022-01-21 Linux Essentials (Versión 1.6) | 1.1 Los sistemas operativos populares y la evolución de Linux 1.1 Lección 1 Certificación: Linux Essentials Versión: 1.6 Tema: 1 La Comunidad Linux y una carrera en el mundo del código abierto Objetivo: 1.1 Los sistemas operativos populares y la evolución de Linux Lección: 1 de 1 Introducción Linux es uno de los sistemas operativos más populares; su desarrollo se inició en 1991 por Linus Torvalds. El sistema operativo se inspiró en Unix, otro sistema operativo desarrollado en la década de 1970 por AT&T Laboratories. Unix estaba orientado a pequeñas computadoras; en ese momento, las computadoras “pequeñas” se consideraban máquinas que no necesitaban una sala completa con aire acondicionado y costaban menos de un millón de dólares. Más tarde, fueron consideradas como máquinas que podían ser transportadas por dos personas. En ese momento, Unix no estaba disponible en computadoras pequeñas como las computadoras de oficina basadas en la plataforma x86. Por lo tanto, Linus, que era un estudiante en ese momento, comenzó a implementar un sistema operativo tipo Unix que se suponía que debía ejecutarse en esta plataforma. Principalmente, Linux usa los mismos principios e ideas básicas de Unix, pero Linux en sí no contiene código Unix, ya que es un proyecto independiente. Linux no está respaldado por una compañía individual sino por una comunidad internacional de programadores. Como está disponible gratuitamente, puede ser utilizado por cualquier persona sin restricciones. Version: 2022-01-21 | Esta obra está bajo la licencia CC BY-NC-ND 4.0. | learning.lpi.org | 3 Linux Essentials (Versión 1.6) | Tema 1: La Comunidad Linux y una carrera en el mundo del código abierto Distribuciones Una distribución de Linux es un paquete que consiste en un kernel de Linux y una selección de aplicaciones mantenidas por una empresa o comunidad de usuarios. El objetivo de una distribución es optimizar el núcleo y las aplicaciones que se ejecutan en el sistema operativo para un determinado caso de uso o grupo de usuarios. Las distribuciones a menudo incluyen herramientas específicas de distribución para la instalación de software y la administración del sistema. Es por esto que algunas distribuciones se usan principalmente para entornos de escritorio los cuales deben ser fáciles de usar, mientras que otras se usan principalmente para ejecutarse en servidores utilizando los recursos disponibles de la manera más eficiente posible. Otra forma de clasificar las distribuciones es haciendo referencia a la distribución familiar a la que pertenecen. Las distribuciones de la familia de Debian utilizan el gestor de paquetes dpkg para gestionar el software que se ejecuta en el sistema operativo. Los paquetes que pueden instalarse con su gestor son mantenidos por miembros voluntarios de la comunidad. Los mantenedores utilizan el formato de paquete deb para especificar cómo se instala el software en el sistema operativo y cómo está configurado de forma predeterminada. Al igual que una distribución, un paquete es un conjunto de software con su correspondiente configuración y documentación que facilita el proceso de instalación, actualización y uso del software. La distribución Debian GNU/Linux es la distribución más grande de la familia Debian. El proyecto Debian GNU/Linux fue lanzado por Ian Murdock en 1993 y hoy en día miles de voluntarios están trabajando en el proyecto con el objetivo de proporcionar un sistema operativo muy fiable y promover la visión de Richard Stallman de un sistema operativo que respete las libertades del usuario para ejecutar, estudiar, distribuir y mejorar el software. Esta es la razón por la cual no proporciona ningún software propietario por defecto. Ubuntu es otra distribución basada en Debian que vale la pena mencionar. Ubuntu fue creado por Mark Shuttleworth y su equipo en 2004, con la misión de brindar un entorno de escritorio fácil de usar. La misión de Ubuntu es proporcionar software gratuito a todos en todo el mundo, así como reducir el costo de los servicios profesionales. La distribución tiene lanzamientos programados cada seis meses con un soporte a largo plazo cada 2 años. Red Hat es una distribución de Linux desarrollada y mantenida por la compañía de software con el mismo nombre, que fue adquirida por IBM en 2019. La distribución de Red Hat Linux se inició en 1994 y se renombró en 2003 a Red Hat Enterprise Linux, a menudo abreviado como RHEL. Se proporciona a las empresas como una solución empresarial confiable que es compatible con Red Hat e incluye software que tiene como objetivo facilitar el uso de Linux en entornos de servidores profesionales. Algunos de sus componentes requieren suscripciones o licencias de pago. El proyecto CentOS utiliza el código fuente disponible de Red Hat Enterprise Linux y lo compila en una distribución que está disponible de forma totalmente gratuita, sin embargo, esta distribución no tiene 4 | learning.lpi.org | Esta obra está bajo la licencia CC BY-NC-ND 4.0. | Version: 2022-01-21 Linux Essentials (Versión 1.6) | 1.1 Los sistemas operativos populares y la evolución de Linux soporte comercial. Tanto RHEL como CentOS están optimizados para su uso en entornos de servidor. El proyecto Fedora se fundó en 2003 y crea una distribución de Linux dirigida a computadoras de escritorio. Red Hat inició y mantiene la distribución de Fedora desde entonces. Fedora es muy progresista y adopta nuevas tecnologías muy rápidamente y a veces se considera un banco de pruebas para nuevas tecnologías que luego podrían incluirse en RHEL. Todas las distribuciones basadas en Red Hat usan el formato de paquete rpm. La empresa SUSE fue fundada en 1992 en Alemania como un proveedor de servicios Unix. La primera versión de SUSE Linux se lanzó en 1994. A lo largo de los años, SUSE Linux se hizo conocido principalmente por su herramienta de configuración YaST. Esta herramienta permite a los administradores instalar y configurar software y hardware, así como servicios y redes. Al igual que RHEL, SUSE lanza SUSE Linux Enterprise Server, que es su edición comercial. Esta distribución se publica con menos frecuencia y es adecuada para la implementación empresarial y de producción. Se distribuye como un servidor, así como un entorno de escritorio con paquetes adecuados para el propósito. En 2004, SUSE lanzó el proyecto openSUSE, que abrió oportunidades para que los desarrolladores y usuarios probaran y desarrollaran aún más el sistema. La distribución de openSUSE está disponible gratuitamente para su descarga. A lo largo de los años se han lanzado distribuciones independientes, algunas basadas en Red Hat o Ubuntu, otras diseñadas para mejorar una propiedad específica de un sistema o hardware. Otras construidas con funcionalidades específicas como QubesOS, un entorno de escritorio muy seguro, o Kali Linux, que proporciona un entorno para explotar las vulnerabilidades de software, utilizado principalmente por los expertos en pruebas de penetración, y otras superpequeñas distribuciones de Linux diseñadas para ejecutarse de forma específica en contenedores Linux, como Docker. También hay distribuciones creadas específicamente para componentes de sistemas embebidos e incluso dispositivos inteligentes. Sistemas embebidos Los sistemas embebidos son una combinación de hardware y software diseñados para tener una función específica dentro de un gran sistema. Por lo general, forman parte de otros dispositivos que ayudan a controlarlos. Los sistemas embebidos se encuentran en aplicaciones de automoción, médicas e incluso militares. Debido a su gran variedad de aplicaciones varios sistemas operativos basados en el kernel de Linux han sido desarrollados para ser utilizados en sistemas embebidos. Una parte importante de los dispositivos inteligentes tiene un sistema operativo basado en el kernel de Linux. Por lo tanto, con los sistemas embebidos surge el software embebido. El propósito de este software es acceder al hardware y hacerlo utilizable. Entre las principales ventajas de Linux sobre cualquier Version: 2022-01-21 | Esta obra está bajo la licencia CC BY-NC-ND 4.0. | learning.lpi.org | 5 Linux Essentials (Versión 1.6) | Tema 1: La Comunidad Linux y una carrera en el mundo del código abierto software embebido propietario se encuentran, la compatibilidad de plataformas entre vendedores, el desarrollo, el soporte y la ausencia de cuotas por concepto de licencia. Dos de los proyectos de software embebido más populares son Android, que se utiliza principalmente en teléfonos móviles a través de una variedad de proveedores, y Raspbian que se utiliza principalmente en Raspberry Pi. Android Android es un sistema operativo para dispositivos móviles desarrollado principalmente por Google. Android Inc. fue fundado en 2003 en Palo Alto, California. La compañía inicialmente creó un sistema operativo destinado a funcionar en cámaras digitales. En 2005, Google adquirió Android Inc. y lo desarrolló para convertirse en uno de los mayores sistemas operativos para dispositivos móviles. La base de Android es una versión modificada del kernel de Linux con software adicional de código abierto. El sistema operativo está desarrollado principalmente para dispositivos con pantalla táctil, pero Google ha desarrollado versiones para televisores y relojes de pulsera. Se han desarrollado diferentes versiones de Android para consolas de juegos, cámaras digitales y PCs. El código abierto de Android está disponible gratuitamente como Android Open Source Project (AOSP). Google ofrece una serie de componentes propietarios además del núcleo de Android. Entre los componentes se incluyen aplicaciones como Google Calendar, Google Maps, Google Mail, el navegador Chrome y Google Play Store, que facilita la instalación de aplicaciones. La mayoría de los usuarios consideran estas herramientas una parte integral de su experiencia con Android. Por lo tanto, casi todos los dispositivos móviles enviados con Android a Europa y América incluyen el software patentado de Google. Android en dispositivos integrados tiene muchas ventajas. El sistema operativo es intuitivo y fácil de usar con una interfaz gráfica de usuario, tiene una comunidad de desarrolladores muy amplia, así que es fácil encontrar ayuda para el desarrollo. También es compatible con la mayoría de los proveedores de hardware con un controlador de Android, por lo tanto, es fácil y rentable crear un prototipo para un sistema entero. Raspbian y Raspberry Pi Raspberry Pi es una computadora de bajo costo del tamaño de una tarjeta de crédito que puede funcionar como un ordenador de sobremesa con todas sus funciones, pero que a su vez puede utilizarse dentro de un sistema Linux integrado. Este ordenador fue desarrollado por la Fundación Raspberry Pi, que es una organización benéfica educativa con sede en el Reino Unido. Su principal propósito es enseñar a los jóvenes a aprender a programar y comprender la funcionalidad de las computadoras. El Raspberry Pi se puede diseñar y programar para realizar tareas u operaciones que forman parte de un sistema mucho más complejo. Las especialidades de Raspberry Pi incluyen un conjunto de pines de Entrada/Salida de Propósito 6 | learning.lpi.org | Esta obra está bajo la licencia CC BY-NC-ND 4.0. | Version: 2022-01-21 Linux Essentials (Versión 1.6) | 1.1 Los sistemas operativos populares y la evolución de Linux General (GPIO) que pueden ser utilizados para acoplar dispositivos electrónicos y placas de extensión, lo que permite utilizar Raspberry Pi como plataforma para el desarrollo de hardware, ya que a pesar de que estaba pensado para fines educativos se utiliza hoy en día en varios proyectos de DIY (hágalo usted mismo), así como para la creación de prototipos industriales en el desarrollo de sistemas embebidos. La Raspberry Pi utiliza procesadores ARM. Varios sistemas operativos, incluido Linux, corren sobre Raspberry Pi. Como Raspberry Pi no contiene un disco duro, el sistema operativo se inicia desde una tarjeta de memoria SD. Una de las distribuciones de Linux más destacadas para Raspberry Pi es Raspbian. Como su nombre indica, pertenece a la familia de distribución de Debian. Está personalizado para instalarse en el hardware de Raspberry Pi y proporciona más de 35000 paquetes optimizados para este entorno. Además de Raspbian, existen muchas otras distribuciones de Linux para Raspberry Pi, como, por ejemplo, Kodi, que convierte a Raspberry Pi en un centro de medios. Linux y el Cloud Computing El término cloud computing se refiere a una forma estandarizada de consumir recursos informáticos, ya sea comprándolos a un proveedor público de cloud computing o ejecutando una nube privada. Según informes del 2017, Linux ejecuta el 90% de la carga de trabajo de la nube pública. Todos los proveedores de cloud computing, desde Amazon Web Services (AWS) hasta Google Cloud Platform (GCP) ofrecen diferentes formas de trabajar con Linux. Incluso Microsoft, una empresa cuyo antiguo CEO comparó Linux con un cáncer, ofrece hoy en día máquinas virtuales basadas en Linux en su nube Azure. Linux generalmente es ofrecido como parte de Infrastructure as a Service (IaaS). Las instancias IaaS son máquinas virtuales que se aprovisionan en cuestión de minutos en la nube. Cuando se inicia una instancia IaaS, se elige una imagen que contiene los datos que se desplegarán en la nueva instancia. Los proveedores de nube ofrecen varias imágenes que contienen instalaciones listas para ejecutar tanto de las distribuciones populares, así como sus propias versiones de Linux. El usuario podrá elegir una imagen que contiene su distribución preferida y acceder a una instancia de la nube que ejecute esta distribución poco después de haberse creado. La mayoría de los proveedores agregan herramientas a sus imágenes para ajustar la instalación a una instancia específica de la nube. Estas herramientas pueden, por ejemplo, extender los sistemas de archivos de la imagen para que se ajusten al disco duro real de la máquina virtual. Version: 2022-01-21 | Esta obra está bajo la licencia CC BY-NC-ND 4.0. | learning.lpi.org | 7 Linux Essentials (Versión 1.6) | Tema 1: La Comunidad Linux y una carrera en el mundo del código abierto Ejercicios guiados 1. ¿En qué se diferencia Debian GNU/Linux de Ubuntu? Nombre dos aspectos. 2. ¿Cuáles son los entornos/plataformas más comunes para los que se utiliza Linux? Nombre tres entornos/plataformas diferentes y nombre una distribución que pueda utilizarse para cada uno. 3. Se planea instalar una distribución de Linux en un nuevo entorno. Nombre cuatro aspectos que deban ser considerados al elegir una distribución. 4. Nombre tres dispositivos en los que se pueda ejecutar el sistema operativo Android, que no sean teléfonos inteligentes. 5. Explique tres ventajas importantes de la computación en la nube. 8 | learning.lpi.org | Esta obra está bajo la licencia CC BY-NC-ND 4.0. | Version: 2022-01-21 Linux Essentials (Versión 1.6) | 1.1 Los sistemas operativos populares y la evolución de Linux Ejercicios exploratorios 1. Teniendo en cuenta el costo y el rendimiento, ¿Qué distribuciones son más adecuadas para una empresa que tiene como objetivo reducir los costos de licencias, manteniendo el rendimiento al máximo? Explique por qué. 2. ¿Cuáles son las principales ventajas de Raspberry Pi y qué funciones pueden tener en los negocios? 3. ¿Qué gama de distribuciones ofrecen Amazon Cloud Services y Google Cloud? Nombre al menos tres comunes y dos diferentes. Version: 2022-01-21 | Esta obra está bajo la licencia CC BY-NC-ND 4.0. | learning.lpi.org | 9 Linux Essentials (Versión 1.6) | Tema 1: La Comunidad Linux y una carrera en el mundo del código abierto Resumen En esta lección usted aprendió: Diferentes distribuciones de Linux. ¿Qué son los sistemas embebidos Linux? ¿Cómo se usan los sistemas embebidos de Linux? Diferentes usos de Android. Diferentes usos de Raspberry Pi. ¿Qué es la computación en la nube' ¿Qué papel juega Linux en la computación en la nube? 10 | learning.lpi.org | Esta obra está bajo la licencia CC BY-NC-ND 4.0. | Version: 2022-01-21 Linux Essentials (Versión 1.6) | 1.1 Los sistemas operativos populares y la evolución de Linux Respuestas a los ejercicios guiados 1. ¿En qué se diferencia Debian GNU/Linux de Ubuntu? Nombre dos aspectos. Ubuntu está basado en un snapshot de Debian, es por esto que existen muchas características similares entre ellos. Sin embargo, existen otras diferencias significativas entre las dos distribuciones. La primera sería la aplicabilidad para los principiantes. Ubuntu se recomienda para principiantes por su facilidad de uso. Por otro lado, Debian se recomienda para usuarios más avanzados. La mayor diferencia está en la complejidad del proceso de instalación el cual Ubuntu hace más simple al usuario. Otra diferencia pudiera estar relacionada con la estabilidad de cada distribución. Debian se considera más estable comparada con Ubuntu. Debian recibe pocas actualizaciones que son probadas minuciosamente por lo que el sistema, de forma general, es más estable. Por otro lado, Ubuntu permite al usuario usar las últimas versiones de software y nuevas tecnologías. 2. ¿Cuáles son los entornos/plataformas más comunes para los que se utiliza Linux? Nombre tres entornos/plataformas diferentes y nombre una distribución que pueda utilizarse para cada uno. Algunos de los entornos/plataformas comunes serían teléfonos inteligentes, computadoras de escritorio y servidores. En teléfonos inteligentes, puede ser utilizado por distribuciones como Android. En escritorios y servidores, puede utilizarse por cualquier distribución, que sea adecuada a la funcionalidad de ese equipo, desde Debian, Ubuntu a CentOS y Red Hat Enterprise Linux. 3. Se planea instalar una distribución de Linux en un nuevo entorno. Nombre cuatro aspectos que deban ser considerados al elegir una distribución. Al elegir una distribución, algunos de los aspectos principales que se deben considerar son el costo, el rendimiento, la escalabilidad, la estabilidad y la demanda de hardware del sistema. 4. Nombre tres dispositivos en los que se pueda ejecutar el sistema operativo Android, que no sean teléfonos inteligentes. Otros dispositivos en los que se ejecuta Android son televisores inteligentes, tabletas, Android Auto y relojes inteligentes. 5. Explique tres ventajas importantes de la computación en la nube. Las principales ventajas de la computación en la nube son la flexibilidad, la fácil recuperación y el bajo costo de uso. Los servicios basados en la nube son fáciles de implementar y escalar, dependiendo de los requisitos del negocio. Tiene una gran ventaja en las soluciones de respaldo Version: 2022-01-21 | Esta obra está bajo la licencia CC BY-NC-ND 4.0. | learning.lpi.org | 11 Linux Essentials (Versión 1.6) | Tema 1: La Comunidad Linux y una carrera en el mundo del código abierto y recuperación, ya que permite a las empresas recuperarse de los incidentes más rápido y con menos repercusiones. Además, reduce los costos de operación, ya que permite pagar solo por los recursos que utiliza una empresa en un modelo basado en suscripción. 12 | learning.lpi.org | Esta obra está bajo la licencia CC BY-NC-ND 4.0. | Version: 2022-01-21 Linux Essentials (Versión 1.6) | 1.1 Los sistemas operativos populares y la evolución de Linux Respuestas a los ejercicios exploratorios 1. Teniendo en cuenta el costo y el rendimiento, ¿Qué distribuciones son más adecuadas para una empresa que tiene como objetivo reducir los costos de licencias, manteniendo el rendimiento al máximo? Explique por qué. Una de las distribuciones más adecuadas para ser utilizada por empresas es CentOS. Esto se debe a que incorpora todos los productos de Red Hat que utiliza en su sistema operativo comercial, a la vez que es de uso gratuito. Del mismo modo, las versiones de Ubuntu LTS garantizan la compatibilidad durante un período de tiempo más largo. Las versiones estables de Debian GNU/Linux también se usan a menudo en entornos empresariales. 2. ¿Cuáles son las principales ventajas de Raspberry Pi y qué funciones pueden tener en los negocios? A pesar de que el RaspberryPi es muy pequeño, puede utilizarse como una computadora normal. Además, es de bajo costo y puede manejar el tráfico web y muchas otras funcionalidades. Se puede usar como un servidor, cortafuegos y se puede usar como placa principal para robots y muchos otros dispositivos pequeños. 3. ¿Qué gama de distribuciones ofrecen Amazon Cloud Services y Google Cloud? Nombre al menos tres comunes y dos diferentes. Las distribuciones comunes entre Amazon y Google Cloud Services son Ubuntu, CentOS y Red Hat Enterprise Linux. Cada proveedor de la nube también ofrece distribuciones específicas que el otro no ofrece. Amazon tiene Amazon Linux y Kali Linux, mientras que Google ofrece el uso de servidores FreeBSD y Windows. Version: 2022-01-21 | Esta obra está bajo la licencia CC BY-NC-ND 4.0. | learning.lpi.org | 13 Linux Essentials (Versión 1.6) | Tema 1: La Comunidad Linux y una carrera en el mundo del código abierto 1.2 Principales aplicaciones de código abierto Referencia al objetivo del LPI Linux Essentials version 1.6, Exam 010, Objective 1.2 Importancia 2 Áreas de conocimiento clave Aplicaciones de escritorio Aplicaciones de servidor Lenguajes de programación Herramientas de gestión de paquetes y repositorios Lista parcial de archivos, términos y utilidades OpenOffice.org, LibreOffice, Thunderbird, Firefox, GIMP Nextcloud, ownCloud Apache HTTPD, NGINX, MariaDB, MySQL, NFS, Samba C, Java, JavaScript, Perl, shell, Python, PHP dpkg, apt-get, rpm, yum 14 | learning.lpi.org | Esta obra está bajo la licencia CC BY-NC-ND 4.0. | Version: 2022-01-21 Linux Essentials (Versión 1.6) | 1.2 Principales aplicaciones de código abierto 1.2 Lección 1 Certificación: Linux Essentials Versión: 1.6 Tema: 1 La comunidad Linux y una carrera en el Open Source Objetivo: 1.2 Principales aplicaciones de código abierto Lección: 1 de 1 Introducción Una aplicación es un programa informático que no está directamente relacionado con el funcionamiento de la computadora, sino de las tareas que realiza el usuario. Las distribuciones de Linux ofrecen muchas opciones de aplicaciones para realizar una variedad de tareas, tales como aplicaciones de oficina, navegadores web, reproductores y editores multimedia, etc. A menudo hay más de una aplicación o herramienta para realizar un trabajo en particular, y es el usuario quien debe elegir la aplicación que mejor se adapte a sus necesidades. Paquetes de software Casi todas las distribuciones de Linux ofrecen un conjunto aplicaciones preinstaladas. Además de esas aplicaciones preinstaladas, una distribución tiene un repositorio de paquetes con una vasta colección de aplicaciones disponibles para instalar a través de su gestor de paquetes package manager. Aunque las diversas distribuciones ofrecen aproximadamente las mismas aplicaciones, existen varios sistemas de gestión de paquetes diferentes para varias distribuciones, por ejemplo, Debian, Ubuntu y Linux Mint utilizan las herramientas dpkg, apt-get y apt para instalar paquetes de software, generalmente denominados paquetes DEB. Por el contrario, distribuciones como Red Hat, Version: 2022-01-21 | Esta obra está bajo la licencia CC BY-NC-ND 4.0. | learning.lpi.org | 15 Linux Essentials (Versión 1.6) | Tema 1: La Comunidad Linux y una carrera en el mundo del código abierto Fedora y CentOS usan los comandos rpm, yum y dnf que a su vez instalan paquetes RPM. Como el empaquetado de la aplicación es diferente para cada familia de distribución, es muy importante instalar paquetes desde el repositorio correcto diseñado para la distribución en particular. El usuario final normalmente no tiene que preocuparse por esos detalles, ya que el gestor de paquetes de la distribución elegirá los paquetes adecuados, las dependencias necesarias y las actualizaciones futuras. Las dependencias son paquetes auxiliares que necesitan los programas. Por ejemplo, si una librería proporciona funciones para tratar imágenes JPEG que son utilizadas por varios programas, es probable que esta librería esté empaquetada en su propio paquete del que dependen todas las aplicaciones que utilizan la librería. Los comandos dpkg y rpm operan en archivos de paquetes individuales. En la práctica, casi todas las tareas de gestión de paquetes son realizadas por los comandos apt-get o apt en sistemas que utilizan paquetes DEB o por yum o dnf en sistemas que utilizan paquetes RPM. Estos comandos funcionan con catálogos de paquetes. Se puede descargar nuevos paquetes y sus dependencias, además comprobar si hay versiones más nuevas de los paquetes instalados. Instalación de paquetes Suponga que ha oído hablar de un comando llamado figlet que imprime texto agrandado en el terminal y desea probarlo; sin embargo, obtendrá el siguiente mensaje después de ejecutar el comando figlet: $ figlet -bash: figlet: command not found Esto significa que probablemente el paquete no esté instalado en su sistema. Si su distribución funciona con paquetes DEB, puede buscar en sus repositorios usando apt-cache search package_name o apt search package_name. El comando apt-cache se usa para buscar paquetes y para listar información sobre paquetes disponibles. El siguiente comando busca cualquier ocurrencia del término “figlet” en los nombres y descripciones del paquete: $ apt-cache search figlet figlet - Make large character ASCII banners out of ordinary text La búsqueda identificó un paquete llamado figlet que corresponde al comando que falta. La instalación y eliminación de un paquete requiere permisos especiales otorgados solo al administrador del sistema: el usuario llamado root. En los sistemas de escritorio, los usuarios comunes pueden instalar o eliminar paquetes anteponiendo el comando sudo a los comandos de instalación / eliminación. Eso requerirá que escriba su contraseña para continuar. Para los paquetes DEB, la 16 | learning.lpi.org | Esta obra está bajo la licencia CC BY-NC-ND 4.0. | Version: 2022-01-21 Linux Essentials (Versión 1.6) | 1.2 Principales aplicaciones de código abierto instalación se realiza con el comando apt-get install package_name o apt install package_name: $ sudo apt-get install figlet Reading package lists... Done Building dependency tree Reading state information... Done The following NEW packages will be installed: figlet 0 upgraded, 1 newly installed, 0 to remove and 0 not upgraded. En este punto el paquete se descargará e instalará en el sistema, así como las dependencias que eventualmente necesite el paquete: Need to get 184 kB of archives. After this operation, 741 kB of additional disk space will be used. Get:1 http://archive.raspbian.org/raspbian stretch/main armhf figlet armhf 2.2.5-2 [184 kB] Fetched 184 kB in 0s (213 kB/s) Selecting previously unselected package figlet. (Reading database... 115701 files and directories currently installed.) Preparing to unpack.../figlet_2.2.5-2_armhf.deb... Unpacking figlet (2.2.5-2)... Setting up figlet (2.2.5-2)... update-alternatives: using /usr/bin/figlet-figlet to provide /usr/bin/figlet (figlet) in auto mode Processing triggers for man-db (2.7.6.1-2)... Una vez finalizada la descarga, todos los archivos son copiados a las ubicaciones correspondiente, se realizará cualquier configuración adicional y el comando estará disponible: $ figlet Awesome! _ _ / \__ _____ ___ ___ _ __ ___ ___| | / _ \ \ /\ / / _ \/ __|/ _ \| '_ ` _ \ / _ \ | / ___ \ V /_/ V / __/\__ \ (_) | | | | | | __/_| \_\_/\_/ \___||___/\___/|_| |_| |_|\___(_) En distribuciones basadas en paquetes RPM, las búsquedas se realizan usando yum search package_name o dnf search package_name. Supongamos que desea mostrar algún texto de una forma más irreverente, seguido de una vaca caricaturesca, pero no está seguro del paquete que puede Version: 2022-01-21 | Esta obra está bajo la licencia CC BY-NC-ND 4.0. | learning.lpi.org | 17 Linux Essentials (Versión 1.6) | Tema 1: La Comunidad Linux y una carrera en el mundo del código abierto realizar esa tarea: $ yum search speaking cow Last metadata expiration check: 1:30:49 ago on Tue 23 Apr 2019 11:02:33 PM -03. ==================== Name & Summary Matched: speaking, cow ==================== cowsay.noarch : Configurable speaking/thinking cow Después de encontrar un paquete adecuado en el repositorio, puede instalarse con package_name o dnf install package_name: yum install $ sudo yum install cowsay Last metadata expiration check: 2:41:02 ago on Tue 23 Apr 2019 11:02:33 PM -03. Dependencies resolved. ============================================================================== Package Arch Version Repository Size ============================================================================== Installing: cowsay noarch 3.04-10.fc28 fedora 46 k Transaction Summary ============================================================================== Install 1 Package Total download size: 46 k Installed size: 76 k Is this ok [y/N]: y Una vez más, el paquete deseado y todas sus posibles dependencias serán descargados e instalados: 18 | learning.lpi.org | Esta obra está bajo la licencia CC BY-NC-ND 4.0. | Version: 2022-01-21 Linux Essentials (Versión 1.6) | 1.2 Principales aplicaciones de código abierto Downloading Packages: cowsay-3.04-10.fc28.noarch.rpm 490 kB/s | 46 kB 00:00 ============================================================================== Total 53 kB/s | 46 kB 00:00 Running transaction check Transaction check succeeded. Running transaction test Transaction test succeeded. Running transaction Preparing : 1/1 Installing : cowsay-3.04-10.fc28.noarch 1/1 Running scriptlet: cowsay-3.04-10.fc28.noarch 1/1 Verifying 1/1 : cowsay-3.04-10.fc28.noarch Installed: cowsay.noarch 3.04-10.fc28 Complete! El comando cowsay hace exactamente lo que su nombre indica: $ cowsay "Brought to you by yum" _______________________ < Brought to you by yum > ----------------------\ ^__^ \ (oo)\_______ (__)\ )\/\ ||----w | || || Aunque puedan parecer inútiles, los comandos figlet y cowsay proporcionan una forma de llamar la atención de otros usuarios sobre la información relevante. Eliminación de paquetes Los mismos comandos utilizados para instalar paquetes se utilizan para eliminarlos. Todos los comandos aceptan la palabra clave remove para desinstalar un paquete instalado: apt-get remove package_name o apt remove package_name para paquetes DEB y yum remove package_name o dnf remove package_name para paquetes RPM. El comando sudo también es necesario para realizar la eliminación. Por ejemplo, para eliminar el paquete figlet instalado previamente en una distribución Version: 2022-01-21 | Esta obra está bajo la licencia CC BY-NC-ND 4.0. | learning.lpi.org | 19 Linux Essentials (Versión 1.6) | Tema 1: La Comunidad Linux y una carrera en el mundo del código abierto basada en DEB: $ sudo apt-get remove figlet Reading package lists... Done Building dependency tree Reading state information... Done The following packages will be REMOVED: figlet 0 upgraded, 0 newly installed, 1 to remove and 0 not upgraded. After this operation, 741 kB disk space will be freed. Do you want to continue? [Y/n] Y Después de confirmar la operación, el paquete se borra del sistema: (Reading database... 115775 files and directories currently installed.) Removing figlet (2.2.5-2)... Processing triggers for man-db (2.7.6.1-2)... Un procedimiento similar se realiza en un sistema basado en RPM, por ejemplo, para eliminar el paquete cowsay previamente instalado de una distribución basada en RPM: $ sudo yum remove cowsay Dependencies resolved. ================================================================================== Package Arch Version Repository Size ================================================================================== Removing: cowsay noarch 3.04-10.fc28 @fedora 76 k Transaction Summary ================================================================================== Remove 1 Package Freed space: 76 k Is this ok [y/N]: y Asimismo, se solicita una confirmación y se borra el paquete del sistema: 20 | learning.lpi.org | Esta obra está bajo la licencia CC BY-NC-ND 4.0. | Version: 2022-01-21 Linux Essentials (Versión 1.6) | 1.2 Principales aplicaciones de código abierto Running transaction check Transaction check succeeded. Running transaction test Transaction test succeeded. Running transaction Preparing : 1/1 Erasing : cowsay-3.04-10.fc28.noarch 1/1 Running scriptlet: cowsay-3.04-10.fc28.noarch 1/1 Verifying 1/1 : cowsay-3.04-10.fc28.noarch Removed: cowsay.noarch 3.04-10.fc28 Complete! Los archivos de configuración de los paquetes eliminados se mantienen en el sistema, por lo que pueden volver a utilizarse si el paquete se vuelve a instalar en el futuro. Aplicaciones de Office Las aplicaciones de Office se utilizan para editar archivos como textos, presentaciones, hojas de cálculo y otros formatos que se utilizan habitualmente en un entorno de oficina, y que suelen organizarse en colecciones denominadas office suites. Durante mucho tiempo, la suite de oficina más utilizada en Linux fue la suite OpenOffice.org. OpenOffice.org era una versión de código abierto de la suite StarOffice lanzada por Sun Microsystems. Unos años más tarde, Sun fue adquirida por Oracle Corporation, que a su vez transfirió el proyecto a la Fundación Apache y OpenOffice.org pasó a llamarse Apache OpenOffice. Mientras tanto, otra suite de oficina basada en el mismo código fuente fue lanzada por la Document Foundation, que la denominó LibreOffice. Los dos proyectos tienen las mismas características básicas y son compatibles con los formatos de documentos de Microsoft Office. Sin embargo, el formato de documento preferido es Open Document Format, un formato de archivo completamente abierto y estandarizado ISO. El uso de archivos ODF garantiza que los documentos se puedan transferir entre sistemas operativos y aplicaciones de diferentes proveedores, como Microsoft Office. Las principales aplicaciones que ofrece OpenOffice/LibreOffice son: Writer Editor de texto Version: 2022-01-21 | Esta obra está bajo la licencia CC BY-NC-ND 4.0. | learning.lpi.org | 21 Linux Essentials (Versión 1.6) | Tema 1: La Comunidad Linux y una carrera en el mundo del código abierto Calc Hojas de cálculo Impress Presentaciones Draw Dibujo vectorial Math Fórmulas matemáticas Base Base de datos Tanto LibreOffice como Apache OpenOffice son software de código abierto, pero LibreOffice está licenciado bajo LGPLv3 y Apache OpenOffice está licenciado bajo Apache License 2.0. La distinción de licencia implica que LibreOffice puede incorporar mejoras hechas por Apache OpenOffice, pero Apache OpenOffice no puede incorporar mejoras hechas por LibreOffice. Por esa razón y por una comunidad más activa de desarrolladores, las distribuciones más populares que adoptan LibreOffice como su suite ofimática predeterminada. Navegadores web Para la mayoría de los usuarios, el objetivo principal de una computadora es proporcionar acceso a Internet. Hoy en día, las páginas web pueden actuar como una aplicación completa, con la ventaja de ser accesibles desde cualquier lugar, sin la necesidad de instalar software adicional, lo que hace que el navegador web sea la aplicación más importante del sistema operativo, al menos para el usuario medio. TIP Una de las mejores fuentes para aprender sobre el desarrollo web es MDN Web Docs, disponible en https://developer.mozilla.org/. El sitio es mantenido por Mozilla y está lleno de tutoriales para principiantes y materiales de referencia sobre la mayoría de las tecnologías web modernas. Los principales navegadores web en el entorno Linux son Google Chrome y Mozilla Firefox. Chrome es un navegador web mantenido por Google pero se basa en el navegador de código abierto llamado Chromium, que puede instalarse utilizando el gestor de paquetes de la distribución y es totalmente compatible con Chrome. Mantenido por Mozilla, una organización sin fines de lucro, Firefox es un navegador cuyos orígenes están ligados a Netscape, el primer navegador web popular en adoptar el 22 | learning.lpi.org | Esta obra está bajo la licencia CC BY-NC-ND 4.0. | Version: 2022-01-21 Linux Essentials (Versión 1.6) | 1.2 Principales aplicaciones de código abierto modelo de código abierto, y que está profundamente involucrado con el desarrollo de los estándares abiertos que subyacen en la web moderna. Mozilla también desarrolla otras aplicaciones, como el cliente de correo electrónico Thunderbird. Muchos usuarios optan por utilizar webmail en lugar de una aplicación de correo electrónico dedicada, pero un cliente como Thunderbird ofrece funciones adicionales y se integra mejor con otras aplicaciones en el escritorio. Multimedia En comparación con las aplicaciones web disponibles, las aplicaciones de escritorio siguen siendo la mejor opción para la creación de contenido multimedia. Las actividades como la renderización de video, a menudo requieren altos niveles en los recursos del sistema que son mejor administrados por una aplicación de escritorio local. Algunas de las aplicaciones multimedia más populares para Linux y sus usos se enumeran a continuación. Blender Un renderizador 3D para crear animaciones, también se puede utilizar para exportar objetos 3D para ser impresos por una impresora 3D. GIMP Un editor de imágenes completo, que puede compararse con Adobe Photoshop, pero que tiene sus propios conceptos y herramientas para trabajar con imágenes. GIMP puede utilizarse para crear, editar y guardar la mayoría de los archivos de mapas de bits, como JPEG, PNG, GIF, TIFF y muchos otros. Inkscape Un editor de gráficos vectoriales, similar a Corel Draw o Adobe Illustrator. El formato por defecto de Inkscape es SVG, que es un estándar abierto para gráficos vectoriales, los archivos SVG pueden ser abiertos por cualquier navegador web y, debido a su naturaleza de gráfico vectorial, puede ser utilizado en diseños flexibles de páginas web. Audacity Un editor de audio que permite filtrar, aplicar efectos y convertir a diferentes formatos de audio, como MP3, WAV, OGG, FLAC, etc. ImageMagick ImageMagick es una herramienta de línea de comandos para convertir y editar la mayoría de los archivos de tipo imagen. También puede ser usado para crear documentos PDF desde un archivo de imagen y viceversa. Version: 2022-01-21 | Esta obra está bajo la licencia CC BY-NC-ND 4.0. | learning.lpi.org | 23 Linux Essentials (Versión 1.6) | Tema 1: La Comunidad Linux y una carrera en el mundo del código abierto También hay muchas aplicaciones dedicadas a la reproducción multimedia. La aplicación más popular para la reproducción de video es VLC, pero algunos usuarios prefieren otras alternativas, como smplayer. La reproducción de música local también tiene muchas opciones, como Audacious, Banshee y Amarok, que también pueden administrar una colección de archivos de sonido locales. Programas para servidores Cuando un navegador web carga una página de un sitio, en realidad se está conectando a un ordenador remoto y solicitando una información específica. En este escenario, el ordenador que ejecuta el navegador web se llama cliente y el ordenador remoto se llama servidor. El servidor, puede ser un ordenador de sobremesa ordinario o un hardware especializado, este equipo necesita un programa o servicio (Conocido también de esa forma) específico para gestionar cada tipo de información que proporcione. En lo que se refiere al servicio de páginas web, la mayoría de los servidores de todo el mundo utilizan programas de código abierto. A este programa o servicio en particular se le llama servidor HTTP (HTTP significa Protocolo de Transferencia de Texto Hyper) y los más populares son Apache, Nginx y lighttpd. Incluso las páginas web simples pueden requerir muchas solicitudes, que podrían ser archivos ordinarios como --contenido estático-- o --contenido dinámico-- generado desde varias fuentes. La función de un servidor HTTP es recopilar y enviar todos los datos solicitados al navegador, que a su vez organiza el contenido según lo definido por el documento HTML (Hyper Text Markup Language) recibido por el servidor, en conjunto a otros tipos de archivos que soporta el navegador, por lo que el renderizado de una página web implica operaciones realizadas en el lado del servidor y del cliente. Ambas partes pueden utilizar scripts personalizados para realizar tareas específicas. En el lado del servidor HTTP, es bastante común usar el lenguaje programación PHP. En el lado del cliente, JavaScript es el lenguaje de programación utilizado en el navegador web. Los programas de servidores pueden proporcionar todo tipo de información, no es raro tener un programa de servidor que solicite información proporcionada por otros servicios, como es el caso cuando un servidor HTTP requiere información proporcionada por un servidor de base de datos. Por ejemplo, cuando se solicita una página dinámica, el servidor HTTP suele consultar una base de datos para recoger toda la información necesaria y enviar el contenido dinámico de vuelta al cliente, del mismo modo que cuando un usuario se registra en un sitio web, el servidor HTTP recoge los datos enviados por el cliente y los almacena en una base de datos. Una base de datos es un conjunto organizado de información. Un servidor de base de datos almacena contenido de manera formateada, lo que permite leer, escribir y vincular grandes cantidades de datos de manera confiable y a gran velocidad. Los servidores de bases de datos de código abierto se utilizan en muchas aplicaciones, no solo en Internet. Incluso las aplicaciones locales pueden almacenar datos 24 | learning.lpi.org | Esta obra está bajo la licencia CC BY-NC-ND 4.0. | Version: 2022-01-21 Linux Essentials (Versión 1.6) | 1.2 Principales aplicaciones de código abierto conectándose a un servidor de base de datos local. El tipo más común de base de datos es la base de datos relacional, donde los datos se organizan en tablas predefinidas. Las bases de datos relacionales de código abierto más populares son MariaDB (originado en MySQL) y PostgreSQL. Datos compartidos (Data Sharing) En las redes locales, como las que se encuentran en las oficinas y los hogares, es deseable que los ordenadores no sólo puedan acceder a Internet, sino que también puedan comunicarse entre sí. En ocasiones un ordenador puede actuar como un servidor y un cliente. Por ejemplo, cuando se desea acceder a los archivos de otro ordenador de la red (Supongamos, que se necesita acceder a un archivo almacenado en un ordenador de sobremesa desde un dispositivo portátil) sin la molestia de tener que copiarlo en una unidad USB o similar. Entre máquinas Linux, NFS (Network File System) se utiliza a menudo para este tipo de funciones. El protocolo NFS es la forma estándar de compartir sistemas de archivos en redes equipadas únicamente con máquinas Unix/Linux con las que un ordenador puede compartir uno o varios de sus directorios con ordenadores específicos de la red. De este modo, NFS puede leer y escribir archivos en estos directorios. Incluso se puede usar NFS para compartir el árbol de directorios de todo un sistema operativo con clientes que lo usarán para arrancar (Bootear) desde el servidor. Estas computadoras, llamadas thin clients, se utilizan principalmente en redes grandes para evitar el mantenimiento de cada sistema operativo de cada máquina. Si existen otros tipos de sistemas operativos conectados a la red, se recomienda utilizar un protocolo de datos compartidos comprensible para todos ellos. Este requisito lo cumple Samba. Samba implementa un protocolo de datos compartidos a través de la red. Este fue originalmente diseñado para el sistema operativo Windows, pero que hoy en día es compatible con todos los principales sistemas operativos, ya que con Samba los ordenadores de la red local no sólo pueden compartir archivos, sino también impresoras. En algunas redes locales, la autorización dada al iniciar sesión en una estación de trabajo es otorgada por un servidor central, llamado controlador de dominio, conocido como domain controller, que gestiona el acceso a varios recursos locales y remotos. el controlador de dominio es un servicio proporcionado por el Active Directory de Microsoft. Las estaciones de trabajo Linux pueden asociarse con un controlador de dominio mediante el uso de Samba o un subsistema de autenticación llamado SSSD. A partir de la versión 4, Samba también puede funcionar como un controlador de dominio en redes heterogéneas. Si el objetivo es implementar una solución de computación en la nube (Cloud Computing) capaz de proporcionar varios métodos de compartir datos basados en web; deberá considerar dos alternativas: ownCloud y Nextcloud. Los dos proyectos son muy similares porque Nextcloud es un spin-off de ownCloud, lo cual no es inusual entre los proyectos de código abierto; a esto se le denomina fork. Version: 2022-01-21 | Esta obra está bajo la licencia CC BY-NC-ND 4.0. | learning.lpi.org | 25 Linux Essentials (Versión 1.6) | Tema 1: La Comunidad Linux y una carrera en el mundo del código abierto Ambos proporcionan las mismas características básicas: compartición y sincronización de archivos, espacios de trabajo colaborativos, calendario, contactos y correo, todo a través de interfaces de escritorio, móviles y web. Nextcloud también proporciona conferencias privadas de audio/vídeo, mientras que ownCloud se centra más en el intercambio de archivos y la integración con software de terceros. Muchas más características se proporcionan como plugins que pueden ser activados más tarde según sea necesario. Tanto ownCloud como Nextcloud ofrecen una versión paga con características adicionales y soporte extendido. Lo que los hace diferentes de otras soluciones comerciales es la capacidad de instalar Nextcloud o ownCloud en un servidor privado, de forma gratuita, evitando mantener datos confidenciales en un servidor desconocido. Como todos los servicios dependen de la comunicación HTTP y están escritos en PHP, la instalación debe realizarse en un servidor web configurado previamente, como Apache. Si considera instalar ownCloud o Nextcloud en su propio servidor, asegúrese de habilitar también HTTPS para cifrar todas las conexiones a su nube. Administración de la red La comunicación entre computadoras solo es posible si la red funciona correctamente. Normalmente, la configuración de la red se realiza mediante un conjunto de programas que se ejecutan en el router, encargados de configurar y comprobar la disponibilidad de la red. Para esto se utilizan dos servicios de red básicos: DHCP (Dynamic Host Configuration Protocol) y DNS (Domain Name System). DHCP es responsable de asignar una dirección IP al host cuando se conecta un cable de red o cuando el dispositivo entra en una red inalámbrica. Al conectarse a Internet, el servidor DHCP del proveedor de servicios de Internet proporcionará una dirección IP al dispositivo solicitante. Un servidor DHCP es muy útil en las redes de área local para proporcionar automáticamente direcciones IP a todos los dispositivos conectados. Si DHCP no está configurado o si no funciona correctamente, sería necesario configurar manualmente la dirección IP de cada dispositivo conectado a la red, lo cual no es práctico entornos de redes grandes e inclusive pequeñas. La dirección IP es necesaria para comunicarse con otro dispositivo en una red, pero es mucho más probable que las personas recuerden los nombres de dominio como www.lpi.org que un número IP como 203.0.113.113.165. Sin embargo, el nombre de dominio por sí solo no es suficiente para establecer la comunicación a través de la red, por lo que necesita ser traducido a una dirección IP por un servidor DNS. La dirección IP del servidor DNS es suministrada por el servidor DHCP del proveedor de servicios de Internet (ISP) y es utilizada por todos los sistemas conectados para traducir los nombres de dominio a direcciones IP. Las configuraciones de DHCP y DNS se pueden modificar ingresando a la interfaz web provista por el enrutador. Por ejemplo, es posible restringir la asignación de IP sólo a dispositivos conocidos o asociar una dirección IP fija a máquinas específicas. También es posible cambiar el servidor DNS 26 | learning.lpi.org | Esta obra está bajo la licencia CC BY-NC-ND 4.0. | Version: 2022-01-21 Linux Essentials (Versión 1.6) | 1.2 Principales aplicaciones de código abierto proporcionado por el ISP por algunos servidores DNS de terceros, como los de Google o OpenDNS, en ocasiones pueden proporcionar respuestas más rápidas y funciones adicionales. Lenguajes de programación Todos los programas de los ordenadores (programas cliente y servidor, aplicaciones de escritorio y el propio sistema operativo) se realizan utilizando uno o más lenguajes de programación, ya sea un único archivo o un complejo sistema de cientos de archivos que el sistema operativo trata como una secuencia de instrucciones que deben ser interpretadas y ejecutadas por el procesador y otros dispositivos. Existen numerosos lenguajes de programación para propósitos muy diferentes y los sistemas Linux proporcionan muchos de ellos. Como el software de código abierto también incluye las fuentes de los programas, los sistemas Linux ofrecen a los desarrolladores condiciones perfectas para entender, modificar o crear software de acuerdo con sus propias necesidades. Cada programa comienza como un archivo de texto, llamado source code. Este código fuente está escrito en un lenguaje más o menos amigable con el ser humano que describe lo que está haciendo el programa. Un procesador no puede ejecutar directamente este código, por lo que en lenguajes de compilación el código fuente se convierte en un archivo binario (binary file) que puede ser ejecutado por el ordenador, mientras que un programa llamado compilador (compiler) se encarga de realizar la conversión del código fuente a una forma ejecutable. Dado que el binario compilado es específico para un tipo de procesador, es posible que el programa deba volver a compilarse para ejecutarse en otro tipo de computadora. En lenguajes interpretados (interpreted languages), el programa no necesita ser compilado previamente, sino que un intérprete lee el código fuente y ejecuta su instrucción cada vez que se ejecuta el programa, lo que hace que el desarrollo sea más fácil y rápido, pero al mismo tiempo los programas interpretados tienden a ser más lentos que los compilados. Aquí algunos de los lenguajes de programación más populares: JavaScript JavaScript es un lenguaje de programación muy utilizado en páginas web, en sus orígenes, las aplicaciones JavaScript eran muy sencillas, como las rutinas de validación de formularios. Hoy en día, JavaScript es considerado un lenguaje de primera clase y se utiliza para crear aplicaciones muy complejas no sólo en la web, sino también en servidores y dispositivos móviles. C El lenguaje de programación C está estrechamente relacionado con los sistemas operativos, en particular con Unix, pero se utiliza para escribir cualquier tipo de programa en casi cualquier tipo Version: 2022-01-21 | Esta obra está bajo la licencia CC BY-NC-ND 4.0. | learning.lpi.org | 27 Linux Essentials (Versión 1.6) | Tema 1: La Comunidad Linux y una carrera en el mundo del código abierto de dispositivo. Las grandes ventajas de C son la flexibilidad y la velocidad; el mismo código fuente escrito en C puede ser compilado para ejecutarse en diferentes plataformas y sistemas operativos con poca o ninguna modificación, sin embargo, después de ser compilado, el programa se ejecutará sólo en el sistema donde se compiló. Java El aspecto principal de Java es que los programas escritos en este lenguaje son portátiles, lo que significa que el mismo programa puede ejecutarse en diferentes sistemas operativos. A pesar de su nombre, Java no está relacionado con JavaScript. Perl Perl es un lenguaje de programación muy utilizado para procesar contenido de texto con un fuerte énfasis en las expresiones regulares, lo que hace de Perl un lenguaje adecuado para el filtrado y análisis de texto. Shell El shell, en particular el Bash shell, no es sólo un lenguaje de programación, sino una interfaz interactiva para ejecutar otros programas. Los programas de Shell, conocidos como shell scripts pueden automatizar tareas complejas o repetitivas en el entorno de línea de comandos. Python Python es un lenguaje de programación muy popular entre estudiantes y profesionales que no están directamente relacionados con la informática. Aunque tiene características avanzadas, Python es una buena manera de empezar a aprender programación por su enfoque fácil de usar. PHP PHP es el lenguaje de programación más utilizado en el lado del servidor para generar contenido para la web, la mayoría de las páginas HTML en línea no son archivos estáticos, sino contenido dinámico generado por el servidor desde varias fuentes, como bases de datos. Los programas PHP — a veces sólo llamados páginas PHP o scripts PHP — se utilizan a menudo para generar este tipo de contenido. El término LAMP proviene de la combinación de un sistema operativo Linux, un servidor Apache HTTP, una base de datos MySQL (o MariaDB) y la programación PHP. Los servidores LAMP son una solución muy popular para la ejecución de servidores web. C y Java son lenguajes compilados, para ser ejecutados por el sistema, el código fuente escrito en C se convierte en código binario de la máquina, mientras que el código fuente Java se convierte en bytecode ejecutado en un entorno de software especial llamado Java Virtual Machine. JavaScript, Perl, Shell script, Python y PHP son lenguajes interpretados, también llamados lenguajes de script. 28 | learning.lpi.org | Esta obra está bajo la licencia CC BY-NC-ND 4.0. | Version: 2022-01-21 Linux Essentials (Versión 1.6) | 1.2 Principales aplicaciones de código abierto Ejercicios guiados 1. Para cada uno de los siguientes comandos, identifique si está asociado con el sistema de empaquetado Debian (Debian packaging system) o con el sistema de empaquetado Red Hat (Red Hat packaging system) : dpkg rpm apt-get yum dnf 2. ¿Qué comando se puede usar para instalar Blender en Ubuntu? Después de la instalación, ¿Cómo se puede ejecutar el programa? 3. ¿Qué aplicación del paquete LibreOffice se puede utilizar para trabajar con hojas de cálculo? 4. ¿Qué navegador web de código abierto se utiliza como base para el desarrollo de Google Chrome? 5. SVG es un estándar abierto para gráficos vectoriales. ¿Cuál es la aplicación más popular para editar archivos SVG en sistemas Linux? 6. Para cada uno de los siguientes formatos de archivo, escriba el nombre de una aplicación capaz de abrir y editar el archivo correspondiente: png doc xls ppt wav 7. ¿Qué paquete de software permite compartir archivos entre máquinas Linux y Windows a través de la red local? Version: 2022-01-21 | Esta obra está bajo la licencia CC BY-NC-ND 4.0. | learning.lpi.org | 29 Linux Essentials (Versión 1.6) | Tema 1: La Comunidad Linux y una carrera en el mundo del código abierto 30 | learning.lpi.org | Esta obra está bajo la licencia CC BY-NC-ND 4.0. | Version: 2022-01-21 Linux Essentials (Versión 1.6) | 1.2 Principales aplicaciones de código abierto Ejercicios exploratorios 1. Usted sabe que los archivos de configuración se mantienen incluso si el paquete asociado se elimina del sistema. ¿Cómo puede eliminar automáticamente el paquete llamado cups y sus archivos de configuración de un sistema basado en DEB? 2. Suponga que tiene muchos archivos de imagen TIFF y desea convertirlos a JPEG. ¿Qué paquete de software podría utilizarse para convertir esos archivos directamente en la línea de comandos? 3. ¿Qué paquete de software necesita instalar para poder abrir documentos de Microsoft Word enviados por un usuario de Windows? 4. Cada año, linuxquestions.org promueve una encuesta sobre las aplicaciones Linux más populares. Visite https://www.linuxquestions.org/questions/2018-linuxquestions-org-memberschoice-awards-128/ y descubra qué aplicaciones de escritorio son las más populares entre los usuarios experimentados de Linux. Version: 2022-01-21 | Esta obra está bajo la licencia CC BY-NC-ND 4.0. | learning.lpi.org | 31 Linux Essentials (Versión 1.6) | Tema 1: La Comunidad Linux y una carrera en el mundo del código abierto Resumen En esta lección usted aprendió: Los sistemas de gestión de paquetes utilizados en las principales distribuciones de Linux. Aplicaciones de código abierto que pueden editar formatos de archivo populares. Los programas de servidor subyacentes a muchos servicios importantes de Internet y de redes locales. Lenguajes de programación comunes y sus usos. 32 | learning.lpi.org | Esta obra está bajo la licencia CC BY-NC-ND 4.0. | Version: 2022-01-21 Linux Essentials (Versión 1.6) | 1.2 Principales aplicaciones de código abierto Respuestas a los ejercicios guiados 1. Para cada uno de los siguientes comandos, identifique si está asociado con el sistema de empaquetado Debian (Debian packaging system) o con el sistema de empaquetado Red Hat (Red Hat packaging system) : dpkg Debian sistema de empaquetado rpm Red Hat sistema de empaquetado apt-get Debian sistema de empaquetado yum Red Hat sistema de empaquetado dnf Red Hat sistema de empaquetado 2. ¿Qué comando se puede usar para instalar Blender en Ubuntu? Después de la instalación, ¿cómo se puede ejecutar el programa? El comando apt-get install blender. El nombre del paquete debe especificarse en minúscula. El programa se puede ejecutar directamente desde el terminal con el comando blender o seleccionándolo en el menú de aplicaciones. 3. ¿Qué aplicación del paquete LibreOffice se puede utilizar para trabajar con hojas de cálculo electrónicas? Calc 4. ¿Qué navegador web de código abierto se utiliza como base para el desarrollo de Google Chrome? Chromium 5. SVG es un estándar abierto para gráficos vectoriales. ¿Cuál es la aplicación más popular para editar archivos SVG en sistemas Linux? Inkscape 6. Para cada uno de los siguientes formatos de archivo, escriba el nombre de una aplicación capaz de abrir y editar el archivo correspondiente: png Gimp doc LibreOffice Writer Version: 2022-01-21 | Esta obra está bajo la licencia CC BY-NC-ND 4.0. | learning.lpi.org | 33 Linux Essentials (Versión 1.6) | Tema 1: La Comunidad Linux y una carrera en el mundo del código abierto xls LibreOffice Calc ppt LibreOffice Impress wav Audacity 7. ¿Qué paquete de software permite compartir archivos entre máquinas Linux y Windows a través de la red local? Samba 34 | learning.lpi.org | Esta obra está bajo la licencia CC BY-NC-ND 4.0. | Version: 2022-01-21 Linux Essentials (Versión 1.6) | Tema 2: Encontrando el camino en un sistema Linux 2.2 Uso de la línea de comandos para obtener ayuda Referencia al objetivo del LPI Linux Essentials version 1.6, Exam 010, Objective 2.2 Importancia 2 Áreas de conocimiento clave Páginas de man Páginas de info Lista parcial de archivos, términos y utilidades 98 | man info /usr/share/doc/ locate learning.lpi.org | Esta obra está bajo la licencia CC BY-NC-ND 4.0. | Version: 2022-01-21 Linux Essentials (Versión 1.6) | 2.2 Uso de la línea de comandos para obtener ayuda 2.2 Lección 1 Certificación: Linux Essentials Versión: 1.6 Tema: 2 Encontrando tu camino en el sistema Linux Objectivo: 2.2 Usando la línea de comandos para obtener ayuda Lección: 1 de 1 Introducción La línea de comandos es una herramienta muy compleja. Cada comando tiene sus propias opciones únicas, por lo tanto, la documentación es clave cuando se trabaja con un sistema Linux. Además del directorio /usr/share/doc/ que almacena la mayor parte de la documentación, existen otras herramientas también proporcionan información sobre el uso de comandos. Este capítulo se centra en los métodos para acceder a esa documentación, con el fin de obtener ayuda. Hay una multitud de métodos para obtener ayuda dentro de la línea de comandos. man, help e info son solo algunos de ellos. Para Linux Essentials, nos centraremos en man e info, ya que son las herramientas más utilizadas para obtener ayuda. Otro tema de este capítulo será localizar archivos. Trabajaremos principalmente con el comando locate. Obteniendo ayuda por línea de comandos Version: 2022-01-21 | Esta obra está bajo la licencia CC BY-NC-ND 4.0. | learning.lpi.org | 99 Linux Essentials (Versión 1.6) | Tema 2: Encontrando el camino en un sistema Linux Ayuda incorporada Cuando se comienza con el parámetro --help, la mayoría de los comandos muestran algunas instrucciones breves sobre su uso. Aunque no todos los comandos proporcionan está opción, es un buen primer intento para aprender más sobre sus parámetros. Tenga en cuenta que las instrucciones de --help a menudo son muy breves en comparación con las otras fuentes de documentación que discutiremos en el resto de esta lección. Páginas Man La mayoría de los comandos proporcionan una página de manual o una página "man". Esta documentación generalmente se instala con el software y se puede acceder con el comando man. Cuando deseé ver la página del manual de un comando, debe agregar el comando man como argumento: $ man mkdir Este comando abre la página del manual para mkdir. Puede usar las teclas de flecha arriba y abajo o la barra espaciadora para navegar por la página del manual. Para salir de la página del manual, presione Q. Cada página de son opcionales: man está dividida en un máximo de 11 secciones, aunque muchas de estas secciones Sección Descripción NAME Nombre del comando y breve descripción SYNOPSIS Descripción de la sintaxis del comando DESCRIPTION Descripción de los efectos del comando OPTIONS Opciones disponibles ARGUMENTS Argumentos disponibles FILES Archivos auxiliares EXAMPLES Una muestra de la línea de comando SEE ALSO Referencias cruzadas a los temas relacionados DIAGNOSTICS Mensajes de advertencia y error COPYRIGHT Autor (es) del comando BUGS Cualquier limitación conocida del comando 100 | learning.lpi.org | Esta obra está bajo la licencia CC BY-NC-ND 4.0. | Version: 2022-01-21 Linux Essentials (Versión 1.6) | 2.2 Uso de la línea de comandos para obtener ayuda En la práctica, la mayoría de las páginas man no contienen todas estas partes. Las páginas man están organizadas en ocho categorías, numeradas del 1 al 8: Categoría Descripción 1 Comando del usuario 2 Llamadas del sistema 3 Funciones de la biblioteca C 4 Controladores y archivos de dispositivo 5 Archivos de configuración y formatos de archivo 6 Juegos 7 Miscellaneous 8 Comandos del administrador del sistema 9 Funciones del núcleo (no estándar) Cada página de manual pertenece exactamente a una categoría. Sin embargo, varias categorías pueden contener páginas de manual con el mismo nombre. Tomemos como ejemplo el comando passwd. Este comando puede ser usado para cambiar la contraseña de un usuario. Como passwd es un comando de usuario, su página man reside en la categoría 1. Además del comando passwd, el archivo de base de datos de contraseñas /etc/passwd también tiene una página man que se llama passwd. Como este archivo es un archivo de configuración, pertenece a la categoría 5. Cuando se hace referencia a una página de manual, a menudo se añade la categoría al nombre de la página de manual, como en passwd(1) o passwd(5) para identificar la página de manual respectiva. Por defecto, man passwd muestra la primera página man disponible, en este caso passwd(1). La categoría de la página man deseada se puede especificar en un comando como man 1 passwd o man 5 passwd. Ya hemos visto cómo navegar a través de una página man y cómo volver a la línea de comando. Internamente, man usa el comando less para mostrar el contenido de la página. less le permite buscar texto dentro de una página man. Para encontrar la palabra linux puede usar /linux para buscar hacia adelante desde el punto en el que se encuentra en la página o ?Linux para iniciar una búsqueda hacia atrás. Esta acción resalta todos los resultados coincidentes y mueve la página a la primera coincidencia resaltada. En ambos casos, puede escribir N para saltar a la siguiente coincidencia. Para encontrar más información sobre estas características adicionales, presione H y se mostrará un menú con toda la información. Version: 2022-01-21 | Esta obra está bajo la licencia CC BY-NC-ND 4.0. | learning.lpi.org | 101 Linux Essentials (Versión 1.6) | Tema 2: Encontrando el camino en un sistema Linux Páginas de información (Info Pages) Otra herramienta que le ayudará mientras trabaja con el sistema Linux son las páginas de información(info pages). Las páginas info suelen ser más detalladas que las páginas de manual y están formateadas en hipertexto, similar a las páginas web en Internet. Las páginas info se pueden mostrar así: $ info mkdir Para cada página de información, info lee un archivo que está estructurado en nodos individuales dentro de un árbol. Cada nodo contiene un tema simple y el comando info contiene hipervínculos que pueden ayudarlo a moverse de uno a otro. Puede acceder al enlace presionando "enter" mientras coloca el cursor en uno de los asteriscos principales. Similar a man, la herramienta info también tiene comandos de navegación de página. Puede obtener más información sobre estos comandos presionando ? mientras se encuentra en la página de info. Estas herramientas lo ayudarán a navegar por la página más fácilmente, así como a comprender cómo acceder a los nodos y moverse dentro del árbol. El directorio /usr/share/doc/ Como se mencionó anteriormente, el directorio /usr/share/doc/ almacena la mayoría de la documentación de cada comando que utilice el sistema. Este directorio contiene una carpeta para la mayoría de los paquetes instalados; el nombre del directorio suele ser el nombre del paquete y en ocasiones incluye su versión. Estos directorios incluyen un archivo README o readme.txt que contiene la documentación básica del paquete, junto con el archivo README. La carpeta también puede contener otros archivos de documentación, como el registro de cambios que incluye el historial del programa en detalle o ejemplos de archivos de configuración para el paquete específico. La información dentro del archivo README varía de un paquete a otro. Todos los archivos están escritos en texto plano, por lo tanto, se pueden leer con cualquier editor de texto preferido. El número exacto y los tipos de archivos dependen del paquete. Consulte algunos de los directorios para obtener una descripción general de sus contenidos. Localizando archivos El comando locate Un sistema Linux está construido a partir de numerosos directorios y archivos. Linux tiene muchas herramientas para ubicar un archivo en particular dentro de un sistema. El más rápido es el comando 102 | learning.lpi.org | Esta obra está bajo la licencia CC BY-NC-ND 4.0. | Version: 2022-01-21 Linux Essentials (Versión 1.6) | 2.2 Uso de la línea de comandos para obtener ayuda locate. busca dentro de una base de datos y luego genera cada nombre que coincida con la cadena brindada: locate $ locate note /lib/udev/keymaps/zepto-znote /usr/bin/zipnote /usr/share/doc/initramfs-tools/maintainer-notes.html /usr/share/man/man1/zipnote.1.gz El comando locate también admite el uso de comodines y expresiones regulares, por lo tanto, la cadena de búsqueda no tiene que coincidir con el nombre completo del archivo deseado. Aprenderá más sobre las expresiones regulares en un capítulo posterior. Por defecto, locate se comporta como si el patrón estuviera rodeado de asteriscos, por lo que locate PATTERN es lo mismo que locate *PATTERN*. Esto le permite simplemente proporcionar subcadenas en lugar del nombre del archivo exacto. Puede modificar este comportamiento con las diferentes opciones que puede encontrar explicadas en la página del comando man locate. Debido a que locate está leyendo desde una base de datos, es posible que no encuentre un archivo que haya creado recientemente. La base de datos es administrada por un programa llamado updatedb. Por lo general, se ejecuta periódicamente, pero si tiene privilegios de root y necesita que la base de datos se actualice de inmediato, puede ejecutar el comando updatedb en cualquier momento. El comando find es otra herramienta muy popular que se utiliza para buscar archivos. Este comando tiene un enfoque diferente, en comparación con el comando locate. El comando find busca un árbol de directorios de forma recursiva, incluidos sus subdirectorios. find realiza dicha búsqueda en cada invocación y no mantiene una base de datos como locate. Al igual que locate, find también admite comodines y expresiones regulares. find requiere al menos la ruta que debe buscar. Además, se pueden agregar las llamadas expresiones para proporcionar criterios de filtro para indicar que archivos mostrar. Un ejemplo es la expresión -name que busca archivos con un nombre específico: find Version: 2022-01-21 | Esta obra está bajo la licencia CC BY-NC-ND 4.0. | learning.lpi.org | 103 Linux Essentials (Versión 1.6) | Tema 2: Encontrando el camino en un sistema Linux ~$ cd Downloads ~/Downloads $ find. -name thesis.pdf./thesis.pdf ~/Downloads $ find ~ -name thesis.pdf /home/carol/Downloads/thesis.pdf El primer comando find busca el archivo dentro del directorio actual de segundo busca el archivo en el directorio de inicio del usuario. Downloads, mientras que el El comando find es muy complejo, por lo tanto no será cubierto en el examen de Linux Essentials. Sin embargo, es una herramienta poderosa que es particularmente útil en la práctica. 104 | learning.lpi.org | Esta obra está bajo la licencia CC BY-NC-ND 4.0. | Version: 2022-01-21 Linux Essentials (Versión 1.6) | 2.2 Uso de la línea de comandos para obtener ayuda Ejercicios guiados 1. Use el comando man para averiguar qué hace cada comando Comando Descripción ls Mostrar el contenido de un directorio. cat cut cd cp mv mkdir touch wc passwd rm rmdir more less whereis head tail sort tr chmod grep 2. Abra la página de información ls e identifique el MENU. ◦ ¿Qué opciones tienes? ◦ Encuentre la opción que le permite ordenar la salida por tiempo de modificación. 3. Muestre la ruta de los primeros 3 archivos README. Use el comando man para identificar la opción Version: 2022-01-21 | Esta obra está bajo la licencia CC BY-NC-ND 4.0. | learning.lpi.org | 105 Linux Essentials (Versión 1.6) | Tema 2: Encontrando el camino en un sistema Linux correcta para locate. 4. Cree un archivo llamado comando locate. test en su directorio de inicio. Encuentre su ruta absoluta con el 5. ¿Lo encontraste de inmediato? ¿Qué tuvo que hacer para que locate lo encontrara? 6. Busque el archivo de prueba que creó anteriormente, utilizando el comando uso y cuál es la ruta absoluta? 106 | learning.lpi.org | Esta obra está bajo la licencia CC BY-NC-ND 4.0. | find. ¿Qué sintaxis Version: 2022-01-21 Linux Essentials (Versión 1.6) | 2.2 Uso de la línea de comandos para obtener ayuda Ejercicios exploratorios 1. Hay un comando en la tabla anterior que no tiene una página man. ¿Cuál es y por qué cree que el comando no tiene una página de manual? 2. Usando los comandos de la tabla anterior, cree el siguiente árbol de archivos. Los nombres que comienzan con mayúscula son directorios y los que están en minúsculas son archivos. User ├── Documents | ├──Hello | | ├──hey2 | | ├──helloa | | └──ola5 | └──World | └──earth9 ├── Downloads | ├──Music | └──Songs | ├──collection1 | └──collection2 ├── Test | └── passa └── test 3. Muestre en la pantalla el directorio de trabajo actual, incluidas las subcarpetas. 4. Busque dentro del árbol todos los archivos que terminen con un número. 5. Elimine todo el árbol de directorios con un solo comando. Version: 2022-01-21 | Esta obra está bajo la licencia CC BY-NC-ND 4.0. | learning.lpi.org | 107 Linux Essentials (Versión 1.6) | Tema 2: Encontrando el camino en un sistema Linux Resumen En esta lección usted aprendió: ¿Cómo obtener ayuda? Usar el comando man Navegar por la página man Diferentes secciones de la página man Usar el comando info Navegar entre diferentes nodos Buscar archivos dentro del sistema Comandos utilizados en los ejercicios: man Muestra una página de manual. info Muestra una página de información. locate Busca en la base de datos locate archivos con un nombre específico. find Busca en el sistema de archivos nombres que coincidan con un conjunto de criterios seleccionados. updatedb Actualiza la base de datos locate, 108 | learning.lpi.org | Esta obra está bajo la licencia CC BY-NC-ND 4.0. | Version: 2022-01-21 Linux Essentials (Versión 1.6) | 2.2 Uso de la línea de comandos para obtener ayuda Respuestas a los ejercicios guiados 1. Use el comando man para averiguar qué hace cada comando Comando Descripción ls Muestra el contenido de un directorio. cat Concatena o ve archivos de texto. cut Elimina secciones de un archivo de texto. cd Cambia a un directorio diferente. cp Copia un archivo. mv Mueve un archivo (también se puede usar para cambiar el nombre). mkdir Crea un nuevo directorio. touch Crea un archivo o modifica la fecha y hora de la última modificación de un archivo existente. wc Cuenta el número de palabras, líneas o bytes de un archivo. passwd Cambia la contraseña de un usuario. rm Elimina un archivo. rmdir Elimina un directorio. more Visualiza archivos de texto una pantalla a la vez. less Visualiza archivos de texto, permite desplazarse hacia arriba y hacia abajo una línea o página a la vez. whereis Muestra la ruta del archivo de un programa específico y de manuales relacionados. head Muestra las primeras líneas de un archivo. tail Muestra las últimas líneas de un archivo. sort Ordena un archivo de manera numérica o alfabéticamente. tr Traduce o elimina caracteres de un archivo. chmod Cambia los permisos de un archivo. Version: 2022-01-21 | Esta obra está bajo la licencia CC BY-NC-ND 4.0. | learning.lpi.org | 109 Linux Essentials (Versión 1.6) | Tema 2: Encontrando el camino en un sistema Linux Comando Descripción grep Búsquedas dentro de un archivo. 2. Abra la página de información ls e identifique el MENU. ◦ ¿Qué opciones tienes? ▪ ¿Qué archivos están listados? ▪ ¿Qué información está listada? ▪ Ordenar la salida ▪ Detalles sobre el ordenamiento de versiones ▪ Formato de salida general ▪ Formateando marcas de tiempo de archivo ▪ Formateando los nombres de archivo ◦ Encuentre la opción que le permite ordenar la salida por tiempo de modificación. -t or --sort=time 3. Muestre la ruta a los primeros 3 archivos correcta para locate. README. Use el comando man para identificar la opción $ locate -l 3 README /etc/alternatives/README /etc/init.d/README /etc/rc0.d/README 4. Cree un archivo llamado comando locate. test en su directorio de inicio. Encuentre su ruta absoluta con el $ touch test $ locate test /home/user/test 5. ¿Lo encontraste de inmediato? ¿Qué tuvo que hacer para que 'locate' lo encontrara? $ sudo updatedb 110 | learning.lpi.org | Esta obra está bajo la licencia CC BY-NC-ND 4.0. | Version: 2022-01-21 Linux Essentials (Versión 1.6) | 2.2 Uso de la línea de comandos para obtener ayuda The file is newly created, therefore there is no record of it in the database. 6. Busque el archivo de prueba que creó anteriormente, utilizando el comando uso y cuál es la ruta absoluta? find. ¿Qué sintaxis $ find ~ -name test o $ find. -name test /home/user/test Version: 2022-01-21 | Esta obra está bajo la licencia CC BY-NC-ND 4.0. | learning.lpi.org | 111 Linux Essentials (Versión 1.6) | Tema 2: Encontrando el camino en un sistema Linux Respuestas a los ejercicios exploratorios 1. Hay un comando en la tabla anterior que no tiene una página man. ¿Cuál es y por qué cree que el comando no tiene una página de manual? El comando cd. No tiene una página de manual porque es un comando interno de shell. 2. Usando los comandos de la tabla anterior, cree el siguiente árbol de archivos. Los nombres que comienzan con mayúscula son directorios y los que están en minúsculas son archivos. User ├── Documents | ├──Hello | | ├──hey2 | | ├──helloa | | └──ola5 | └──World | └──earth9 ├── Downloads | ├──Music | └──Songs | ├──collection1 | └──collection2 ├── Test | └── passa └── test La solución es una combinación de comandos mkdir y touch. 3. Muestre en la pantalla el directorio de trabajo actual, incluidas las subcarpetas. $ ls -R 4. Search within the tree for all files that end with a number. $ find ~ -name "*[0-9]" $ locate "*[0-9]" 5. Elimine todo el árbol de directorios con un solo comando. 112 | learning.lpi.org | Esta obra está bajo la licencia CC BY-NC-ND 4.0. | Version: 2022-01-21 Linux Essentials (Versión 1.6) | 2.2 Uso de la línea de comandos para obtener ayuda $ rm -r Documents Downloads Test test Version: 2022-01-21 | Esta obra está bajo la licencia CC BY-NC-ND 4.0. | learning.lpi.org | 113 Linux Essentials (Versión 1.6) | Tema 2: Encontrando el camino en un sistema Linux 2.3 Uso de directorios y listado de archivos Referencia al objetivo del LPI Linux Essentials version 1.6, Exam 010, Objective 2.3 Importancia 2 Áreas de conocimiento clave Archivos y directorios Archivos ocultos y directorios Directorios home Rutas absolutas y relativas Lista parcial de archivos, términos y utilidades Opciones comunes para el comando ls Listados recursivos 114 cd. home | y.. y~ learning.lpi.org | Esta obra está bajo la licencia CC BY-NC-ND 4.0. | Version: 2022-01-21 Linux Essentials (Versión 1.6) | 2.3 Uso de directorios y listado de archivos 2.3 Lección 1 Introducción Certificación: Linux Essentials Versión: 1.6 Tema: 2 Encontrando tu camino en el sistema Linux Objectivo: 2.3 Usando directorios y listando archivos Lección: 1 de 2 Archivos y Directorios El sistema de archivos Linux es similar a otros sistemas de archivos de otros sistemas operativos, ya que contiene ficheros y directorios. Los ficheros almacenan datos como texto (legible por el ser humano), programas ejecutables o datos binarios que son interpretados por el computador. Mientras que los directorios se utilizan para crear una organización dentro del sistema de archivos. Los directorios pueden contener archivos y otros directorios. $ tree Documents ├── Mission-Statement.txt └── Reports └── report2018.txt 1 directory, 2 files Version: 2022-01-21 | Esta obra está bajo la licencia CC BY-NC-ND 4.0. | learning.lpi.org | 115 Linux Essentials (Versión 1.6) | Tema 2: Encontrando el camino en un sistema Linux En este ejemplo, Documents es un directorio que contiene un archivo (Mission-Statement.txt) y un subdirectorio (Reports) El directorio Reports a su vez contiene un archivo llamado report2018.txt. El directorio Documents se dice que es el padre del directorio Reports. TIP Si el comando tree no está disponible en su sistema, instálelo usando el gestor de paquetes de su distribución Linux. Consulte la lección sobre gestión de paquetes para aprender a como realizarlo. Nombres de archivos y directorios Los nombres de archivos y directorios en Linux pueden contener letras minúsculas y mayúsculas, números, espacios y caracteres especiales; sin embargo, dado que muchos caracteres especiales tienen un significado diferente en el intérprete de comandos de Linux, es una buena práctica no utilizar espacios o caracteres especiales cuando se nombran archivos o directorios. Un ejemplo de esto son los espacios, ya que necesitan que el carácter escape (escape character) \ sea introducido correctamente: $ cd Mission\ Statements También observemos el nombre del archivo report2018.txt. Los nombres de archivos pueden contener un sufijo que se encuentra después del punto (.). A diferencia de Windows, este sufijo no tiene un significado especial en Linux; solo está ahí para la comprensión humana. En nuestro ejemplo, el.txt nos indica que se trata de un archivo de texto plano, aunque técnicamente podría contener cualquier tipo de dato. Navegando en el Sistema de Archivos Obteniendo la ubicación actual Dado que los shells de Linux como Bash están basados en texto, es importante recordar la ubicación actual cuando se navega por el sistema de archivos, el command prompt puede proporcionar esta información: user@hostname ~/Documents/Reports $ Tenga en cuenta que información como usuario y nombre de host se cubrirá en futuras secciones. Desde el prompt, ahora sabemos que nuestra ubicación actual se encuentra en el directorio Reports. De forma similar, el comando pwd imprimirá el directorio de trabajo (working directory): 116 | learning.lpi.org | Esta obra está bajo la licencia CC BY-NC-ND 4.0. | Version: 2022-01-21 Linux Essentials (Versión 1.6) | 2.3 Uso de directorios y listado de archivos user@hostname ~/Documents/Reports $ pwd /home/user/Documents/Reports La relación de directorios se representa con una barra oblicua (/). Sabemos que Reports es un subdirectorio de Documents y este es un subdirectorio de user, que se encuentra en un directorio llamado home. El directorio home no parece tener un directorio padre, pero esto no es cierto en lo absoluto; el padre de home se llama root, y está representado por la primera barra oblicua (/) que discutiremos en una sección posterior. Note que la salida del comando pwd difiere ligeramente de la ruta dada por el command prompt. En lugar de /home/user contiene una tilde (~). La tilde es un carácter especial que representa el directorio home del usuario. Esto será cubierto con más detalle en la siguiente lección. Listando el contenido de los directorios El contenido del directorio actual se lista con el comando ls: user@hostname ~/Documents/Reports $ ls report2018.txt Tenga en cuenta que ls no proporciona información sobre el directorio padre. Por defecto ls no muestra ninguna información sobre el contenido de los subdirectorios. El comando ls sólo puede “ver” lo que hay en el directorio actual. Cambiando al directorio actual La navegación en Linux se hace principalmente con el comando cd. Esto cambia el directorio. Usando el comando pwd de antes, sabemos que nuestro directorio actual es /home/user/Documents/Reports. Podemos cambiar nuestro directorio actual introduciendo una nueva ruta: user@hostname ~ $ cd /home/user/Documents user@hostname ~/Documents $ pwd /home/user/Documents user@hostname ~/Documents $ ls Mission-Statement.txt Reports Desde nuestra nueva ubicación, podemos “ver” Mission-Statement.txt y nuestro subdirectorio Reports, pero no el contenido de nuestro subdirectorio: Version: 2022-01-21 | Esta obra está bajo la licencia CC BY-NC-ND 4.0. | learning.lpi.org | 117 Linux Essentials (Versión 1.6) | Tema 2: Encontrando el camino en un sistema Linux user@hostname ~/Documents $ cd Reports user@hostname ~/Documents/Reports $ pwd /home/user/Documents/Reports user@hostname ~/Documents/Reports $ ls report2018.txt Ahora estamos de vuelta donde empezamos. Rutas Absolutas y Relativas El comando pwd siempre imprime una ruta absoluta. Esto significa que la ruta contiene cada paso de la ruta, desde la parte superior del sistema de ficheros (/) hasta la parte inferior (Reports). Las rutas absolutas siempre comienzan con un /. / └── home └── user └── Documents └── Reports La ruta absoluta contiene toda la información necesaria para llegar a del sistema de ficheros, el inconveniente es que es tedioso de escribir. Reports desde cualquier parte El segundo ejemplo (cd Reports) era mucho más fácil de escribir, este es un ejemplo de una ruta relativa. Las rutas relativas son más cortas, pero sólo tienen significado en relación a tu ubicación actual. Considera esta analogía: te estoy visitando en tu casa y me dices que tu amigo vive en la casa de al lado, entenderé esa ubicación porque es relativa a mi ubicación actual, pero si me dices esto por teléfono, no podré encontrar la casa de tu amigo, necesitarás darme la dirección completa de la calle. Rutas Relativas Especiales Para revelar las primeras rutas especiales, entramos en el comando ls con la bandera -a. Esta bandera modifica el comando ls para que se listen todos los archivos y directorios all, incluyendo los archivos y directorios ocultos: user@hostname ~/Documents/Reports $ ls -a... report2018.txt 118 | learning.lpi.org | Esta obra está bajo la licencia CC BY-NC-ND 4.0. | Version: 2022-01-21 Linux Essentials (Versión 1.6) | 2.3 Uso de directorios y listado de archivos NOTE Puedes consultar la página de man para ls entender lo que -a está haciendo aquí. Este comando ha revelado dos resultados adicionales: Estas son rutas especiales, no representan nuevos archivos o directorios, sino que representan directorios que usted ya conoce:. Indica la ubicación actual (en este caso, Reports)... Indica el directorio padre (en este caso, Documents). Por lo general, no es necesario usar una ruta relativa especial para la ubicación actual. Es más fácil y comprensible escribir report2018.txt que./report2018.txt, pero el. tiene usos que aprenderá en futuras secciones. Por ahora, nos centraremos en la ruta relativa para el directorio padre: user@hostname ~/Documents/Reports $ cd.. user@hostname ~/Documents $ pwd /home/user/Documents El ejemplo de cd es mucho más fácil cuando se usa.. en lugar de la ruta absoluta, además, podemos combinar este patrón para navegar por el árbol de archivos muy rápidamente. user@hostname ~/Documents $ cd../.. $ pwd /home Version: 2022-01-21 | Esta obra está bajo la licencia CC BY-NC-ND 4.0. | learning.lpi.org | 119 Linux Essentials (Versión 1.6) | Tema 2: Encontrando el camino en un sistema Linux Ejercicios guiados 1. Para cada una de las siguientes rutas, identifique si es absoluta o relativa: /home/user/Downloads../Reports /var docs / 2. Observe la siguiente estructura de archivos. Nota: Los directorios terminan con una barra inclinada (/) cuando se ejecuta tree con la opción -F. Necesitará privilegios elevados para ejecutarlo en el directorio principal root (/). El siguiente es un resultado de ejemplo y no es indicativo de una estructura de directorio completa. Úselo para responder las siguientes preguntas: $ sudo tree -F / / ├── etc/ │ ├── network/ │ │ │ ├── systemd/ │ │ ├── resolved.conf │ │ ├── system/ │ │ ├── system.conf │ │ ├── user/ │ │ └── user.conf │ └── udev/ └── interfaces │ ├── rules.d/ │ └── udev.conf └── home/ ├── lost+found/ └── user/ └── Documents/ 12 directorios, 5 archivos Use esta estructura para responder las siguientes preguntas. Un usuario ingresa los siguientes comandos: 120 | learning.lpi.org | Esta obra está bajo la licencia CC BY-NC-ND 4.0. | Version: 2022-01-21 Linux Essentials (Versión 1.6) | 2.3 Uso de directorios y listado de archivos $ cd /etc/udev $ ls -a ¿Cuál será la salida del comando ls -a? 3. Ingrese el comando más corto posible para cada una de las siguientes situaciones: ◦ Su ubicación actual es root (/). Ingrese el comando para navegar a directorio home (ejemplo): lost+found dentro del $ cd home/lost+found ◦ Su ubicación actual es root (/). Ingrese el comando para navegar al directorio llamado /etc/network/. ◦ Su ubicación actual es /home/user/Documents/. Navegue al directorio llamado /etc/. ◦ Su ubicación actual es /etc/systemd/system/. Navegue al directorio llamado /home/user/. 4. Considere los siguientes comandos: $ pwd /etc/udev/rules.d $ cd../../systemd/user $ cd.. $ pwd ¿Cuál es el resultado del comando final pwd? Version: 2022-01-21 | Esta obra está bajo la licencia CC BY-NC-ND 4.0. | learning.lpi.org | 121 Linux Essentials (Versión 1.6) | Tema 2: Encontrando el camino en un sistema Linux Ejercicios exploratorios 1. Supongamos que un usuario ha ingresado los siguientes comandos: $ mkdir "this is a test" $ ls this is a test ¿Qué comando cd le permitiría ingresar a este directorio? 2. Intente esto nuevamente, pero después de escribir muestra ahora en la solicitud? cd this, presione la tecla TAB. ¿Qué se Este es un ejemplo de _ autocompletado_, la cual es una herramienta invaluable no solo para ahorrar tiempo, sino también para evitar errores ortográficos. 3. Intente crear un directorio cuyo nombre contenga un carácter \. Visualice el nombre del directorio con ls y elimine el directorio. 122 | learning.lpi.org | Esta obra está bajo la licencia CC BY-NC-ND 4.0. | Version: 2022-01-21 Linux Essentials (Versión 1.6) | 2.3 Uso de directorios y listado de archivos Resumen En esta lección usted aprendió: Los fundamentos del sistema de archivos Linux La diferencia entre directorios padres y subdirectorios La diferencia entre las rutas absolutas y relativas Las rutas relativas especiales. y.. Navegar por el sistema de archivos usando cd Mostrar tu ubicación actual usando pwd Listar todos los archivos y directorios usando ls -a Los siguientes comandos se discutieron en esta lección: cd Cambiar el directorio actual. pwd Imprime la ruta actual del directorio de trabajo. ls Enumerar el contenido de un directorio y mostrar las propiedades de los archivos. mkdir Crear un nuevo directorio. tree Muestra la jerárquica de un árbol de directorios. Version: 2022-01-21 | Esta obra está bajo la licencia CC BY-NC-ND 4.0. | learning.lpi.org | 123 Linux Essentials (Versión 1.6) | Tema 2: Encontrando el camino en un sistema Linux Respuestas a los ejercicios guiados 1. Para cada una de las siguientes rutas, identifique si es absoluta o relativa: /home/user/Downloads absoluta../Reports relativa /var absoluta docs relativa / absoluta 2. Observe la siguiente estructura de archivos. Nota: Los directorios terminan con una barra inclinada (/) cuando se ejecuta tree con la opción -F. Necesitará privilegios elevados para ejecutarlo en el directorio principal root (/). El siguiente es un resultado de ejemplo y no es indicativo de una estructura de directorio completa. Úselo para responder las siguientes preguntas: $ sudo tree -F / / ├── etc/ │ ├── network/ │ │ │ ├── systemd/ │ │ ├── resolved.conf │ │ ├── system/ │ │ ├── system.conf │ │ ├── user/ │ │ └── user.conf │ └── udev/ └── interfaces │ ├── rules.d/ │ └── udev.conf └── home/ ├── lost+found/ └── user/ └── Documents/ 12 directorios, 4 archivos Un usuario ingresa los siguientes comandos: 124 | learning.lpi.org | Esta obra está bajo la licencia CC BY-NC-ND 4.0. | Version: 2022-01-21 Linux Essentials (Versión 1.6) | 2.3 Uso de directorios y listado de archivos $ cd /etc/udev $ ls -a ¿Cuál será la salida del comando ls -a?... rules.d udev.conf 3. Ingrese el comando más corto posible para cada una de las siguientes situaciones: ◦ Su ubicación actual es root (/). Ingrese el comando para navegar a directorio home (ejemplo): lost+found dentro del $ cd home/lost+found ◦ Su ubicación actual es root (/). Ingrese el comando para navegar al directorio llamado /etc/network/ $ cd etc/network ◦ Su ubicación actual es /home/user/Documents/. Navegue al directorio llamado /etc/. $ cd /etc ◦ Su ubicación actual es /etc/systemd/system/. Navegue al directorio llamado /home/user/. $ cd /home/user 4. Considere los siguientes comandos: $ pwd /etc/udev/rules.d $ cd../../systemd/user $ cd.. $ pwd ¿Cuál es el resultado del comando final pwd? Version: 2022-01-21 | Esta obra está bajo la licencia CC BY-NC-ND 4.0. | learning.lpi.org | 125 Linux Essentials (Versión 1.6) | Tema 2: Encontrando el camino en un sistema Linux /etc/systemd 126 | learning.lpi.org | Esta obra está bajo la licencia CC BY-NC-ND 4.0. | Version: 2022-01-21 Linux Essentials (Versión 1.6) | 2.3 Uso de directorios y listado de archivos Respuestas a los ejercicios exploratorios 1. Supongamos que un usuario ha ingresado los siguientes comandos: $ mkdir "this is a test" $ ls this is a test ¿Qué comando cd le permitiría ingresar a este directorio? $ cd this\ is\ a\ test 2. Intente esto nuevamente, pero después de escribir muestra ahora en la solicitud? cd this, presione la tecla TAB. ¿Qué se $ cd this\ is\ a\ test Este es un ejemplo de _ autocompletado_, que es una herramienta invaluable no solo para ahorrar tiempo, sino también para evitar errores ortográficos. 3. Intente crear un directorio cuyo nombre contenga un carácter \. Visualice el nombre del directorio con ls y elimine el directorio. Puedes escapar de la barra invertida usando otra igual (\\) o usar comillas simples o dobles en todo el nombre del directorio: $ mkdir my\\dir $ ls 'my\dir' $ rmdir 'my\dir' Version: 2022-01-21 | Esta obra está bajo la licencia CC BY-NC-ND 4.0. | learning.lpi.org | 127 Linux Essentials (Versión 1.6) | Tema 2: Encontrando el camino en un sistema Linux 2.3 Lección 2 Certificación: Linux Essentials Versión: 1.6 Tema: 2 Encontrando tu camino en el sistema Linux Objectivo: 2.3 Usando directorios y listando archivos Lección: 2 de 2 Introducción El sistema operativo Unix se diseñó originalmente para computadoras mainframe a mediados de la década de 1960. Estas computadoras fueron compartidas entre muchos usuarios quienes accedieron a los recursos del sistema a través de terminales. Estas ideas se transmiten hoy en día a los sistemas Linux donde todavía se habla sobre el uso de “terminales” para ingresar comandos en el shell y donde cada sistema Linux está organizado de tal manera que es fácil crear varios usuarios en un solo sistema. Directorios principales Este es un ejemplo de un sistema de archivos normal en Linux: 128 | learning.lpi.org | Esta obra está bajo la licencia CC BY-NC-ND 4.0. | Version: 2022-01-21 Linux Essentials (Versión 1.6) | 2.3 Uso de directorios y listado de archivos $ tree -L 1 / / ├── bin ├── boot ├── cdrom ├── dev ├── etc ├── home ├── lib ├── mnt ├── opt ├── proc ├── root ├── run ├── sbin ├── srv ├── sys ├── tmp ├── usr └── var La mayoría de estos directorios son consistentes en todos los sistemas Linux desde pequeños sistemas embebidos, servidores y hasta supercomputadoras. Un usuario experimentado de Linux puede estar seguro de que puede encontrar el comando ls dentro de /bin, puede cambiar la configuración del sistema modificando archivos en /etc, y leer los registros del sistema /var. La ubicación de estos archivos y directorios está definido por el Estándar de jerarquía del sistema de archivos (FHS), el cual se discutirá en una lección posterior. Aprenderá más sobre el contenido de estos directorios a medida que continúe aprendiendo más sobre Linux, pero por el momento, sepa que: Los cambios que realice en el sistema de archivos raíz afectarán a todos los usuarios. Cambiar archivos en el sistema de archivos raíz requerirá permisos de administrador. Esto significa que los usuarios normales tendrán prohibido modificar estos archivos, y también se les puede prohibir incluso leerlos. Cubriremos el tema de los permisos en una sección posterior. Ahora, nos centraremos en el directorio /home que debería ser algo familiar en este punto: Version: 2022-01-21 | Esta obra está bajo la licencia CC BY-NC-ND 4.0. | learning.lpi.org | 129 Linux Essentials (Versión 1.6) | Tema 2: Encontrando el camino en un sistema Linux $ tree -L 1 /home /home ├── user ├── michael └── lara En el ejemplo nuestro sistema tiene tres usuarios normales y cada uno tiene su propia ubicación donde pueden crear y modificar archivos y directorios sin afectar a su vecino. Por ejemplo, en la lección anterior estábamos trabajando con la siguiente estructura de archivos: $ tree /home/user user └── Documents ├── Mission-Statement └── Reports └── report2018.txt En realidad, el sistema de archivos real puede verse así: $ tree /home /home ├── user │ └── Documents │ ├── Mission-Statement │ └── Reports │ └── report2018.txt ├── michael │ ├── Documents │ │ │ └── Music └── presentation-for-clients.odp …y así sucesivamente para lara. En Linux, /home es similar a un edificio de departamentos. Muchos usuarios pueden tener su espacio separados en departamentos dedicados. Las utilidades y el mantenimiento del edificio en sí son responsabilidad del superintendente (usuario root). La ruta relativa especial para home Cuando inicia una nueva sesión de terminal en Linux, ve un símbolo del sistema similar a este: 130 | learning.lpi.org | Esta obra está bajo la licencia CC BY-NC-ND 4.0. | Version: 2022-01-21 Linux Essentials (Versión 1.6) | 2.3 Uso de directorios y listado de archivos user@hostname ~ $ La tilde (~) aquí representa nuestro directorio home. Si ejecuta el comando ls verá algunos resultados familiares: $ cd ~ $ ls Documents Compare esto con el sistema de archivos anterior para verificar su comprensión. Considere ahora lo que sabemos sobre Linux: es similar a un edificio de departamentos con muchos usuarios que residen en /home. Por lo tanto, el home del user será diferente al home del usuario michael. Para demostrar esto, usaremos el comando su para cambiar de usuario. user@hostname ~ $ pwd /home/user user@hostname ~ $ su - michael Password: michael@hostname ~ $ pwd /home/michael El significado de ~ cambia dependiendo de quién sea el usuario. Para michael, la ruta absoluta de ~ es /home/michael. Para lara, la ruta absoluta de ~ es /home/lara, y así sucesivamente. Rutas relativas a los archivos de inicio (relative-to-home) Es muy útil usar ~ siempre que no cambie de usuario. Consideraremos el siguiente ejemplo para user que ha comenzado una nueva sesión: Version: 2022-01-21 | Esta obra está bajo la licencia CC BY-NC-ND 4.0. | learning.lpi.org | 131 Linux Essentials (Versión 1.6) | Tema 2: Encontrando el camino en un sistema Linux $ ls Documents $ cd Documents $ ls Mission-Statement Reports $ cd Reports $ ls