03 Linux

Descargar como docx, pdf o txt
Descargar como docx, pdf o txt
Está en la página 1de 62

Linux Essentials (Versión 1.

6)

Linux prof. INSTITUTO 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
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 maquinas 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 maquinas 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 si 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.
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.

Linux prof. INSTITUTO 2


Linux Essentials (Versión 1.6)

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 como se instala el software en el sistema
operativo y como 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 distribucion 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 facil 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
renombro 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 soporte comercial.

Linux prof. INSTITUTO 3


Linux Essentials (Versión 1.6)

Tanto RHEL como CentOS están optimizados para su


uso en entornos de servidor. El proyecto Fedora se
fundo en 2003 y crea una distribución de Linux dirigida
a computadoras de escritorio. Red Hat inicio 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 anos, 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, asi 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, asi como
un entorno de escritorio con paquetes adecuados para
el propósito. En 2004, SUSE lanzo 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 súperpequeñ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.

Linux prof. INSTITUTO 4


Linux Essentials (Versión 1.6)

Sistemas embebidos

Los sistemas embebidos son una combinación de


hardware y software diseñados para tener una función
especifica 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

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 creo un sistema
operativo destinado a funcionar en cámaras digitales.
En 2005, Google adquirió Android Inc. y lo desarrollo
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.

Linux prof. INSTITUTO 5


Linux Essentials (Versión 1.6)

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, asi 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 ensenar 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
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.

Linux prof. INSTITUTO 6


Linux Essentials (Versión 1.6)

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. Esta 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 termino 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 publica. 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 comparo 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 desplegaran en la nueva instancia. Los proveedores
de nube ofrecen varias imágenes que contienen
instalaciones listas para ejecutar tanto de las
distribuciones populares, asi 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.

Linux prof. INSTITUTO 7


Linux Essentials (Versión 1.6)

1.2 Principales aplicaciones de codigo abierto


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,
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 este 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.

Linux prof. INSTITUTO 8


Linux Essentials (Versión 1.6)

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 termino “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 identifico 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
instalacion 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.

Linux prof. INSTITUTO 9


Linux Essentials (Versión 1.6)

En este punto el paquete se descargara e instalara en


el sistema, asi 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
realizara cualquier configuración adicional y el comando
estará disponible:

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

En distribuciones basadas en paquetes RPM, las


busquedas se realizan usando yum search
package_name o dnf search package_name.
Supongamos que desea mostrar algun texto de una
forma más irreverente, seguido de una vaca
caricaturesca, pero no está seguro del paquete que
puede 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

Linux prof. INSTITUTO 10


Linux Essentials (Versión 1.6)

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:

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!

Linux prof. INSTITUTO 11


Linux Essentials (Versión 1.6)

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

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

Linux prof. INSTITUTO 12


Linux Essentials (Versión 1.6)

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:

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.

Linux prof. INSTITUTO 13


Linux Essentials (Versión 1.6)

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 anos mas tarde,
Sun fue adquirida por Oracle Corporation, que a su vez
transfirió el proyecto a la Fundación Apache y
OpenOffice.org paso 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 denomino 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
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 esta
licenciado bajo LGPLv3 y Apache OpenOffice esta
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 mas
activa de desarrolladores, las distribuciones mas
populares que adoptan LibreOffice como su suite
ofimática predeterminada.

Linux prof. INSTITUTO 14


Linux Essentials (Versión 1.6)

Navegadores web
Para la mayoría de los usuarios, el objetivo principal de
una computadora es proporcionar acceso a Internet.
Hoy en día, las páginas web pueden actuar como una
aplicación completa, con la ventaja de ser accesibles
desde cualquier lugar, sin la necesidad de instalar
software adicional, lo que hace que el navegador web
sea la aplicación más importante del sistema operativo,
al menos para el usuario medio.
TIP
Una de las mejores fuentes para aprender sobre el
desarrollo web es MDN Web Docs, disponible en
https://developer.mozilla.org/. El sitio es mantenido
por Mozilla y esta 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 modelo de código abierto, y que esta
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 renderizacion 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.

Linux prof. INSTITUTO 15


Linux Essentials (Versión 1.6)

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

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.

Linux prof. INSTITUTO 16


Linux Essentials (Versión 1.6)

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 especifica. 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 funcion 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

Linux prof. INSTITUTO 17


Linux Essentials (Versión 1.6)

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
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 mas 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 solo 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 maquinas 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 usaran 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

Linux prof. INSTITUTO 18


