LPI-Learning-Material-010-160-es

Descargar como pdf o txt
Descargar como pdf o txt
Está en la página 1de 128

Linux Essentials (Versión 1.

6) |

Tema 1: La Comunidad Linux y una carrera en el mundo del


código abierto

Version: 2022-01-21 | Esta obra está bajo la licencia CC BY-NC-ND 4.0. | learning.lpi.org | 1
Linux Essentials (Versión 1.6) | Tema 1: La Comunidad Linux y una carrera en el mundo del código abierto

1.1 Los sistemas operativos populares y la evolución de Linux


Referencia al objetivo del LPI
Linux Essentials version 1.6, Exam 010, Objective 1.1

Importancia
2

Áreas de conocimiento clave


• Distribuciones
• Sistemas embebidos
• Linux en la nube

Lista parcial de archivos, términos y utilidades


• Debian, Ubuntu (LTS)
• CentOS, openSUSE, Red Hat, SUSE
• Linux Mint, Scientific Linux
• Raspberry Pi, Raspbian
• Android

2 | learning.lpi.org | Esta obra está bajo la licencia CC BY-NC-ND 4.0. | Version: 2022-01-21
Linux Essentials (Versión 1.6) | 1.1 Los sistemas operativos populares y la evolución de Linux

1.1 Lección 1
Certificación: Linux Essentials
Versión: 1.6
Tema: 1 La Comunidad Linux y una carrera en el
mundo del código abierto
Objetivo: 1.1 Los sistemas operativos populares y la
evolución de Linux
Lección: 1 de 1

Introducción
Linux es uno de los sistemas operativos más populares; su desarrollo se inició en 1991 por Linus
Torvalds. El sistema operativo se inspiró en Unix, otro sistema operativo desarrollado en la década
de 1970 por AT&T Laboratories. Unix estaba orientado a pequeñas computadoras; en ese momento,
las computadoras “pequeñas” se consideraban máquinas que no necesitaban una sala completa con
aire acondicionado y costaban menos de un millón de dólares. Más tarde, fueron consideradas como
máquinas que podían ser transportadas por dos personas. En ese momento, Unix no estaba
disponible en computadoras pequeñas como las computadoras de oficina basadas en la plataforma
x86. Por lo tanto, Linus, que era un estudiante en ese momento, comenzó a implementar un sistema
operativo tipo Unix que se suponía que debía ejecutarse en esta plataforma.

Principalmente, Linux usa los mismos principios e ideas básicas de Unix, pero Linux en sí no
contiene código Unix, ya que es un proyecto independiente. Linux no está respaldado por una
compañía individual sino por una comunidad internacional de programadores. Como está disponible
gratuitamente, puede ser utilizado por cualquier persona sin restricciones.

Version: 2022-01-21 | Esta obra está bajo la licencia CC BY-NC-ND 4.0. | learning.lpi.org | 3
Linux Essentials (Versión 1.6) | Tema 1: La Comunidad Linux y una carrera en el mundo del código abierto

Distribuciones

Una distribución de Linux es un paquete que consiste en un kernel de Linux y una selección de
aplicaciones mantenidas por una empresa o comunidad de usuarios. El objetivo de una distribución
es optimizar el núcleo y las aplicaciones que se ejecutan en el sistema operativo para un determinado
caso de uso o grupo de usuarios. Las distribuciones a menudo incluyen herramientas específicas de
distribución para la instalación de software y la administración del sistema. Es por esto que algunas
distribuciones se usan principalmente para entornos de escritorio los cuales deben ser fáciles de usar,
mientras que otras se usan principalmente para ejecutarse en servidores utilizando los recursos
disponibles de la manera más eficiente posible.

Otra forma de clasificar las distribuciones es haciendo referencia a la distribución familiar a la que
pertenecen. Las distribuciones de la familia de Debian utilizan el gestor de paquetes dpkg para
gestionar el software que se ejecuta en el sistema operativo. Los paquetes que pueden instalarse con
su gestor son mantenidos por miembros voluntarios de la comunidad. Los mantenedores utilizan el
formato de paquete deb para especificar cómo se instala el software en el sistema operativo y cómo
está configurado de forma predeterminada. Al igual que una distribución, un paquete es un conjunto
de software con su correspondiente configuración y documentación que facilita el proceso de
instalación, actualización y uso del software.

La distribución Debian GNU/Linux es la distribución más grande de la familia Debian. El proyecto


Debian GNU/Linux fue lanzado por Ian Murdock en 1993 y hoy en día miles de voluntarios están
trabajando en el proyecto con el objetivo de proporcionar un sistema operativo muy fiable y
promover la visión de Richard Stallman de un sistema operativo que respete las libertades del
usuario para ejecutar, estudiar, distribuir y mejorar el software. Esta es la razón por la cual no
proporciona ningún software propietario por defecto.

Ubuntu es otra distribución basada en Debian que vale la pena mencionar. Ubuntu fue creado por
Mark Shuttleworth y su equipo en 2004, con la misión de brindar un entorno de escritorio fácil de
usar. La misión de Ubuntu es proporcionar software gratuito a todos en todo el mundo, así como
reducir el costo de los servicios profesionales. La distribución tiene lanzamientos programados cada
seis meses con un soporte a largo plazo cada 2 años.

Red Hat es una distribución de Linux desarrollada y mantenida por la compañía de software con el
mismo nombre, que fue adquirida por IBM en 2019. La distribución de Red Hat Linux se inició en
1994 y se renombró en 2003 a Red Hat Enterprise Linux, a menudo abreviado como RHEL. Se
proporciona a las empresas como una solución empresarial confiable que es compatible con Red Hat
e incluye software que tiene como objetivo facilitar el uso de Linux en entornos de servidores
profesionales. Algunos de sus componentes requieren suscripciones o licencias de pago. El proyecto
CentOS utiliza el código fuente disponible de Red Hat Enterprise Linux y lo compila en una
distribución que está disponible de forma totalmente gratuita, sin embargo, esta distribución no tiene

4 | learning.lpi.org | Esta obra está bajo la licencia CC BY-NC-ND 4.0. | Version: 2022-01-21
Linux Essentials (Versión 1.6) | 1.1 Los sistemas operativos populares y la evolución de Linux

soporte comercial.

Tanto RHEL como CentOS están optimizados para su uso en entornos de servidor. El proyecto
Fedora se fundó en 2003 y crea una distribución de Linux dirigida a computadoras de escritorio. Red
Hat inició y mantiene la distribución de Fedora desde entonces. Fedora es muy progresista y adopta
nuevas tecnologías muy rápidamente y a veces se considera un banco de pruebas para nuevas
tecnologías que luego podrían incluirse en RHEL. Todas las distribuciones basadas en Red Hat usan
el formato de paquete rpm.

La empresa SUSE fue fundada en 1992 en Alemania como un proveedor de servicios Unix. La
primera versión de SUSE Linux se lanzó en 1994. A lo largo de los años, SUSE Linux se hizo conocido
principalmente por su herramienta de configuración YaST. Esta herramienta permite a los
administradores instalar y configurar software y hardware, así como servicios y redes. Al igual que
RHEL, SUSE lanza SUSE Linux Enterprise Server, que es su edición comercial. Esta distribución se
publica con menos frecuencia y es adecuada para la implementación empresarial y de producción. Se
distribuye como un servidor, así como un entorno de escritorio con paquetes adecuados para el
propósito. En 2004, SUSE lanzó el proyecto openSUSE, que abrió oportunidades para que los
desarrolladores y usuarios probaran y desarrollaran aún más el sistema. La distribución de openSUSE
está disponible gratuitamente para su descarga.

A lo largo de los años se han lanzado distribuciones independientes, algunas basadas en Red Hat o
Ubuntu, otras diseñadas para mejorar una propiedad específica de un sistema o hardware. Otras
construidas con funcionalidades específicas como QubesOS, un entorno de escritorio muy seguro, o
Kali Linux, que proporciona un entorno para explotar las vulnerabilidades de software, utilizado
principalmente por los expertos en pruebas de penetración, y otras superpequeñas distribuciones de
Linux diseñadas para ejecutarse de forma específica en contenedores Linux, como Docker. También
hay distribuciones creadas específicamente para componentes de sistemas embebidos e incluso
dispositivos inteligentes.

Sistemas embebidos

Los sistemas embebidos son una combinación de hardware y software diseñados para tener una
función específica dentro de un gran sistema. Por lo general, forman parte de otros dispositivos que
ayudan a controlarlos. Los sistemas embebidos se encuentran en aplicaciones de automoción,
médicas e incluso militares. Debido a su gran variedad de aplicaciones varios sistemas operativos
basados en el kernel de Linux han sido desarrollados para ser utilizados en sistemas embebidos. Una
parte importante de los dispositivos inteligentes tiene un sistema operativo basado en el kernel de
Linux.

Por lo tanto, con los sistemas embebidos surge el software embebido. El propósito de este software es
acceder al hardware y hacerlo utilizable. Entre las principales ventajas de Linux sobre cualquier

Version: 2022-01-21 | Esta obra está bajo la licencia CC BY-NC-ND 4.0. | learning.lpi.org | 5
Linux Essentials (Versión 1.6) | Tema 1: La Comunidad Linux y una carrera en el mundo del código abierto

software embebido propietario se encuentran, la compatibilidad de plataformas entre vendedores, el


desarrollo, el soporte y la ausencia de cuotas por concepto de licencia. Dos de los proyectos de
software embebido más populares son Android, que se utiliza principalmente en teléfonos móviles a
través de una variedad de proveedores, y Raspbian que se utiliza principalmente en Raspberry Pi.

Android

Android es un sistema operativo para dispositivos móviles desarrollado principalmente por Google.
Android Inc. fue fundado en 2003 en Palo Alto, California. La compañía inicialmente creó un sistema
operativo destinado a funcionar en cámaras digitales. En 2005, Google adquirió Android Inc. y lo
desarrolló para convertirse en uno de los mayores sistemas operativos para dispositivos móviles.

La base de Android es una versión modificada del kernel de Linux con software adicional de código
abierto. El sistema operativo está desarrollado principalmente para dispositivos con pantalla táctil,
pero Google ha desarrollado versiones para televisores y relojes de pulsera. Se han desarrollado
diferentes versiones de Android para consolas de juegos, cámaras digitales y PCs.

El código abierto de Android está disponible gratuitamente como Android Open Source Project
(AOSP). Google ofrece una serie de componentes propietarios además del núcleo de Android. Entre
los componentes se incluyen aplicaciones como Google Calendar, Google Maps, Google Mail, el
navegador Chrome y Google Play Store, que facilita la instalación de aplicaciones. La mayoría de los
usuarios consideran estas herramientas una parte integral de su experiencia con Android. Por lo
tanto, casi todos los dispositivos móviles enviados con Android a Europa y América incluyen el
software patentado de Google.

Android en dispositivos integrados tiene muchas ventajas. El sistema operativo es intuitivo y fácil de
usar con una interfaz gráfica de usuario, tiene una comunidad de desarrolladores muy amplia, así
que es fácil encontrar ayuda para el desarrollo. También es compatible con la mayoría de los
proveedores de hardware con un controlador de Android, por lo tanto, es fácil y rentable crear un
prototipo para un sistema entero.

Raspbian y Raspberry Pi

Raspberry Pi es una computadora de bajo costo del tamaño de una tarjeta de crédito que puede
funcionar como un ordenador de sobremesa con todas sus funciones, pero que a su vez puede
utilizarse dentro de un sistema Linux integrado. Este ordenador fue desarrollado por la Fundación
Raspberry Pi, que es una organización benéfica educativa con sede en el Reino Unido. Su principal
propósito es enseñar a los jóvenes a aprender a programar y comprender la funcionalidad de las
computadoras. El Raspberry Pi se puede diseñar y programar para realizar tareas u operaciones que
forman parte de un sistema mucho más complejo.

Las especialidades de Raspberry Pi incluyen un conjunto de pines de Entrada/Salida de Propósito

6 | learning.lpi.org | Esta obra está bajo la licencia CC BY-NC-ND 4.0. | Version: 2022-01-21
Linux Essentials (Versión 1.6) | 1.1 Los sistemas operativos populares y la evolución de Linux

