LPI-Learning-Material-010-160-es
LPI-Learning-Material-010-160-es
LPI-Learning-Material-010-160-es
6) |
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
Importancia
2
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.
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
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.
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.
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.
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ó:
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
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.
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.
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
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
Importancia
2
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
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:
En este punto el paquete se descargará e instalará en el sistema, así como las dependencias que
eventualmente necesite el paquete:
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
Después de encontrar un paquete adecuado en el repositorio, puede instalarse con yum install
package_name o dnf install package_name:
Transaction Summary
==============================================================================
Install 1 Package
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 : cowsay-3.04-10.fc28.noarch 1/1
Installed:
cowsay.noarch 3.04-10.fc28
Complete!
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:
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:
Transaction Summary
==================================================================================
Remove 1 Package
Freed space: 76 k
Is this ok [y/N]: y
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
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.
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á
TIP
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
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.
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.
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.
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
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
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) | Tema 1: La Comunidad Linux y una carrera en el mundo del código abierto
GnuPG puede ser utilizado para firmar, cifrar y descifrar textos, correos electrónicos, archivos,
directorios e incluso particiones de disco completas. Funciona con criptografía de clave pública y está
ampliamente disponible; en pocas palabras, GnuPG crea un par de archivos que contienen sus claves
públicas y privadas; como su nombre lo indica, la clave pública puede estar disponible para cualquier
persona y la clave privada debe mantenerse en secreto. Las personas usarán su clave pública para
cifrar datos que solo su clave privada podrá descifrar.
También puede usar su clave privada para firmar cualquier archivo o correo electrónico que pueda
validarse con la clave pública correspondiente. Esta señalización digital funciona de manera análoga
a la firma del mundo real. Mientras sea el único que posea su clave privada, el receptor puede estar
seguro de que fue usted quien la creó. Al hacer uso de la funcionalidad hash criptográfica, GnuPG
también garantizará que no se hayan realizado cambios después de la firma, ya que cualquier cambio
en el contenido la invalidaría.
GnuPG es una herramienta muy poderosa y en cierta medida, también compleja. Podrás encontrar
más información en sitio web y en Archlinux wiki (Archlinux wiki es una muy buena fuente de
información, aunque no utilices Archlinux).
Una buena manera de proteger sus datos es cifrar todo el disco o partición. Hay muchos programas
de código abierto que puede utilizar para lograr tal propósito.La forma en que funcionan y qué nivel
de cifrado ofrecen también varía significativamente.Hay dos métodos básicos disponibles: stacked
and block device encryption.
Por otro lado, el cifrado del dispositivo de bloque(block) ocurre debajo de la capa del sistema de
archivos, asegurándose de que todo lo que se escribe en un dispositivo de bloque esté cifrado. Si
observa el bloque mientras está fuera de línea, podrá ver una gran sección de datos aleatorios donde
ni siquiera podrá detectar el tipo de sistema de archivos que hay sin antes descifrarlo. Esto significa,
que no puede saber cuál es un archivo o directorio; qué tan grandes son o qué tipo de datos son,
porque los metadatos, la estructura de directorios y los permisos también estarán encriptados.
Ambos métodos tienen sus propios pros y contras. Entre todas las opciones disponibles, debería
echar un vistazo a dm-crypt, que es el estándar de facto para la encriptación de bloques para sistemas
62 | 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
La variable PATH
La variable PATH es una de las variables de entorno más importantes en un sistema Linux. Almacena
una lista de directorios separados por dos puntos que contienen programas ejecutables elegibles
como comandos de la shell de Linux.
$ echo $PATH
/home/user/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/ga
mes
Para agregar un nuevo directorio a la variable deberá usar el signo de dos puntos (:).
$ PATH=$PATH:new_directory
Aquí un ejemplo:
$ echo $PATH
/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin
$ PATH=$PATH:/home/user/bin
$ echo $PATH
/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/home/user/bin
Como puede observar, $PATH se ve como nuevo valor asignado a PATH. Esta variable se resuelve
durante la ejecución del comando y se asegura de que se conserve el contenido original de la
variable. Por supuesto, en la asignación también puede usar otras variables:
$ mybin=/opt/bin
$ PATH=$PATH:$mybin
$ echo $PATH
/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/home/user/bin:/opt/bi
n
La variable PATH debe manejarse con precaución, ya que es crucial para trabajar en línea de
comandos. Consideremos la siguiente variable PATH:
90 | 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.1 Aspectos básicos de la línea de comandos
$ echo $PATH
/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin
Para descubrir cómo el shell invoca un comando específico, puede utilizar el comando which con el
nombre del comando como argumento. Por ejemplo, podemos tratar de averiguar dónde se almacena
nano:
$ which nano
/usr/bin/nano
Como podemos observar, el ejecutable nano se encuentra dentro del directorio /usr/bin. Eliminemos
el directorio de la variable y verifiquemos si el comando aún funciona:
$ PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/sbin:/bin:/usr/games
$ echo $PATH
/usr/local/sbin:/usr/local/bin:/usr/sbin:/sbin:/bin:/usr/games
$ which nano
which: no nano in (/usr/local/sbin:/usr/local/bin:/usr/sbin:/sbin:/bin:/usr/games)
$ PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin
$ which nano
/usr/bin/nano
Version: 2022-01-21 | Esta obra está bajo la licencia CC BY-NC-ND 4.0. | learning.lpi.org | 91
Linux Essentials (Versión 1.6) | Tema 2: Encontrando el camino en un sistema Linux
Ejercicios guiados
1. Cree una variable local number.
2. Cree una variable de entorno ORDER, utilizando uno de los métodos anteriores.
92 | 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.1 Aspectos básicos de la línea de comandos
Ejercicios exploratorios
1. Cree una variable local nr_files y asignele el número de líneas encontradas en el archivo
/etc/passwd. Sugerencia: mire el comando wc y la sustitución de comandos, tampoco se olvide
de las comillas.
2. Crea una variable de entorno ME. Asigna el valor de la variable USER a la misma.
4. Usando el ejemplo de fecha anterior, cree una variable llamada today y asignele la fecha para
una de las zonas horarias.
Version: 2022-01-21 | Esta obra está bajo la licencia CC BY-NC-ND 4.0. | learning.lpi.org | 93
Linux Essentials (Versión 1.6) | Tema 2: Encontrando el camino en un sistema Linux
Resumen
En esta lección, usted aprendió:
• Tipos de variables
• Crear variables
• Manipular variables
env
echo
Salida de texto.
export
Hace que las variables locales estén disponibles para los subprocesos.
unset
94 | 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.1 Aspectos básicos de la línea de comandos
$ number=5
2. Cree una variable de entorno ORDER, utilizando uno de los métodos anteriores.
$ export ORDER=desc
$ echo number
number
$ echo ORDER
ORDER
$ echo $number
5
$ echo $ORDER
desc
Version: 2022-01-21 | Esta obra está bajo la licencia CC BY-NC-ND 4.0. | learning.lpi.org | 95
Linux Essentials (Versión 1.6) | Tema 2: Encontrando el camino en un sistema Linux
$ nr_files=`wc -l /etc/passwd`
2. Crea una variable de entorno ME. Asigna el valor de la variable USER a la misma.
$ export ME=$USER
$ ME=$ME:$HOME
$ echo $ME
user:/home/user
4. Utilizando el ejemplo de la fecha anterior, cree una variable llamada today y asigne la fecha de
una de las zonas horarias.
Se utilizan las zonas horarias GMT y EST como ejemplo, pero cualquier selección de zona
horaria es válida.
$ today=$(TZ=GMT date)
$ echo $today
Thu 31 Jan 15:07:35 GMT 2019
or
$ today=$(TZ=EST date)
$ echo $today
Thu 31 Jan 10:07:35 EST 2019
96 | 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.1 Aspectos básicos de la línea de comandos
$ today1=$(date)
$ echo $today1
Thu 31 Jan 10:07:35 EST 2019
Version: 2022-01-21 | Esta obra está bajo la licencia CC BY-NC-ND 4.0. | learning.lpi.org | 97
Linux Essentials (Versión 1.6) | Tema 2: Encontrando el camino en un sistema Linux
Importancia
2
• info
• /usr/share/doc/
• locate
98 | 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.
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 man está dividida en un máximo de 11 secciones, aunque muchas de estas secciones
son opcionales:
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
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
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.
$ 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/
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.
locate busca dentro de una base de datos y luego genera cada nombre que coincida con la cadena
brindada:
$ 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
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:
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 Downloads, mientras que el
segundo busca el archivo en el directorio de inicio del usuario.
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
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
4. Cree un archivo llamado test en su directorio de inicio. Encuentre su ruta absoluta con el
comando locate.
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 find. ¿Qué sintaxis
uso y cuál es la ruta absoluta?
106 | 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 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
4. Busque dentro del árbol todos los archivos que terminen con un número.
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ó:
man
info
locate
find
updatedb
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
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.
-t or --sort=time
3. Muestre la ruta a los primeros 3 archivos README. Use el comando man para identificar la opción
correcta para locate.
$ locate -l 3 README
/etc/alternatives/README
/etc/init.d/README
/etc/rc0.d/README
4. Cree un archivo llamado test en su directorio de inicio. Encuentre su ruta absoluta con el
comando locate.
$ 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
6. Busque el archivo de prueba que creó anteriormente, utilizando el comando find. ¿Qué sintaxis
uso y cuál es la ruta absoluta?
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
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
$ ls -R
4. Search within the tree for all files that end with a number.
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
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
Importancia
2
• . y ..
• home y~
114 | 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
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.
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
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.
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.
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
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
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 Reports desde cualquier parte
del sistema de ficheros, el inconveniente es que es tedioso de escribir.
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.
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:
..
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.
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/
│ │ └── interfaces
│ ├── systemd/
│ │ ├── resolved.conf
│ │ ├── system/
│ │ ├── system.conf
│ │ ├── user/
│ │ └── user.conf
│ └── udev/
│ ├── rules.d/
│ └── udev.conf
└── home/
├── lost+found/
└── user/
└── Documents/
12 directorios, 5 archivos
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
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 lost+found dentro del
directorio home (ejemplo):
$ cd home/lost+found
◦ Su ubicación actual es root (/). Ingrese el comando para navegar al directorio llamado
/etc/network/.
$ pwd
/etc/udev/rules.d
$ cd ../../systemd/user
$ cd ..
$ 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:
2. Intente esto nuevamente, pero después de escribir cd this, presione la tecla TAB. ¿Qué se
muestra ahora en la solicitud?
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ó:
cd
pwd
ls
mkdir
tree
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
/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/
│ │ └── interfaces
│ ├── systemd/
│ │ ├── resolved.conf
│ │ ├── system/
│ │ ├── system.conf
│ │ ├── user/
│ │ └── user.conf
│ └── udev/
│ ├── rules.d/
│ └── udev.conf
└── home/
├── lost+found/
└── user/
└── Documents/
12 directorios, 4 archivos
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
. .. 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 lost+found dentro del
directorio home (ejemplo):
$ cd home/lost+found
◦ Su ubicación actual es root (/). Ingrese el comando para navegar al directorio llamado
/etc/network/
$ cd etc/network
$ cd /etc
$ cd /home/user
$ pwd
/etc/udev/rules.d
$ cd ../../systemd/user
$ cd ..
$ 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
2. Intente esto nuevamente, pero después de escribir cd this, presione la tecla TAB. ¿Qué se
muestra ahora en la solicitud?
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
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
$ tree /home
/home
├── user
│ └── Documents
│ ├── Mission-Statement
│ └── Reports
│ └── report2018.txt
├── michael
│ ├── Documents
│ │ └── presentation-for-clients.odp
│ └── Music
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).
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
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.
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
report2018.txt
$ cd ~
$ ls
Documents
Tenga en cuenta que los usuarios siempre comenzarán una nueva sesión en su directorio de inicio
(home). En este ejemplo, user ha navegado a su subdirectorio Documents/Reports y con el comando
cd ~ ha regresado a donde comenzó. Puede realizar la misma acción utilizando el comando cd sin
argumentos:
$ cd Documents/Reports
$ pwd
/home/user/Documents/Reports
$ cd
$ pwd
/home/user
Como último punto a tener en cuenta: podemos especificar los directorios de inicio de otros usuarios
especificando el nombre después de la tilde. Por ejemplo:
$ ls ~michael
Documents
Music
Tenga en cuenta que esto solo funcionará si michael nos ha dado permiso para ver el contenido de
su directorio de inicio.
132 | 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
$ less ~user/Documents/Reports/report2018.txt
$ ls -a ~
.
..
.bash_history
.bash_logout
.bash-profile
.bashrc
Documents
Los archivos y directorios ocultos siempre comenzarán con un punto (.). Por defecto, el directorio de
inicio(home) de un usuario incluirá muchos archivos ocultos que a menudo se usan para establecer
configuraciones específicas del usuario. Estas configuraciones solo deben ser modificadas por un
usuario experimentado.
El comando ls tiene muchas opciones para cambiar su comportamiento. Revisemos una de las más
comunes:
$ ls -l
-rw-r--r-- 1 user staff 3606 Jan 13 2017 report2018.txt
El argumento -l crea un listado largo de detalles (long list). Cada archivo y directorio ocuparán una
línea, pero se mostrará información adicional sobre cada uno de ellos.
-rw-r—r--
Tipo de archivo y permisos del archivo. Tenga en cuenta que un archivo normal comenzará con
guión y un directorio comenzará con d.
Version: 2022-01-21 | Esta obra está bajo la licencia CC BY-NC-ND 4.0. | learning.lpi.org | 133
Linux Essentials (Versión 1.6) | Tema 2: Encontrando el camino en un sistema Linux
user staff
Especifica la propiedad del archivo, user es el propietario del archivo el cual también está
asociado al grupo staff.
3606
Jan 13 2017
report2018.txt
Temas como propietarios, permisos y enlaces serán cubiertos en secciones futuras. Como puede
observar, a menudo el formato de listado largo de ls es preferible que el predeterminado.
A continuación, presentamos algunas de las formas más comunes al usar el comando ls. Como
podrá observar, el usuario puede combinar muchas opciones para obtener el resultado deseado.
ls -lh
La combinación de long list con human readable nos dará el tamaño de los archivos con sufijos
útiles como M para megabytes o K para kilobytes.
ls -d */
La opción -d enumerará los directorios pero no sus contenidos. La combinación con */ mostrará
solo subdirectorios y ningún archivo.
ls -lt
Combinar long list con la opción de ordenar por modification time. Los archivos con los cambios
más recientes estarán en la parte superior y los archivos con los cambios más antiguos estarán en
la parte inferior, pero este orden se puede revertir con:
ls -lrt
Combinar long list con sort by (modification) time, combinado con -r que invierte el orden. Ahora
los archivos con los cambios más recientes se encuentran al final de la lista. Además de ordenar
134 | 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
por modification time, los archivos también se pueden ordenar por access time o por status time.
ls -lX
Combinar long list con la opción de ordenar por file eXtension. Esto agrupará todos los archivos
que terminen con .txt, todos los que terminen con .jpg y así sucesivamente.
ls -S
El -S se ordena por archivo size de forma muy similar a -t y -X, tiempo y extensión
respectivamente. Los archivos más grandes estarán primero y los más pequeños al final. Tenga en
cuenta que el contenido de los subdirectorios no se incluye en el orden.
ls -R
La opción -R modificará el comando ls para mostrar una lista recursiva. ¿Qué significa esto?
Recursión en Bash
$ ls ~
Documents
Sabemos desde antes que user tiene un directorio personal, y en este directorio hay un subdirectorio.
Hasta ahora ls sólo nos ha mostrado los ficheros y subdirectorios de una ubicación, pero no puede
decirnos el contenido de estos subdirectorios. En estas lecciones, hemos utilizado el comando tree
cuando queríamos mostrar el contenido de muchos directorios. Desafortunadamente, tree no es una
de las utilidades principales de Linux y por lo tanto no está siempre disponible. Compare la salida de
tree con la salida de ls -R en los siguientes ejemplos:
Version: 2022-01-21 | Esta obra está bajo la licencia CC BY-NC-ND 4.0. | learning.lpi.org | 135
Linux Essentials (Versión 1.6) | Tema 2: Encontrando el camino en un sistema Linux
$ tree /home/user
user
└── Documents
├── Mission-Statement
└── Reports
└── report2018.txt
$ ls -R ~
/home/user/:
Documents
/home/user/Documents:
Mission-Statement
Reports
/home/user/Documents/Reports:
report2018.txt
Como puede observar, con la opción recursiva obtenemos una lista mucho más larga de archivos. De
hecho, es como si ejecutáramos el comando ls en el directorio de inicio de user y encontráramos un
subdirectorio, luego entramos en ese subdirectorio y ejecutamos el comando ls nuevamente donde
encontramos el archivo Mission-Statement y otro subdirectorio llamado Reports, y nuevamente,
ingresamos al subdirectorio y ejecutamos el comando ls. Prácticamente, ejecutar ls -R es como
decirle a Bash: “Ejecute ls aquí y repita el comando en cada subdirectorio que encuentre”.
136 | 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
Ejercicios guiados
1. Use la siguiente estructura de archivos para responder las siguientes tres preguntas:
/
├── etc/
│ ├── network/
│ │ └── interfaces/
│ ├── systemd/
│ │ ├── resolved.conf
│ │ ├── system/
│ │ ├── system.conf
│ │ ├── user/
│ │ └── user.conf
│ └── udev/
│ ├── rules.d
│ └── udev.conf
└── home/
├── lost+found/
├── user/
│ └── Documents/
└── michael/
└── Music/
◦ ¿Qué comando puede ingresar user para navegar en su directorio Documents desde
/etc/udev? Use el camino más corto posible.
◦ ¿Qué comando puede ingresar user para navegar en el directorio Music de michael? Use el
camino más corto posible.
2. Considere la siguiente salida de ls -lh para responder las siguientes dos preguntas. Tenga en
cuenta que los directorios se indican con una d al comienzo de la línea.
Version: 2022-01-21 | Esta obra está bajo la licencia CC BY-NC-ND 4.0. | learning.lpi.org | 137
Linux Essentials (Versión 1.6) | Tema 2: Encontrando el camino en un sistema Linux
138 | 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
Ejercicios exploratorios
1. Ejecute el comando ls -lh en un directorio que contenga subdirectorios. Tenga en cuenta el
tamaño indicado de estos directorios. ¿Te parecen correctos estos tamaños de archivo?
¿Representan con precisión el contenido de todos los archivos dentro de ese directorio?
2. Aquí hay un nuevo comando para probar: du -h. Ejecute este comando y describa el resultado
que le proporciona.
3. En muchos sistemas Linux, puedes escribir ll y obtener el mismo resultado como si escribieras
ls -l. Sin embargo, tenga en cuenta que ll no es un comando. Por ejemplo, man ll le dará el
mensaje de que no existe un manual para esto. Este es un ejemplo de un alias. ¿Por qué los alias
podrían ser útiles para un usuario?
Version: 2022-01-21 | Esta obra está bajo la licencia CC BY-NC-ND 4.0. | learning.lpi.org | 139
Linux Essentials (Versión 1.6) | Tema 2: Encontrando el camino en un sistema Linux
Resumen
En esta lección usted aprendió:
También aprendió sobre algunas de las formas más comunes de modificar el comando ls.
-a (all)
Imprime todos los archivos / directorios, incluidos los ocultos.
-d (directories)
Enumera directorios, pero sin sus contenidos.
-h (human readable)
Imprime tamaños de archivo en formato legible para humanos.
-l (long list)
Proporciona detalles adicionales en un archivo/directorio por línea.
-r (reverse)
Invierte el orden.
-R (recursive)
Enumera todos los archivos, incluidos los archivos de cada subdirectorio.
-S (size)
Ordena por tamaño de archivo.
-t (time)
Ordena por fecha de modificación.
-X (eXtension)
Ordena por extensión de archivo.
140 | 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
/
├── etc/
│ ├── network/
│ │ └── interfaces/
│ ├── systemd/
│ │ ├── resolved.conf
│ │ ├── system/
│ │ ├── system.conf
│ │ ├── user/
│ │ └── user.conf
│ └── udev/
│ ├── rules.d
│ └── udev.conf
└── home/
├── lost+found/
├── user/
│ └── Documents/
└── michael/
└── Music/
cd /etc/network
◦ ¿Qué comando puede ingresar user para navegar en su directorio Documents desde
/etc/udev? Use el camino más corto posible.
cd ~/Documents
◦ ¿Qué comando puede ingresar user para navegar en el directorio Music de michael? Use el
camino más corto posible.
cd ~michael/Music
Version: 2022-01-21 | Esta obra está bajo la licencia CC BY-NC-ND 4.0. | learning.lpi.org | 141
Linux Essentials (Versión 1.6) | Tema 2: Encontrando el camino en un sistema Linux
2. Considere la siguiente salida de ls -lh para responder las siguientes dos preguntas. Tenga en
cuenta que los directorios se indican con una d al comienzo de la línea.
Las tres carpetas son todas de 4.0K, que es el tamaño de archivo más pequeño. Luego el
comando ls ordenará por defecto los directorios alfabéticamente. La respuesta correcta es el
archivo scary.jpg.
142 | 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
No, cada directorio tiene un tamaño de archivo listado de 4096 bytes. Esto se debe a que los
directorios son una abstracción: ellos no existen como una estructura de árbol en el disco.
Cuando observas un directorio en la lista, esta observando un enlace a una lista de archivos. El
tamaño de estos enlaces es de 4096 bytes.
2. Aquí hay un nuevo comando para probar: du -h. Ejecute este comando y describa el resultado
que le proporciona.
El comando du generará una lista de todos los archivos y directorios e indicará el tamaño de cada
uno. Por ejemplo, du -s mostrará el tamaño de todos los archivos, directorios y subdirectorios
para una determinada ubicación.
3. En muchos sistemas Linux, puedes escribir ll y obtener el mismo resultado como si escribieras
ls -l. Sin embargo, tenga en cuenta que ll no es un comando. Por ejemplo, man ll le dará el
mensaje de que no existe un manual para esto. Este es un ejemplo de un alias. ¿Por qué los alias
podrían ser útiles para un usuario?
ll es un alias de ls -l. En Bash podemos usar alias para simplificar los comandos de uso común.
ll a menudo se define por usted en Linux, pero también puede crear sus propios alias.
Version: 2022-01-21 | Esta obra está bajo la licencia CC BY-NC-ND 4.0. | learning.lpi.org | 143
Linux Essentials (Versión 1.6) | Tema 2: Encontrando el camino en un sistema Linux
Importancia
2
• mkdir, rmdir
144 | 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.4 Crear, mover y borrar archivos
2.4 Lección 1
Certificación: Linux Essentials
Versión: 1.6
Tema: 2 Encontrando tu camino en el sistema Linux
Objetivo: 2.4 Creando, moviendo y borrando archivos
Lección: 1 de 1
Introducción
Esta lección cubrirá la administración de archivos y directorios en Linux usando herramientas de
línea de comandos.
Un archivo es una colección de datos con un nombre y un conjunto de atributos. Si por ejemplo,
usted tuviera que transferir algunas fotos desde su teléfono a una computadora y darles nombres un
descriptivo; llegaría a tener varios archivos de imágenes con atributos como la hora la cual accedió
por última vez o se modificó.
Un directorio es un tipo especial de archivo utilizado para organizar otros archivos. Una buena
manera de pensar en los directorios es como las carpetas que se usan para organizar papeles en un
organizador de archivos, a diferencia de las carpetas de archivos de papel, usted puede mover
fácilmente directorios dentro de otros directorios.
La línea de comandos es la forma más efectiva de administrar archivos en un sistema Linux, ya que
la shell y las herramientas de línea de comandos tienen características que hacen que su uso sea más
rápido y fácil que el de un administrador gráfico de archivos.
En esta sección usted usará los comandos ls, mv, cp, pwd, find, touch, rm, rmdir, echo, cat, y mkdir
Version: 2022-01-21 | Esta obra está bajo la licencia CC BY-NC-ND 4.0. | learning.lpi.org | 145
Linux Essentials (Versión 1.6) | Tema 2: Encontrando el camino en un sistema Linux
$ cd /
$ ls
bin dev home lib64 mnt proc run srv tmp var
boot etc lib media opt root sbin sys usr
$ cd ETC
bash: cd: ETC: No such file or directory
$ pwd
/
$ cd etc
$ pwd
/etc
Creación de directorios
$ cd ~
$ pwd
/home/user
$ ls
Desktop Documents Downloads
$ mkdir linux_essentials-2.4
$ ls
Desktop Documents Downloads linux_essentials-2.4
$ cd linux_essentials-2.4
$ pwd
/home/emma/linux_essentials-2.4
146 | 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.4 Crear, mover y borrar archivos
Durante de esta lección, todos los comandos tendrán lugar dentro de este directorio o en uno de sus
subdirectorios.
Para volver fácilmente al directorio de la lección desde cualquier otra ubicación puede usar el
comando:
$ cd ~/linux_essentials-2.4
Cuando esté en el directorio de la lección, cree más directorios que usaremos para los ejercicios,
usted puede crear todos los nombres de los directorios separados por espacios con el comando mkdir:
Observe el mensaje de error y notará que sólo se crearon moving, globs, y creating. Los directorios
copying y deleting no existen todavía. Por defecto, el comando mkdir, no creará un directorio
dentro de un directorio que no existe. La opción -p o --parents ordena a mkdir crear directorios
padre si no existen. Intente nuevamente usar el comando mkdir, pero con la opción -p:
Ahora no recibirás ningún mensaje de error. Veamos qué directorios existen ahora:
Version: 2022-01-21 | Esta obra está bajo la licencia CC BY-NC-ND 4.0. | learning.lpi.org | 147
Linux Essentials (Versión 1.6) | Tema 2: Encontrando el camino en un sistema Linux
$ find
.
./creating
./moving
./globs
./copying
./copying/files
./copying/directories
./deleting
./deleting/directories
./deleting/files
El comando find se utiliza generalmente para buscar archivos y directorios, pero sin opciones. Su
resultado mostrará un listado de todos los archivos, directorios y subdirectorios de su directorio
actual.
Creación de archivos
Típicamente, los archivos son creados por los programas que trabajan con los datos guardados en
ellos, un archivo vacío puede ser creado usando el comando touch. Si ejecuta touch en un archivo
existente, el contenido del archivo no será cambiado, pero la fecha y hora de modificación de los
archivos será actualizada.
Ejecute el siguiente comando para crear algunos archivos para la lección de globbing:
Ahora vamos a verificar que todos los archivos existen en el directorio globs:
$ cd globs
$ ls
question1 question14 question23 star1100 star2013
question13 question2012 star10 star2002
148 | 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.4 Crear, mover y borrar archivos
Puedes revisar el contenido de un archivo de texto con el comando cat, pruébelo en uno de los
archivos que acabas de crear:
$ cat question14
Dado que touch crea archivos vacíos no debería obtener ninguna salida. Puede usar echo con > para
crear archivos de texto simples. Intento esto:
echo muestra el texto en la línea de comandos. El carácter > instruye al shell a escribir la salida de un
comando en el archivo especificado en lugar de su terminal. En este caso, la salida de echo, escribe la
palabra hello en el archivo question15. Esto no es específico de echo, puede ser usado con cualquier
comando.
$ cd ~/linux_essentials-2.4/moving
Cree algunos archivos con los que pueda practicar, ya a este punto debería estar familiarizado con
estos comandos:
Supongamos que file22 es un error tipográfico y debería ser file2. Arréglalo con el comando mv. Al
Version: 2022-01-21 | Esta obra está bajo la licencia CC BY-NC-ND 4.0. | learning.lpi.org | 149
Linux Essentials (Versión 1.6) | Tema 2: Encontrando el camino en un sistema Linux
$ mv file22 file2
$ ls
file1 file2 file3 file4
Tenga cuidado con el comando mv. Si cambia el nombre de un archivo al nombre de un archivo
existente, se sobrescribirá:
$ cat file3
file3
$ cat file4
file4
$ mv file4 file3
$ cat file3
file4
$ ls
file1 file2 file3
Observe como el contenido de file3 es ahora file4. Use la opción -i para hacer que mv le pregunte
si está a punto de sobreescribir un archivo existente:
Moviendo archivos
$ cd ~/linux_essentials-2.4/moving
$ mkdir dir1 dir2
$ ls
dir1 dir2 file1 file2 file3 file5
150 | 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.4 Crear, mover y borrar archivos
$ mv file1 dir1
$ ls
dir1 dir2 file2 file3 file5
$ ls dir1
file1
También es posible usar mv para mover y renombrar directorios. Renombre dir1 a dir3:
$ ls
dir1 dir2 file5
$ ls dir1
file1
$ mv dir1 dir3
$ ls
dir2 dir3 file5
$ ls dir3
file1
El comando rm puede eliminar archivos y directorios. Mientras que el comando rmdir sólo puede
eliminar directorios:
Version: 2022-01-21 | Esta obra está bajo la licencia CC BY-NC-ND 4.0. | learning.lpi.org | 151
Linux Essentials (Versión 1.6) | Tema 2: Encontrando el camino en un sistema Linux
$ cd ~/linux_essentials-2.4/moving
$ ls
dir2 dir3 file5
$ rmdir file5
rmdir: failed to remove ‘file5’: Not a directory
$ rm file5
$ ls
dir2 dir3
Por defecto rmdir sólo puede borrar directorios vacíos, por lo tanto tuvimos que usar rm para borrar
un archivo regular:
$ cd ~/linux_essentials-2.4/
$ ls
copying creating deleting globs moving
$ rmdir deleting
rmdir: failed to remove ‘deleting’: Directory not empty
$ ls -l deleting
total 0
drwxrwxr-x. 2 emma emma 6 Mar 26 14:58 directories
drwxrwxr-x. 2 emma emma 6 Mar 26 14:58 files
Por defecto, rmdir no elimina un directorio que no esté vacío, utilice rmdir para eliminar uno de los
subdirectorios vacíos del directorio deleting:
$ ls -a deleting/files
. ..
$ rmdir deleting/files
$ ls -l deleting
directories
152 | 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.4 Crear, mover y borrar archivos
$ ls
copying creating deleting globs moving
$ rm deleting
rm: cannot remove ‘deleting’: Is a directory
$ ls -l deleting
total 0
drwxrwxr-x. 2 emma emma 6 Mar 26 14:58 directories
$ rm -r deleting
$ ls
copying creating globs moving
Observe como deleting ha desaparecido, a pesar de que no estaba vacío? Al igual que mv, rm tiene
una opción -i para avisar antes de hacer algo. Use rm -ri para eliminar directorios de la sección
moving que ya no son necesarios:
Version: 2022-01-21 | Esta obra está bajo la licencia CC BY-NC-ND 4.0. | learning.lpi.org | 153
Linux Essentials (Versión 1.6) | Tema 2: Encontrando el camino en un sistema Linux
$ find
.
./creating
./moving
./moving/dir2
./moving/dir2/file2
./moving/dir2/file3
./moving/dir3
./moving/dir3/file1
./globs
./globs/question1
./globs/question2012
./globs/question23
./globs/question13
./globs/question14
./globs/star10
./globs/star1100
./globs/star2002
./globs/star2013
./globs/question15
./copying
./copying/files
./copying/directories
$ rm -ri moving
rm: descend into directory ‘moving’? y
rm: descend into directory ‘moving/dir2’? y
rm: remove regular empty file ‘moving/dir2/file2’? y
rm: remove regular empty file ‘moving/dir2/file3’? y
rm: remove directory ‘moving/dir2’? y
rm: descend into directory ‘moving/dir3’? y
rm: remove regular empty file ‘moving/dir3/file1’? y
rm: remove directory ‘moving/dir3’? y
rm: remove directory ‘moving’? y
El comando cp se utiliza para copiar archivos y directorios. Copie algunos archivos en el directorio
copying:
154 | 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.4 Crear, mover y borrar archivos
$ cd ~/linux_essentials-2.4/copying
$ ls
directories files
$ cp /etc/nsswitch.conf files/nsswitch.conf
$ cp /etc/issue /etc/hostname files
Si el último argumento es un directorio, cp creará una copia de los argumentos anteriores dentro de
ese directorio. Al igual que mv, se puede especificar múltiples archivos a la vez siempre y cuando el
objetivo sea un directorio.
Cuando ambos operandos de cp son archivos y existen ambos archivos, cp sobrescribe el segundo
archivo con una copia del primero:
$ cd ~/linux_essentials-2.4/copying/files
$ ls
hostname issue nsswitch.conf
$ cat hostname
mycomputer
$ cat issue
Debian GNU/Linux 9 \n \l
$ cp hostname issue
$ cat issue
mycomputer
Ahora vamos a intentar crear una copia del directorio files dentro del directorio directories:
$ cd ~/linux_essentials-2.4/copying
$ cp files directories
cp: omitting directory ‘files’
Como puede observar, cp por defecto sólo funciona en archivos individuales, para copiar un
directorio utilice la opción -r. Tenga en cuenta que la opción -r hará que cp también copie el
contenido del directorio que está copiando:
Version: 2022-01-21 | Esta obra está bajo la licencia CC BY-NC-ND 4.0. | learning.lpi.org | 155
Linux Essentials (Versión 1.6) | Tema 2: Encontrando el camino en un sistema Linux
$ cp -r files directories
$ find
.
./files
./files/nsswitch.conf
./files/fstab
./files/hostname
./directories
./directories/files
./directories/files/nsswitch.conf
./directories/files/fstab
./directories/files/hostname
Observe cómo un directorio existente fue usado como destino. El comando cp crea una copia del
directorio fuente dentro de él? Si el destino no existe, lo creará con el contenido del directorio fuente:
$ cp -r files files2
$ find
.
./files
./files/nsswitch.conf
./files/fstab
./files/hostname
./directories
./directories/files
./directories/files/nsswitch.conf
./directories/files/fstab
./directories/files/hostname
./files2
./files2/nsswitch.conf
./files2/fstab
./files2/hostname
Globbing
Lo que comúnmente se conoce como globbing hace referencia a un lenguaje simple de coincidencia
de patrones. Los shells utilizan este lenguaje para referirse a grupos de archivos cuyos nombres
coinciden con un patrón específico. POSIX.1-2017 especifica los siguientes caracteres que coinciden
con un patrón:
156 | 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.4 Crear, mover y borrar archivos
[]
En español, esto significa que puede decirle a su shell que coincida con un patrón en lugar de una
cadena literal de texto. Los usuarios de Linux suelen especificar varios archivos con un “glob” en
lugar de escribir el nombre de cada archivo:
$ cd ~/linux_essentials-2.4/globs
$ ls
question1 question14 question2012 star10 star2002
question13 question15 question23 star1100 star2013
$ ls star1*
star10 star1100
$ ls star*
star10 star1100 star2002 star2013
$ ls star2*
star2002 star2013
$ ls star2*2
star2002
$ ls star2013*
star2013
Shell expande * a cualquier número de caracteres, por tanto interpreta que star* significa cualquier
nombre (archivo o directorio) que coincidan(al inicio) con esos caracteres. Cuando ejecutas el
comando ls star*, shell no ejecuta el programa ls con un argumento de star*, sino que busca
archivos en el directorio actual que concuerden con el patrón star (incluyendo sólo star). Además
convierte cada archivo que coincida con el patrón en un argumento de ls:
$ ls star*
Version: 2022-01-21 | Esta obra está bajo la licencia CC BY-NC-ND 4.0. | learning.lpi.org | 157
Linux Essentials (Versión 1.6) | Tema 2: Encontrando el camino en un sistema Linux
El carácter * no significa nada para ls. Para probar esto ejecute el siguiente comando:
$ ls star\*
ls: cannot access star*: No such file or directory
Cuando se precede un carácter con un \, estás instruyendo a su shell para que no lo interprete. En
este caso, usted desea que ls tenga un argumento de star*.
$ ls
question1 question14 question2012 star10 star2002
question13 question15 question23 star1100 star2013
$ ls question?
question1
$ ls question1?
question13 question14 question15
$ ls question?3
question13 question23
$ ls question13?
ls: cannot access question13?: No such file or directory
Los corchetes [] se usan para igualar rangos o clases de caracteres. Estos funcionan como lo hacen
en las expresiones regulares POSIX, excepto que con globs se usa ^ en lugar de !.
$ mkdir brackets
$ cd brackets
$ touch file1 file2 file3 file4 filea fileb filec file5 file6 file7
$ ls
file1 file2 file3 file4 file5 file6 file7 filea fileb filec
$ ls file[1-2]
file1 file2
$ ls file[1-3]
file1 file2 file3
158 | 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.4 Crear, mover y borrar archivos
$ ls file[1-25-7]
file1 file2 file5 file6 file7
$ ls file[1-35-6a-c]
file1 file2 file3 file5 file6 filea fileb filec
Los corchetes también se pueden utilizar para hacer coincidir un conjunto específico de caracteres.
$ ls file[1a5]
file1 file5 filea
También puede utilizar el carácter ^ como primer carácter para que coincida con todo, excepto con
ciertos caracteres.
$ ls file[^a]
file1 file2 file3 file4 file5 file6 file7 fileb filec
Lo último que cubriremos en esta lección son las clases de caracteres. Para que coincidan con una
clase de caracteres, use [:classname:]. Por ejemplo, para usar la clase de dígitos que coincida con los
números, debes hacer algo como esto:
$ ls file[[:digit:]]
file1 file2 file3 file4 file5 file6 file7
$ touch file1a file11
$ ls file[[:digit:]a]
file1 file2 file3 file4 file5 file6 file7 filea
$ ls file[[:digit:]]a
file1a
POSIX requiere las siguientes clases de caracteres para todas las localizaciones:
[:alnum:]
Letras y números.
Version: 2022-01-21 | Esta obra está bajo la licencia CC BY-NC-ND 4.0. | learning.lpi.org | 159
Linux Essentials (Versión 1.6) | Tema 2: Encontrando el camino en un sistema Linux
[:alpha:]
[:blank:]
Espacios y tabulaciones.
[:cntrl:]
[:digit:]
Números (012345456789).
[:graph:]
[:lower:]
[:print:]
[:punct:]
[:space:]
[:upper:]
[:xdigit:]
160 | 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.4 Crear, mover y borrar archivos
Ejercicios guiados
1. Dado lo siguiente, seleccione los directorios que podría crear el comando mkdir -p
/tmp/outfiles/text/today /tmp/infiles/text/today
$ pwd
/tmp
$ find
.
./outfiles
./outfiles/text
/tmp
/tmp/outfiles
/tmp/outfiles/text
/tmp/outfiles/text/today
/tmp/infiles
/tmp/infiles/text
/tmp/infiles/text/today
3. ¿Qué sucede si accidentalmente intenta copiar tres archivos en la misma línea de comando a un
archivo que ya existe en lugar de un directorio?
5. ¿Cómo eliminaría todos los archivos en su directorio actual que comienzan con old?
log_3_2017_Jan_01.txt
log_+_2017_Feb_01.txt
log_b_2007_Mar_01.txt
Version: 2022-01-21 | Esta obra está bajo la licencia CC BY-NC-ND 4.0. | learning.lpi.org | 161
Linux Essentials (Versión 1.6) | Tema 2: Encontrando el camino en un sistema Linux
log_f_201A_Wednesday_01.txt
7. Cree algunos globs para que coincidan con la siguiente lista de nombres de archivo:
doc100
doc200
doc301
doc401
162 | 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.4 Crear, mover y borrar archivos
Ejercicios exploratorios
1. Utilice la página del manual cp para descubrir cómo hacer una copia de un archivo y hacer que
los permisos y la hora de modificación coincidan con el original.
2. ¿Qué hace el comando rmdir -p? Pruébelo y explique cómo difiere de rm -r.
3. NO EJECUTE REALMENTE ESTE COMANDO: ¿Qué cree que hará rm -ri /* ? (Honestamente,
¡no intentes hacer esto!)
4. Además de usar -i. ¿Es posible evitar que mv sobrescriba los archivos de destino?
Version: 2022-01-21 | Esta obra está bajo la licencia CC BY-NC-ND 4.0. | learning.lpi.org | 163
Linux Essentials (Versión 1.6) | Tema 2: Encontrando el camino en un sistema Linux
Resumen
El entorno de línea de comandos de Linux proporciona herramientas para administrar archivos.
Algunos de los más utilizados son cp, mv, mkdir, rm y rmdir. Estas herramientas combinadas con
globs, permiten a los usuarios mejorar su trabajo.
Muchos comandos tienen una opción -i que pregunta antes de hacer algo. Esto podrían ahorrarte
muchos problemas si escribes algo mal.
Muchos comandos tienen una opción -r. La opción -r generalmente significa recursión. En
matemáticas e informática, una función recursiva es una función que se utiliza a sí misma en su
definición. Cuando se trata de herramientas de línea de comandos, generalmente significa aplicar el
comando a un directorio y todo lo que contiene.
cat
cp
echo
Salida de texto.
find
Recorre un árbol del sistema de archivos y busca archivos que coincidan con un conjunto
específico de criterios.
ls
mkdir
mv
pwd
164 | 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.4 Crear, mover y borrar archivos
rm
rmdir
Elimina directorios.
touch
Version: 2022-01-21 | Esta obra está bajo la licencia CC BY-NC-ND 4.0. | learning.lpi.org | 165
Linux Essentials (Versión 1.6) | Tema 2: Encontrando el camino en un sistema Linux
$ pwd
/tmp
$ find
.
./outfiles
./outfiles/text
/tmp
/tmp/outfiles
/tmp/outfiles/text
/tmp/outfiles/text/today X
/tmp/infiles X
/tmp/infiles/text X
/tmp/infiles/text/today X
Por lo general, -v activa la salida detallada. Hace que los respectivos programas muestren lo que
están haciendo a la hora de ser ejecutados.
$ rm -v a b
removed 'a'
removed 'b'
$ mv -v a b
'a' -> 'b'
$ cp -v b c
'b' -> 'c'
3. ¿Qué sucede si accidentalmente intenta copiar tres archivos en la misma línea de comando a un
archivo que ya existe en lugar de un directorio?
166 | 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.4 Crear, mover y borrar archivos
$ touch a b c d
$ cp a b c d
cp: target 'd' is not a directory
$ mv a a
mv: cannot move 'a' to a subdirectory of itself, 'a/a'
5. ¿Cómo eliminaría todos los archivos en su directorio actual que comienzan con old?
$ rm old*
log_3_2017_Jan_01.txt
log_+_2017_Feb_01.txt
log_b_2007_Mar_01.txt
log_f_201A_Wednesday_01.txt X
$ ls log_[a-z]_201?_*_01.txt
log_f_201A_Wednesday_01.txt
log_ [a-z] coincide con seguido de cualquier letra minúscula, por lo que tanto
log_
log_f_201A_Wednesday_01.txt como log_b_2007_Mar_01.txt coinciden. _201? coincide con
cualquier carácter individual, por lo que solo log_f_201A_Wednesday_01.txt coincide.
Finalmente * _01.txt coincide con todo lo que termina con _01.txt, por lo que nuestra opción
restante coincide.
Version: 2022-01-21 | Esta obra está bajo la licencia CC BY-NC-ND 4.0. | learning.lpi.org | 167
Linux Essentials (Versión 1.6) | Tema 2: Encontrando el camino en un sistema Linux
doc100
doc200
doc301
doc401
doc*
doc[1-4]*
doc?0?
doc[1-4]0?
168 | 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.4 Crear, mover y borrar archivos
$ man cp
-p same as --preserve=mode,ownership,timestamps
--preserve[=ATTR_LIST]
preserve the specified attributes (default: mode,ownership,time‐
stamps), if possible additional attributes: context, links,
xattr, all
2. ¿Qué hace el comando rmdir -p? Pruébelo y explique cómo difiere de rm -r.
Hace que rmdir se comporte de manera similar a mkdir -p. Si pasa un árbol de directorios
vacíos, los eliminará a todos.
$ find
.
./a
./a/b
./a/b/c
$ rmdir -p a/b/c
$ ls
3. NO EJECUTE REALMENTE ESTE COMANDO: ¿Qué cree que hará rm -ri /* ? (Honestamente,
¡no intentes hacer esto!)
Eliminará todos los archivos y directorios que pueda escribir su cuenta de usuario. Esto incluye
cualquier sistema de archivos de red.
4. Además de usar -i. ¿Es posible evitar que mv sobrescriba los archivos de destino?
Version: 2022-01-21 | Esta obra está bajo la licencia CC BY-NC-ND 4.0. | learning.lpi.org | 169
Linux Essentials (Versión 1.6) | Tema 2: Encontrando el camino en un sistema Linux
$ cat a
a
$ cat b
b
$ mv -n a b
$ cat b
b
5. Explique cp -u.
La opción -u hace que cp sólo copie un archivo si el destino no existe o es más antiguo que el
archivo de origen.
$ ls -l
total 24K
drwxr-xr-x 123 emma student 12K Feb 2 05:34 ..
drwxr-xr-x 2 emma student 4.0K Feb 2 06:56 .
-rw-r--r-- 1 emma student 2 Feb 2 06:56 a
-rw-r--r-- 1 emma student 2 Feb 2 07:00 b
$ cat a
a
$ cat b
b
$ cp -u a b
$ cat b
b
$ cp -u a c
$ ls -l
total 12
-rw-r--r-- 1 emma student 2 Feb 2 06:56 a
-rw-r--r-- 1 emma student 2 Feb 2 07:00 b
-rw-r--r-- 1 emma student 2 Feb 2 07:00 c
170 | 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) |
Version: 2022-01-21 | Esta obra está bajo la licencia CC BY-NC-ND 4.0. | learning.lpi.org | 171
Linux Essentials (Versión 1.6) | Tema 3: El poder de la línea de comandos
Importancia
2
• zip, unzip
172 | 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) | 3.1 Archivar ficheros desde la línea de comandos
3.1 Lección 1
Certificación: Linux Essentials
Versión: 1.6
Tema: 3 El poder de la línea de comandos
Objetivo: 3.1 Archivar ficheros desde la línea de comandos
Lección: 1 de 1
Introducción
La compresión consiste en reducir la cantidad de espacio que consume un conjunto de datos
específicos. Generalmente se utiliza para disminuir el espacio que se necesita para almacenar un
archivo y para reducir la cantidad de datos que se envían a través de una conexión de red.
La compresión funciona reemplazando patrones repetitivos en los datos. Supongamos que tienes una
novela. Algunas palabras son extremadamente comunes pero tienen múltiples caracteres, como la
palabra “el”. Podría reducir el tamaño de la novela significativamente si reemplazara estas palabras y
sus patrones comunes en un solo carácter. Por ejemplo, reemplace “el” con una letra griega que no se
usa en ninguna otra parte del texto. Tomando el ejemplo anterior, se puede decir que los algoritmos
de compresión tratan los datos de manera similar, pero de una forma más compleja.
La compresión tiene dos variantes, sin pérdida (lossless) y con pérdida (lossy). La información
comprimida con un algoritmo "lossless", puede ser descomprimida en su forma original. Los datos
comprimidos con un algoritmo "lossy" no pueden ser recuperados. Los algoritmos "lossy" se utilizan
generalmente en imágenes, video y audio donde la pérdida de calidad es imperceptible para los seres
humanos, irrelevante para el contexto o cuando se aprovecha una mejora en el rendimiento de la red.
Las herramientas de archivo (Archiving tools) se utilizan para agrupar archivos y directorios en un
Version: 2022-01-21 | Esta obra está bajo la licencia CC BY-NC-ND 4.0. | learning.lpi.org | 173
Linux Essentials (Versión 1.6) | Tema 3: El poder de la línea de comandos
solo fichero. Algunos usos comunes son las copias de seguridad, la agrupación del código fuente y la
retención de datos.
La herramienta tar es la más común para archivar información en Linux. La mayoría de las
distribuciones de Linux incluyen la versión GNU de tar, por lo que se tratará en esta lección. Por sí
solo este programa archiva información sin usar compresión.
Existen muchas herramientas de compresión en Linux, algunas de las más comunes son bzip2, gzip,
y xz. Es posible encontrar las tres en la mayoría de los sistemas, aunque pueden existir sistemas
antiguos o muy mínimos donde xz o bzip no están instalados. Los usuarios regulares de Linux
manejan archivos comprimidos con cualquiera de las tres herramientas, las tres usan algoritmos
diferentes, por lo que un archivo comprimido con una herramienta no puede ser descomprimido por
otra. La compresión trae consigo algunas desventajas; si se desea una tasa de compresión alta,
tomará más tiempo para comprimir y descomprimir el archivo, ya que se requiere más
procesamiento para encontrar patrones más complejos. Todas estas herramientas comprimen
información pero no pueden crear archivos que contengan múltiples ficheros.
Las herramientas zip y unzip están disponibles en sistemas Linux para manejar archivos .zip que
comúnmente son usados en sistemas Windows. Estas herramientas no están instaladas por defecto
en todos los sistemas, por lo que si se desea usarlas, necesitará realizar la instalación.
Afortunadamente, se encuentran (típicamente) en los repositorios de las distribuciones.
Herramientas de compresión
La cantidad de espacio en disco que se ahorra al comprimir los archivos depende de varios factores:
la naturaleza de los datos que se comprimen, el algoritmo utilizado para comprimir los datos y el
nivel de compresión. No todos los algoritmos admiten diferentes niveles de compresión.
174 | 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) | 3.1 Archivar ficheros desde la línea de comandos
$ mkdir ~/linux_essentials-3.1
$ cd ~/linux_essentials-3.1
$ mkdir compression archiving
$ cd compression
$ cat /etc/* > bigfile 2> /dev/null
$ cp bigfile bigfile2
$ cp bigfile bigfile3
$ cp bigfile bigfile4
$ ls -lh
total 2.8M
-rw-r--r-- 1 emma emma 712K Jun 23 08:08 bigfile
-rw-r--r-- 1 emma emma 712K Jun 23 08:08 bigfile2
-rw-r--r-- 1 emma emma 712K Jun 23 08:08 bigfile3
-rw-r--r-- 1 emma emma 712K Jun 23 08:08 bigfile4
Ahora se comprimen los archivos con cada una de las herramientas de compresión mencionadas:
$ bzip2 bigfile2
$ gzip bigfile3
$ xz bigfile4
$ ls -lh
total 1.2M
-rw-r--r-- 1 emma emma 712K Jun 23 08:08 bigfile
-rw-r--r-- 1 emma emma 170K Jun 23 08:08 bigfile2.bz2
-rw-r--r-- 1 emma emma 179K Jun 23 08:08 bigfile3.gz
-rw-r--r-- 1 emma emma 144K Jun 23 08:08 bigfile4.xz
Compare los tamaños de los archivos comprimidos con el archivo sin comprimir denominado
bigfile. Observe también cómo las herramientas de compresión agregaron extensiones a los
nombres de archivo y eliminaron los archivos sin comprimir.
Version: 2022-01-21 | Esta obra está bajo la licencia CC BY-NC-ND 4.0. | learning.lpi.org | 175
Linux Essentials (Versión 1.6) | Tema 3: El poder de la línea de comandos
$ bunzip2 bigfile2.bz2
$ gunzip bigfile3.gz
$ unxz bigfile4.xz
$ ls -lh
total 2.8M
-rw-r--r-- 1 emma emma 712K Jun 23 08:20 bigfile
-rw-r--r-- 1 emma emma 712K Jun 23 08:20 bigfile2
-rw-r--r-- 1 emma emma 712K Jun 23 08:20 bigfile3
-rw-r--r-- 1 emma emma 712K Jun 23 08:20 bigfile4
Nuevamente se observa que el archivo comprimido se borra una vez que se descomprime.
Algunas herramientas soportan diferentes niveles de compresión, normalmente un nivel más alto
requiere más memoria y ciclos de CPU, pero se obtiene un archivo comprimido más pequeño; lo
contrario es cierto para un nivel más bajo. A continuación se muestra un ejemplo utilizando xz y
gzip:
$ cp bigfile bigfile-gz1
$ cp bigfile bigfile-gz9
$ gzip -1 bigfile-gz1
$ gzip -9 bigfile-gz9
$ cp bigfile bigfile-xz1
$ cp bigfile bigfile-xz9
$ xz -1 bigfile bigfile-xz1
$ xz -9 bigfile bigfile-xz9
$ ls -lh bigfile bigfile-* *
total 3.5M
-rw-r--r-- 1 emma emma 712K Jun 23 08:08 bigfile
-rw-r--r-- 1 emma emma 205K Jun 23 13:14 bigfile-gz1.gz
-rw-r--r-- 1 emma emma 178K Jun 23 13:14 bigfile-gz9.gz
-rw-r--r-- 1 emma emma 156K Jun 23 08:08 bigfile-xz1.xz
-rw-r--r-- 1 emma emma 143K Jun 23 08:08 bigfile-xz9.xz
No es necesario descomprimir un archivo cada vez que se necesite. Las herramientas de compresión,
normalmente incluyen versiones especiales de aplicativos que son usados para leer archivos de texto,
por ejemplo, gzip incluye una versión de cat, grep, diff, less, more, etc. Para gzip, las herramientas
utilizan el prefijo z, mientras que el prefijo bz se usa para bzip2 y xz para xz. A continuación se
muestra un ejemplo del uso de zcat para mostrar el contenido de un archivo comprimido con gzip:
176 | 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) | 3.1 Archivar ficheros desde la línea de comandos
$ cp /etc/hosts ./
$ gzip hosts
$ zcat hosts.gz
127.0.0.1 localhost
Archivadores
Las distribuciones de Linux que incluyen la versión GNU de tar tiene muchas opciones, esta lección
cubrirá el subconjunto más utilizado.
$ cd ~/linux_essentials-3.1
$ tar cf archiving/3.1.tar compression
La opción c indica a tar que cree un nuevo archivo y la opción f el nombre del archivo a crear. El
argumento que sigue después de las opciones siempre será el nombre del archivo con el que se va a
trabajar. El resto de los argumentos son las rutas a cualquier fichero o directorio que se desee añadir,
listar o extraer del archivo. En el ejemplo, se añade el directorio compression y todo su contenido al
archivo comprimido.
Version: 2022-01-21 | Esta obra está bajo la licencia CC BY-NC-ND 4.0. | learning.lpi.org | 177
Linux Essentials (Versión 1.6) | Tema 3: El poder de la línea de comandos
Nótese cómo las opciones van precedidas de -. A diferencia de la mayoría de los programas, con tar,
el - no es necesario cuando se especifican opciones, aunque no causa ningún problema si se usa.
Se puede usar la opción -v para permitir que tar muestre los nombres de los
NOTE
archivos en los que opera cuando crea o extrae un archivo.
$ cd ~/linux_essentials-3.1/archiving
$ ls
3.1.tar
$ tar xf 3.1.tar
$ ls
3.1.tar compression
Si se necesita solamente un fichero fuera del archivo comprimido, se puede especificar después del
nombre del archivo y, si es necesario, se pueden especificar varios ficheros:
178 | 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) | 3.1 Archivar ficheros desde la línea de comandos
$ cd ~/linux_essentials-3.1/archiving
$ rm -rf compression
$ ls
3.1.tar
$ tar xvf 3.1.tar compression/hosts.gz
compression/
compression/bigfile-xz1.xz
compression/bigfile-gz9.gz
compression/hosts.gz
compression/bigfile2
compression/bigfile
compression/bigfile-gz1.gz
compression/bigfile-xz9.xz
compression/bigfile3
compression/bigfile4
$ ls
3.1.tar compression
$ ls compression
hosts.gz
Con la excepción de las rutas absolutas (rutas que empiezan por /), los archivos tar conservan la
ruta completa de los ficheros cuando son creados. Ya que el archivo 3.1.tar fue creado con un solo
directorio, ese directorio será creado en relación a su directorio de trabajo actual cuando sea
extraído. El siguiente ejemplo describe lo anterior:
$ cd ~/linux_essentials-3.1/archiving
$ rm -rf compression
$ cd ../compression
$ tar cf ../tar/3.1-nodir.tar *
$ cd ../archiving
$ mkdir untar
$ cd untar
$ tar -xf ../3.1-nodir.tar
$ ls
bigfile bigfile3 bigfile-gz1.gz bigfile-xz1.xz hosts.gz
bigfile2 bigfile4 bigfile-gz9.gz bigfile-xz9.xz
Version: 2022-01-21 | Esta obra está bajo la licencia CC BY-NC-ND 4.0. | learning.lpi.org | 179
Linux Essentials (Versión 1.6) | Tema 3: El poder de la línea de comandos
$ cd ~/linux_essentials-3.1/compression
$ ls
bigfile bigfile3 bigfile-gz1.gz bigfile-xz1.xz hosts.gz
bigfile2 bigfile4 bigfile-gz9.gz bigfile-xz9.xz
$ tar -czf gzip.tar.gz bigfile bigfile2 bigfile3
$ tar -cjf bzip2.tar.bz2 bigfile bigfile2 bigfile3
$ tar -cJf xz.tar.xz bigfile bigfile2 bigfile3
$ ls -l | grep tar
-rw-r--r-- 1 emma emma 450202 Jun 27 05:56 bzip2.tar.bz2
-rw-r--r-- 1 emma emma 548656 Jun 27 05:55 gzip.tar.gz
-rw-r--r-- 1 emma emma 147068 Jun 27 05:56 xz.tar.xz
Nótese que los archivos .tar tienen tamaños diferentes, esto demuestra que fueron comprimidos
satisfactoriamente. Si se crean archivos .tar comprimidos, siempre se debe añadir una segunda
extensión de archivo que indique el algoritmo utilizado: .xz, .bz, y .gz para xz, bzip2, y gzip,
respectivamente. También es posible utilizar extensiones más cortas como .tgz.
Es posible añadir ficheros a archivos tar sin comprimir. Para esto se utiliza la opción u. Si se intenta
añadir a un archivo comprimido, se obtendrá un error.
180 | 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 5: Seguridad y sistema de permisos de archivos
$ ls -lah
total 3,1M
drwxr-xr-x 2 carol carol 4,0K jun 17 17:27 .
drwxr-xr-x 5 carol carol 4,0K jun 17 17:29 ..
-rw-rw-r-- 1 carol carol 2,8M jun 17 15:45 compressed.zip
-rw-r--r-- 4 carol carol 77K jun 17 17:25 document.txt
-rw-rw-r-- 1 carol carol 216K jun 17 17:25 image.png
-rw-r--r-- 4 carol carol 77K jun 17 17:25 text.txt
◦ ¿Qué parámetro debes pasar a ls para ver qué inodo ocupa cada archivo?
4. Imagina que tienes en tu directorio ~/Documentos un archivo llamado clients.txt que contiene
algunos nombres de clientes y un directorio llamado somedir. Dentro de esto hay un archivo
diferente llamado también clients.txt con diferentes nombres. Para replicar esta estructura, usa
los siguientes comandos.
$ cd ~/Documents
$ echo "John, Michael, Bob" > clients.txt
$ mkdir somedir
$ echo "Bill, Luke, Karl" > somedir/clients.txt
Luego creas un enlace dentro de somedir llamado partners.txt apuntando a este archivo, con
los comandos:
$ cd somedir/
$ ln -s clients.txt partners.txt
436 | 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) | 5.4 Directorios y archivos especiales
Documents
|-- clients.txt
`-- somedir
|-- clients.txt
`-- partners.txt -> clients.txt
$ cd ~/Documents/
$ mv somedir/partners.txt .
$ less partners.txt
¿Seguirá funcionando el enlace? Si es así, ¿qué archivo tendrá su contenido listado? ¿Por qué?
Version: 2022-01-21 | Esta obra está bajo la licencia CC BY-NC-ND 4.0. | learning.lpi.org | 437
Linux Essentials (Versión 1.6) | Tema 5: Seguridad y sistema de permisos de archivos
Resumen
En esta lección usted aprendió:
• ln
• El parámetro -i a ls
438 | 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) | 5.4 Directorios y archivos especiales
Como no nos importa el archivo después de que el programa termine de ejecutarse, el directorio
correcto es /tmp.
2. ¿Cuál es el directorio temporal que debe ser limpiado durante el proceso de arranque?
3. ¿Cuál es el parámetro para chmod en modo simbólico para habilitar el sticky bit en un directorio?
El símbolo para el sticky bit en modo simbólico es t. Ya que queremos habilitar (agregar) este
permiso al directorio, el parámetro debe ser +t.
ln -s es el comando para crear un vínculo simbólico. Ya que debes especificar la ruta completa
del archivo al que estás enlazando, el comando es:
$ ln -s /home/carol/Documents/document.txt text.txt
5. Explique la diferencia entre un enlace duro a un archivo y una copia de este archivo.
Un enlace duro es sólo otro nombre para un archivo. Aunque parezca un duplicado del archivo
original, a todos los efectos tanto el enlace como el original son iguales, ya que apuntan a los
mismos datos en el disco. Los cambios realizados en el contenido del enlace se reflejarán en el
original y viceversa. Una copia es una entidad completamente independiente, que ocupa un lugar
diferente en el disco. Los cambios realizados en la copia no se reflejarán en el original y
viceversa.
Version: 2022-01-21 | Esta obra está bajo la licencia CC BY-NC-ND 4.0. | learning.lpi.org | 439
Linux Essentials (Versión 1.6) | Tema 5: Seguridad y sistema de permisos de archivos
$ touch recipes.txt
$ ln recipes.txt receitas.txt
$ ln -s recipes.txt rezepte.txt
$ ls -lhi
total 160K
5388833 -rw-r--r-- 4 carol carol 77K jun 17 17:25 receitas.txt
5388833 -rw-r--r-- 4 carol carol 77K jun 17 17:25 recipes.txt
5388837 lrwxrwxrwx 1 carol carol 12 jun 24 10:12 rezepte.txt -> recipes.txt
Recuerde que, como un enlace duro, receitas.txt apunta al mismo inodo que recipes.txt.
¿Qué pasaría con el enlace suave rezepte.txt si se borra el nombre receitas.txt? ¿Por qué?
El enlace blando rezepte.txt dejaría de funcionar. Esto se debe a que los enlaces suaves (soft
links) apuntan a nombres, no a inodos, y el nombre receitas.txt ya no existe, incluso si los
datos siguen en el disco bajo el nombre recetas.txt.
2. Imagina que tienes una unidad flash conectada en tu sistema, y montada en /media/tu
usuario/FlashA. Quieres crear en tu directorio principal un enlace llamado schematics.pdf,
apuntando al archivo esquema.pdf en el directorio raíz del pendrive. Entonces, escribes el
comando:
$ ln /media/youruser/FlashA/esquema.pdf ~/schematics.pdf
El comando fallaría. El mensaje de error sería Invalid cross-device link, y deja clara la razón:
los enlaces duros no pueden apuntar a un objetivo (target) en una partición o dispositivo
diferente. La única manera de crear un enlace como este es usar un enlace simbólico o soft,
añadiendo el parámetro s a ln.
440 | 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) | 5.4 Directorios y archivos especiales
$ ls -lah
total 3,1M
drwxr-xr-x 2 carol carol 4,0K jun 17 17:27 .
drwxr-xr-x 5 carol carol 4,0K jun 17 17:29 ..
-rw-rw-r-- 1 carol carol 2,8M jun 17 15:45 compressed.zip
-rw-r--r-- 4 carol carol 77K jun 17 17:25 document.txt
-rw-rw-r-- 1 carol carol 216K jun 17 17:25 image.png
-rw-r--r-- 4 carol carol 77K jun 17 17:25 text.txt
Cada archivo comienza con un recuento de enlaces de 1. Dado que el recuento de enlaces
para el archivo es de 4, hay tres enlaces que apuntan a ese archivo.
Son enlaces duros, ya que los enlaces suaves no aumentan el número de enlaces de un
archivo.
◦ ¿Qué parámetro debes pasar a ls para ver qué inodo ocupa cada archivo?
El parámetro es -i. El inode se mostrará como la primera columna en la salida de ls, como
se ve observa a continuación:
$ ls -lahi
total 3,1M
5388773 drwxr-xr-x 2 rigues rigues 4,0K jun 17 17:27 .
5245554 drwxr-xr-x 5 rigues rigues 4,0K jun 17 17:29 ..
5388840 -rw-rw-r-- 1 rigues rigues 2,8M jun 17 15:45 compressed.zip
5388833 -rw-r--r-- 4 rigues rigues 77K jun 17 17:25 document.txt
5388837 -rw-rw-r-- 1 rigues rigues 216K jun 17 17:25 image.png
5388833 -rw-r--r-- 4 rigues rigues 77K jun 17 17:25 text.txt
4. Imagina que tienes en tu directorio ~/Documentos un archivo llamado clients.txt que contiene
algunos nombres de clientes y un directorio llamado somedir. Dentro de esto hay un archivo
diferente llamado también clients.txt con diferentes nombres. Para replicar esta estructura, usa
los siguientes comandos.
Version: 2022-01-21 | Esta obra está bajo la licencia CC BY-NC-ND 4.0. | learning.lpi.org | 441
Linux Essentials (Versión 1.6) | Tema 5: Seguridad y sistema de permisos de archivos
$ cd ~/Documents
$ echo "John, Michael, Bob" > clients.txt
$ mkdir somedir
$ echo "Bill, Luke, Karl" > somedir/clients.txt
Luego creas un enlace dentro de somedir llamado partners.txt apuntando a este archivo, con
los comandos:
$ cd somedir/
$ ln -s clients.txt partners.txt
Documents
|-- clients.txt
`-- somedir
|-- clients.txt
`-- partners.txt -> clients.txt
$ cd ~/Documents/
$ mv somedir/partners.txt .
$ less partners.txt
¿Seguirá funcionando el enlace? Si es así, ¿qué archivo tendrá su contenido listado? ¿Por qué?
Este es un “truco”, pero el enlace funcionará, y el archivo listado será el de Documents, que
contiene los nombres John, Michael, Bob.
Recuerde que como no especificó la ruta completa al destino clients.txt al crear el enlace
blando partners.txt, la ubicación del destino se interpretará como relativa a la ubicación del
enlace, que en este caso es el directorio actual.
442 | 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) | 5.4 Directorios y archivos especiales
Para evitar esto, siempre especifica el camino completo al objetivo al crear un enlace simbólico.
Los permisos de acceso para partners.txt son rw-r—r--, ya que los enlaces siempre heredan los
mismos permisos de acceso que el objetivo.
Version: 2022-01-21 | Esta obra está bajo la licencia CC BY-NC-ND 4.0. | learning.lpi.org | 443
Linux Essentials (Versión 1.6) | Tema 5: Seguridad y sistema de permisos de archivos
Pie de imprenta
© 2022 Linux Professional Institute: Learning Materials, “Linux Essentials (Versión 1.6)”.
https://creativecommons.org/licenses/by-nc-nd/4.0/
Si bien el Linux Professional Institute se ha esforzado de buena fe para asegurar que la información y
las instrucciones contenidas en este trabajo sean precisas, el Linux Professional Institute renuncia a
toda responsabilidad por errores u omisiones, incluyendo sin limitación alguna la responsabilidad
por daños resultantes del uso o la confianza en este trabajo. El uso de la información e instrucciones
contenidas en este trabajo es bajo su propio riesgo. Si cualquier muestra de código u otra tecnología
que esta obra contenga o describa, está sujeta a licencias de código abierto o a derechos de propiedad
intelectual de otros, es su responsabilidad asegurarse de que el uso que haga de ellos cumpla con
dichas licencias y/o derechos.
LPI Learning Materials son una iniciativa del Linux Professional Institute (https://lpi.org). Los
materiales y sus traducciones pueden encontrarse en https://learning.lpi.org.
Para preguntas y comentarios sobre esta edición, así como sobre todo el proyecto, escriba un correo
electrónico a: learning@lpi.org.
444 | learning.lpi.org | Esta obra está bajo la licencia CC BY-NC-ND 4.0. | Version: 2022-01-21