Linux Essentials (Versión 1.6)

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 dia es
compatible con todos los principales sistemas
operativos, ya que con Samba los ordenadores de la red
local no solo 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; debera 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.
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/video, mientras que
ownCloud se centra más en el intercambio de archivos y
la integracion con software de terceros. Muchas más
características se proporcionan como plugins que
pueden ser activados mas 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 estan escritos en

Linux prof. INSTITUTO 19


Linux Essentials (Versión 1.6)

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 Configuración 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 proporcionara una dirección IP al dispositivo
solicitante. Un servidor DHCP es muy útil en las redes
de area local para proporcionar automáticamente
direcciones IP a todos los dispositivos conectados. Si
DHCP no está configurado o si no funciona
correctamente, seria necesario configurar manualmente
la dirección IP de cada dispositivo conectado a la red,
lo cual no es practico 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 si 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 solo a dispositivos conocidos o asociar
una dirección IP fija a maquinas específicas. También
es posible cambiar el servidor DNS proporcionado por el
ISP por algunos servidores DNS de terceros, como los

Linux prof. INSTITUTO 20


Linux Essentials (Versión 1.6)

de Google o OpenDNS, en ocasiones pueden


proporcionar respuestas más rápidas y funciones
adicionales.

Lenguajes de programación

Todos los programas de los ordenadores (programas


cliente y servidor, aplicaciones de escritorio y el propio
sistema operativo) se realizan utilizando uno o más
lenguajes de programación, ya sea un único archivo o
un complejo sistema de cientos de archivos que el
sistema operativo trata como una secuencia de
instrucciones que deben ser interpretadas y ejecutadas
por el procesador y otros dispositivos.

Existen numerosos lenguajes de programación para


propósitos muy diferentes y los sistemas Linux
proporcionan muchos de ellos. Como el software de
código abierto también incluye las fuentes de los
programas, los sistemas Linux ofrecen a los
desarrolladores condiciones perfectas para entender,
modificar o crear software de acuerdo con sus propias
necesidades.

Cada programa comienza como un archivo de texto,


llamado source code. Este código fuente esta escrito en
un lenguaje más o menos amigable con el ser humano
que describe lo que está haciendo el programa. Un
procesador no puede ejecutar directamente este código,
por lo que en lenguajes de compilación el código fuente
se convierte en un archivo binario (binary file) que
puede ser ejecutado por el ordenador, mientras que un
programa llamado compilador (compiler) se encarga de
realizar la conversión del código fuente a una forma
ejecutable. Dado que el binario compilado es específico
para un tipo de procesador, es posible que el programa
deba volver a compilarse para ejecutarse en otro tipo de
computadora.

En lenguajes interpretados (interpreted languages), el


programa no necesita ser compilado previamente, sino
que un intérprete lee el código fuente y ejecuta su
instrucción cada vez que se ejecuta el programa, lo que
hace que el desarrollo sea más fácil y rápido, pero al
mismo tiempo los programas interpretados tienden a ser
más lentos que los compilados.

Linux prof. INSTITUTO 21


Linux Essentials (Versión 1.6)

Aquí algunos de los lenguajes de programación más


populares:

JavaScript, es un lenguaje de programación muy


utilizado en páginas web, en sus orígenes, las
aplicaciones JavaScript eran muy sencillas, como las
rutinas de validación de formularios. Hoy en día,
JavaScript es considerado un lenguaje de primera clase
y se utiliza para crear aplicaciones muy complejas no
solo en la web, sino también en servidores y
dispositivos móviles.

C, El lenguaje de programación C está estrechamente


relacionado con los sistemas operativos, en particular
con Unix, pero se utiliza para escribir cualquier tipo de
programa en casi cualquier tipo de dispositivo. Las
grandes ventajas de C son la flexibilidad y la velocidad;
el mismo código fuente escrito en C puede ser
compilado para ejecutarse en diferentes plataformas y
sistemas operativos con poca o ninguna modificación,
sin embargo, después de ser compilado, el programa se
ejecutara solo en el sistema donde se compilo.

Java, El aspecto principal de Java es que los


programas escritos en este lenguaje son portátiles, lo
que significa que el mismo programa puede ejecutarse
en diferentes sistemas operativos. A pesar de su
nombre, Java no está relacionado con JavaScript.

Perl, es un lenguaje de programación muy utilizado


para procesar contenido de texto con un fuerte énfasis
en las expresiones regulares, lo que hace de Perl un
lenguaje adecuado para el filtrado y análisis de texto.