General (GPIO) que pueden ser utilizados para acoplar dispositivos electrónicos y placas de
extensión, lo que permite utilizar Raspberry Pi como plataforma para el desarrollo de hardware, ya
que a pesar de que estaba pensado para fines educativos se utiliza hoy en día en varios proyectos de
DIY (hágalo usted mismo), así como para la creación de prototipos industriales en el desarrollo de
sistemas embebidos.

La Raspberry Pi utiliza procesadores ARM. Varios sistemas operativos, incluido Linux, corren sobre
Raspberry Pi. Como Raspberry Pi no contiene un disco duro, el sistema operativo se inicia desde una
tarjeta de memoria SD. Una de las distribuciones de Linux más destacadas para Raspberry Pi es
Raspbian. Como su nombre indica, pertenece a la familia de distribución de Debian. Está
personalizado para instalarse en el hardware de Raspberry Pi y proporciona más de 35000 paquetes
optimizados para este entorno. Además de Raspbian, existen muchas otras distribuciones de Linux
para Raspberry Pi, como, por ejemplo, Kodi, que convierte a Raspberry Pi en un centro de medios.

Linux y el Cloud Computing

El término cloud computing se refiere a una forma estandarizada de consumir recursos informáticos,
ya sea comprándolos a un proveedor público de cloud computing o ejecutando una nube privada.
Según informes del 2017, Linux ejecuta el 90% de la carga de trabajo de la nube pública. Todos los
proveedores de cloud computing, desde Amazon Web Services (AWS) hasta Google Cloud Platform
(GCP) ofrecen diferentes formas de trabajar con Linux. Incluso Microsoft, una empresa cuyo antiguo
CEO comparó Linux con un cáncer, ofrece hoy en día máquinas virtuales basadas en Linux en su
nube Azure.

Linux generalmente es ofrecido como parte de Infrastructure as a Service (IaaS). Las instancias IaaS
son máquinas virtuales que se aprovisionan en cuestión de minutos en la nube. Cuando se inicia una
instancia IaaS, se elige una imagen que contiene los datos que se desplegarán en la nueva instancia.
Los proveedores de nube ofrecen varias imágenes que contienen instalaciones listas para ejecutar
tanto de las distribuciones populares, así como sus propias versiones de Linux. El usuario podrá
elegir una imagen que contiene su distribución preferida y acceder a una instancia de la nube que
ejecute esta distribución poco después de haberse creado. La mayoría de los proveedores agregan
herramientas a sus imágenes para ajustar la instalación a una instancia específica de la nube. Estas
herramientas pueden, por ejemplo, extender los sistemas de archivos de la imagen para que se
ajusten al disco duro real de la máquina virtual.

Version: 2022-01-21 | Esta obra está bajo la licencia CC BY-NC-ND 4.0. | learning.lpi.org | 7
Linux Essentials (Versión 1.6) | Tema 1: La Comunidad Linux y una carrera en el mundo del código abierto

Ejercicios guiados
1. ¿En qué se diferencia Debian GNU/Linux de Ubuntu? Nombre dos aspectos.

2. ¿Cuáles son los entornos/plataformas más comunes para los que se utiliza Linux? Nombre tres
entornos/plataformas diferentes y nombre una distribución que pueda utilizarse para cada uno.

3. Se planea instalar una distribución de Linux en un nuevo entorno. Nombre cuatro aspectos que
deban ser considerados al elegir una distribución.

4. Nombre tres dispositivos en los que se pueda ejecutar el sistema operativo Android, que no sean
teléfonos inteligentes.

5. Explique tres ventajas importantes de la computación en la nube.

8 | learning.lpi.org | Esta obra está bajo la licencia CC BY-NC-ND 4.0. | Version: 2022-01-21
Linux Essentials (Versión 1.6) | 1.1 Los sistemas operativos populares y la evolución de Linux

Ejercicios exploratorios
1. Teniendo en cuenta el costo y el rendimiento, ¿Qué distribuciones son más adecuadas para una
empresa que tiene como objetivo reducir los costos de licencias, manteniendo el rendimiento al
máximo? Explique por qué.

2. ¿Cuáles son las principales ventajas de Raspberry Pi y qué funciones pueden tener en los
negocios?

3. ¿Qué gama de distribuciones ofrecen Amazon Cloud Services y Google Cloud? Nombre al menos
tres comunes y dos diferentes.

Version: 2022-01-21 | Esta obra está bajo la licencia CC BY-NC-ND 4.0. | learning.lpi.org | 9
Linux Essentials (Versión 1.6) | Tema 1: La Comunidad Linux y una carrera en el mundo del código abierto

Resumen
En esta lección usted aprendió:

• Diferentes distribuciones de Linux.


• ¿Qué son los sistemas embebidos Linux?
• ¿Cómo se usan los sistemas embebidos de Linux?
• Diferentes usos de Android.
• Diferentes usos de Raspberry Pi.
• ¿Qué es la computación en la nube'
• ¿Qué papel juega Linux en la computación en la nube?

10 | learning.lpi.org | Esta obra está bajo la licencia CC BY-NC-ND 4.0. | Version: 2022-01-21
Linux Essentials (Versión 1.6) | 1.1 Los sistemas operativos populares y la evolución de Linux

Respuestas a los ejercicios guiados


1. ¿En qué se diferencia Debian GNU/Linux de Ubuntu? Nombre dos aspectos.

Ubuntu está basado en un snapshot de Debian, es por esto que existen muchas características
similares entre ellos. Sin embargo, existen otras diferencias significativas entre las dos
distribuciones. La primera sería la aplicabilidad para los principiantes. Ubuntu se recomienda
para principiantes por su facilidad de uso. Por otro lado, Debian se recomienda para usuarios
más avanzados. La mayor diferencia está en la complejidad del proceso de instalación el cual
Ubuntu hace más simple al usuario.

Otra diferencia pudiera estar relacionada con la estabilidad de cada distribución. Debian se
considera más estable comparada con Ubuntu. Debian recibe pocas actualizaciones que son
probadas minuciosamente por lo que el sistema, de forma general, es más estable. Por otro lado,
Ubuntu permite al usuario usar las últimas versiones de software y nuevas tecnologías.

2. ¿Cuáles son los entornos/plataformas más comunes para los que se utiliza Linux? Nombre tres
entornos/plataformas diferentes y nombre una distribución que pueda utilizarse para cada uno.

Algunos de los entornos/plataformas comunes serían teléfonos inteligentes, computadoras de


escritorio y servidores. En teléfonos inteligentes, puede ser utilizado por distribuciones como
Android. En escritorios y servidores, puede utilizarse por cualquier distribución, que sea
adecuada a la funcionalidad de ese equipo, desde Debian, Ubuntu a CentOS y Red Hat Enterprise
Linux.

3. Se planea instalar una distribución de Linux en un nuevo entorno. Nombre cuatro aspectos que
deban ser considerados al elegir una distribución.

Al elegir una distribución, algunos de los aspectos principales que se deben considerar son el
costo, el rendimiento, la escalabilidad, la estabilidad y la demanda de hardware del sistema.

4. Nombre tres dispositivos en los que se pueda ejecutar el sistema operativo Android, que no sean
teléfonos inteligentes.

Otros dispositivos en los que se ejecuta Android son televisores inteligentes, tabletas, Android
Auto y relojes inteligentes.

5. Explique tres ventajas importantes de la computación en la nube.

Las principales ventajas de la computación en la nube son la flexibilidad, la fácil recuperación y


el bajo costo de uso. Los servicios basados en la nube son fáciles de implementar y escalar,
dependiendo de los requisitos del negocio. Tiene una gran ventaja en las soluciones de respaldo

Version: 2022-01-21 | Esta obra está bajo la licencia CC BY-NC-ND 4.0. | learning.lpi.org | 11
Linux Essentials (Versión 1.6) | Tema 1: La Comunidad Linux y una carrera en el mundo del código abierto

y recuperación, ya que permite a las empresas recuperarse de los incidentes más rápido y con
menos repercusiones. Además, reduce los costos de operación, ya que permite pagar solo por los
recursos que utiliza una empresa en un modelo basado en suscripción.

12 | learning.lpi.org | Esta obra está bajo la licencia CC BY-NC-ND 4.0. | Version: 2022-01-21
Linux Essentials (Versión 1.6) | 1.1 Los sistemas operativos populares y la evolución de Linux

Respuestas a los ejercicios exploratorios


1. Teniendo en cuenta el costo y el rendimiento, ¿Qué distribuciones son más adecuadas para una
empresa que tiene como objetivo reducir los costos de licencias, manteniendo el rendimiento al
máximo? Explique por qué.

Una de las distribuciones más adecuadas para ser utilizada por empresas es CentOS. Esto se debe
a que incorpora todos los productos de Red Hat que utiliza en su sistema operativo comercial, a
la vez que es de uso gratuito. Del mismo modo, las versiones de Ubuntu LTS garantizan la
compatibilidad durante un período de tiempo más largo. Las versiones estables de Debian
GNU/Linux también se usan a menudo en entornos empresariales.

2. ¿Cuáles son las principales ventajas de Raspberry Pi y qué funciones pueden tener en los
negocios?

A pesar de que el RaspberryPi es muy pequeño, puede utilizarse como una computadora normal.
Además, es de bajo costo y puede manejar el tráfico web y muchas otras funcionalidades. Se
puede usar como un servidor, cortafuegos y se puede usar como placa principal para robots y
muchos otros dispositivos pequeños.

3. ¿Qué gama de distribuciones ofrecen Amazon Cloud Services y Google Cloud? Nombre al menos
tres comunes y dos diferentes.

Las distribuciones comunes entre Amazon y Google Cloud Services son Ubuntu, CentOS y Red
Hat Enterprise Linux. Cada proveedor de la nube también ofrece distribuciones específicas que el
otro no ofrece. Amazon tiene Amazon Linux y Kali Linux, mientras que Google ofrece el uso de
servidores FreeBSD y Windows.

Version: 2022-01-21 | Esta obra está bajo la licencia CC BY-NC-ND 4.0. | learning.lpi.org | 13
Linux Essentials (Versión 1.6) | Tema 1: La Comunidad Linux y una carrera en el mundo del código abierto

1.2 Principales aplicaciones de código abierto


Referencia al objetivo del LPI
Linux Essentials version 1.6, Exam 010, Objective 1.2

Importancia
2

Áreas de conocimiento clave


• Aplicaciones de escritorio
• Aplicaciones de servidor
• Lenguajes de programación
• Herramientas de gestión de paquetes y repositorios

Lista parcial de archivos, términos y utilidades


• OpenOffice.org, LibreOffice, Thunderbird, Firefox, GIMP
• Nextcloud, ownCloud
• Apache HTTPD, NGINX, MariaDB, MySQL, NFS, Samba
• C, Java, JavaScript, Perl, shell, Python, PHP
• dpkg, apt-get, rpm, yum

14 | learning.lpi.org | Esta obra está bajo la licencia CC BY-NC-ND 4.0. | Version: 2022-01-21
Linux Essentials (Versión 1.6) | 1.2 Principales aplicaciones de código abierto

1.2 Lección 1
Certificación: Linux Essentials
Versión: 1.6
Tema: 1 La comunidad Linux y una carrera en el Open
Source
Objetivo: 1.2 Principales aplicaciones de código abierto
Lección: 1 de 1

Introducción
Una aplicación es un programa informático que no está directamente relacionado con el
funcionamiento de la computadora, sino de las tareas que realiza el usuario. Las distribuciones de
Linux ofrecen muchas opciones de aplicaciones para realizar una variedad de tareas, tales como
aplicaciones de oficina, navegadores web, reproductores y editores multimedia, etc. A menudo hay
más de una aplicación o herramienta para realizar un trabajo en particular, y es el usuario quien
debe elegir la aplicación que mejor se adapte a sus necesidades.

Paquetes de software

Casi todas las distribuciones de Linux ofrecen un conjunto aplicaciones preinstaladas. Además de
esas aplicaciones preinstaladas, una distribución tiene un repositorio de paquetes con una vasta
colección de aplicaciones disponibles para instalar a través de su gestor de paquetes package
manager. Aunque las diversas distribuciones ofrecen aproximadamente las mismas aplicaciones,
existen varios sistemas de gestión de paquetes diferentes para varias distribuciones, por ejemplo,
Debian, Ubuntu y Linux Mint utilizan las herramientas dpkg, apt-get y apt para instalar paquetes de
software, generalmente denominados paquetes DEB. Por el contrario, distribuciones como Red Hat,

