03 Linux
03 Linux
03 Linux
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.
Sistemas embebidos
Android
Raspbian y Raspberry Pi
$ figlet Awesome!
_ _
/ \__ _____ ___ ___ _ __ ___ ___| |
/ _ \ \ /\ / / _ \/ __|/ _ \| '_` _ \ / _ \ |
/ __ \ V V / __/\__ \ (_) | | | | | | ___/_|
/_/ \_ \_/\_/ \__||___/\___/|_| |_||__|\_(_)
Transaction Summary
===================================================
Install 1 Package
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!
Eliminación de paquetes
Basada en DEB:
Transaction Summary
===================================================
Remove 1 Package
Freed space: 76 k
Is this ok [y/N]: y
Removed:
cowsay.noarch 3.04-10.fc28
Complete!
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
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.
Blender
GIMP
Inkscape
Audacity
ImageMagick
Lenguajes de programación
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
$ man mkdir
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
Categoría Descripción
1 Comando del usuario
2 Llamadas del sistema
3 Funciones de la biblioteca C
4 Controladores y archivos de dispositivo
5 Archivos de configuración y formatos de
archivo
6 Juegos
7 Miscellaneous
8 Comandos del administrador del sistema
9 Funciones del núcleo (no estándar)
$ info mkdir
El directorio /usr/share/doc/
Localizando archivos
El comando locate
$ locate note
/lib/udev/keymaps/zepto-znote
/usr/bin/zipnote
/usr/share/doc/initramfs-tools/maintainer-notes.html
/usr/share/man/man1/zipnote.1.gz
~$ 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.
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.
user@hostname ~/Documents/Reports $ ls
report2018.txt
user@hostname ~ $ cd /home/user/Documents
user@hostname ~/Documents $ pwd
/home/user/Documents
user@hostname ~/Documents $ ls
Mission-Statement.txt Reports
/
└── home
└── user
└── Documents
└── Reports
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).
LECCIÓN 2
Introducción
Directorios principales
$ 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
$ tree /home/user
user
└── Documents
├── Mission-Statement
└── Reports
└── report2018.txt
$ tree /home
/home
├── user
│ └── Documents
│ ├── Mission-Statement
│ └── Reports
│ └── report2018.txt
├── michael
│ ├── Documents
│ │ └── presentation-for-clients.odp
│ └── Music
user@hostname ~ $
La tilde (~) aqui representa nuestro directorio home . Si
ejecuta el comando ls vera algunos resultados
familiares:
$ cd ~
$ ls
Documents
user@hostname ~ $ pwd
/home/user
user@hostname ~ $ su - michael
Password:
michael@hostname ~ $ pwd
/home/michael
$ ls
Documents
$ cd Documents
$ ls
Mission-Statement
Reports
$ cd Reports
$ ls
report2018.txt
$ cd ~
$ ls
Documents
$ 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
.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)
$ ls -l
-rw-r--r-- 1 user staff 3606 Jan 13 2017 report2018.txt
-rw-r—r--
user staff
3606
Jan 13 2017
report2018.txt
Introducción
$ cd /
$ ls
bin dev home lib64 mnt proc run srv tmp var
boot etc lib media opt root sbin sys usr
$ cd ETC
bash: cd: ETC: No such file or directory
$ pwd
/
$ cd etc
$ pwd
/etc
Creación de directorios
$ cd ~
$ pwd
/home/user
$ ls
Desktop Documents Downloads
$ mkdir linux_essentials-2.4
$ ls
Desktop Documents Downloads linux_essentials-2.4
$ cd linux_essentials-2.4
$ pwd
/home/emma/linux_essentials-2.4
$ cd ~/linux_essentials-2.4
$ 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
./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
$ cd globs
$ ls
question1 question14 question23 star1100 star2013
question13 question2012 star10 star2002
$ cat question14
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
$ cd ~/linux_essentials-2.4/moving
$ mkdir dir1 dir2
$ ls
dir1 dir2 file1 file2 file3 file5
$ mv file1 dir1
$ ls
dir1 dir2 file2 file3 file5
$ ls dir1
file1
$ ls
dir1 dir2 file5
$ ls dir1
file1
$ mv dir1 dir3
$ ls
dir2 dir3 file5
$ ls dir3
file1
$ 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
$ 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
$ ls -a deleting/files
. ..
$ rmdir deleting/files
$ ls -l deleting
directories
./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
$ cd ~/linux_essentials-2.4/copying
$ ls
directories files
$ cp /etc/nsswitch.conf files/nsswitch.conf
$ cp /etc/issue /etc/hostname files
$ 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
$ cd ~/linux_essentials-2.4/copying
$ cp files directories
cp: omitting directory ‘files’
$ 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
$ cp -r files files2
$ find
.
./files
./files/nsswitch.conf
./files/fstab
./files/hostname
./directories
./directories/files
./directories/files/nsswitch.conf
./directories/files/fstab
./directories/files/hostname
./files2
./files2/nsswitch.conf
./files2/fstab
./files2/hostname
Globbing
$ 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
$ 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:
Introducción
Herramientas de compresión
$ 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
$ cp /etc/hosts ./
$ gzip hosts
$ zcat hosts.gz
127.0.0.1 localhost
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
compression/bigfile4
$ ls
3.1.tar compression
$ ls compression
hosts.gz
$ 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
$ 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.
$ cd ~/linux_essentials-3.1
$ mkdir zip
$ cd zip/
$ mkdir dir
$ touch dir/file1 dir/file2
$ 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