Shell, en particular el Bash shell, no es solo un


lenguaje de programación, sino una interfaz interactiva
para ejecutar otros programas. Los programas de Shell,
conocidos como shell scripts pueden automatizar tareas
complejas o repetitivas en el entorno de línea de
comandos.

Python, es un lenguaje de programación muy popular


entre estudiantes y profesionales que no están
directamente relacionados con la informática. Aunque

Linux prof. INSTITUTO 22


Linux Essentials (Versión 1.6)

tiene características avanzadas, Python es una buena


manera de empezar a aprender programación por su
enfoque fácil de usar.

PHP, es el lenguaje de programación más utilizado en


el lado del servidor para generar contenido para la web,
la mayoría de las paginas HTML en línea no son
archivos estáticos, sino contenido dinámico generado
por el servidor desde varias fuentes, como bases de
datos. Los programas PHP — a veces solo llamados
páginas PHP o scripts PHP — se utilizan a menudo para
generar este
Tipo de contenido. El termino LAMP proviene de la
combinación de un sistema operativo Linux, un servidor
Apache HTTP, una base de datos MySQL (o MariaDB) y
la programación PHP. Los servidores LAMP son una
solución muy popular para la ejecución de servidores
web.

C y Java son lenguajes compilados, para ser ejecutados


por el sistema, el código fuente escrito en C se
convierte en código binario de la máquina, mientras que
el código fuente Java se convierte en bytecode
ejecutado en un entorno de software especial llamado
Java Virtual Machine. JavaScript, Perl, Shell script,
Python y PHP son lenguajes interpretados, también
llamados lenguajes de script.

Linux prof. INSTITUTO 23


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
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
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 esta opción, es un buen primer
intento para aprender mas 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.
Paginas 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 desee ver la

Linux prof. INSTITUTO 24


Linux Essentials (Versión 1.6)

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
Referencias cruzadas a los temas
SEE ALSO
relacionados
DIAGNOSTICS Mensajes de advertencia y error
COPYRIGHT Autor (es) del comando
Cualquier limitación conocida del
BUGS
comando

En la práctica, la mayoría de las paginas 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

Linux prof. INSTITUTO 25


Linux Essentials (Versión 1.6)

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 como navegar a través de una página


man y como 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
mostrara un menú con toda la información.

Páginas de información (Info Pages)

Otra herramienta que le ayudara mientras trabaja con el


sistema Linux son las páginas de información (info
pages). Las paginas 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.

Linux prof. INSTITUTO 26


Linux Essentials (Versión 1.6)

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 ayudaran a navegar por la página más
fácilmente, así como a comprender como 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 especifico.

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

Linux prof. INSTITUTO 27


Linux Essentials (Versión 1.6)

Un sistema Linux esta 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 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á mas sobre las
expresiones regulares en un capitulo 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 pagina 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.

Linux prof. INSTITUTO 28


Linux Essentials (Versión 1.6)

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:

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

2.3 Uso de Directorios y Listado de Archivos.


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

Linux prof. INSTITUTO 29


Linux Essentials (Versión 1.6)

TIP
Si el comando tree no esta disponible en su sistema,
instálelo usando el gestor de paquetes de su
distribución Linux. Consulte la lección sobre gestión de
paquetes para aprender a cómo 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 esta 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 informacion:
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):
user@hostname ~/Documents/Reports $ pwd
/home/user/Documents/Reports

Linux prof. INSTITUTO 30


Linux Essentials (Versión 1.6)

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

Linux prof. INSTITUTO 31


Linux Essentials (Versión 1.6)

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 solo 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 podre encontrar la
casa de tu amigo, necesitaras 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
.
..

Linux prof. INSTITUTO 32


Linux Essentials (Versión 1.6)

report2018.txt
NOTE Puedes consultar la página de man para ls
entender lo que -a esta 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 ubicacion 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 aprendera 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

LECCIÓN 2

Introducción

El sistema operativo Unix se diseño 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.

Linux prof. INSTITUTO 33


Linux Essentials (Versión 1.6)

Directorios principales

Este es un ejemplo de un sistema de archivos normal en


Linux:

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

Linux prof. INSTITUTO 34


Linux Essentials (Versión 1.6)

los permisos en una sección posterior. Ahora, nos


centraremos en el directorio /home que debería ser algo
familiar en este punto:
$ 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


asi:

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

Linux prof. INSTITUTO 35


Linux Essentials (Versión 1.6)