Version: 2022-01-21 | Esta obra está bajo la licencia CC BY-NC-ND 4.0. | learning.lpi.org | 15
Linux Essentials (Versión 1.6) | Tema 1: La Comunidad Linux y una carrera en el mundo del código abierto

Fedora y CentOS usan los comandos rpm, yum y dnf que a su vez instalan paquetes RPM. Como el
empaquetado de la aplicación es diferente para cada familia de distribución, es muy importante
instalar paquetes desde el repositorio correcto diseñado para la distribución en particular. El usuario
final normalmente no tiene que preocuparse por esos detalles, ya que el gestor de paquetes de la
distribución elegirá los paquetes adecuados, las dependencias necesarias y las actualizaciones
futuras. Las dependencias son paquetes auxiliares que necesitan los programas. Por ejemplo, si una
librería proporciona funciones para tratar imágenes JPEG que son utilizadas por varios programas, es
probable que esta librería esté empaquetada en su propio paquete del que dependen todas las
aplicaciones que utilizan la librería.

Los comandos dpkg y rpm operan en archivos de paquetes individuales. En la práctica, casi todas las
tareas de gestión de paquetes son realizadas por los comandos apt-get o apt en sistemas que utilizan
paquetes DEB o por yum o dnf en sistemas que utilizan paquetes RPM. Estos comandos funcionan
con catálogos de paquetes. Se puede descargar nuevos paquetes y sus dependencias, además
comprobar si hay versiones más nuevas de los paquetes instalados.

Instalación de paquetes

Suponga que ha oído hablar de un comando llamado figlet que imprime texto agrandado en el
terminal y desea probarlo; sin embargo, obtendrá el siguiente mensaje después de ejecutar el
comando figlet:

$ figlet
-bash: figlet: command not found

Esto significa que probablemente el paquete no esté instalado en su sistema. Si su distribución


funciona con paquetes DEB, puede buscar en sus repositorios usando apt-cache search
package_name o apt search package_name. El comando apt-cache se usa para buscar paquetes y
para listar información sobre paquetes disponibles. El siguiente comando busca cualquier ocurrencia
del término “figlet” en los nombres y descripciones del paquete:

$ apt-cache search figlet


figlet - Make large character ASCII banners out of ordinary text

La búsqueda identificó un paquete llamado figlet que corresponde al comando que falta. La
instalación y eliminación de un paquete requiere permisos especiales otorgados solo al administrador
del sistema: el usuario llamado root. En los sistemas de escritorio, los usuarios comunes pueden
instalar o eliminar paquetes anteponiendo el comando sudo a los comandos de instalación /
eliminación. Eso requerirá que escriba su contraseña para continuar. Para los paquetes DEB, la

16 | learning.lpi.org | Esta obra está bajo la licencia CC BY-NC-ND 4.0. | Version: 2022-01-21
Linux Essentials (Versión 1.6) | 1.2 Principales aplicaciones de código abierto

instalación se realiza con el comando apt-get install package_name o apt install package_name:

$ sudo apt-get install figlet


Reading package lists... Done
Building dependency tree
Reading state information... Done
The following NEW packages will be installed:
figlet
0 upgraded, 1 newly installed, 0 to remove and 0 not upgraded.

En este punto el paquete se descargará e instalará en el sistema, así como las dependencias que
eventualmente necesite el paquete:

Need to get 184 kB of archives.


After this operation, 741 kB of additional disk space will be used.
Get:1 http://archive.raspbian.org/raspbian stretch/main armhf figlet armhf 2.2.5-2
[184 kB]
Fetched 184 kB in 0s (213 kB/s)
Selecting previously unselected package figlet.
(Reading database ... 115701 files and directories currently installed.)
Preparing to unpack .../figlet_2.2.5-2_armhf.deb ...
Unpacking figlet (2.2.5-2) ...
Setting up figlet (2.2.5-2) ...
update-alternatives: using /usr/bin/figlet-figlet to provide /usr/bin/figlet
(figlet) in auto mode
Processing triggers for man-db (2.7.6.1-2) ...

Una vez finalizada la descarga, todos los archivos son copiados a las ubicaciones correspondiente, se
realizará cualquier configuración adicional y el comando estará disponible:

$ figlet Awesome!
_ _
/ \__ _____ ___ ___ _ __ ___ ___| |
/ _ \ \ /\ / / _ \/ __|/ _ \| '_ ` _ \ / _ \ |
/ ___ \ V V / __/\__ \ (_) | | | | | | __/_|
/_/ \_\_/\_/ \___||___/\___/|_| |_| |_|\___(_)

En distribuciones basadas en paquetes RPM, las búsquedas se realizan usando yum search
package_name o dnf search package_name. Supongamos que desea mostrar algún texto de una forma
más irreverente, seguido de una vaca caricaturesca, pero no está seguro del paquete que puede

Version: 2022-01-21 | Esta obra está bajo la licencia CC BY-NC-ND 4.0. | learning.lpi.org | 17
Linux Essentials (Versión 1.6) | Tema 1: La Comunidad Linux y una carrera en el mundo del código abierto

realizar esa tarea:

$ yum search speaking cow


Last metadata expiration check: 1:30:49 ago on Tue 23 Apr 2019 11:02:33 PM -03.
==================== Name & Summary Matched: speaking, cow ====================
cowsay.noarch : Configurable speaking/thinking cow

Después de encontrar un paquete adecuado en el repositorio, puede instalarse con yum install
package_name o dnf install package_name:

$ sudo yum install cowsay


Last metadata expiration check: 2:41:02 ago on Tue 23 Apr 2019 11:02:33 PM -03.
Dependencies resolved.
==============================================================================
Package Arch Version Repository Size
==============================================================================
Installing:
cowsay noarch 3.04-10.fc28 fedora 46 k

Transaction Summary
==============================================================================
Install 1 Package

Total download size: 46 k


Installed size: 76 k
Is this ok [y/N]: y

Una vez más, el paquete deseado y todas sus posibles dependencias serán descargados e instalados:

18 | learning.lpi.org | Esta obra está bajo la licencia CC BY-NC-ND 4.0. | Version: 2022-01-21
Linux Essentials (Versión 1.6) | 1.2 Principales aplicaciones de código abierto

Downloading Packages:
cowsay-3.04-10.fc28.noarch.rpm 490 kB/s | 46 kB 00:00
==============================================================================
Total 53 kB/s | 46 kB 00:00
Running transaction check
Transaction check succeeded.
Running transaction test
Transaction test succeeded.
Running transaction
Preparing : 1/1
Installing : cowsay-3.04-10.fc28.noarch 1/1
Running scriptlet: cowsay-3.04-10.fc28.noarch 1/1
Verifying : cowsay-3.04-10.fc28.noarch 1/1

Installed:
cowsay.noarch 3.04-10.fc28

Complete!

El comando cowsay hace exactamente lo que su nombre indica:

$ cowsay "Brought to you by yum"


_______________________
< Brought to you by yum >
-----------------------
\ ^__^
\ (oo)\_______
(__)\ )\/\
||----w |
|| ||

Aunque puedan parecer inútiles, los comandos figlet y cowsay proporcionan una forma de llamar la
atención de otros usuarios sobre la información relevante.

Eliminación de paquetes

Los mismos comandos utilizados para instalar paquetes se utilizan para eliminarlos. Todos los
comandos aceptan la palabra clave remove para desinstalar un paquete instalado: apt-get remove
package_name o apt remove package_name para paquetes DEB y yum remove package_name o dnf
remove package_name para paquetes RPM. El comando sudo también es necesario para realizar la
eliminación. Por ejemplo, para eliminar el paquete figlet instalado previamente en una distribución

Version: 2022-01-21 | Esta obra está bajo la licencia CC BY-NC-ND 4.0. | learning.lpi.org | 19
Linux Essentials (Versión 1.6) | Tema 1: La Comunidad Linux y una carrera en el mundo del código abierto

basada en DEB:

$ sudo apt-get remove figlet


Reading package lists... Done
Building dependency tree
Reading state information... Done
The following packages will be REMOVED:
figlet
0 upgraded, 0 newly installed, 1 to remove and 0 not upgraded.
After this operation, 741 kB disk space will be freed.
Do you want to continue? [Y/n] Y

Después de confirmar la operación, el paquete se borra del sistema:

(Reading database ... 115775 files and directories currently installed.)


Removing figlet (2.2.5-2) ...
Processing triggers for man-db (2.7.6.1-2) ...

Un procedimiento similar se realiza en un sistema basado en RPM, por ejemplo, para eliminar el
paquete cowsay previamente instalado de una distribución basada en RPM:

$ sudo yum remove cowsay


Dependencies resolved.
==================================================================================
Package Arch Version Repository Size
==================================================================================
Removing:
cowsay noarch 3.04-10.fc28 @fedora 76 k

Transaction Summary
==================================================================================
Remove 1 Package

Freed space: 76 k
Is this ok [y/N]: y

Asimismo, se solicita una confirmación y se borra el paquete del sistema:

20 | learning.lpi.org | Esta obra está bajo la licencia CC BY-NC-ND 4.0. | Version: 2022-01-21
Linux Essentials (Versión 1.6) | 1.2 Principales aplicaciones de código abierto

Running transaction check


Transaction check succeeded.
Running transaction test
Transaction test succeeded.
Running transaction
Preparing : 1/1
Erasing : cowsay-3.04-10.fc28.noarch 1/1
Running scriptlet: cowsay-3.04-10.fc28.noarch 1/1
Verifying : cowsay-3.04-10.fc28.noarch 1/1

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

También hay muchas aplicaciones dedicadas a la reproducción multimedia. La aplicación más


popular para la reproducción de video es VLC, pero algunos usuarios prefieren otras alternativas,
como smplayer. La reproducción de música local también tiene muchas opciones, como Audacious,
Banshee y Amarok, que también pueden administrar una colección de archivos de sonido locales.

Programas para servidores

Cuando un navegador web carga una página de un sitio, en realidad se está conectando a un
ordenador remoto y solicitando una información específica. En este escenario, el ordenador que
ejecuta el navegador web se llama cliente y el ordenador remoto se llama servidor.

El servidor, puede ser un ordenador de sobremesa ordinario o un hardware especializado, este


equipo necesita un programa o servicio (Conocido también de esa forma) específico para gestionar
cada tipo de información que proporcione. En lo que se refiere al servicio de páginas web, la mayoría
de los servidores de todo el mundo utilizan programas de código abierto. A este programa o servicio
en particular se le llama servidor HTTP (HTTP significa Protocolo de Transferencia de Texto Hyper) y
los más populares son Apache, Nginx y lighttpd.

Incluso las páginas web simples pueden requerir muchas solicitudes, que podrían ser archivos
ordinarios como --contenido estático-- o --contenido dinámico-- generado desde varias fuentes. La
función de un servidor HTTP es recopilar y enviar todos los datos solicitados al navegador, que a su
vez organiza el contenido según lo definido por el documento HTML (Hyper Text Markup Language)
recibido por el servidor, en conjunto a otros tipos de archivos que soporta el navegador, por lo que el
renderizado de una página web implica operaciones realizadas en el lado del servidor y del cliente.
Ambas partes pueden utilizar scripts personalizados para realizar tareas específicas. En el lado del
servidor HTTP, es bastante común usar el lenguaje programación PHP. En el lado del cliente,
JavaScript es el lenguaje de programación utilizado en el navegador web.

Los programas de servidores pueden proporcionar todo tipo de información, no es raro tener un
programa de servidor que solicite información proporcionada por otros servicios, como es el caso
cuando un servidor HTTP requiere información proporcionada por un servidor de base de datos.

Por ejemplo, cuando se solicita una página dinámica, el servidor HTTP suele consultar una base de
datos para recoger toda la información necesaria y enviar el contenido dinámico de vuelta al cliente,
del mismo modo que cuando un usuario se registra en un sitio web, el servidor HTTP recoge los
datos enviados por el cliente y los almacena en una base de datos.

