Professional Documents
Culture Documents
4.1 Introduccin
Linux es un sistema multiusuario y multitarea basado en el sistema operativo UNIX. Es de
libre distribucin y cdigo abierto.
En cuanto a su estructura, tiene un ncleo donde se ejecutan los servicios ms bsicos y que
est aislado del usuario que puede comunicarse con el sistema a travs de las distintas shell y
entornos de escritorio.
Nota: Linux dispone de varias alternativas para el entorno de escritorio y para la shell
(concha) que son los interfaces que aslan al usuario del ncleo. El usuario podr dar rdenes, desde
el terminal o desde el entorno grfico, que sern interpretadas y enviadas al ncleo.
4.1.1 El ncleo
Cada nueva distribucin de Linux incluye un nuevo ncleo mejorado. Los ncleos se
nombran con 3 o 4 nmeros separados por puntos:
El primer nmero: Indica la versin del ncleo. Slo cambia cuando se modifica el
ncleo.
El segundo nmero: Indica la revisin principal del ncleo.
El tercer nmero: Revisin menor del ncleo. Por ejemplo, se aaden drivers o
alguna caracterstica.
El cuarto nmero: Correcciones de errores o fallos de seguridad. El cuarto nmero
slo aparece si ha sido necesario aplicar alguna correccin.
Por ejemplo, el ncleo 4.4.0.57 corresponde a la versin 4, revisin 4, sin revisiones menores
y con 57 correcciones.
Puedes ver el ncleo que est funcionando en tu sistema con el comando:
uname -r
Cuando haces una actualizacin del sistema a un nuevo ncleo, el ncleo anterior no se
desinstala y queda en reserva por si en alguna ocasin falla el actual. Puedes ver los ncleos que
mantiene tu sistema en el men del grub, al iniciar el equipo.
4.1.2 La shell
Una shell se encarga de interpretar rdenes o comandos, permitiendo redireccin de
entrada/salida, listado y lectura de ficheros y un lenguaje para crear programas por lotes o scripts.
Linux dispone de las siguientes shell:
sh (Bourne shell): Original de Unix. Archivos de configuracin /etc/profile y
~/.profile.
csh (C shell): adapta el anterior para programadores adoptando una sintaxis parecida
al lenguaje C.
tcsh (Tenex C shell): Mejora el anterior.
ya que cada uno de los entornos viene acompaado de sus propias aplicaciones y nos podramos
encontrar por ejemplo, con tantas aplicaciones de terminal como escritorios tengamos.
Adems tener varios entornos de escritorio puede crearte problemas difciles de solucionar.
Si quieres hacer pruebas se recomienda que uses mquinas virtuales o equipos para ensayos, pero
nunca equipos en produccin.
Ejemplo:
man ls
Ofrece ayuda sobre el comando ls.
PARA ENTENDER LA AYUDA
Si en la ayuda de un comando muestra lo siguiente:
comando [-o | --opcion] [argumentos]
Las opciones son para cambiar la forma de trabajar del comando.
Los argumentos son datos sobre los que trabaja el comando (por ejemplo, un fichero
o una carpeta).
Los corchetes significan que es opcional. En este caso se podra escribir el comando
solo (todo lo dems es opcional porque est entre corchetes) o bien se podra escribir
el comando seguido de opciones y/o argumentos.
La barra vertical (|) significa que hay que elegir entre varias alternativas. En este
caso se podra elegir la alternativa -o o bien la alternativa --opcion, pero nunca
ambas.
PARA TRADUCIR LAS PGINAS MAN AL CASTELLANO
Algunas de las pginas del manual estn traducidas al castellano (no todas). Para tener acceso
a las traducciones debemos descargar dos paquetes:
sudo apt-get install manpages-es manpages-es-extra
y configurarlo para que, por defecto, ofrezca la versin en castellano si existe:
sudo dpkg-reconfigure locales
whoami
Sintaxis:
whoami
Muestra el usuario actual.
who
Sintaxis:
who
Muestra todos los usuarios que tienen sesin abierta en el sistema.
Nota: Si pruebas estos comandos en tu equipo probablemente no encontrars diferencia entre
who y whoami. Cuando un equipo admite conexiones remotas de otros usuarios, el comando who te
permitir saber quienes estn dentro.
w
Muestra los usuarios conectados e informacin de los procesos que estn ejecutando.
Sintaxis:
w
clear
Limpia el terminal de los comandos y respuestas anteriores.
Sintaxis:
clear
echo
Muestra una lnea de texto en el terminal.
Sintaxis:
echo texto
Ejemplo:
echo Esto es un ejemplo de echo
Nota: El comando echo te parecer absurdo si lo tecleamos directamente sobre el terminal.
Sin embargo es muy til cuando se usa dentro de un script.
passwd
Cambia la contrasea de un usuario.
Sintaxis:
passwd [opciones] [usuario]
Si no se especifica un usuario, cambia la contrasea del usuario actual.
Opciones:
-e | --expire: Obliga a que caduque la contrasea, de modo que el usuario tendr que
modificarla forzosamente en el prximo inicio de sesin.
Ejemplo:
passwd pepe
Cambia la contrasea del usuario pepe. Primero pregunta por la contrasea actual y despus
por la nueva contrasea dos veces para evitar errores al teclear.
Nota: Un usuario normal slo puede modificar su propia contrasea. Slo el usuario root
puede modificar la contrasea de otros usuarios.
history
Muestra todo el historial de comandos tecleados en el terminal.
Sintaxis:
history
Nota: El historial de comandos tecleados en el terminal se guarda en un fichero de texto
llamado .bash_history, que se aloja en la carpeta de usuario.
cat
Muestra el contenido de un fichero de texto.
Sintaxis:
cat [ruta]nombreFichero
Si el fichero no est en la carpeta actual habr que especificar la ruta.
Ejemplo:
cat ~/Escritorio/instrucciones.txt
Muestra el contenido de un fichero llamado instrucciones.txt, que se encuentra en el
Escritorio del usuario actual.
exit
Sintaxis:
exit
Sale del terminal de texto.
/etc: Contiene los archivos de configuracin del sistema, separados en carpetas. Por
ejemplo, habr una carpeta /etc/apt para la configuracin de la aplicacin apt que
tantas veces hemos usado ya.
/etc/init.d: Contiene los demonios (del ingls, daemon), que son scripts que
proporcionan un servicio en segundo plano. Estos demonios se suelen usar con
los argumentos start, stop o restart para iniciar, parar o reiniciar el servicio
respectivamente.
Por ejemplo, supongamos que en nuestro equipo tenemos instalado un
servidor web, de modo que otros usuarios pueden solicitar pginas web y
nuestro equipo las proporciona. Este servicio requiere que haya un programa en
segundo plano (un demonio llamado httpd) que est todo el tiempo a la espera
de que se soliciten las pginas web.
Si queremos que el demonio comience su ejecucin y est a la escucha
escribiremos:
/etc/init.d/httpd start
Y si queremos que deje de funcionar:
/etc/init.d/httpd stop
/etc/rc0.d a /etc/rc6.d: Estas 7 carpetas corresponden a los 7 niveles de
ejecucin de un sistema Linux, desde el nivel 0 (apagado), nivel 1
(monousuario), nivel 2 (multiusuario sin red), nivel 3 (inicio normal), niveles 4
y 5 (iguales al 3), hasta el nivel 6 (reinicio).
Cada una de estas carpetas contiene enlaces simblicos (llamadas) a los
demonios de la carpeta /etc/init.d. El nombre del enlace comenzar por S (start)
si tiene que iniciarse o por K (kill) si tiene que detenerse en ese nivel de
ejecucin concreto.
/home: (hogar) Esta carpeta est destinada a alojar todas las carpetas personales de
los usuarios del sistema.
/home/usuario o ~: Cada vez que se crea un nuevo usuario, se crea una carpeta
del mismo nombre como hija de /home. La virgulilla (~) es el smbolo que
usamos para designar la carpeta del usuario actual.
~/Escritorio o ~/Desktop: (segn la distribucin de Linux) Es la carpeta
que contiene los elementos que se mostrarn en el escritorio grfico del
sistema. Puesto que es una carpeta hija de la carpeta personal, cada
usuario tendr un escritorio personalizado.
/lib: (libraries bibliotecas) Contiene las libreras o bibliotecas que son ficheros
necesarios para la ejecucin de los programas.
/lost+found: (perdidos y encontrados) Contiene informacin sobre los procesos que
se ejecutaban antes de una cada del sistema.
/media: Contiene las unidades de disco (disco duro, DVD, pendrive, etc) que se
montan automticamente. Lo habitual es que estn en una subcarpeta con el nombre
del usuario.
/mnt: (mount) Contiene las unidades de disco que se montan de forma temporal y
manual.
/opt: Para las aplicaciones que no se instalan automticamente porque no proceden
de los repositorios.
/proc: Contiene ficheros que estn residiendo en memoria principal (no en disco).
Por ejemplo existe una carpeta para cada uno de los procesos en ejecucin. Otros
ficheros ofrecen informacin en directo del sistema, como partitions o filesystems.
/root: Es la carpeta personal del usuario root. Es la nica carpeta personal que no es
hija de /home.
/sbin: (Como bin) Contiene programas que slo puede ejecutar el usuario root.
/usr:
/usr/games: Contiene juegos.
/usr/bin: Contiene programas ms complejos que los alojados en /bin. En
niveles de ejecucin bajos estos programas no estn disponibles, los de /bin si.
/usr/lib: Contiene las libreras para los programas alojados en /usr/bin.
/usr/sbin: Como /usr/bin, pero con programas que slo estn accesibles al
usuario root.
/usr/src: Contiene el cdigo fuente de los programas.
/tmp: Contiene archivos temporales.
/var: Contiene informacin variable.
/var/log: Contiene los archivos de registro. Son ficheros de texto donde las
aplicaciones escriben mensajes de error o registran su actividad. Son muy tiles
cuando una aplicacin da problemas.
/var/spool: Contiene eventos programados con at y cron, que los veremos ms
adelante.
Nombre i-nodo
/etc/config 334
~/fichero1 350
~/fichero2 350
~/fichero3 420
~/fichero4 431
... ...
FICHEROS OCULTOS
En Linux los ficheros y carpetas que empiezan por un punto se tratan como ocultos. Esto
significa que no se mostrarn al listar el contenido de una carpeta (ya sea desde el shell o desde el
entorno grfico) si no se solicita de forma explcita.
Para listar los ficheros y carpetas ocultos desde el shell usamos la opcin -a en el comando ls:
ls -a
Para ver los ficheros y carpetas ocultos desde el entorno grfico usa las teclas CTRL + h .
Para volverlos a ocultar usa la misma combinacin de teclas.
SHELL SCRIPTS
Los shell scripts (guiones) de Linux son ficheros de texto que contienen un comando u orden
en cada lnea. Lo normal es que el nombre de fichero de un script tenga la extensin .sh. Si los
marcamos como ejecutables, al ordenar la ejecucin se cumplirn cada uno de los comandos en el
mismo orden en que se encuentran en el script, de la misma forma que si los escribisemos uno a
uno en el terminal.
Para hacer que un fichero de texto sea ejecutable, desde el entorno grfico:
CLIC-DERECHO/PROPIEDADES/PERMISOS/EJECUCIN
Desde el terminal:
chmod +x miScript.sh
Para lanzar la ejecucin del script desde el entorno grfico haremos doble clic sobre el
fichero, desde el terminal lo lanzamos con:
sh miScript.sh
Ejemplos:
ls -d /etc/*.d
Muestra todos los ficheros y carpetas alojados en /etc y que terminan en .d.
ls -d /etc/rc*
Muestra todos los ficheros y carpetas alojados en /etc y que comienzan con
rc.
ls /bin/*sh*
Muestra todos los ficheros y carpetas alojados en /bin y que contengan la
cadena sh.
ls -d /etc/*/*.d
Muestra todos los ficheros alojados en cualquier carpeta hija de /etc y que
terminen en .d.
ls -d /etc/rc?.d
Muestra todos los ficheros y carpetas alojados en /etc que comienzan con rc
seguido de un carcter cualquiera y seguido de .d.
ls -d /etc/??a*
Muestra todos los ficheros y carpetas alojados en /etc con la letra a en la
tercera posicin.
ls -d /etc/rc[012].d
Muestra todos los ficheros y carpetas alojados en /etc que comienzan con rc
seguido de un cero, un uno o un dos y seguido de .d. Es decir: rc0.d, rc1.d y rc2.d.
ls -d /etc/hos{t.,tn,ts}*
Muestra todos los ficheros y carpetas alojados en /etc que comienzan con hos
seguido de las cadenas t. tn ts y cualesquiera otros caracteres detrs.
ls
Muestra informacin de ficheros y directorios. Si no se especifica nada, los del directorio
actual.
Sintaxis:
ls [opciones] [argumentos]
Opciones:
-d | --directory: Muestra informacin de los directorios, pero no de su contenido.
-a | --all: Muestra tambin los ficheros y directorios ocultos (los que empiezan por
un punto).
-i | --inode: Muestra el nmero de i-nodo.
-t | --sort=time: Muestra la informacin ordenada por la fecha de modificacin.
-r | --reverse: Muestra la informacin en el orden contrario.
--color: Muestra el contenido con colores. (Si usas el shell bash ya sale con color por
defecto, pero puedes probar esta opcin en el shell sh).
pwd
Muestra la ruta absoluta del directorio actual.
Sintaxis:
pwd
mkdir
Crea directorios.
Sintaxis:
mkdir [opciones] directorio[...]
Opciones:
-p | --parents: Crea los directorios intermedios si no existen.
-m | --mode: Permite especificar los permisos del nuevo directorio.
Ejemplos:
mkdir dire1
Crea el directorio dire1, que ser hijo del directorio actual.
mkdir dire1 dire2
Crea los directorios dire1 y dire2, que sern hijos del directorio actual.
mkdir -p dire1/dire2
Crea el directorio dire2, que ser hijo del directorio dire1, que a su vez es hijo del directorio
actual. Si dire1 no existiera tambin lo crea, ya que hemos usado la opcin -p.
mkdir -m 555 dire1
Crea el directorio dire1, que ser hijo del directorio actual y que tendr los permisos 555.
Nota: Veremos los significados de los permisos ms adelante, en este mismo tema.
EXPRESIONES REGULARES
Las expresiones regulares permiten definir patrones de coincidencia en un texto, mediante el
uso de caracteres y metacaracteres. No deben confundirse con los patrones que se usan en la lnea
de comandos con comodines. Los metacaracteres son caracteres que adquieren un significado
especial y tenemos los siguientes:
Cuantificadores:
Interrogante (?): El elemento que le precede es opcional.
Asterisco (*): El elemento que le precede se repite 0 o ms veces.
Suma (+): El elemento que le precede se repite 1 o ms veces.
Llaves: Encierran un cuantificador.
{n}: El elemento que le precede se repite exactamente n veces.
{n,m}: El elemento que le precede aparecer un mnimo de n veces y un
mximo de m veces.
{n,}: El elemento que le precede aparecer un mnimo de n veces.
Punto (.): Cualquier carcter (salvo salto de lnea o retorno de carro).
Circunflejo (^): Inicio de cadena.
Dolar ($): Final de cadena.
Barra (|): Alternativa entre varias opciones.
Parntesis (): Encierran expresiones regulares para anidamientos.
Corchetes [] : Encierra clase carcter. Todo lo que hay entre corchetes dar como
resultado un nico carcter.
Guin (-): Separador para rangos.
Barra inversa (\): Secuencia de escape. Despoja al carcter siguiente de su
significado habitual. Por ejemplo para representar un interrogante tenemos que
despojarle (escaparle) de su significado especial y eso lo conseguimos
anteponindole el carcter de escape (\).
Una expresin regular tiene 0 o mas piezas concatenadas, cada pieza ser un elemento
seguido opcionalmente de un cuantificador. Cada elemento puede ser un carcter, una clase de
carcter que ir encerrada entre corchetes [] u otra expresin regular que ir encerrada entre
parntesis ().
Ejemplos:
Patrn Secuencia que admite
a?b b, ab
a*b b, ab, aab, aaab, ....
a+b? a, ab, aa, aab, aaa, aaab, ....
a{1,3}b ab, aab, aaab
go{2,}gle google, gooogle, goooogle, ....
[abcd] Una sola letra que puede ser a, b, c d
[a-d] Una sola letra que puede ser a, b, c d
[A-Z] una letra mayscula
Chapter\s[0-9] Chapter 0, Chapter 2, . , Chapter 9
(a|b)+x ax, bx, aax, bbx, abx, bax, ....
[xyz]b xb, yb, zb
(ho\s){2}there ho ho there
[-ac]x
-x, ax, cx
[ac-]x
[a-c]x ax, bx, cx
.abc cualquier carcter seguido de abc
a.*b cualquier secuencia que comience por a y termine en b
(a?b)|(c?d) ab, b, cd, d
\*a+ *a, *aa, *aaa, *aaaa, ....
Como ltimo ejemplo, observa el patrn que se correspondera con una direccin IP:
(([1-9]?[0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])\.){3}([1-9]?[0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])
Dos, mayor que (2>): Redirecciona la salida de errores al fichero que se indique,
borrando la informacin que pudiera tener el fichero previamente.
Dos, doble mayor que (2>>): Redirecciona la salida de errores al fichero que se
indique, pero lo aade al final del fichero, conservando el contenido que pudiera
tener previamente.
Ejemplos:
ls -l > listado.txt
Crea un listado del directorio actual en formato largo (ls -l), pero en lugar de mostrarlo en
pantalla, lo guarda en el fichero listado.txt. Si el fichero no existe, lo crea. Si el fichero ya exista, lo
machaca con el nuevo contenido.
Si este comando tuviese que informar de un error, el mensaje se muestra en pantalla porque la
salida de errores no ha sido redirigida.
echo Fin del listado >> listado.txt
Muestra el mensaje Fin del listado, pero en lugar de mostrarlo en pantalla, lo aade al final
del fichero listado.txt. Si el fichero no existe, lo crea. Si el fichero ya exista, aade el mensaje en
una nueva lnea al final.
Si este comando tuviese que informar de un error, el mensaje se muestra en pantalla porque la
salida de errores no ha sido redirigida.
ls - 2> listado2.log
Muestra un listado del directorio actual en formato largo en pantalla (la salida estndar no ha
sido redirigida), pero si hubiera mensajes de error (observa que hemos usado a propsito una opcin
errnea -) los guarda en el fichero listado2.log, borrando su anterior contenido.
ls -l > listado3.txt 2> listado3.log
Crea un listado en formato largo del directorio actual en el fichero listado3.txt, enviando los
mensajes de error al fichero listado3.log.
Nota: Podemos redirigir la salida estndar o la salida de errores al fichero /dev/null. Esto
significa que no queremos que muestre la salida o los errores respectivamente. Esto es algo que
solamente tendr sentido en casos muy concretos.
Ejemplo de redireccin de entrada:
Como ya sabes, el comando passwd te permite modificar tu contrasea, de modo pide en
primer lugar la contrasea vigente y despus la nueva contrasea dos veces. Estos tres datos
debern ser suministrados en ese orden y seguidos de la tecla Enter . Supongamos que tenemos un
fichero contra.txt con el siguiente contenido:
contraseaVigente
contraseaNueva
contraseaNueva
Si usamos el comando:
passwd < contra.txt
se ejecuta el programa passwd, pero recoge los datos del fichero contra.txt en lugar del
teclado (la entrada ha sido redirigida).
TUBERAS
Las tuberas (pipes) conectan la salida estndar de un comando con la entrada estndar del
siguiente y usan el smbolo barra vertical (|).
Ejemplo:
ls -l | sort
El primer comando genera como salida un listado en formato largo del contenido actual. Ese
listado ser la entrada del segundo comando (sort), de modo que el listado saldr con las lneas
ordenadas alfabticamente.
ls -l | wc -w
El primer comando genera como salida un listado en formato largo del contenido actual. Ese
listado ser la entrada del segundo comando (wc -w), de modo que se mostrar el nmero de
palabras del listado.
find / | more
El primer comando genera un listado de todos los ficheros y directorios del sistema de
archivos (un listado muy muy largo). Ese listado ser la entrada del segundo comando (more) que
lo mostrar pgina a pgina.
egrep [0-9]{5} fichero.txt | head -n 2
El primer comando genera un listado con todas las lneas del fichero.txt que contengan un
cdigo postal. El segundo comando (head -n 2) muestra slo las dos primeras lneas de ese listado.
tee
Recibe una entrada y la enva a dos sitios: a la salida estndar y al fichero indicado.
Nota: Una redireccin normal enva la salida al fichero indicado, pero no se muestra en
pantalla. Con tee se consiguen las dos cosas a la vez.
Sintaxis:
tee [opciones] [fichero]
Opciones:
-a | --append: Escribe al final del fichero, sin sobrescribirlo.
Ejemplos:
ls -l | tee listado.txt
El primer comando genera un listado en formato largo del directorio actual. El segundo
comando (tee listado.txt) recoge ese listado y lo bifurca: por un lado saldr por la salida estndar
(pantalla) y por otro lado se almacenar en el fichero listado.txt, borrando su contenido previo.
ls -l | tee -a listado.txt
Hace lo mismo que el ejemplo anterior, pero aadiendo la informacin al final del fichero
listado.txt.
ls -l | tee listado.txt | wc -w
El primer comando genera un listado del directorio actual en formato largo. El segundo
comando (tee listado.txt) lo bifurca: por un lado al fichero listado.txt y por otro lado a la salida
estndar. Pero no aparece en pantalla porque el segundo pipe (tubera) dirige ese listado hacia el
tercer comando (wc -w) que mostrar el nmero de palabras del listado.
/dev/tty2: Representa la terminal que se abre con las teclas CTRL + ALT + F2 y as
sucesivamente.