user@hostname ~ $
La tilde (~) aqui representa nuestro directorio home . Si
ejecuta el comando ls vera 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:

$ ls
Documents
$ cd Documents
$ ls
Mission-Statement
Reports
$ cd Reports
$ ls
report2018.txt
$ cd ~
$ ls

Linux prof. INSTITUTO 36


Linux Essentials (Versión 1.6)

Documents

Tenga en cuenta que los usuarios siempre comenzaran


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 funcionara 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.
$ 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 enumerara
todos los archivos y directorios incluidos los ocultos.
$ ls -a ~
.
..
.bash_history

Linux prof. INSTITUTO 37


Linux Essentials (Versión 1.6)

.bash_logout
.bash-profile
.bashrc
Documents
Los archivos y directorios ocultos siempre comenzaran
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
especificas 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 ocuparan una línea, pero
se mostrara 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 comenzara con guion
y un directorio comenzara con d.

Numero 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

Linux prof. INSTITUTO 38


Linux Essentials (Versión 1.6)

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 enumerara los directorios pero no sus
contenidos. La combinación con */ mostrara solo
subdirectorios y ningún archivo.
ls -lt
Combinar long list con la opcion 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
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 agrupara todos los archivos que
terminen con .txt, todos los que terminen con .jpg y
así sucesivamente.
ls -S

Linux prof. INSTITUTO 39


Linux Essentials (Versión 1.6)

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 modificara el comando ls para mostrar
una lista recursiva. .Que 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 solo 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:
$ 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

Linux prof. INSTITUTO 40


Linux Essentials (Versión 1.6)

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.

2.4 Crear, mover y borrar archivos.

Introducción

Esta lección cubrirá la administración de archivos y


directorios en Linux usando herramientas de linea 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 grafico de archivos.

Linux prof. INSTITUTO 41


Linux Essentials (Versión 1.6)

En esta sección usted usara los comandos ls, mv, cp,


pwd, find, touch, rm, rmdir, echo, cat, y mkdir para
administrar y organizar archivos asi 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 pwd muestra el directorio en el que se encuentra


actualmente, como puede observar, el cambio a /ETC
no funciono, ya que dicho directorio no existe, sin
embargo el cambio al directorio /etc que si 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

Linux prof. INSTITUTO 42


Linux Essentials (Versión 1.6)

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 este 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 notara que solo se
crearon moving, globs, y creating. Los directorios
copying y deleting no existen todavía. Por defecto, el
comando mkdir, no creara 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 opcion
-p:
$ mkdir -p creating moving copying/files
copying/directories deleting/directories
deleting/files globs
Ahora no recibirás ningún mensaje de error. Veamos
que directorios existen ahora:
$ find
.
./creating
./moving
./globs

Linux prof. INSTITUTO 43


Linux Essentials (Versión 1.6)

./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
mostrara un listado de todos los archivos, directorios y
subdirectorios de su directorio actual.
TIP: Al listar el contenido de un directorio con ls, las
opciones -t y -r son particularmente ú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

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

Linux prof. INSTITUTO 44


Linux Essentials (Versión 1.6)

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


caracter > 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á sobrescrito!
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 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 file3n

Linux prof. INSTITUTO 45


Linux Essentials (Versión 1.6)

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

$ 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

Linux prof. INSTITUTO 46


Linux Essentials (Versión 1.6)

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 solo puede eliminar
directorios:

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

Linux prof. INSTITUTO 47


Linux Essentials (Versión 1.6)

$ 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 solo 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 solo borrara todos los
directorios, sino también todo lo que haya dentro de ese
directorio, incluyendo los subdirectorios y sus
contenidos:
$ 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:
$ 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

Linux prof. INSTITUTO 48


Linux Essentials (Versión 1.6)

./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:

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

Linux prof. INSTITUTO 49


Linux Essentials (Versión 1.6)

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

$ 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 como 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 creara
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

Linux prof. INSTITUTO 50


Linux Essentials (Versión 1.6)

./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:

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

Linux prof. INSTITUTO 51


Linux Essentials (Versión 1.6)

sino que busca archivos en el directorio actual que