Una base de datos es un conjunto organizado de información. Un servidor de base de datos almacena
contenido de manera formateada, lo que permite leer, escribir y vincular grandes cantidades de datos
de manera confiable y a gran velocidad. Los servidores de bases de datos de código abierto se utilizan
en muchas aplicaciones, no solo en Internet. Incluso las aplicaciones locales pueden almacenar datos

24 | learning.lpi.org | Esta obra está bajo la licencia CC BY-NC-ND 4.0. | Version: 2022-01-21
Linux Essentials (Versión 1.6) | 1.2 Principales aplicaciones de código abierto

conectándose a un servidor de base de datos local. El tipo más común de base de datos es la base de
datos relacional, donde los datos se organizan en tablas predefinidas. Las bases de datos relacionales
de código abierto más populares son MariaDB (originado en MySQL) y PostgreSQL.

Datos compartidos (Data Sharing)

En las redes locales, como las que se encuentran en las oficinas y los hogares, es deseable que los
ordenadores no sólo puedan acceder a Internet, sino que también puedan comunicarse entre sí. En
ocasiones un ordenador puede actuar como un servidor y un cliente. Por ejemplo, cuando se desea
acceder a los archivos de otro ordenador de la red (Supongamos, que se necesita acceder a un archivo
almacenado en un ordenador de sobremesa desde un dispositivo portátil) sin la molestia de tener que
copiarlo en una unidad USB o similar.

Entre máquinas Linux, NFS (Network File System) se utiliza a menudo para este tipo de funciones. El
protocolo NFS es la forma estándar de compartir sistemas de archivos en redes equipadas
únicamente con máquinas Unix/Linux con las que un ordenador puede compartir uno o varios de sus
directorios con ordenadores específicos de la red. De este modo, NFS puede leer y escribir archivos
en estos directorios. Incluso se puede usar NFS para compartir el árbol de directorios de todo un
sistema operativo con clientes que lo usarán para arrancar (Bootear) desde el servidor. Estas
computadoras, llamadas thin clients, se utilizan principalmente en redes grandes para evitar el
mantenimiento de cada sistema operativo de cada máquina.

Si existen otros tipos de sistemas operativos conectados a la red, se recomienda utilizar un protocolo
de datos compartidos comprensible para todos ellos. Este requisito lo cumple Samba. Samba
implementa un protocolo de datos compartidos a través de la red. Este fue originalmente diseñado
para el sistema operativo Windows, pero que hoy en día es compatible con todos los principales
sistemas operativos, ya que con Samba los ordenadores de la red local no sólo pueden compartir
archivos, sino también impresoras.

En algunas redes locales, la autorización dada al iniciar sesión en una estación de trabajo es otorgada
por un servidor central, llamado controlador de dominio, conocido como domain controller, que
gestiona el acceso a varios recursos locales y remotos. el controlador de dominio es un servicio
proporcionado por el Active Directory de Microsoft. Las estaciones de trabajo Linux pueden asociarse
con un controlador de dominio mediante el uso de Samba o un subsistema de autenticación llamado
SSSD. A partir de la versión 4, Samba también puede funcionar como un controlador de dominio en
redes heterogéneas.

Si el objetivo es implementar una solución de computación en la nube (Cloud Computing) capaz de


proporcionar varios métodos de compartir datos basados en web; deberá considerar dos alternativas:
ownCloud y Nextcloud. Los dos proyectos son muy similares porque Nextcloud es un spin-off de
ownCloud, lo cual no es inusual entre los proyectos de código abierto; a esto se le denomina fork.

Version: 2022-01-21 | Esta obra está bajo la licencia CC BY-NC-ND 4.0. | learning.lpi.org | 25
Linux Essentials (Versión 1.6) | Tema 1: La Comunidad Linux y una carrera en el mundo del código abierto

Ambos proporcionan las mismas características básicas: compartición y sincronización de archivos,


espacios de trabajo colaborativos, calendario, contactos y correo, todo a través de interfaces de
escritorio, móviles y web. Nextcloud también proporciona conferencias privadas de audio/vídeo,
mientras que ownCloud se centra más en el intercambio de archivos y la integración con software de
terceros. Muchas más características se proporcionan como plugins que pueden ser activados más
tarde según sea necesario.

Tanto ownCloud como Nextcloud ofrecen una versión paga con características adicionales y soporte
extendido. Lo que los hace diferentes de otras soluciones comerciales es la capacidad de instalar
Nextcloud o ownCloud en un servidor privado, de forma gratuita, evitando mantener datos
confidenciales en un servidor desconocido. Como todos los servicios dependen de la comunicación
HTTP y están escritos en PHP, la instalación debe realizarse en un servidor web configurado
previamente, como Apache. Si considera instalar ownCloud o Nextcloud en su propio servidor,
asegúrese de habilitar también HTTPS para cifrar todas las conexiones a su nube.

Administración de la red

La comunicación entre computadoras solo es posible si la red funciona correctamente. Normalmente,


la configuración de la red se realiza mediante un conjunto de programas que se ejecutan en el router,
encargados de configurar y comprobar la disponibilidad de la red. Para esto se utilizan dos servicios
de red básicos: DHCP (Dynamic Host Configuration Protocol) y DNS (Domain Name System).

DHCP es responsable de asignar una dirección IP al host cuando se conecta un cable de red o cuando
el dispositivo entra en una red inalámbrica. Al conectarse a Internet, el servidor DHCP del proveedor
de servicios de Internet proporcionará una dirección IP al dispositivo solicitante. Un servidor DHCP
es muy útil en las redes de área local para proporcionar automáticamente direcciones IP a todos los
dispositivos conectados. Si DHCP no está configurado o si no funciona correctamente, sería
necesario configurar manualmente la dirección IP de cada dispositivo conectado a la red, lo cual no
es práctico entornos de redes grandes e inclusive pequeñas.

La dirección IP es necesaria para comunicarse con otro dispositivo en una red, pero es mucho más
probable que las personas recuerden los nombres de dominio como www.lpi.org que un número IP
como 203.0.113.113.165. Sin embargo, el nombre de dominio por sí solo no es suficiente para
establecer la comunicación a través de la red, por lo que necesita ser traducido a una dirección IP por
un servidor DNS. La dirección IP del servidor DNS es suministrada por el servidor DHCP del
proveedor de servicios de Internet (ISP) y es utilizada por todos los sistemas conectados para traducir
los nombres de dominio a direcciones IP.

Las configuraciones de DHCP y DNS se pueden modificar ingresando a la interfaz web provista por
el enrutador. Por ejemplo, es posible restringir la asignación de IP sólo a dispositivos conocidos o
asociar una dirección IP fija a máquinas específicas. También es posible cambiar el servidor DNS

26 | learning.lpi.org | Esta obra está bajo la licencia CC BY-NC-ND 4.0. | Version: 2022-01-21
Linux Essentials (Versión 1.6) | 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).

Encriptación del disco

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.

El cifrado de sistemas de arhivos apilados (Stacked), se implementan sobre el sistema de archivos


existente. Cuando se utiliza, los archivos y directorios se cifran antes de ser almacenados en el
sistema de archivos y se descifran después de leerlos. Esto significa que los archivos se almacenan en
el sistema de archivos del host de forma cifrada (lo que significa que su contenido, y normalmente
sus nombres de archivos/carpetas, se sustituyen por datos de apariencia aleatoria), pero aparte de
eso, siguen existiendo en el sistema de archivos como si no estuvieran cifrados, como los archivos
normales, los enlaces simbólicos(symlinks), enlaces duros (hardlinks), etc.

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

Puede mostrar todas las variables de entorno utilizando el comando env.

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

Busquemos el comando nano nuevamente:

$ which nano
which: no nano in (/usr/local/sbin:/usr/local/bin:/usr/sbin:/sbin:/bin:/usr/games)

Como podemos observar, el comando no se encuentra, por lo tanto, no se ejecuta. El mensaje de


error también explica la razón por la cual no se encontró y en qué ubicaciones se buscó.

Volvamos a agregar los directorios e intentemos ejecutar el comando nuevamente.

$ PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin
$ which nano
/usr/bin/nano

Ahora nuestro comando funciona de nuevo.

El orden de los elementos en PATH también define el orden de búsqueda. Se ejecuta el


TIP
primer ejecutable coincidente encontrado al recorrer las rutas.

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.

3. Muestre los nombres de las variables y sus contenidos.

4. ¿Cuáles son los ámbitos de las variables creadas previamente?

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.

3. Agregue el valor de la variable HOME a ME usando el delimitador :. Luego muestre el contenido de


la variable ME.

4. Usando el ejemplo de fecha anterior, cree una variable llamada today y asignele la fecha para
una de las zonas horarias.

5. Cree otra variable llamada today1 y asígnele la fecha del sistema.

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

Comandos utilizados en los ejercicios:

env

Muestra las variables de entorno actual.

echo

Salida de texto.

export

Hace que las variables locales estén disponibles para los subprocesos.

unset

Elimina una variable.

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

Respuestas a los ejercicios guiados


1. Cree una variable local number.

$ number=5

2. Cree una variable de entorno ORDER, utilizando uno de los métodos anteriores.

$ export ORDER=desc

3. Muestre los nombres de las variables y sus contenidos.

$ echo number
number
$ echo ORDER
ORDER
$ echo $number
5
$ echo $ORDER
desc

4. ¿Cuáles son los ámbitos de las variables creadas previamente?


◦ El alcance de la variable number es la subshell actual.
◦ El alcance de la variable ORDER es el sistema actual.

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

Respuestas a los 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.

$ 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

3. Agregue el valor de la variable HOME a ME usando el delimitador :. Luego muestre el contenido de


la variable ME.

$ 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

5. Cree otra variable llamada today1 y asígnele la fecha del sistema.

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

Asumiendo que estás en GMT:

$ 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

2.2 Uso de la línea de comandos para obtener ayuda


Referencia al objetivo del LPI
Linux Essentials version 1.6, Exam 010, Objective 2.2

Importancia
2

Áreas de conocimiento clave


• Páginas de man
• Páginas de info

Lista parcial de archivos, términos y utilidades


• man

• 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.

Obteniendo ayuda por línea de comandos

Version: 2022-01-21 | Esta obra está bajo la licencia CC BY-NC-ND 4.0. | learning.lpi.org | 99
Linux Essentials (Versión 1.6) | Tema 2: Encontrando el camino en un sistema Linux

Ayuda incorporada

Cuando se comienza con el parámetro --help, la mayoría de los comandos muestran algunas
instrucciones breves sobre su uso. Aunque no todos los comandos proporcionan está opción, es un
buen primer intento para aprender más sobre sus parámetros. Tenga en cuenta que las instrucciones
de --help a menudo son muy breves en comparación con las otras fuentes de documentación que
discutiremos en el resto de esta lección.

Páginas Man

La mayoría de los comandos proporcionan una página de manual o una página "man". Esta
documentación generalmente se instala con el software y se puede acceder con el comando man.
Cuando deseé ver la página del manual de un comando, debe agregar el comando man como
argumento:

$ man mkdir

Este comando abre la página del manual para mkdir. Puede usar las teclas de flecha arriba y abajo o
la barra espaciadora para navegar por la página del manual. Para salir de la página del manual,
presione Q .

Cada página de 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

En la práctica, la mayoría de las páginas man no contienen todas estas partes.

Las páginas man están organizadas en ocho categorías, numeradas del 1 al 8:

Categoría Descripción
1 Comando del usuario
2 Llamadas del sistema
3 Funciones de la biblioteca C
4 Controladores y archivos de dispositivo
5 Archivos de configuración y formatos de archivo
6 Juegos
7 Miscellaneous
8 Comandos del administrador del sistema
9 Funciones del núcleo (no estándar)

Cada página de manual pertenece exactamente a una categoría. Sin embargo, varias categorías
pueden contener páginas de manual con el mismo nombre. Tomemos como ejemplo el comando
passwd. Este comando puede ser usado para cambiar la contraseña de un usuario. Como passwd es un
comando de usuario, su página man reside en la categoría 1. Además del comando passwd, el archivo
de base de datos de contraseñas /etc/passwd también tiene una página man que se llama passwd.
Como este archivo es un archivo de configuración, pertenece a la categoría 5. Cuando se hace
referencia a una página de manual, a menudo se añade la categoría al nombre de la página de
manual, como en passwd(1) o passwd(5) para identificar la página de manual respectiva.

Por defecto, man passwd muestra la primera página man disponible, en este caso passwd(1). La
categoría de la página man deseada se puede especificar en un comando como man 1 passwd o man 5
passwd.

Ya hemos visto cómo navegar a través de una página man y cómo volver a la línea de comando.
Internamente, man usa el comando less para mostrar el contenido de la página. less le permite
buscar texto dentro de una página man. Para encontrar la palabra linux puede usar /linux para
buscar hacia adelante desde el punto en el que se encuentra en la página o ?Linux para iniciar una
búsqueda hacia atrás. Esta acción resalta todos los resultados coincidentes y mueve la página a la
primera coincidencia resaltada. En ambos casos, puede escribir N para saltar a la siguiente
coincidencia. Para encontrar más información sobre estas características adicionales, presione H y se
mostrará un menú con toda la información.

Version: 2022-01-21 | Esta obra está bajo la licencia CC BY-NC-ND 4.0. | learning.lpi.org | 101
Linux Essentials (Versión 1.6) | Tema 2: Encontrando el camino en un sistema Linux

Páginas de información (Info Pages)

Otra herramienta que le ayudará mientras trabaja con el sistema Linux son las páginas de
información(info pages). Las páginas info suelen ser más detalladas que las páginas de manual y
están formateadas en hipertexto, similar a las páginas web en Internet.

Las páginas info se pueden mostrar así:

$ info mkdir

Para cada página de información, info lee un archivo que está estructurado en nodos individuales
dentro de un árbol. Cada nodo contiene un tema simple y el comando info contiene hipervínculos
que pueden ayudarlo a moverse de uno a otro. Puede acceder al enlace presionando "enter" mientras
coloca el cursor en uno de los asteriscos principales.

Similar a man, la herramienta info también tiene comandos de navegación de página. Puede obtener
más información sobre estos comandos presionando ? mientras se encuentra en la página de info.
Estas herramientas lo ayudarán a navegar por la página más fácilmente, así como a comprender
cómo acceder a los nodos y moverse dentro del árbol.

El directorio /usr/share/doc/

Como se mencionó anteriormente, el directorio /usr/share/doc/ almacena la mayoría de la


documentación de cada comando que utilice el sistema. Este directorio contiene una carpeta para la
mayoría de los paquetes instalados; el nombre del directorio suele ser el nombre del paquete y en
ocasiones incluye su versión. Estos directorios incluyen un archivo README o readme.txt que
contiene la documentación básica del paquete, junto con el archivo README. La carpeta también puede
contener otros archivos de documentación, como el registro de cambios que incluye el historial del
programa en detalle o ejemplos de archivos de configuración para el paquete específico.

La información dentro del archivo README varía de un paquete a otro. Todos los archivos están
escritos en texto plano, por lo tanto, se pueden leer con cualquier editor de texto preferido. El
número exacto y los tipos de archivos dependen del paquete. Consulte algunos de los directorios
para obtener una descripción general de sus contenidos.

Localizando archivos

El comando locate

Un sistema Linux está construido a partir de numerosos directorios y archivos. Linux tiene muchas
herramientas para ubicar un archivo en particular dentro de un sistema. El más rápido es el comando

102 | learning.lpi.org | Esta obra está bajo la licencia CC BY-NC-ND 4.0. | Version: 2022-01-21
Linux Essentials (Versión 1.6) | 2.2 Uso de la línea de comandos para obtener ayuda

locate.

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

2. Abra la página de información ls e identifique el MENU.


◦ ¿Qué opciones tienes?

◦ Encuentre la opción que le permite ordenar la salida por tiempo de modificación.

3. Muestre la ruta de los primeros 3 archivos README. Use el comando man para identificar la opción

Version: 2022-01-21 | Esta obra está bajo la licencia CC BY-NC-ND 4.0. | learning.lpi.org | 105
Linux Essentials (Versión 1.6) | Tema 2: Encontrando el camino en un sistema Linux

correcta para locate.

4. Cree un archivo llamado 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

3. Muestre en la pantalla el directorio de trabajo actual, incluidas las subcarpetas.

4. Busque dentro del árbol todos los archivos que terminen con un número.

5. Elimine todo el árbol de directorios con un solo comando.

Version: 2022-01-21 | Esta obra está bajo la licencia CC BY-NC-ND 4.0. | learning.lpi.org | 107
Linux Essentials (Versión 1.6) | Tema 2: Encontrando el camino en un sistema Linux

Resumen
En esta lección usted aprendió:

• ¿Cómo obtener ayuda?


• Usar el comando man
• Navegar por la página man
• Diferentes secciones de la página man
• Usar el comando info
• Navegar entre diferentes nodos
• Buscar archivos dentro del sistema

Comandos utilizados en los ejercicios:

man

Muestra una página de manual.

info

Muestra una página de información.

locate

Busca en la base de datos locate archivos con un nombre específico.

find

Busca en el sistema de archivos nombres que coincidan con un conjunto de criterios


seleccionados.

updatedb

Actualiza la base de datos locate,

108 | learning.lpi.org | Esta obra está bajo la licencia CC BY-NC-ND 4.0. | Version: 2022-01-21
Linux Essentials (Versión 1.6) | 2.2 Uso de la línea de comandos para obtener ayuda

Respuestas a los ejercicios guiados


1. Use el comando man para averiguar qué hace cada comando

Comando Descripción
ls Muestra el contenido de un directorio.
cat Concatena o ve archivos de texto.
cut Elimina secciones de un archivo de texto.
cd Cambia a un directorio diferente.
cp Copia un archivo.
mv Mueve un archivo (también se puede usar para
cambiar el nombre).
mkdir Crea un nuevo directorio.
touch Crea un archivo o modifica la fecha y hora de
la última modificación de un archivo existente.
wc Cuenta el número de palabras, líneas o bytes de
un archivo.
passwd Cambia la contraseña de un usuario.
rm Elimina un archivo.
rmdir Elimina un directorio.
more Visualiza archivos de texto una pantalla a la
vez.
less Visualiza archivos de texto, permite
desplazarse hacia arriba y hacia abajo una línea
o página a la vez.
whereis Muestra la ruta del archivo de un programa
específico y de manuales relacionados.
head Muestra las primeras líneas de un archivo.
tail Muestra las últimas líneas de un archivo.
sort Ordena un archivo de manera numérica o
alfabéticamente.
tr Traduce o elimina caracteres de un archivo.
chmod Cambia los permisos de un archivo.

Version: 2022-01-21 | Esta obra está bajo la licencia CC BY-NC-ND 4.0. | learning.lpi.org | 109
Linux Essentials (Versión 1.6) | Tema 2: Encontrando el camino en un sistema Linux

Comando Descripción
grep Búsquedas dentro de un archivo.

2. Abra la página de información ls e identifique el MENU.


◦ ¿Qué opciones tienes?
▪ ¿Qué archivos están listados?
▪ ¿Qué información está listada?
▪ Ordenar la salida
▪ Detalles sobre el ordenamiento de versiones
▪ Formato de salida general
▪ Formateando marcas de tiempo de archivo
▪ Formateando los nombres de archivo
◦ Encuentre la opción que le permite ordenar la salida por tiempo de modificación.

-t or --sort=time

3. Muestre la ruta a los primeros 3 archivos 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

The file is newly created, therefore there is no record of it in the database.

6. Busque el archivo de prueba que creó anteriormente, utilizando el comando find. ¿Qué sintaxis
uso y cuál es la ruta absoluta?

$ find ~ -name test

$ find . -name test


/home/user/test

Version: 2022-01-21 | Esta obra está bajo la licencia CC BY-NC-ND 4.0. | learning.lpi.org | 111
Linux Essentials (Versión 1.6) | Tema 2: Encontrando el camino en un sistema Linux

Respuestas a los ejercicios exploratorios


1. Hay un comando en la tabla anterior que no tiene una página man. ¿Cuál es y por qué cree que el
comando no tiene una página de manual?

El comando cd. No tiene una página de manual porque es un comando interno de shell.

2. Usando los comandos de la tabla anterior, cree el siguiente árbol de archivos. Los nombres que
comienzan con mayúscula son directorios y los que están en minúsculas son archivos.

User
├── Documents
| ├──Hello
| | ├──hey2
| | ├──helloa
| | └──ola5
| └──World
| └──earth9
├── Downloads
| ├──Music
| └──Songs
| ├──collection1
| └──collection2
├── Test
| └── passa
└── test

La solución es una combinación de comandos mkdir y touch.

3. Muestre en la pantalla el directorio de trabajo actual, incluidas las subcarpetas.

$ ls -R

4. Search within the tree for all files that end with a number.

$ find ~ -name "*[0-9]"


$ locate "*[0-9]"

5. Elimine todo el árbol de directorios con un solo comando.

112 | learning.lpi.org | Esta obra está bajo la licencia CC BY-NC-ND 4.0. | Version: 2022-01-21
Linux Essentials (Versión 1.6) | 2.2 Uso de la línea de comandos para obtener ayuda

$ rm -r Documents Downloads Test test

Version: 2022-01-21 | Esta obra está bajo la licencia CC BY-NC-ND 4.0. | learning.lpi.org | 113
Linux Essentials (Versión 1.6) | Tema 2: Encontrando el camino en un sistema Linux

2.3 Uso de directorios y listado de archivos


Referencia al objetivo del LPI
Linux Essentials version 1.6, Exam 010, Objective 2.3

Importancia
2

Áreas de conocimiento clave


• Archivos y directorios
• Archivos ocultos y directorios
• Directorios home
• Rutas absolutas y relativas

Lista parcial de archivos, términos y utilidades


• Opciones comunes para el comando ls
• Listados recursivos
• cd

• . 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

En este ejemplo, Documents es un directorio que contiene un archivo (Mission-Statement.txt) y un


subdirectorio (Reports) El directorio Reports a su vez contiene un archivo llamado report2018.txt.
El directorio Documents se dice que es el padre del directorio Reports.

Si el comando tree no está disponible en su sistema, instálelo usando el gestor de


TIP paquetes de su distribución Linux. Consulte la lección sobre gestión de paquetes para
aprender a como realizarlo.

Nombres de archivos y directorios

Los nombres de archivos y directorios en Linux pueden contener letras minúsculas y mayúsculas,
números, espacios y caracteres especiales; sin embargo, dado que muchos caracteres especiales
tienen un significado diferente en el intérprete de comandos de Linux, es una buena práctica no
utilizar espacios o caracteres especiales cuando se nombran archivos o directorios. Un ejemplo de
esto son los espacios, ya que necesitan que el carácter escape (escape character) \ sea introducido
correctamente:

$ cd Mission\ Statements

También observemos el nombre del archivo report2018.txt. Los nombres de archivos pueden
contener un sufijo que se encuentra después del punto (.). A diferencia de Windows, este sufijo no
tiene un significado especial en Linux; solo está ahí para la comprensión humana. En nuestro
ejemplo, el .txt nos indica que se trata de un archivo de texto plano, aunque técnicamente podría
contener cualquier tipo de dato.

Navegando en el Sistema de Archivos

Obteniendo la ubicación actual

Dado que los shells de Linux como Bash están basados en texto, es importante recordar la ubicación
actual cuando se navega por el sistema de archivos, el command prompt puede proporcionar esta
información:

user@hostname ~/Documents/Reports $

Tenga en cuenta que información como usuario y nombre de host se cubrirá en futuras secciones.
Desde el prompt, ahora sabemos que nuestra ubicación actual se encuentra en el directorio Reports.
De forma similar, el comando pwd imprimirá el directorio de trabajo (working directory):

116 | learning.lpi.org | Esta obra está bajo la licencia CC BY-NC-ND 4.0. | Version: 2022-01-21
Linux Essentials (Versión 1.6) | 2.3 Uso de directorios y listado de archivos

user@hostname ~/Documents/Reports $ pwd


/home/user/Documents/Reports