concuerden con el patrón star (incluyendo solo 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
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 \, estas
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

Linux prof. INSTITUTO 52


Linux Essentials (Versión 1.6)

$ ls file[1-2]
file1 file2
$ ls file[1-3]
file1 file2 file3
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 digitos que coincida con los numeros, 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
digito o a.
POSIX requiere las siguientes clases de caracteres para
todas las localizaciones:

[:alnum:] Letras y números.


[:alpha:] Letras mayúsculas o minúsculas.
[:blank:] Espacios y tabulaciones.
[:cntrl:] Caracteres de control, por ejemplo,
backspace, bell, NAK, escape.

Linux prof. INSTITUTO 53


Linux Essentials (Versión 1.6)

[:digit:] Números (012345456789).


[:graph:] Caracteres gráficos (todos los caracteres
excepto ctrl y el carácter de espacio)
[:lower:] Letras minusculas (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).
TEMA 3
El Poder de la Línea de Comandos.

3.1 Archivar Ficheros desde la Línea de Comandos.

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 mas compleja.

La compresión tiene dos variantes, sin perdida


(lossless) y con perdida (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

Linux prof. INSTITUTO 54


Linux Essentials (Versión 1.6)

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 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
tratara en esta lección. Por si 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, tomara 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.

Linux prof. INSTITUTO 55


Linux Essentials (Versión 1.6)

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

Linux prof. INSTITUTO 56


Linux Essentials (Versión 1.6)

Compare los tamaños de los archivos comprimidos con


el archivo sin comprimir denominado bigfile. Observe
también como 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:
$ 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

Linux prof. INSTITUTO 57


Linux Essentials (Versión 1.6)

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:

$ 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 mas
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 codigo 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
compresión y todo su contenido al archivo comprimido.

Linux prof. INSTITUTO 58


Linux Essentials (Versión 1.6)

Para ver el contenido de un archivo creado con tar, se


utiliza la opción t:
$ 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 como 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.
NOTE Se puede usar la opción -v para permitir que tar
muestre los nombres de los 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:
$ 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

Linux prof. INSTITUTO 59


Linux Essentials (Versión 1.6)

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

TIP Si se desea utilizar la ruta absoluta en un archivo tar,


se debe usar la opción P. Es importante tener en
cuenta que esta operación puede sobrescribir ficheros
importantes y puede causar errores en el sistema.

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

Linux prof. INSTITUTO 60


Linux Essentials (Versión 1.6)

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

$ cd ~/linux_essentials-3.1/compression
$ ls
bigfile bigfile3 bigfile-gz1.gz bigfile-xz1.xz bzip2.tar.bz2
hosts.gz
bigfile2 bigfile4 bigfile-gz9.gz bigfile-xz9.xz gzip.tar.gz
xz.tar.xz
$ tar cf plain.tar bigfile bigfile2 bigfile3
$ tar tf plain.tar

bigfile
bigfile2
bigfile3
$ tar uf plain.tar bigfile4
$ tar tf plain.tar
bigfile
bigfile2
bigfile3
bigfile4
$ tar uzf gzip.tar.gz bigfile4
tar: Cannot update compressed archives
Try 'tar --help' or 'tar --usage' for more information.

Gestión de archivos ZIP

Los sistemas Windows generalmente no tienen


aplicaciones para manejar archivos .tar, o muchas de
las herramientas de compresión que se encuentran
comúnmente en los sistemas Linux. Si se necesita
interactuar con sistemas Windows, se pueden utilizar
archivos ZIP. Los archivos ZIP son similares a los tar
comprimidos.

Linux prof. INSTITUTO 61


Linux Essentials (Versión 1.6)

Los programas zip y unzip pueden ser usados para


trabajar con archivos ZIP en sistemas Linux. El ejemplo
a continuación muestra lo necesario para comenzar a
utilizarlos. Primero se crean un conjunto de ficheros:

$ cd ~/linux_essentials-3.1
$ mkdir zip
$ cd zip/
$ mkdir dir
$ touch dir/file1 dir/file2

A continuación se utiliza zip para empaquetar estos


ficheros en un archivo ZIP:

$ zip -r zipfile.zip dir


adding: dir/ (stored 0%)
adding: dir/file1 (stored 0%)
adding: dir/file2 (stored 0%)
$ rm -rf dir

Finalmente, se descomprime el archivo ZIP:

$ ls
zipfile.zip
$ unzip zipfile.zip
Archive: zipfile.zip
creating: dir/
extracting: dir/file1
extracting: dir/file2
$ find
.
./zipfile.zip
./dir
./dir/file1
./dir/file2

Cuando se agregan directorios a archivos ZIP, la opción


-r permite que zip incluya el contenido de un directorio.
Si no se especifica esa opción se incluyen directorios
vacíos en el archivo ZIP.

Linux prof. INSTITUTO 62

También podría gustarte