La relación de directorios se representa con una barra oblicua (/). Sabemos que Reports es un
subdirectorio de Documents y este es un subdirectorio de user, que se encuentra en un directorio
llamado home. El directorio home no parece tener un directorio padre, pero esto no es cierto en lo
absoluto; el padre de home se llama root, y está representado por la primera barra oblicua (/) que
discutiremos en una sección posterior.

Note que la salida del comando pwd difiere ligeramente de la ruta dada por el command prompt. En
lugar de /home/user contiene una tilde (~). La tilde es un carácter especial que representa el
directorio home del usuario. Esto será cubierto con más detalle en la siguiente lección.

Listando el contenido de los directorios

El contenido del directorio actual se lista con el comando ls:

user@hostname ~/Documents/Reports $ ls
report2018.txt

Tenga en cuenta que ls no proporciona información sobre el directorio padre. Por defecto ls no
muestra ninguna información sobre el contenido de los subdirectorios. El comando ls sólo puede
“ver” lo que hay en el directorio actual.

Cambiando al directorio actual

La navegación en Linux se hace principalmente con el comando cd. Esto cambia el directorio. Usando
el comando pwd de antes, sabemos que nuestro directorio actual es /home/user/Documents/Reports.
Podemos cambiar nuestro directorio actual introduciendo una nueva ruta:

user@hostname ~ $ cd /home/user/Documents
user@hostname ~/Documents $ pwd
/home/user/Documents
user@hostname ~/Documents $ ls
Mission-Statement.txt Reports

Desde nuestra nueva ubicación, podemos “ver” Mission-Statement.txt y nuestro subdirectorio


Reports, pero no el contenido de nuestro subdirectorio:

Version: 2022-01-21 | Esta obra está bajo la licencia CC BY-NC-ND 4.0. | learning.lpi.org | 117
Linux Essentials (Versión 1.6) | Tema 2: Encontrando el camino en un sistema Linux

user@hostname ~/Documents $ cd Reports


user@hostname ~/Documents/Reports $ pwd
/home/user/Documents/Reports
user@hostname ~/Documents/Reports $ ls
report2018.txt

Ahora estamos de vuelta donde empezamos.

Rutas Absolutas y Relativas

El comando pwd siempre imprime una ruta absoluta. Esto significa que la ruta contiene cada paso de
la ruta, desde la parte superior del sistema de ficheros (/) hasta la parte inferior (Reports). Las rutas
absolutas siempre comienzan con un /.

/
└── home
└── user
└── Documents
└── Reports

La ruta absoluta contiene toda la información necesaria para llegar a 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.

Rutas Relativas Especiales

Para revelar las primeras rutas especiales, entramos en el comando ls con la bandera -a. Esta
bandera modifica el comando ls para que se listen todos los archivos y directorios all, incluyendo los
archivos y directorios ocultos:

user@hostname ~/Documents/Reports $ ls -a
.
..
report2018.txt

118 | learning.lpi.org | Esta obra está bajo la licencia CC BY-NC-ND 4.0. | Version: 2022-01-21
Linux Essentials (Versión 1.6) | 2.3 Uso de directorios y listado de archivos

NOTE Puedes consultar la página de man para ls entender lo que -a está haciendo aquí.

Este comando ha revelado dos resultados adicionales: Estas son rutas especiales, no representan
nuevos archivos o directorios, sino que representan directorios que usted ya conoce:

Indica la ubicación actual (en este caso, Reports).

..

Indica el directorio padre (en este caso, Documents).

Por lo general, no es necesario usar una ruta relativa especial para la ubicación actual. Es más fácil y
comprensible escribir report2018.txt que ./report2018.txt, pero el . tiene usos que aprenderá en
futuras secciones. Por ahora, nos centraremos en la ruta relativa para el directorio padre:

user@hostname ~/Documents/Reports $ cd ..
user@hostname ~/Documents $ pwd
/home/user/Documents

El ejemplo de cd es mucho más fácil cuando se usa .. en lugar de la ruta absoluta, además, podemos
combinar este patrón para navegar por el árbol de archivos muy rápidamente.

user@hostname ~/Documents $ cd ../..


$ pwd
/home

Version: 2022-01-21 | Esta obra está bajo la licencia CC BY-NC-ND 4.0. | learning.lpi.org | 119
Linux Essentials (Versión 1.6) | Tema 2: Encontrando el camino en un sistema Linux

Ejercicios guiados
1. Para cada una de las siguientes rutas, identifique si es absoluta o relativa:

/home/user/Downloads

../Reports

/var

docs

2. Observe la siguiente estructura de archivos. Nota: Los directorios terminan con una barra
inclinada (/) cuando se ejecuta tree con la opción -F. Necesitará privilegios elevados para
ejecutarlo en el directorio principal root (/). El siguiente es un resultado de ejemplo y no es
indicativo de una estructura de directorio completa. Úselo para responder las siguientes
preguntas:

$ sudo tree -F /

/
├── etc/
│ ├── network/
│ │ └── interfaces
│ ├── systemd/
│ │ ├── resolved.conf
│ │ ├── system/
│ │ ├── system.conf
│ │ ├── user/
│ │ └── user.conf
│ └── udev/
│ ├── rules.d/
│ └── udev.conf
└── home/
├── lost+found/
└── user/
└── Documents/

12 directorios, 5 archivos

Use esta estructura para responder las siguientes preguntas.

Un usuario ingresa los siguientes comandos:

120 | learning.lpi.org | Esta obra está bajo la licencia CC BY-NC-ND 4.0. | Version: 2022-01-21
Linux Essentials (Versión 1.6) | 2.3 Uso de directorios y listado de archivos

$ cd /etc/udev
$ ls -a

¿Cuál será la salida del comando ls -a?

3. Ingrese el comando más corto posible para cada una de las siguientes situaciones:
◦ Su ubicación actual es root (/). Ingrese el comando para navegar a 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/.

◦ Su ubicación actual es /home/user/Documents/. Navegue al directorio llamado /etc/.

◦ Su ubicación actual es /etc/systemd/system/. Navegue al directorio llamado /home/user/.

4. Considere los siguientes comandos:

$ pwd
/etc/udev/rules.d
$ cd ../../systemd/user
$ cd ..
$ pwd

¿Cuál es el resultado del comando final pwd?

Version: 2022-01-21 | Esta obra está bajo la licencia CC BY-NC-ND 4.0. | learning.lpi.org | 121
Linux Essentials (Versión 1.6) | Tema 2: Encontrando el camino en un sistema Linux

Ejercicios exploratorios
1. Supongamos que un usuario ha ingresado los siguientes comandos:

$ mkdir "this is a test"


$ ls
this is a test

¿Qué comando cd le permitiría ingresar a este directorio?

2. Intente esto nuevamente, pero después de escribir cd this, presione la tecla TAB. ¿Qué se
muestra ahora en la solicitud?

Este es un ejemplo de _ autocompletado_, la cual es una herramienta invaluable no solo para


ahorrar tiempo, sino también para evitar errores ortográficos.

3. Intente crear un directorio cuyo nombre contenga un carácter \. Visualice el nombre del
directorio con ls y elimine el directorio.

122 | learning.lpi.org | Esta obra está bajo la licencia CC BY-NC-ND 4.0. | Version: 2022-01-21
Linux Essentials (Versión 1.6) | 2.3 Uso de directorios y listado de archivos

Resumen
En esta lección usted aprendió:

• Los fundamentos del sistema de archivos Linux


• La diferencia entre directorios padres y subdirectorios
• La diferencia entre las rutas absolutas y relativas
• Las rutas relativas especiales . y ..
• Navegar por el sistema de archivos usando cd
• Mostrar tu ubicación actual usando pwd
• Listar todos los archivos y directorios usando ls -a

Los siguientes comandos se discutieron en esta lección:

cd

Cambiar el directorio actual.

pwd

Imprime la ruta actual del directorio de trabajo.

ls

Enumerar el contenido de un directorio y mostrar las propiedades de los archivos.

mkdir

Crear un nuevo directorio.

tree

Muestra la jerárquica de un árbol de directorios.

Version: 2022-01-21 | Esta obra está bajo la licencia CC BY-NC-ND 4.0. | learning.lpi.org | 123
Linux Essentials (Versión 1.6) | Tema 2: Encontrando el camino en un sistema Linux

Respuestas a los ejercicios guiados


1. Para cada una de las siguientes rutas, identifique si es absoluta o relativa:

/home/user/Downloads absoluta
../Reports relativa
/var absoluta
docs relativa
/ absoluta

2. Observe la siguiente estructura de archivos. Nota: Los directorios terminan con una barra
inclinada (/) cuando se ejecuta tree con la opción -F. Necesitará privilegios elevados para
ejecutarlo en el directorio principal root (/). El siguiente es un resultado de ejemplo y no es
indicativo de una estructura de directorio completa. Úselo para responder las siguientes
preguntas:

$ sudo tree -F /

/
├── etc/
│ ├── network/
│ │ └── interfaces
│ ├── systemd/
│ │ ├── resolved.conf
│ │ ├── system/
│ │ ├── system.conf
│ │ ├── user/
│ │ └── user.conf
│ └── udev/
│ ├── rules.d/
│ └── udev.conf
└── home/
├── lost+found/
└── user/
└── Documents/

12 directorios, 4 archivos

Un usuario ingresa los siguientes comandos:

124 | learning.lpi.org | Esta obra está bajo la licencia CC BY-NC-ND 4.0. | Version: 2022-01-21
Linux Essentials (Versión 1.6) | 2.3 Uso de directorios y listado de archivos

$ cd /etc/udev
$ ls -a

¿Cuál será la salida del comando ls -a?

. .. rules.d udev.conf

3. Ingrese el comando más corto posible para cada una de las siguientes situaciones:
◦ Su ubicación actual es root (/). Ingrese el comando para navegar a 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

◦ Su ubicación actual es /home/user/Documents/. Navegue al directorio llamado /etc/.

$ cd /etc

◦ Su ubicación actual es /etc/systemd/system/. Navegue al directorio llamado /home/user/.

$ cd /home/user

4. Considere los siguientes comandos:

$ pwd
/etc/udev/rules.d
$ cd ../../systemd/user
$ cd ..
$ pwd

¿Cuál es el resultado del comando final pwd?

Version: 2022-01-21 | Esta obra está bajo la licencia CC BY-NC-ND 4.0. | learning.lpi.org | 125
Linux Essentials (Versión 1.6) | Tema 2: Encontrando el camino en un sistema Linux

/etc/systemd

126 | learning.lpi.org | Esta obra está bajo la licencia CC BY-NC-ND 4.0. | Version: 2022-01-21
Linux Essentials (Versión 1.6) | 2.3 Uso de directorios y listado de archivos

Respuestas a los ejercicios exploratorios


1. Supongamos que un usuario ha ingresado los siguientes comandos:

$ mkdir "this is a test"


$ ls
this is a test

¿Qué comando cd le permitiría ingresar a este directorio?

$ cd this\ is\ a\ test

2. Intente esto nuevamente, pero después de escribir cd this, presione la tecla TAB. ¿Qué se
muestra ahora en la solicitud?

$ cd this\ is\ a\ test

Este es un ejemplo de _ autocompletado_, que es una herramienta invaluable no solo para


ahorrar tiempo, sino también para evitar errores ortográficos.

3. Intente crear un directorio cuyo nombre contenga un carácter \. Visualice el nombre del
directorio con ls y elimine el directorio.

Puedes escapar de la barra invertida usando otra igual (\\) o usar comillas simples o dobles en
todo el nombre del directorio:

$ mkdir my\\dir
$ ls
'my\dir'
$ rmdir 'my\dir'

Version: 2022-01-21 | Esta obra está bajo la licencia CC BY-NC-ND 4.0. | learning.lpi.org | 127
Linux Essentials (Versión 1.6) | Tema 2: Encontrando el camino en un sistema Linux

2.3 Lección 2
Certificación: Linux Essentials
Versión: 1.6
Tema: 2 Encontrando tu camino en el sistema Linux
Objectivo: 2.3 Usando directorios y listando archivos
Lección: 2 de 2

Introducción
El sistema operativo Unix se diseñó originalmente para computadoras mainframe a mediados de la
década de 1960. Estas computadoras fueron compartidas entre muchos usuarios quienes accedieron a
los recursos del sistema a través de terminales. Estas ideas se transmiten hoy en día a los sistemas
Linux donde todavía se habla sobre el uso de “terminales” para ingresar comandos en el shell y
donde cada sistema Linux está organizado de tal manera que es fácil crear varios usuarios en un solo
sistema.

Directorios principales

Este es un ejemplo de un sistema de archivos normal en Linux:

128 | learning.lpi.org | Esta obra está bajo la licencia CC BY-NC-ND 4.0. | Version: 2022-01-21
Linux Essentials (Versión 1.6) | 2.3 Uso de directorios y listado de archivos

$ tree -L 1 /
/
├── bin
├── boot
├── cdrom
├── dev
├── etc
├── home
├── lib
├── mnt
├── opt
├── proc
├── root
├── run
├── sbin
├── srv
├── sys
├── tmp
├── usr
└── var

La mayoría de estos directorios son consistentes en todos los sistemas Linux desde pequeños
sistemas embebidos, servidores y hasta supercomputadoras. Un usuario experimentado de Linux
puede estar seguro de que puede encontrar el comando ls dentro de /bin, puede cambiar la
configuración del sistema modificando archivos en /etc, y leer los registros del sistema /var. La
ubicación de estos archivos y directorios está definido por el Estándar de jerarquía del sistema de
archivos (FHS), el cual se discutirá en una lección posterior. Aprenderá más sobre el contenido de
estos directorios a medida que continúe aprendiendo más sobre Linux, pero por el momento, sepa
que:

• Los cambios que realice en el sistema de archivos raíz afectarán a todos los usuarios.
• Cambiar archivos en el sistema de archivos raíz requerirá permisos de administrador.

Esto significa que los usuarios normales tendrán prohibido modificar estos archivos, y también se les
puede prohibir incluso leerlos. Cubriremos el tema de los permisos en una sección posterior.

Ahora, nos centraremos en el directorio /home que debería ser algo familiar en este punto:

Version: 2022-01-21 | Esta obra está bajo la licencia CC BY-NC-ND 4.0. | learning.lpi.org | 129
Linux Essentials (Versión 1.6) | Tema 2: Encontrando el camino en un sistema Linux

$ tree -L 1 /home
/home
├── user
├── michael
└── lara

En el ejemplo nuestro sistema tiene tres usuarios normales y cada uno tiene su propia ubicación
donde pueden crear y modificar archivos y directorios sin afectar a su vecino. Por ejemplo, en la
lección anterior estábamos trabajando con la siguiente estructura de archivos:

$ tree /home/user
user
└── Documents
├── Mission-Statement
└── Reports
└── report2018.txt

En realidad, el sistema de archivos real puede verse así:

$ tree /home
/home
├── user
│ └── Documents
│ ├── Mission-Statement
│ └── Reports
│ └── report2018.txt
├── michael
│ ├── Documents
│ │ └── presentation-for-clients.odp
│ └── Music

…y así sucesivamente para lara.

En Linux, /home es similar a un edificio de departamentos. Muchos usuarios pueden tener su espacio
separados en departamentos dedicados. Las utilidades y el mantenimiento del edificio en sí son
responsabilidad del superintendente (usuario root).

La ruta relativa especial para home

Cuando inicia una nueva sesión de terminal en Linux, ve un símbolo del sistema similar a este:

130 | learning.lpi.org | Esta obra está bajo la licencia CC BY-NC-ND 4.0. | Version: 2022-01-21
Linux Essentials (Versión 1.6) | 2.3 Uso de directorios y listado de archivos

user@hostname ~ $

La tilde (~) aquí representa nuestro directorio home . Si ejecuta el comando ls verá algunos resultados
familiares:

$ cd ~
$ ls
Documents

Compare esto con el sistema de archivos anterior para verificar su comprensión.

Considere ahora lo que sabemos sobre Linux: es similar a un edificio de departamentos con muchos
usuarios que residen en /home. Por lo tanto, el home del user será diferente al home del usuario
michael. Para demostrar esto, usaremos el comando su para cambiar de usuario.

user@hostname ~ $ pwd
/home/user
user@hostname ~ $ su - michael
Password:
michael@hostname ~ $ pwd
/home/michael

El significado de ~ cambia dependiendo de quién sea el usuario. Para michael, la ruta absoluta de ~ es
/home/michael. Para lara, la ruta absoluta de ~ es /home/lara, y así sucesivamente.

Rutas relativas a los archivos de inicio (relative-to-home)

Es muy útil usar ~ siempre que no cambie de usuario. Consideraremos el siguiente ejemplo para user
que ha comenzado una nueva sesión:

Version: 2022-01-21 | Esta obra está bajo la licencia CC BY-NC-ND 4.0. | learning.lpi.org | 131
Linux Essentials (Versión 1.6) | Tema 2: Encontrando el camino en un sistema Linux

$ ls
Documents
$ cd Documents
$ ls
Mission-Statement
Reports
$ cd Reports
$ ls
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.

Consideremos una situación en la que michael quisiera ver el archivo report2018.txt en el


directorio de inicio de user. Suponiendo que michael tiene permiso para hacerlo, puede usar el
comando less.

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

Cualquier ruta de archivo que contenga el carácter ~ se llama ruta relative-to-home.

Archivos y directorios ocultos

En la lección anterior, presentamos la opción -a para el comando ls. Utilizamos ls -a para


introducir a las rutas relativas especiales: . y ... La opción -a enumerará todos los archivos y
directorios incluidos los ocultos.

$ 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.

La opción de listado largo (long list)

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

Número de enlaces al archivo.

user staff

Especifica la propiedad del archivo, user es el propietario del archivo el cual también está
asociado al grupo staff.

3606

Tamaño del archivo en bytes.

Jan 13 2017

Fecha de la última modificación del archivo.

report2018.txt

Nombre del archivo.

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.

Opciones adicionales del comando ls

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

La recursión se refiere a una situación en la que “algo se define en términos de sí mismo”. La


recursión es un concepto muy importante en la informática, pero aquí su significado es mucho más
simple. Consideremos nuestro ejemplo de antes:

$ 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”.

La recursión es particularmente importante en los comandos de modificación de archivos, como


copiar o eliminar directorios. Por ejemplo, si desea copiar el subdirectorio Documents, necesitara
especificar una copia recursiva para extender este comando a todos los subdirectorios.

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 navegará en el directorio network independientemente de su ubicación


actual?

◦ ¿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

drwxrwxrwx 5 eric eric 4.0K Apr 26 2011 China/


-rwxrwxrwx 1 eric eric 1.5M Jul 18 2011 img_0066.jpg
-rwxrwxrwx 1 eric eric 1.5M Jul 18 2011 img_0067.jpg
-rwxrwxrwx 1 eric eric 1.6M Jul 18 2011 img_0074.jpg
-rwxrwxrwx 1 eric eric 1.8M Jul 18 2011 img_0075.jpg
-rwxrwxrwx 1 eric eric 46K Jul 18 2011 scary.jpg
-rwxrwxrwx 1 eric eric 469K Jan 29 2018 Screenshot from 2017-08-13 21-22-
24.png
-rwxrwxrwx 1 eric eric 498K Jan 29 2018 Screenshot from 2017-08-14 21-18-
07.png
-rwxrwxrwx 1 eric eric 211K Jan 29 2018 Screenshot from 2018-01-06 23-29-
30.png
-rwxrwxrwx 1 eric eric 150K Jul 18 2011 tobermory.jpg
drwxrwxrwx 6 eric eric 4.0K Apr 26 2011 Tokyo/
-rwxrwxrwx 1 eric eric 1.4M Jul 18 2011 Toronto 081.jpg
-rwxrwxrwx 1 eric eric 1.4M Jul 18 2011 Toronto 085.jpg
-rwxrwxrwx 1 eric eric 944K Jul 18 2011 Toronto 152.jpg
-rwxrwxrwx 1 eric eric 728K Jul 18 2011 Toronto 173.jpg
drwxrwxrwx 2 eric eric 4.0K Jun 5 2016 Wallpapers/

◦ Cuando ejecutas el comando ls -lrS. ¿Qué archivo estará al principio?

◦ Describa lo que espera ver al ejecutar ls -ad */.

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ó:

• Que cada usuario de Linux tendrá un directorio de inicio.


• Que puede acceder al directorio de inicio del usuario actual utilizando ~.
• Cualquier ruta de archivo que use ~ se llama ruta relative-to-home.

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

Respuestas a los 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 navegará en el directorio network independientemente de su ubicación


actual?

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.

drwxrwxrwx 5 eric eric 4.0K Apr 26 2011 China/


-rwxrwxrwx 1 eric eric 1.5M Jul 18 2011 img_0066.jpg
-rwxrwxrwx 1 eric eric 1.5M Jul 18 2011 img_0067.jpg
-rwxrwxrwx 1 eric eric 1.6M Jul 18 2011 img_0074.jpg
-rwxrwxrwx 1 eric eric 1.8M Jul 18 2011 img_0075.jpg
-rwxrwxrwx 1 eric eric 46K Jul 18 2011 scary.jpg
-rwxrwxrwx 1 eric eric 469K Jan 29 2018 Screenshot from 2017-08-13 21-22-
24.png
-rwxrwxrwx 1 eric eric 498K Jan 29 2018 Screenshot from 2017-08-14 21-18-
07.png
-rwxrwxrwx 1 eric eric 211K Jan 29 2018 Screenshot from 2018-01-06 23-29-
30.png
-rwxrwxrwx 1 eric eric 150K Jul 18 2011 tobermory.jpg
drwxrwxrwx 6 eric eric 4.0K Apr 26 2011 Tokyo/
-rwxrwxrwx 1 eric eric 1.4M Jul 18 2011 Toronto 081.jpg
-rwxrwxrwx 1 eric eric 1.4M Jul 18 2011 Toronto 085.jpg
-rwxrwxrwx 1 eric eric 944K Jul 18 2011 Toronto 152.jpg
-rwxrwxrwx 1 eric eric 728K Jul 18 2011 Toronto 173.jpg
drwxrwxrwx 2 eric eric 4.0K Jun 5 2016 Wallpapers/

◦ Cuando ejecutas el comando ls -lrS, ¿Qué archivo estará al principio?

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.

◦ Describa lo que espera ver al ejecutar ls -ad */.

Este comando mostrará todos los subdirectorios incluidos los ocultos.

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

Respuestas a los 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?

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

2.4 Crear, mover y borrar archivos


Referencia al objetivo del LPI
Linux Essentials version 1.6, Exam 010, Objective 2.4

Importancia
2

Áreas de conocimiento clave


• Files and directories
• Case sensitivity
• Simple globbing

Lista parcial de archivos, términos y utilidades


• mv, cp, rm, touch

• 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

para administrar y organizar archivos así como directorios.

Sensibilidad a las mayúsculas y minúsculas

A diferencia de Microsoft Windows, los nombres de archivos y directorios en sistemas Linux se


distinguen entre mayúsculas y minúsculas; lo que significa que los nombres /etc/ y /ETC/ son
directorios diferentes:

$ 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

El pwdmuestra el directorio en el que se encuentra actualmente, como puede observar, el cambio a


/ETC no funcionó, ya que dicho directorio no existe, sin embargo el cambio al directorio /etc que sí
existe tuvo éxito.

Creación de directorios

El comando mkdir se usa para crear directorios.

Vamos a crear un nuevo directorio dentro de nuestro directorio home:

$ 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

El shell interpreta el carácter ~ como su directorio raíz.

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:

$ mkdir creating moving copying/files copying/directories deleting/directories


deleting/files globs
mkdir: cannot create directory ‘copying/files’: No such file or directory
mkdir: cannot create directory ‘copying/directories’: No such file or directory
mkdir: cannot create directory ‘deleting/directories’: No such file or directory
mkdir: cannot create directory ‘deleting/files’: No such file or directory
$ ls
creating globs moving

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:

$ mkdir -p creating moving copying/files copying/directories deleting/directories


deleting/files globs

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.

Al listar el contenido de un directorio con ls, las opciones -t y -r son particularmente


TIP útiles. Clasifican la salida por tiempo (-t) e invierten su orden (-r). En este caso los
archivos más recientes estarán en la parte inferior de la salida de comandos.

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:

$ touch globs/question1 globs/question2012 globs/question23 globs/question13


globs/question14
$ touch globs/star10 globs/star1100 globs/star2002 globs/star2013

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 hello > question15


$ cat question15
hello

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.

Tenga cuidado al usar > si el archivo nombrado ya existe, será sobreescrito!

Cambiando el nombre de los archivos

Los archivos se pueden mover o renombran con el comando mv.

Establezca su directorio de trabajo en el directorio moving:

$ 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:

$ touch file1 file22


$ echo file3 > file3
$ echo file4 > file4
$ ls
file1 file22 file3 file4

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

renombrar un archivo, el primer argumento es el nombre actual, el segundo es el nuevo nombre:

$ 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:

$ touch file4 file5


$ mv -i file4 file3
mv: overwrite ‘file3’? y

Moviendo archivos

Los archivos se mueven de un directorio a otro con el comando mv.

Cree unos cuantos directorios para mover algunos archivos:

$ cd ~/linux_essentials-2.4/moving
$ mkdir dir1 dir2
$ ls
dir1 dir2 file1 file2 file3 file5

Mover file1 a dir1:

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

Observe como el último argumento de mv es el directorio destino. Cuando el último argumento de mv


es un directorio, los archivos son movidos dentro de este; se puede especificar múltiples archivos en
un solo comando mv:

$ mv file2 file3 dir2


$ ls
dir1 dir2 file5
$ ls dir2
file2 file3

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

Eliminando archivos y directorios

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

Eliminar grandes cantidades de archivos o estructuras de directorios con muchos subdirectorios


puede parecer tedioso, pero en realidad es fácil. Por defecto, el comando rm sólo funciona con
archivos normales, la opción -r se utiliza para anular este comportamiento, pero ¡Cuidado, rm -r
podría darte un mal día! Cuando uses la opción -r, rm no sólo borrará todos los directorios, sino
también todo lo que haya dentro de ese directorio, incluyendo los subdirectorios y sus contenidos:

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

Copiando archivos y directorios

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

Coincide con cualquier número de caracteres, incluyendo los no caracteres.

Coincide con cualquier carácter.

[]

Corresponde a una clase de caracteres.

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*

En lo que al comando ls se refiere, esto es equivalente a:

$ ls star10 star1100 star2002 star2013

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*.

El carácter ? se expande a cualquier personaje, pruebe los siguientes comandos:

$ 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 !.

Cree algunos archivos para experimentar:

$ mkdir brackets
$ cd brackets
$ touch file1 file2 file3 file4 filea fileb filec file5 file6 file7

Los rangos entre [] corchetes se expresan mediante un -:

$ 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

Se pueden especificar varios rangos:

$ 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

El glob file[[:digit:]a], coincide con file seguido de un dígito o a.

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:]

Letras mayúsculas o minúsculas.

[:blank:]

Espacios y tabulaciones.

[:cntrl:]

Caracteres de control, por ejemplo, backspace, bell, NAK, escape.

[:digit:]

Números (012345456789).

[:graph:]

Caracteres gráficos (todos los caracteres excepto ctrl y el carácter de espacio)

[:lower:]

Letras minúsculas (a-z).

[:print:]

Caracteres imprimibles (alnum, punct y el carácter del espacio).

[:punct:]

Caracteres de puntuación, es decir !, &, ".

[:space:]

Caracteres de espacio en blanco, por ejemplo, tabulaciones, espacios, líneas nuevas.

[:upper:]

Letras mayúsculas (A-Z).

[:xdigit:]

Números hexadecimales (normalmente 0123456789abcdefABCDEF).

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

2. ¿Qué hace -v para mkdir, rm y cp?

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?

4. ¿Qué sucede cuando usa mv para mover un directorio dentro de sí mismo?

5. ¿Cómo eliminaría todos los archivos en su directorio actual que comienzan con old?

6. ¿Cuál de los siguientes archivos log_[a-z]_201?_*_01.txt coinciden?

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?

5. Explique el comando cp -u.

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.

Comandos usados en esta lección:

cat

Muestra o concatena el contenido de ficheros.

cp

Copia archivos o directorios.

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

Muestra propiedades de archivos y directorios, y enumera los contenidos de un directorio.

mkdir

Crea nuevos directorios.

mv

Mueve o renombra archivos o directorios.

pwd

Salida del directorio de trabajo actual.

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

Eliminar archivos o directorios.

rmdir

Elimina directorios.

touch

Crea nuevos archivos vacíos o actualiza el tiempo de modificación de un archivo existente.

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

Respuestas a los 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

Se crearían los directorios marcados. Los directorios /tmp, /tmp/outfiles y /tmp/outfiles/text


ya existen, por lo que mkdir los ignorará.

/tmp

/tmp/outfiles

/tmp/outfiles/text

/tmp/outfiles/text/today X
/tmp/infiles X
/tmp/infiles/text X
/tmp/infiles/text/today X

2. ¿Qué hace -v para mkdir, rm y cp?

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

cp se negará a hacer la operación y generará un mensaje de error:

$ touch a b c d
$ cp a b c d
cp: target 'd' is not a directory

4. ¿Qué sucede cuando usa mv para mover un directorio dentro de sí mismo?

Recibirá un mensaje de error que indica que mv no podrá hacer eso.

$ 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?

Usaría el glob old * con rm:

$ rm old*

6. ¿Cuál de los siguientes archivos log_[a-z]_201?_*_01.txt coinciden?

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.

7. Create a few globs to match the following list of file names:

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

There are several solutions. Here are some of them:

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

Respuestas a los 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.

Usaría la opción -p. Desde la página del manual dice lo siguiente:

$ 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?

Sí, la opción -n o --no-clobber evita que mv sobrescriba los archivos.

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) |

Tema 3: El poder de la línea de comandos

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

3.1 Archivar ficheros desde la línea de comandos


Referencia al objetivo del LPI
Linux Essentials version 1.6, Exam 010, Objective 3.1

Importancia
2

Áreas de conocimiento clave


• Ficheros, directorios
• Archivadores, compresión

Lista parcial de archivos, términos y utilidades


• tar

• Opciones comunes del comando tar


• gzip, bzip2, xz

• 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.

El archivo y la compresión se usan comúnmente juntos. Incluso algunas herramientas de archivo


comprimen su contenido de forma predeterminada; otros pueden comprimir opcionalmente sus
contenidos. Si desea comprimir el contenido se deben usar algunas herramientas de archivo junto
con herramientas de compresión independientes.

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 independientes de compresión generalmente no están disponibles en sistemas


Windows. Las herramientas de compresión y archivado de Windows suelen estar juntas. Es
importante tener esto en cuenta si se tienen sistemas Linux y Windows que necesiten compartir
archivos.

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.

A continuación se configuran algunos archivos de prueba para comprimir:

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

Se crean tres copias de este archivo:

$ 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.

Para descomprimir los archivos se utilizan bunzip2, gunzip, o unxz:

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

# The following lines are desirable for IPv6 capable hosts


::1 localhost ip6-localhost ip6-loopback
ff02::1 ip6-allnodes
ff02::2 ip6-allrouters

Archivadores

El programa tar es probablemente el archivador más utilizado en sistemas Linux. Su nombre


proviene de la abreviatura de “tape archive”, ya que los archivos creados con tar se denominan a
menudo como tar balls. Es muy común que el código fuente de las aplicaciones se distribuya en tar
balls.

Las distribuciones de Linux que incluyen la versión GNU de tar tiene muchas opciones, esta lección
cubrirá el subconjunto más utilizado.

A continuación se crea un archivo de los ficheros usados para la compresión:

$ 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.

Para ver el contenido de un archivo creado con tar, se utiliza la opción t:

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

$ tar -tf 3.1.tar


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

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.

A continuación se extrae el 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

Si se desea utilizar la ruta absoluta en un archivo tar, se debe usar la opción P. Es


TIP importante tener en cuenta que esta operación puede sobrescribir ficheros
importantes y puede causar errores en el sistema.

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

El programa tar también puede gestionar la compresión y descompresión de archivos sobre la


marcha. tar lo hace llamando a una de las herramientas de compresión presentadas anteriormente.
Es tan simple como añadir la opción apropiada para el algoritmo de compresión. Las más utilizadas
son j, J, y z para bzip2, xz, y gzip, respectivamente. A continuación se muestran ejemplos utlizando
los algoritmos mencionados anteriormente:

$ 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

◦ ¿Cuántos enlaces apuntan al archivo document.txt?

◦ ¿Son enlaces suaves o duros?

◦ ¿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

Entonces, la estructura del directorio es:

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

Ahora, mueva partners.txt de somedir a ~/Documentos y enumere su contenido.

$ cd ~/Documents/
$ mv somedir/partners.txt .
$ less partners.txt

¿Seguirá funcionando el enlace? Si es así, ¿qué archivo tendrá su contenido listado? ¿Por qué?

5. Considere los siguientes archivos:

-rw-r--r-- 1 carol carol 19 Jun 24 11:12 clients.txt


lrwxrwxrwx 1 carol carol 11 Jun 24 11:13 partners.txt -> clients.txt

¿Cuáles son los permisos de acceso para "partners.txt"? ¿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ó:

• ¿Donde se almacenan los archivos temporales?


• ¿Cuál es el permiso especial que se les aplica?
• ¿Qué son los enlaces?
• La diferencia entre los enlaces simbólicos y los duros.
• ¿Cómo crear enlaces?
• ¿Cómo moverlos, renombrarlos o eliminarlos?

Los siguientes comandos se discutieron en esta lección:

• 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

Respuestas a los ejercicios guiados


1. Imagina que un programa necesita crear un archivo temporal de un solo uso que no se volverá a
necesitar después de que el programa se cierre. ¿Cuál sería el directorio correcto para crear este
archivo?

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?

El directorio es run o en algunos sistemas, /var/run.

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.

4. Imagina que hay un archivo llamado documento.txt en el directorio /home/carol/Documents.


¿Cuál es el comando para crear un enlace simbólico a hacia al archivo llamado text.txt en el
directorio actual?

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

Respuestas a los ejercicios exploratorios


1. Imagina que dentro de un directorio creas un archivo llamado recipes.txt. Dentro de este
directorio, también crearás un enlace duro a este archivo llamado receitas.txt y un enlace
simbólico (o soft) a este llamado rezepte.txt.

$ touch recipes.txt
$ ln recipes.txt receitas.txt
$ ln -s recipes.txt rezepte.txt

El contenido del directorio debería aparecer así:

$ 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

¿Qué pasaría? ¿Por qué?

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

3. Considere la siguiente salida de ls -lah:

$ 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

◦ ¿Cuántos enlaces apuntan al archivo document.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 suaves o duros?

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

Entonces, la estructura del directorio es:

Documents
|-- clients.txt
`-- somedir
|-- clients.txt
`-- partners.txt -> clients.txt

Ahora, mueva partners.txt de somedir a ~/Documentos y enumere su contenido.

$ 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.

Cuando el enlace fue movido de ~/Documentos/somedir a ~/Documents, debería dejar de


funcionar, ya que el objetivo ya no estaba en el mismo directorio que el enlace. Sin embargo,
sucede que hay un archivo llamado clients.txt en ~/Documentos, por lo que el enlace apuntará
a este archivo, en lugar del destino original dentro de ~/somedir.

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.

5. Considere los siguientes archivos:

-rw-r--r-- 1 rigues rigues 19 Jun 24 11:12 clients.txt


lrwxrwxrwx 1 rigues rigues 11 Jun 24 11:13 partners.txt -> clients.txt

¿Cuáles son los permisos de acceso para partners.txt? ¿Por qué?

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)”.

PDF generado: 2022-01-21

Esta obra está bajo la licencia de Creative Commons Atribución-NoComercial-SinDerivadas 4.0


Internacional (CC BY-NC-ND 4.0). Para ver una copia de esta licencia, visite

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

También podría gustarte

pFad - Phonifier reborn

Pfad - The Proxy pFad of © 2024 Garber Painting. All rights reserved.

Note: This service is not intended for secure transactions such as banking, social media, email, or purchasing. Use at your own risk. We assume no liability whatsoever for broken pages.


Alternative Proxies:

Alternative Proxy

pFad Proxy

pFad v3 Proxy

pFad v4 Proxy