Sunteți pe pagina 1din 233

ndice

Informacin

Ttulo, autor...

Prefacio

Prefacio

Introduccin

o
o
o
o
o

Historia de Unix
GNU
Linux
Qu distribucin elegir?
Convenciones tipogrficas

Inicio de sesin y primeros comandos

o
o
o
o
o
o
o
o
o

Introduccin
Consolas y terminales Linux
Inicio de sesin, autenticacin
Smbolo del sistema del shell (prompt)
Sintaxis de los comandos
Uso del ratn
Atajos de teclado
Primeros comandos
Cerrar sesin

Documentacin

o
o
o
o
o
o
o

Introduccin
Manual
Documentacin Info
Opcin --help de los comandos en Linux
Documentacin HOWTO
/usr/share/doc
Internet

El rbol de Linux

o
o
o

El rbol de Linux
Directorios principales
Montar y acceder a los medios extraibles

Manipulacin de archivos

o
o
o
o
o
o
o
o
o
o

Introduccin
Nombres de archivos y de directorios
Tipos de archivos
Rutas
Exploracin del rbol
Directorios
Archivos
Organizacin fsica de los archivos en Linux
Administradores de archivos
Consultar archivos

Edicin de archivos de texto - Vi

o
o
o

Introduccin
Presentacin de Vi
Otras herramientas de edicin

Permisos de acceso a los archivos

o
o
o

Conceptos de cuentas de usuario y de grupos


Permisos de Unix
Administrar permisos

Administracin de procesos

o
o
o
o
o
o

Introduccin
rbol de procesos y PID
Visualizacin de los procesos
Seales y comando kill
Administradores de procesos grficos
Trabajo con procesos

Shell Bash

o
o
o
o
o
o
o
o
o
o

Introduccin
Generalidades y definiciones
Variables
Caracteres genricos
Caracteres de cita
Redirecciones
Alias
Ejecucin de comandos
Sustitucin de comandos
Opciones del shell Bash

Programacin y scripts Bash

o
o
o
o
o
o
o
o
o

Introduccin
Scripts Shell
Cdigos de retorno
Encadenamiento de comandos
Variables especiales
Comando test
Operaciones aritmticas
Comando read
Estructuras de control

Administracin de la cuenta de usuario

o
o
o
o
o
o

Introduccin
Modificacin de la cuenta
Datos personales
Entorno de shell
Entorno grfico
Copia de seguridad de los datos del usuario

Herramientas de Linux

Presentacin de las principales herramientas de Linux

Configuracin bsica del sistema

o
o
o

Introduccin
Instalar programas
Herramientas de administracin

25/4/2014

ENI Training - Libro online

Linux
Principios bsicos de uso del sistema (4 edicin)
Este libro sobre GNU/Linux se dirige a cualquier informtico que deseedominar los principios
bsicos de este sistema operativo o que quiera organizar y consolidar los conocimientos adquiridos
con la prctica.
Presenta de forma detallada los principios bsicos del sistema y describe con precisin los comandos
fundamentales para usar la lnea de comandos shell, con ayuda de muchos ejemplos: el rbol de
Linux, el manejo dearchivos, el editor de texto, los permisos de acceso, la gestin deprocesos,
el shell Bash, los scripts Bash, la gestin de las cuentas de usuario, las herramientas Linux, etc.
Los conceptos presentados en este libro son esenciales para entender el funcionamiento del
sistema GNU/Linux para usuarios, y a su vezindispensables para el lector que quiera avanzar
despus en la administracin de sistemas. Se puede utilizar como libro de referencia para que el
lector adquiera la independencia necesaria tanto en entornos grficos como en lnea de comandos.
Con esta nueva edicin descubrir las novedades y particularidades de las ltimas distribuciones
Linux disponibles.
Los captulos del libro:
Prefacio Introduccin Inicio de sesin y primeros comandos Documentacin El rbol de Linux
Manipulacin de archivos Edicin de archivos de texto - Vi Permisos de acceso a los archivos
Administracin de procesos Shell Bash Programacin y scripts Bash Administracin de la cuenta
de usuario Herramientas de Linux Configuracin bsica del sistema

Nicolas PONS
Nicolas Pons dirige una consultora informtica y dispone de la certificacin del LPI (Linux Professional
Institute). Asimismo, es responsable pedaggico y docente en un centro de formacin.
Su slida experiencia en la administracin y desarrollo de sistemas, junto a su capacidad
pedaggica, hacen que el lector tenga entre sus manos una obra realmente prctica sobre los
principios bsicos para el manejo de un sistema Linux.

http://www.eni-training.com/client_net/mediabook.aspx?idR=72812

1/1

25/4/2014

ENI Training - Libro online

Prefacio
Bienvenidos a este libro sobre el uso del sistema operativo GNU/Linux.
Hoy en da, el uso de los sistemas informticos es omnipresente, llega a tal punto que en una entrevista
de trabajo se puede llegar a dudar de la capacidad de uno para conducir un vehculo, pero se asume
que ya sabe "usar" un sistema informtico! Dicho esto, aunque la mayora de lectores tenga el permiso
B1, la cosa no est tan clara cuando se trata de manejar un vehculo de dos ruedas o un
semirremolque... Aparquemos ese coche con el que nos sentimos tan seguros -no he dicho llevarlo al
chatarrero- y aprendamos a manejar ese cachivache llamado Linux.
Aprendo a conducir...
"Nunca he cogido un volante y lo de las marchas me da miedo". Si es su caso, ha encontrado el manual
adecuado para dar los primeros pasos. Como si fuera un profesor de autoescuela, le acompaar a lo
largo de manual aportando detalles de cada concepto bsico. Al principio no tendr que preocuparse por
cambiar de marcha, lo iremos aadiendo a medida que vayan pasando los captulos.
"S conducir desde hace tiempo porque aprend lo bsico con la ayuda de un familiar en la recta que hay
delante de casa." Estupendo, muy valiente, pero puede ser peligroso cuando haya que hacer viajes
largos o si aparece algn obstculo. En ese caso le ensear los trucos para aparcar a la primera, o le
recordar que antes de adelantar hay que poner el intermitente... Aunque podamos alcanzar los 90 km/h
en tercera, si entendemos un poco de mecnica nos daremos cuenta rpidamente de que lo mejor es
cambiar de marcha.
"Me saqu el carnet y conduzco bien pero hasta ahora mis trayectos han sido casa-trabajosupermercado-casa." Pues saquemos el mapa y disfrutemos conduciendo por carreteras secundarias o
por autovas. Ser mucho ms agradable y til cuando haya un atasco en hora punta.
"Soy un gran conductor y s todo lo que hay que saber!" Yo tambin podra decirlo pero debo confesar
que nunca me acuerdo en qu lado de la calle puedo aparcar cuando veo esa maldita seal de
estacionamiento alterno... Por suerte llevo siempre el manual en la guantera.
Paso a paso...
Antes de coger el volante veremos qu tenemos entre manos y detallaremos los trminos utilizados en el
resto del libro ubicndolos en su contexto histrico. Iremos del desarrollo del motor Linux a los acabados
que nos ofrece el concesionario con los folletos para ensalzar la calidad del producto.
Y como no puede esperar a escuchar el ruido del motor y no hay nada mejor que ir al grano, a partir del
segundo captulo le dar las llaves para arrancar, y una vez en marcha empezaremos a tocar alguno de
los botones del salpicadero.
Para no perderse por el camino y dado que el modelo tiene un montn de opciones, lo ideal ser
conocer, gracias al tercer captulo, que la documentacin est en un lugar concreto. As le ahorrar
tirarse un cuarto de hora para cambiar una bombilla mientras se machaca el ndice en el interruptor hasta
encontrar la lengeta adecuada!
Los captulos cuatro, cinco y seis servirn para visitar ciudades con una densa red de carreteras.
Despus de consultar el mapa, vamos a pasar por el laberinto de caminos e incluso aprenderemos a
crear nuestro propio mundo... o simplemente a modificar el ya existente. El captulo siete explicar que
no estamos solos en carretera, incluso podemos crear un circuito privado e invitar a los amigos a
utilizarlo, y si se quiere, podemos utilizar varios vehculos a la vez; de ello hablaremos en el captulo
ocho.
Cuando se sienta cmodo al volante, veremos las lucecitas y botones del salpicadero que no conoce pero
que son de gran utilidad para nuestra comodidad. En los captulos nueve y diez veremos cmo ajustar la
altura del asiento, encender las luces antiniebla y el limitador de velocidad automtico.

http://www.eni-training.com/client_net/mediabook.aspx?idR=72814

1/2

25/4/2014

ENI Training - Libro online

Los amantes del tunning deben leer el captulo once para que su coche deje de ser uno ms!
Por ltimo, el captulo doce ser la caja de herramientas y si le gusta la mecnica, tras ello encontrar los
fundamentos de este arte en el ltimo captulo que puede que le conduzca a hacer unas prcticas en un
taller.
Los camioneros, una gran familia...
Con la esperanza de no haberle perdido con mis metforas, sepa que si un da tiene una avera en
carretera bastar con extender el pulgar: siempre habr un amable conductor que le ayudar.
Buen viaje!

http://www.eni-training.com/client_net/mediabook.aspx?idR=72814

2/2

25/4/2014

ENI Training - Libro online

Historia de Unix
En 1969, Ken Thompson, desarrollador de los laboratorios Bell (que forman parte de AT&T), invent el
sistema Unix.
K. Thompson haba trabajado previamente en el sistema Multics que permita, entre otras cosas, ocultar
el sistema al usuario e incluso al programador; el objetivo era poder desarrollar nuevas aplicaciones
haciendo abstraccin del sistema. Cuando Bell Labs se retir del proyecto Multics, empez a desarrollar
su propio sistema en un equipo DEC PDP-7 salvado de la quema. Conserv ciertas ideas desarrolladas
por Multics y aadi sus propias innovaciones: acababa de nacer Unix.
UNIX es la abreviatura conservada de UNICS y significa UNiplexed Information and Computing
System.

A su vez, Dennis Ritchie invent un nuevo lenguaje de programacin: el lenguaje C. En lnea con Unix,
este lenguaje pretenda ser amigable, flexible y sin restricciones. Los laboratorios Bell, que conocan las
herramientas desarrolladas, respaldaron a este do con una prima en 1971 para la elaboracin de un
sistema de automatizacin de escritorio de uso interno.
En realidad, los sistemas desarrollados hasta entonces estaban codificados en lenguaje ensamblador,
prximo a la arquitectura de hardware, lo que les confera un alto rendimiento, pero obligaba tambin a
reescribir el programa cuando el hardware obsoleto era reemplazado por equipos ms recientes.
Comprendiendo que los avances tecnolgicos podan paliar una prdida de rendimiento y que las
tcnicas de compilacin haban experimentado grandes progresos, D. Ritchie y K. Thompson dieron
prioridad a la portabilidad del sistema. Al escribir la totalidad del sistema Unix en lenguaje C,
consiguieron hacer funcionar el sistema en muchos equipos de tipos diferentes a partir de 1974.
As, un compilador de C desarrollado para cada equipo bastaba para hacer posible el uso del mismo
entorno en diferentes equipos; esto no se haba hecho nunca y abra grandes posibilidades.
El desarrollo de aplicaciones ya independientes del hardware disminua considerablemente los costes de
diseo para el usuario cuando era necesario renovar un equipo que se haba quedado anticuado.
Adems, los programadores podan fabricarse cajas de herramientas de software y transferirlas de un
equipo a otro sin tener que reinventarlo todo.
Bajo el impulso de AT&T Unix se desarroll rpidamente. En 1980, este sistema estaba ya muy extendido
en las universidades y en los centros de investigacin.
La universidad de California en Berkeley (que utilizaba Unix desde haca varios aos) aport diferentes
mejoras a este sistema operativo, actualmente ms conocido por el acrnimo de BSD (Berkeley Software
Distribution). De hecho, los desarrollos "Berkeley" se publicaron paralelamente a los realizados por el
grupo de trabajo de Unix de AT&T. Actualmente, la mayor parte de los sistemas operativos de tipo Unix
en el mercado son una mezcla del cdigo original de AT&T y de las "mejoras de Berkeley".

http://www.eni-training.com/client_net/mediabook.aspx?idR=72816

1/1

25/4/2014

ENI Training - Libro online

GNU
Debido a la imposibilidad de obtener y modificar el cdigo fuente del controlador de la impresora nueva
que lleg a su departamento, Richard Matthew Stallman (conocido con el acrnimo de rms), entonces
joven investigador en el laboratorio de Inteligencia Artificial del MIT (Massachusetts Institute of
Technology), se concienci de los riesgos vinculados con software propietario; para oponerse a la
comercializacin del software y ms particularmente a la falta de disponibilidad del cdigo fuente, inici
entonces un movimiento para el desarrollo de software libre de derechos en 1984.
Desarrollador con talento, Richard Stallman es tambin el creador del editor de texto GNU Emacs,
del compilador C de GNU y del depurador GNU; su sitio Web personal se encuentra en la
direccin: http://www.stallman.org.

Este movimiento se tradujo en la creacin de un proyecto que consista en reescribir completamente un


sistema operativo libre. El modelo seguido era Unix, Unix y Richard Stallman llam a su proyecto GNU, que
significa GNUs Not Unix.
El proyecto GNU conoci rpidamente un gran xito y muchas herramientas y aplicaciones de Unix se
desarrollaron a partir de cero (from scratch).
Sin embargo, el ncleo libre de este sistema, llamado "Hurd", no se desarroll tan rpidamente. El
proyecto GNU se limit durante cierto tiempo a ser una gama de herramientas completa de Unix sin
ncleo.
El uso de acrnimos recursivos como "GNU" es habitual en el mundo del software libre . De forma
general, los programadores de software libre tienen un gran sentido del humor y utilizan a
menudo el guio para dar nombre a sus aplicaciones. As, la versin GNU del shell Bourne de Unix se
llama el Bash, de Bourne Again SHell (o tambin Born Again SHell). Asimismo, el nombre Hurd
significa Hird of Unix-Replacing Daemon y Hird significa a su vez Hurd of Interfaces Representing
Depth, lo que forma un doble acrnimo recursivo!

1. FSF
Richard Stallman cre la Free Software Foundation con el objetivo de recoger fondos destinados a
financiar el software libre. Para l, el trmino "libre" se refiere a la libertad, y no al precio. No se opone
al hecho de vender programas, siempre que el cdigo fuente est disponible y todo programador est
autorizado a modificar y redistribuir el software.
Con este espritu, R. Stallman cre en 1985 la FSF (Free Software Foundation - http://www.fsf.org) para
promover el apoyo financiero de su proyecto.

2. CopyLeft y GPL
Para llevar a buen puerto su proyecto y permitir la difusin del software libre, Richard Stallman
implement una licencia especfica. Esta licencia evita que cualquiera, tras modificar unas pocas lneas
de un software libre, se apropie del cdigo fuente y establezca un copyright.
Los fundamentos del software libre se agrupan bajo cuatro libertades:
La libertad de ejecutar el software para cualquier uso, comercial o no, y por cualquier persona
u organizacin.
http://www.eni-training.com/client_net/mediabook.aspx?idR=72817

1/2

25/4/2014

ENI Training - Libro online

La libertad de estudiar el funcionamiento del software y de adaptarlo a nuestras


necesidades. Para ello, el acceso al cdigo fuente es un requisito.
La libertad de distribuir copias, gratuitas o no.
La libertad de mejorar el software, publicar esas mejoras para que toda la comunidad pueda
disfrutar de ellas. Y como mencionamos en el punto 2, el acceso al cdigo fuente es un
requisito fundamental.
A esto, la licencia GPL (General Public License) creada por Richard Stallman aade la obligacin de seguir
bajo licencia libre; esta nocin se llama "copyleft" (copia permitida) en oposicin a "copyright" (derechos
de autor) e implica que cualquier software que utilice una parte del cdigo regido por la GPL se someta
automticamente y por completo a los trminos de la GPL.
As, todo programa desarrollado bajo los trminos de esta licencia ser totalmente libre de uso sin que
pueda apropirselo nadie porque deber seguir siendo GPL. Segn esto, se podra redefinir el acrnimo
GPL como Guaranteed Public for Life (garanta de seguir siendo pblico de por vida).
La FSF public el 29 de junio de 2007 la versin 3 de la GPL que permite adaptarse mejor a
determinadas evoluciones de la informtica. Trata en particular del problema del software libre
embebido cuyo cdigo fuente s est disponible, pero que no puede funcionar modificado en los
equipos (appliances) sin una firma digital especfica; la GPL3 prev que los constructores deben
dar todos los elementos necesarios al funcionamiento de una versin modificada de un software
bajo esta licencia sobre los hardware vendidos. Una variacin a esta restriccin es no poder
acceder a un servicio web por el mero hecho de modificar la aplicacin utilizada a pesar de la
licencia libre; eso ya no es posible con la versin 3 de la GPL. Otro elemento clave de esta versin
de la licencia es la proteccin de los usuarios de software libre contra las patentes de software;
as, ya no son posibles acuerdos como el llevado a cabo entre Novell y Microsoft, que contienen la
autorizacin para los clientes de Novell de utilizar el software libre que depende de patentes de
Microsoft. Toda la informacin sobre esta ltima versin de la licencia libre GPL est disponible en
la pgina http://gplv3.fsf.org

Sin embargo, no hay que confundir un software bajo GPL con un software perteneciente al dominio
pblico; este ltimo no siempre tiene un copyright, cualquiera puede apropiarse de l tras una
modificacin menor. Asimismo, un "freeware" no es un software libre porque el cdigo fuente de la
aplicacin no est disponible.
Finalmente, existen otras licencias para los programas libres, con copyleft o no, como la X Consortium,
la Artistic o bien la licencia BSD que, a diferencia de la GPL, no impone la difusin de las modificaciones
aportadas.

http://www.eni-training.com/client_net/mediabook.aspx?idR=72817

2/2

25/4/2014

ENI Training - Libro online

Linux
Cuando utilizaba el sistema operativo Minix, desarrollado por Andrew S. Tanenbaum con el objetivo de mostrar a sus estudiantes el funcionamiento de un
sistema de tipo Unix, en un proyecto de estudios sobre el modo protegido de los procesadores Intel 386, Linus Torvalds empez a desarrollar su propio ncleo
Unix para aadirle nuevas funcionalidades.
Por tanto, Linux (Linuss Unix) naci en 1991 gracias a un estudiante de la universidad de Helsinki. El xito de Linux se basa en una idea ingeniosa de su
creador, L. Torvalds: colocar su proyecto bajo los trminos de la licencia GPL y proponer a todos los programadores y otros hackers de Internet que le
ayudaran.
El trmino "hacker" no debe confundirse con el de "cracker", que designa a un individuo que
intenta introducirse de forma ilegal en un sistema informtico para utilizar sus recursos o alterar
sus datos. El trmino hacker representa aqu a los primeros programadores en los sistemas Unix
convertidos sin duda en verdaderos "gurs" en su dominio y no al pirata informtico
malintencionado.

Fue en un grupo de discusin (Usenet) dedicado al sistema Minix donde L. Torvalds anunci pblicamente su proyecto, que por entonces slo era un
pasatiempo sin pretensiones:
From: torvalds@klaava.Helsinki.FI (Linus Benedict TorValds)
Newsgroups: comp.os.minix
Subject: What would you like to see most in minix?
Summary: small poll for my new operating system
Message-ID: <1991Aug25.205708.9541@klaava.Helsinki.FI>
Date: 25 Aug 91 20:57:08 GMT
Organization: University of Helsinki
Hello everybody out there using minix Im doing a (free) operating system (just a hobby, wont be big and
professional like gnu) for 386(486) AT clones. This has been brewing
since april, and is starting to get ready. Id like any feedback
on things people like/dislike in minix, as my OS resembles it somewhat
(same physical layout of the file-system (due to practical reasons)
among other things).
Ive currently ported bash(1.08) and gcc(1.40), and things seem to work.
This implies that Ill get something practical within a few months,
and Id like to know what features most people would want.
Any suggestions are welcome, but
I wont promise Ill implement them :-)
Linus (torvalds@kruuna.helsinki.fi)
PS. Yes - its free of any minix code, and it has a multi-threaded fs.
It is NOT portable (uses 386 task switching etc), and it probably never
will support anything other than AT-harddisks, as thats all I have :-(.
O, en nuestro idioma:
Saludos a los usuarios de minix.
Estoy haciendo un sistema operativo (libre), (es slo un pasatiempo, no ser
importante y profesional como gnu) para sistemas 386 (486) AT clones.
Se inici en abril y est empezando a tomar forma. Me gustara recibir algn
comentario sobre las cosas que le gustan o no a la gente en minix, ya que
mi sistema operativo se parece un poco (la misma disposicin fsica de los archivos del sistema, debido a razones prcticas entre otras cosas).
Ya he exportado bash (1.08) y gcc (1.40) y las cosas parecen funcionar.
Eso implica que pondr algo en prctica dentro de unos meses y me gustara saber
qu caractersticas desea la mayora de las personas.
Cualquier sugerencia ser bienvenida, pero no prometo que puedan ser aplicadas :-)
Linus (torvalds@kruuna.helsinki.fi)
PD. S, es libre de cualquier cdigo de minix y tiene un sistema de ficheros
multihilos.
NO es portable (386 utiliza la conmutacin de tareas, etc.), y
probablemente slos er compatible con discos duros AT, ya que
es todo lo que tengo :-(.
El entusiasmo por Linux proviene en gran parte por el hueco que llen en el ncleo del proyecto GNU: por fin estaba disponible un sistema libre completo!
La mascota de Linux se llama "Tux" y es un pingino, animal especialmente querido por Linus
Torvalds.

1. Caractersticas
Las principales caractersticas de Linux son las siguientes:

Multitarea
Est diseado para ejecutar varios programas al mismo tiempo (PID - Process ID, codificados en 32 bits). Utiliza un asignador para ejecutar varias acciones
con un mismo procesador y tambin puede sacar partido de arquitecturas multiprocesador (hyperthreading, SMP - Symmetric Multi-Processors, NUMA - Non-

http://www.eni-training.com/client_net/mediabook.aspx?idR=72818

1/2

25/4/2014

ENI Training - Libro online

Uniform Memory Access).

Multiusuario
Este sistema permite el uso por parte de varias personas de los recursos que administra. Estas personas se distribuyen en grupos de usuarios y es
necesaria una autenticacin para asegurar los derechos individuales. Los UID (Users ID) y GID (Groups ID) estn codificados en 32 bits.

Multiplataforma
Linux ha sido llevado a un gran nmero de arquitecturas de hardware, como Intel (del 386 al ltimo Pentium) y sus clones (AMD, Cyrix), SPARC, MIPS, Dec
Alpha, PowerPC, PalmPilot, x86-64 (64 bits), etc.
Encontramos tambin Linux en sistemas embebidos, como autmatas industriales o autorradios MP3 para el particular.

Sistemas de archivos
Linux soporta un gran nmero de sistemas de archivos, adems de los de tipo Unix, incluidos ISO9660 (CD-ROM), Windows 9x, NTFS y Macintosh. Soporta
tambin las ACL (Access Control List) y las cuotas.

Administracin de memoria
En vez de efectuar un swap de procesos completos, el ncleo pagina la memoria virtual, lo que limita los accesos al disco cuando falta memoria fsica.
Adems, la memoria compartida con copia en escritura permite que varios procesos utilicen el mismo espacio de memoria; cuando uno de ellos intenta
escribir en la memoria, se realiza una copia de la pgina de memoria en otra parte. Este mecanismo optimiza el uso y la cantidad de memoria necesaria en el
sistema.
Adems, Linux soporta hasta 64 GB de RAM con las funciones de hardware PAE (Physical Address Extension) en arquitecturas 32 bits de Intel.

Redes
Como cualquier otro Unix, Linux posee una capa de red muy fiable y rpida. Soporta un amplio abanico de protocolos (TCP/IP versiones 4 y 6, Netware,
Appletalk, Lan Manager, IPX, IPsec...) y de dispositivos de red (Ethernet, TokenRing, FDDI, Wi-Fi...).

Adecuacin a numerosos estndares, como POSIX


Existe por ejemplo un grupo de trabajo de la organizacin The Linux Foundation(http://www.linuxfoundation.org/) llamado LSB, de Linux Standard Base, que
publica especificaciones y recomendaciones de estandarizacin de Linux. Grandes nombres de la informtica (IBM, Intel, Oracle, AMD, Google, HP, Novell, Red
Hat, Dell, Sony...) contribuyen y apoyan este proyecto.

Compatibilidad
Linux es compatible con Unix System V (AT&T) y BSD a nivel de cdigo fuente, soporta las bibliotecas Unix en formato COFF y ELF y los binarios con SCO SVR3
y SVR4 con los mdulos de emulacin IBCS2.

2. Distribuciones
Hablando con propiedad, Linux no es un sistema operativo, sino slo su ncleo (kernel). Por s solo no constituye la totalidad del sistema operativo; para
ello, debe ir acompaado de las herramientas bsicas comunes a todos los Unix.
Estas herramientas estndar son en su mayor parte programas libres, que se encuentran tambin en Linux, generalmente en una versin GNU con muchas
mejoras respecto a los originales. Entre estos programas, destaca el compilador GNU C/C++, uno de los mejores compiladores disponibles actualmente.
Tambin hay que recordar el conjunto de comandos accesibles directamente desde un shell, como grep, find, awko bien editores de texto, como vi. Para
ser exactos, en realidad hay que utilizar el trmino GNU/Linux para designar este sistema y no "Linux", como ocurre demasiado a menudo.
Con la ayuda de otros desarrolladores, Linus Torvalds ha ido aadiendo cada vez ms herramientas y aplicaciones. Con el tiempo, diversas universidades,
empresas y personas a ttulo individual han ido distribuyendo Linux con su propia seleccin de paquetes para acompaar al ncleo Linux. As nace el
concepto de distribucin de Linux.
Actualmente, crear y vender una distribucin de Linux puede representar un volumen de negocios de varios millones de dlares y es posible comprar las
versiones en "caja" de grandes empresas como Red Hat o SUSE. Sin embargo, la mayor parte de estas distribuciones comerciales se pueden descargar
libremente, as como las realizadas por grupos de personas apasionadas.

http://www.eni-training.com/client_net/mediabook.aspx?idR=72818

2/2

25/4/2014

ENI Training - Libro online

Qu distribucin elegir?
La eleccin de una distribucin depende de muchos criterios: el coste, la gama de programas propuestos,
la compatibilidad de hardware, las herramientas administrativas proporcionadas...
No existen "buenas" ni "malas" distribuciones de GNU/Linux, pero, para ayudar al principiante a elegir,
este apartado presenta una clasificacin de las ms conocidas segn el tipo de necesidades a las que
responden mejor.
A fin de cuentas, la eleccin de una distribucin de Linux depender tanto de las preferencias como de
las muy subjetivas costumbres de la persona que quiere iniciarse en la aventura de Linux.
La web DistroWatch (http://distrowatch.com) informa sobre la actualidad, descripcin y la
clasificacin de las distribuciones GNU/Linux ms utilizadas. Asimismo, hay disponibles enlaces
para descargarlas y para solicitar en lnea versiones grabadas en CD-ROM o DVD-ROM.

1. Las distribuciones para el "gran pblico"


Estas distribuciones proponen en su paquete de software la mayor parte de las herramientas que un
usuario espera encontrar en su puesto de trabajo en red o en su equipo personal: incluyen un paquete
de ofimtica, programas de comunicacin en red (navegador web, cliente de correo electrnico...),
reproductores de multimedia y aplicaciones de creacin grfica.
Las distribuciones propuestas a continuacin se pueden descargar libremente.

Fedora
El proyecto Fedora lo distribuye el editor Red Hat, en sustitucin de su distribucin estrella, que ya no
est disponible actualmente en GPL. Esta distribucin implementa muy regularmente las ltimas
innovaciones del mundo del software libre.
Aunque la frecuencia de salida de esta distribucin es elevada (una nueva versin cada seis a doce
meses), ofrece une estabilidad y una calidad de integracin ejemplares.
Representa, por tanto, una buena opcin para quien se inicia en busca de una distribucin fcil de
instalar y que proponga una amplia gama de programas recientes.
Sitio del editor: http://fedoraproject.org

openSUSE
Es la variante libre y gratuita de la distribucin profesional SUSE. Es de fcil manejo y cuenta con una
gran comunidad de usuarios y desarrolladores.
Sitio del editor: http://www.opensuse.org

Ubuntu
Distribucin derivada de Debian y de su sistema de paquetes. Es muy accesible, los programas libres
que ofrece se integran con gran facilidad y dispone de una gran comunidad de usuarios.
El entorno de escritorio es Unity, que es una capa que funciona sobre GNOME. Existen adems otras
distribuciones como kunbuntu o lubuntu con KDE, Xfce o LXDE.

http://www.eni-training.com/client_net/mediabook.aspx?idR=72819

1/4

25/4/2014

ENI Training - Libro online

Sitio del editor: http://ubuntu.com.

2. Las distribuciones "mviles"


No siempre resulta evidente cambiar de un da para otro las costumbres informticas. En ocasiones es
preferible probar Linux antes de cambiar de arriba abajo la configuracin de un equipo. Por ello,
algunas distribuciones no requieren instalacin en el disco duro.
Estas distribuciones estn dotadas de un proceso muy avanzado de configuracin automtica del
hardware. Su carga en memoria RAM se hace al iniciar el PC desde el CD-ROM (existen distribuciones
arrancables a partir de una memoria USB).
Adems, este tipo de distribucin permite llevarse y utilizar el mismo sistema en prcticamente
cualquier tipo de PC.

KNOPPIX
KNOPPIX es un CD-ROM arrancable con un sistema operativo (GNU/Linux) para equipos de tipo PC.
Gracias a un sistema de descompresin al vuelo, esta distribucin contiene unos 2 GB de programas (9
GB en la edicin DVD-ROM).
Tiene, entre otros, los siguientes usos:
CD-ROM de demostracin de Linux;
CD-ROM de formacin;
sistema de seguridad;
sistema operativo permanente completo porque puede instalarse tambin en el disco duro;
sistema mvil si se instala en una memoria USB.
Sitio del editor: http://www.knoppix.org

Ubuntu
Se presenta como una distribucin para el gran pblico que se puede utilizar directamente desde un
CD-ROM, aunque dispone de una herramienta de instalacin que ofrece al usuario la posibilidad de
instalarlo directamente en el disco duro de la mquina.
Sitio del editor: http://www.ubuntu.com

3. Las distribuciones "profesionales"


Varios editores ofrecen distribuciones con una orientacin profesional. Sus principales caractersticas
son:
una estabilidad mejorada al proponer en su paquete de software slo aplicaciones robustas
y probadas;
un tiempo de vida ms largo con un soporte del editor disponible ms tiempo (actualizaciones
de software y correccin de errores);
un servicio de soporte tcnico comercial en algunas de ellas;
una especializacin en ciertos dominios de Internet (alojamiento de sitio web, cortafuegos,
servidor de correo electrnico, herramientas de trabajo en grupo, gestin de parque
http://www.eni-training.com/client_net/mediabook.aspx?idR=72819

2/4

25/4/2014

ENI Training - Libro online

informtico...).

Red Hat
Actualmente es una de las distribuciones ms extendidas. Conocida como RHEL (RedHat Enterprise
Linux), su instalacin es relativamente sencilla gracias a la deteccin y autoconfiguracin de los
dispositivos conectados. Existe tambin una versin escritorio (desktop) que facilita un entorno de
trabajo profesional para los equipos de las empresas.
Una de las ventajas de esta distribucin es que es reconocida por los grandes editores de software, en
particular por los editores de SGBD (Sistemas de gestin de base de datos); en efecto, toda aplicacin
profesional que funcione bajo Linux (Oracle por ejemplo) est disponible para esta distribucin.
Red Hat, que se encuentra en el origen de la herramienta RPM (Red Hat Package Manager), utiliza este
formato de paquetes.
El editor ha puesto fin a la variante estndar bajo licencia de esta distribucin (la ltima era la versin
9.0) y ha optado por concentrarse en una versin "Enterprise" con mayor seguimiento en el tiempo
para responder a las necesidades de las empresas.
Sitio del editor: http://www.redhat.es

SuSE
Esta distribucin de origen alemn ofrece una serie de herramientas grficas de configuracin del
sistema muy funcionales.
Se la conoce tambin con el acrnimo SLES, de SuSE Linux Enterprise Server.
Sitio del editor: http://www.suse.com/

Debian
Es la distribucin de Linux predilecta de los puristas del mundo libre porque no es comercial y ofrece
nicamente programas libres en GPL.
Tambin se considera la ms estable porque no interviene ninguna motivacin pecuniaria en la eleccin
de los paquetes que se deben incluir en la distribucin.
La contrapartida a estos puntos a favor es sin duda la falta de accesibilidad para una persona
inexperta. La administracin de este sistema requiere un profundo conocimiento del sistema Linux y la
configuracin normalmente se realiza mediante un editor de texto, en lugar de una herramienta grfica
de ms alto nivel.
Adems, esta distribucin cuenta
extensin .deb.

con su propio

formato

de

paquetes

de

software, con la

Sitio del editor: http://www.debian.org

Slackware
Es una de las primeras distribuciones de Linux, aparecida en 1995. Est considerada como muy estable,
pero menos accesible para el nefito.
Su paquete de software, ms ligero que en las anteriores, cabe en un CD-ROM (exceptuando los CDROM de seguridad, de instalacin en un sistema de archivos Windows y de fuentes, que no son
necesarios).
Los paquetes de esta distribucin son archivos .tgzo .tar.gz.
http://www.eni-training.com/client_net/mediabook.aspx?idR=72819

3/4

25/4/2014

ENI Training - Libro online

Sitio del editor: http://www.slackware.com

4. Las distribuciones "especializadas"


Existen otras distribuciones Linux para usos concretos. Algunas estn especializadas en la recuperacin
del sistema, en la enseanza, la seguridad o incluso en la puesta en marcha de servidores multimedia y
de archivos.
Estn disponibles en el sitio http://distrowatch.com en diferentes idiomas y para una amplia gama de
arquitecturas.

http://www.eni-training.com/client_net/mediabook.aspx?idR=72819

4/4

25/4/2014

ENI Training - Libro online

Convenciones tipogrficas
Este apartado presenta rpidamente las convenciones tipogrficas utilizadas en esta obra.

1. Estilos de letra
Los comandos, opciones, nombres de variables y ejemplos de sintaxis se escriben con este tipo de
letra: e
jemplo de comando.
Los nombres de archivos se escriben en el estilo siguiente: ejemplo de nombre de archivo.
Los ejemplos de lnea de comandos se enmarcan as:

ejemplo de lnea de comandos


Mientras que los extractos de archivos de texto tienen la forma:
extracto de archivo de texto

2. Teclado
El teclado de referencia de esta obra es de tipo 105 teclas espaol. El nombre y la ubicacin de las
teclas son:

Una combinacin de teclas expresada con el carcter + como separador significa que hay que pulsar
simultneamente las teclas enumeradas. Por ejemplo [Ctrl]+[Alt]+[F1] significa que el usuario tiene
que pulsar simultneamente las teclas [Ctrl], [Alt] y [F1].

http://www.eni-training.com/client_net/mediabook.aspx?idR=72820

1/1

25/4/2014

ENI Training - Libro online

Introduccin
Tras la Lectura de este captulo, el lector estar capacitado para conectarse a un sistema GNU/Linux e
introducir sus primeros comandos.
Para ello, se vern en detalle las consolas disponibles en Linux, el proceso de autenticacin y el uso de la
lnea de comandos.

http://www.eni-training.com/client_net/mediabook.aspx?idR=72822

1/1

25/4/2014

ENI Training - Libro online

Consolas y terminales Linux


Los trminos "consola" y "terminal" se usan para definir el conjunto de dispositivos que permiten al
usuario interactuar con el sistema; este conjunto generalmente se compone de una pantalla, un teclado
y un ratn.

1. Consolas virtuales
Para ofrecer varios terminales al usuario desde un mismo conjunto de pantalla/teclado/ratn, Linux
proporciona un cierto nmero de consolas virtuales.
La ventaja de esta administracin es que se dispone tanto de varias terminales de "texto" para las
tareas que deben efectuarse desde una lnea comandos, como de una consola "grfica" que permite
lanzar herramientas con una interfaz ms evolucionada, como un programa de retoque de imgenes o
un reproductor multimedia.
Estas consolas virtuales, que generalmente son seis o siete en las distribuciones como Fedora, Ubuntu
o Suse, se componen de cinco a seis terminales de texto y una consola grfica. Se representan por las
teclas de funcin [F1] a [F7] del teclado (siendo [F1] o [F7] la consola grfica); para pasar de una a
otra, hay que pulsar simultneamente las teclas [Ctrl]+[Alt]+[Fn]donde n es el nmero de la consola
virtual.
No es obligatorio pulsar la tecla [Ctrl] para pasar de un terminal de texto a otro.

Una consola virtual de texto, o simplemente un terminal de texto, se parece a esto:

La consola virtual grfica puede tomar diversos aspectos, segn el entorno de escritorio elegido y la
versin de la distribucin de Linux; por ejemplo, en Fedora 19, con el entorno de escritorio KDE:

http://www.eni-training.com/client_net/mediabook.aspx?idR=72823

1/5

25/4/2014

ENI Training - Libro online

Y con el entorno GNOME en Ubuntu 13.04:

http://www.eni-training.com/client_net/mediabook.aspx?idR=72823

2/5

25/4/2014

ENI Training - Libro online

Es posible contar con ms (o menos) de seis consolas virtuales de texto y ms de una consola
virtual grfica en Linux. La configuracin de este sistema no entra en el marco de este libro, por
lo que consideraremos en lo sucesivo que disponemos de siete consolas virtuales, una de las
cuales es grfica.

2. Emuladores de terminales
Bajo la interfaz grfica de Linux, se pueden escribir comandos de la misma manera que en un terminal
de texto. Para ello, se utiliza un programa que "emula" la lnea de comandos de Linux dentro de una
ventana.
Hay muchos emuladores de terminal disponibles para Linux, como xterm, que es un estndar en todos
los sistemas UNIX utilizados, o konsole, disponible en el entorno KDE:

http://www.eni-training.com/client_net/mediabook.aspx?idR=72823

3/5

25/4/2014

ENI Training - Libro online

La interfaz grfica de Linux facilita generalmente varios iconos o mens con un pictograma
parecido a una pantalla o a una concha para ejecutar emuladores de terminal.

3. Terminales remotos
Otra manera de interactuar con la lnea de comandos de Linux es el uso de una conexin de red y un
software de comunicacin remota, como Telnet o SSH, iniciado desde un terminal de texto.
Desde ah es posible controlar un sistema Linux desde otro Linux, o incluso desde un equipo Windows
utilizando una herramienta como PuTTY bajo licencia GPL y por tanto descargable libremente:

http://www.eni-training.com/client_net/mediabook.aspx?idR=72823

4/5

25/4/2014

http://www.eni-training.com/client_net/mediabook.aspx?idR=72823

ENI Training - Libro online

5/5

25/4/2014

ENI Training - Libro online

Inicio de sesin, autenticacin


El sistema Linux es multiusuario, por lo cual hay que empezar por autenticarse en el equipo.
La autenticacin sirve para comprobar que el usuario situado delante de la consola es quien pretende
ser. Tiene que facilitar su identidad (nombre de inicio de sesin o login) y una prueba de sta
(contrasea) para conectarse.
Tanto si se trata del modo texto como del modo grfico, la contrasea escrita por el usuario no se
muestra en pantalla.
Al introducir el nombre de inicio de sesin y la contrasea se deben respetar escrupulosamente
maysculas y minsculas. De modo general, ya se trate de un nombre de archivo, de un login, de
un nombre de variable o de un comando, la letra ano es igual que la letra A
.

Ejemplo de inicio de sesin en un terminal de texto

Ubuntu 13.04 ubuntu tty1


ubuntu login: nicolas
Password:
Last login: Fri May 10 14:34:53 CEST 2013 on tty1
Welcome to Ubuntu 13.04 (GNU/Linux 3.8.0-19-generic x86 64)
* Documentation:https://help.ubuntu.com/
[nicolas@ubuntu:~]$
Ejemplo de inicio de sesin en un terminal grfico

http://www.eni-training.com/client_net/mediabook.aspx?idR=72824

1/2

25/4/2014

http://www.eni-training.com/client_net/mediabook.aspx?idR=72824

ENI Training - Libro online

2/2

25/4/2014

ENI Training - Libro online

Smbolo del sistema del shell (prompt)


Una vez conectado a un terminal de texto, se inicia automticamente un programa llamado shell. ste
permite escribir los comandos que indicaremos ms adelante.
El shell indica que est en espera de una instruccin presentando un smbolo del sistema (o prompt) al
principio de la lnea.
Segn la configuracin predefinida por el editor de la distribucin de Linux, este prompt puede tener
varios aspectos; por ejemplo, en Red Hat:

[nicolas@doe tmp]$
En Debian o Ubuntu:

nicolas@doe:~$
O incluso:

[root@doe bin]#
El elemento ms importante en los prompt que acabamos de presentar es el ltimo carcter de cada
uno: un $o un #en la mayora de los casos. Este carcter indica que el usuario actual conectado es o
bien un usuario cualquiera sin derechos especiales ($), o bien el administrador que cuenta con todos los
derechos necesarios para la configuracin y el mantenimiento del sistema (#).
Los dems datos del prompt del shell son el nombre del usuario (delante de @), el nombre del
equipo (doe) y el nombre de la carpeta actual (tmp, ~y bin).

Para simplificar los ejemplos siguientes, el prompt del shell se reducir a este ltimo carcter ($ o #),
precedido eventualmente del nombre del usuario entre corchetes:

$
o:

[nicolas]$

http://www.eni-training.com/client_net/mediabook.aspx?idR=72825

1/1

25/4/2014

ENI Training - Libro online

Sintaxis de los comandos


Es importante conocer la sintaxis de los comandos para evitar un gran nmero de errores de escritura.
En su expresin ms simple, sin opciones ni argumentos, un comando se lanza escribiendo su nombre en
la lnea de comandos:

$ comando
En los ejemplos siguientes, el $situado al principio de lnea corresponde al prompt del shell y no
debe ser escrito por el usuario.

Si hay que especificar argumentos se aaden a continuacin del comando en la misma lnea, separados
por un espacio:

$ comando arg1 arg2


En la mayora de los casos, los argumentos son los nombres de los archivos sobre los que
actuar el comando.

Los tratamientos o la salida (visualizacin) de un comando GNU/Linux a menudo se pueden modificar


mediante una opcin. Estas opciones, especficas para cada comando, provienen habitualmente de las
implementaciones originales y de las aportaciones de los diferentes UNIX anteriores a Linux. Por esta
razn, para un mismo comando, puede haber varias decenas de opciones con diferentes sintaxis.
Existen principalmente dos tipos de opciones: las opciones monocarcter y las opciones largas. Ambas
deben escribirse separadas por un carcter de espacio a continuacin del comando y antes de los
eventuales argumentos.
El carcter de espacio es un espacio o una tabulacin y puede repetirse varias veces, tanto
entre el comando, las opciones y los argumentos como al principio y al final de la lnea.

Las opciones monocarcter


Las opciones monocarcter corresponden normalmente a las opciones heredadas de la familia UNIX y por
lo general van precedidas por el carcter -:

$ comando -o -p -t
$ comando -o -p -t arg1 arg2
El orden de las opciones no es relevante; las dos lneas siguientes son equivalentes:

$ comando -o -p -t
$ comando -t -o -p
Las opciones monocarcter pueden agruparse siempre que se supriman los guiones y los caracteres de
espacio intermedios:

$ comando -o -p -t
http://www.eni-training.com/client_net/mediabook.aspx?idR=72826

1/3

25/4/2014

ENI Training - Libro online

$ comando -opt
Para ciertos comandos con un gran nmero de opciones, las opciones monocarcter pueden introducirse
con un + o incluso escribirse directamente:
$ comando +o -pt
$ comando opt
Por consiguiente, segn el comando empleado, estas tres lneas no tienen por qu ser equivalentes:

$ comando -o
$ comando +o
$ comando o
Finalmente, algunas opciones aceptan una cadena de caracteres como parmetro; en este caso, no hay
forzosamente un espacio entre la opcin y su parmetro:

$ comando -oparmetro -pt


De manera general, las opciones monocarcter introducidas con un - provienen de comandos
desarrollados para los sistemas que responden a la norma Unix98, mientras que las que no
requieren guin proceden de los UNIX de la familia BSD.

Las opciones largas


Las opciones largas generalmente son opciones aadidas en el marco de la reescritura del comando
GNU. Son ms explcitas que las anteriores porque su nombre indica su utilidad y van precedidas por dos
guiones --:

$ comando --help
$ comando --version
En el caso de una opcin con parmetro, ste se separa con un espacio:

$ comando --variable parmetro

Separacin de opciones y argumentos


Segn su sintaxis, realizar la distincin entre opciones y argumentos puede ser difcil.
Si una opcin a va precedida por un guin y la cadena de caracteres -b como argumento, la sintaxis
siguiente puede crear confusin:

$ comando -a -b
En este ejemplo, la cadena de caracteres -bse tratar como la opcin bintroducida por un guin, y no
como un argumento.
Para evitar toda ambigedad, se separa las opciones de los argumentos en la lnea de comando
intercalando dos guiones; en el problema anterior, esto nos da:
http://www.eni-training.com/client_net/mediabook.aspx?idR=72826

2/3

25/4/2014

ENI Training - Libro online

$ comando -a -- -b
Cuando el shell encuentra -- en la lnea de comando, interpreta todas las cadenas de caracteres
siguientes como argumentos del comando.

Aplicaciones con interfaces grficas


Es natural iniciar las herramientas grficas utilizando atajos como los iconos y los mens ofrecidos por el
entorno de escritorio.
Sin embargo, todas estas aplicaciones pueden ser instanciadas a partir de un comando escrito en la lnea
de un emulador de terminal. As, la lnea siguiente -de la misma manera que el icono correspondientepermite ejecutar el navegador web Firefox:

$ firefox
Es bueno conocer el nombre de los comandos grficos y ejecutarlos de esa manera ya que
puede que no existan los mismos atajos en unos u otros entornos de escritorio o en unas u
otras distribuciones.

Las opciones de comandos con interfaz grfica presentan una sintaxis diferente de las otras: una cadena
de caracteres introducida por un solo guin; por ejemplo, para mostrar el reloj con un fondo rojo:

$ xclock -bg red

http://www.eni-training.com/client_net/mediabook.aspx?idR=72826

3/3

25/4/2014

ENI Training - Libro online

Uso del ratn


Adems del uso intuitivo que se hace del ratn en un entorno grfico, ste se utiliza en la lnea de
comandos.
Existe una funcin de copiar y pegar con el ratn. Cualquier seleccin de texto efectuada mediante el
botn primario del ratn se copia automticamente en una memoria intermedia. Para pegar, bajo el
cursor, la cadena de caracteres copiada en memoria, basta con pulsar el botn central del ratn.
Los ratones que slo tienen dos botones estn configurados normalmente para emular el botn
central. En la consola grfica, este botn se simula pulsando simultneamente los botones
primario y secundario del ratn. En una consola de texto, la emulacin se hace simplemente con un
clic en el botn secundario.

http://www.eni-training.com/client_net/mediabook.aspx?idR=72827

1/1

25/4/2014

ENI Training - Libro online

Atajos de teclado
1. En modo texto
Los atajos presentados aqu son los propios del shell Bash que se usa de modo predeterminado en
Linux; funcionan tanto en una consola virtual de texto como en un emulador de terminal.

Control de visualizacin
[Ctrl]+[l]

Borra la pantalla y coloca el prompt del shell en la primera


lnea del terminal.

[Mays]+[RePg]

Sube media pgina en la pantalla del terminal (igual que un


deslizador); muy prctico para ver el resultado de un
comando un poco largo. Es posible subir entre cinco y seis
pginas en funcin de la configuracin del sistema.

[Mays]+[AvPg]

Al contrario del atajo anterior, baja media pgina en la


pantalla del terminal.

Edicin de la lnea de comando


[Inicio]

Mueve el cursor al principio de la lnea.

[Fin]

Mueve el cursor al final de la lnea.

[Izquierda]

Mueve el cursor un carcter hacia la izquierda.

[Derecha]

Mueve el cursor un carcter hacia la derecha.

[Supr]

Suprime el carcter a la derecha del cursor.

[Retroceso]

Suprime el carcter a la izquierda del cursor.

[Ctrl]+[w]

Borra la ltima palabra.

[Ctrl]+[u]

Borra toda la lnea.

Historial de comandos
[Arriba]

Sube por el historial de comandos. Cada pulsacin de esta


tecla permite mostrar el comando anterior de los que se
han ejecutado anteriormente en el shell; a continuacin se
puede modificar el comando antes de ejecutarlo de nuevo.

[Abajo]

Baja por el historial de comandos. Esta accin es vlida


slo si el usuario ha subido previamente por el historial con
el atajo anterior.

[Ctrl]+[r]

Busca una cadena de caracteres en el historial de


comandos. La bsqueda se efecta a medida que el
usuario escribe los caracteres de la cadena. Si la cadena
est contenida en varios comandos del historial, una
pulsacin ms de [Ctrl]+[r] permite proseguir la bsqueda
subiendo ms por el historial.

[Ctrl]+[j] o [Esc]

Termina una bsqueda iniciada con [Ctrl]+[r] y permite al

http://www.eni-training.com/client_net/mediabook.aspx?idR=72828

1/2

25/4/2014

ENI Training - Libro online

usuario modificar la lnea antes de ejecutarla.


[Ctrl]+[g]

Anula una bsqueda iniciada con [Ctrl]+[r].

Varios
[Ctrl]+[c]

Interrumpe el comando en curso sin esperar el fin de su


ejecucin normal.

[Ctrl]+[d]

Enva el carcter de fin de archivo (EOF o End Of File).


Indica al comando en curso que la entrada por teclado ha
finalizado.

[Ctrl]+[s]

Marca una pausa en la visualizacin del terminal (equivale


a una pulsacin de la tecla [Bloq Despl]).

[Ctrl]+[q]

Prosigue la visualizacin de un terminal parado


anteriormente (equivalente a una segunda pulsacin de la
tecla [Bloq Despl]).

2. En modo grfico
Los atajos de teclado disponibles en la interfaz grfica dependen del administrador de ventanas y del
entorno de escritorio utilizado.
Los entornos ms conocidos actualmente son KDE (K Desktop Environment) y GNOME (GNU Network
Object Model Environment); su rpida evolucin y la diversidad de aplicaciones disponibles en GNU/Linux
no permiten enumerar los numerosos atajos implementados.

http://www.eni-training.com/client_net/mediabook.aspx?idR=72828

2/2

25/4/2014

ENI Training - Libro online

Primeros comandos
Estas primeras aplicaciones proporcionan un buen ejemplo de uso de la lnea de comando de Linux y
permiten efectuar operaciones esenciales del sistema; algunas de ellas se utilizarn de nuevo
posteriormente en este libro.

1. Identidad de los usuarios: who, whoami, finger


El comando whoenumera todos los usuarios conectados actualmente al sistema:

[nicolas]$ who
nicolas vc/1
root
pts/0

Apr 3 01:04
Apr 2 22:42 (192.168.200.1)

En este ejemplo, el usuario nicolasest conectado a la primera consola virtual de texto (vc/1o tty1)
desde el 3 de abril a las 1:04 y el administrador (root) est conectado desde un emulador de terminal
(pts/0) remoto (192.168.200.1), desde el 2 de abril a las 22:42.
Con la opcin -q, el propio comando whoenumera nicamente los nombres de conexin y da el total del
nmero de usuarios conectados actualmente:

[nicolas]$ who -q
nicolas root
# usuario=2
Por el contrario, el comando who am i que posee una sintaxis muy particular -la cual recuerda las
preferencias de los productores cinematogrficos por los sistemas informticos que comprenden el
lenguaje natural-, muestra nicamente la lnea que corresponde al usuario conectado:

[nicolas]$ who am i
nicolas vc/1

Apr 3 01:04

El comando whoami, por su parte, indica la identidad bajo la que se encuentra actualmente el usuario:

[nicolas]$ whoami
nicolas
Siempre respecto a los usuarios del sistema, el comando fingermuestra una descripcin ms precisa
de una cuenta:

$ finger
Login
Name
Tty
Idle Login Time Office Office Phone
nicolas Nicolas Pons vc/1 1 Apr 3 01:04
root
root
pts/0 Apr 2 22:42 (192.168.200.1)
La columna Idlemuestra el tiempo de inactividad de los usuarios (en minutos, si no se ha precisado
ninguna unidad).
Para obtener an ms precisiones sobre un usuario, se indica su nombre de conexin como argumento
del comando finger:

http://www.eni-training.com/client_net/mediabook.aspx?idR=72829

1/4

25/4/2014

ENI Training - Libro online

$ finger nicolas
Login: nicolas
Name: Nicolas Pons
Directory: /home/nicolas
Shell: /bin/bash
On since Mon Apr 3 01:04 (CEST) on tty1 1 minute 12 seconds idle
No mail.
No Plan.
Adems de la informacin de conexin del usuario nicolas, se constata aqu que:
Su nombre real es "Nicolas Pons".
Su directorio personal es /home/nicolas.
Su shell predeterminado /bin/bash.
Este usuario no tiene mensajes de correo en su buzn.
No se indica nada en su archivo personal .plan.
Los usuarios inscriben en su archivo .plan("planning") sus reuniones, citas y otra informacin
que figura en su agenda.

2. Cambio de contrasea: passwd


El comando passwdpermite al usuario modificar su contrasea. A diferencia del comando anterior, ste
es interactivo y solicita al usuario que escriba su antigua contrasea antes de escribir dos veces la
nueva:

[nicolas]$ passwd
Changing password for nicolas
(current) UNIX password:
Enter new UNIX password:
Retype new UNIX password:
passwd: password updated successfully
Las contraseas no aparecen al escribirlas y el sistema exige escribir una contrasea vlida; segn las
reglas establecidas por el administrador, la contrasea deber incluir un mnimo de seis caracteres y
estar compuesta de letras (minsculas o maysculas) y cifras.
Slo el administrador del sistema tiene autorizacin para cambiar la contrasea de otro usuario
especificando el login de la cuenta de usuario como argumento en la lnea de comando.

3. Conteo: wc
Del ingls "Word Count", el comando wc permite contar el nmero de lneas, palabras y caracteres
contenidos en un archivo:

[nicolas]$ wc /etc/archivo
2 14 82 /etc/archivo
Las opciones -l, -w y -c permiten contar respectivamente slo el nmero de lneas, palabras y
http://www.eni-training.com/client_net/mediabook.aspx?idR=72829

2/4

25/4/2014

ENI Training - Libro online

caracteres contenidos en el archivo:

[nicolas]$ wc -l /etc/archivo
2 /etc/archivo
[nicolas]$ wc -w /etc/archivo
14 /etc/archivo
[nicolas]$ wc -c /etc/archivo
82 /etc/archivo

4. Visualizacin: clear, echo


El comando clearborra la pantalla (la ventana virtual):

[nicolas]$ clear
El comando echodevuelve la cadena de caracteres recibida como argumento:

[nicolas]$ echo hola desde Barcelona


hola desde Barcelona
Para ser ms exactos, devuelve todos sus argumentos separados por un solo espacio:

[nicolas]$ echo esta vez


hay
varios espacios
los argumentos
esta vez hay varios espacios entre los argumentos

entre

Aunque muy esquemticos, estos dos ltimos comandos tendrn su utilidad en la escritura de
scripts shell.

5. Tiempo: date, cal


Como su nombre indica, el comando dateindica la hora del sistema:

[nicolas]$ date
Vie may 10 14:55:16 CEST 2013
Tambin es posible dar formato a la salida, por ejemplo:

[nicolas]$ date +"hoy es el %x"


hoy es el 10/05/2013
El captulo Documentacin dar la posibilidad al lector de comprender y descubrir las muchas
opciones de los comandos anteriores.

El comando calmuestra un calendario. Si se llama sin parmetros, se muestra el calendario del mes
actual:

[nicolas]$ cal
mayo 2013
http://www.eni-training.com/client_net/mediabook.aspx?idR=72829

3/4

25/4/2014

ENI Training - Libro online

lu ma mi ju vi sa do
1 2 3 4 5 6
7 8 9 10 11 12 13
14 15 16 17 18 19 20
21 22 23 24 25 26 27
28 29 30 31
Con un argumento, el comando muestra el calendario completo del ao mencionado.
Finalmente, si se llama al comando cal con dos argumentos, el primero es el mes que se quiere
mostrar y el segundo, el ao en cuestin:

[nicolas]$ cal 6 2008


junio 2008
lu ma mi ju vi sa do
1 2 3 4 5 6 7
8 9 10 11 12 13 14
15 16 17 18 19 20 21
22 23 24 25 26 27 28
29 30 31
El ao mencionado como argumento debe ser totalmente definido. As, el ao 08 corresponde
al ao 8 d. C., y no a 2008, como se podra suponer!

http://www.eni-training.com/client_net/mediabook.aspx?idR=72829

4/4

25/4/2014

ENI Training - Libro online

Cerrar sesin
Una vez que el usuario ha terminado el trabajo para el que se ha conectado al sistema Linux, debe
cerrar sesin (o desconectarse) para liberar la consola que utiliza.
Cerrar una sesin en un terminal de texto puede efectuarse de tres maneras:
con el comando exit;
con el comando logout (slo funciona a partir del shell ejecutado automticamente en la
conexin);
pulsando simultneamente las teclas [Ctrl]+[d].
La secuencia de teclas [Ctrl]+[d] corresponde al carcter de fin de archivo. Cuando el terminal
recibe este carcter, considera que su "archivo" de entrada (el teclado) ha terminado y, por
tanto, termina su ejecucin. Esta nocin de archivo de entrada se detalla en el apartado
"Redirecciones" del captulo que trata del shell Bash.

Por su parte, las interfaces grficas de Linux permiten cerrar la sesin mediante un men:

http://www.eni-training.com/client_net/mediabook.aspx?idR=72830

1/1

25/4/2014

ENI Training - Libro online

Introduccin
Este captulo proporciona al lector los medios para ir ms lejos y encontrar informacin que no figura en
esta obra; saber buscar en la documentacin aumenta en gran medida la autonoma de los usuarios.
En teora es posible encontrar toda la informacin expuesta aqu en la documentacin GNU/Linux
proporcionada con el sistema.

http://www.eni-training.com/client_net/mediabook.aspx?idR=72832

1/1

25/4/2014

ENI Training - Libro online

Manual
Con la mayor parte de distribuciones GNU/Linux se instala un manual electrnico.

1. Secciones
Este manual trata diferentes puntos, como los comandos y su sintaxis, los archivos de configuracin del
sistema, las bibliotecas estndar de programacin...
Para ello, el manual se divide en nueve secciones principales:
Seccin 1: comandos de usuario.
Seccin 2: llamadas al sistema.
Seccin 3: bibliotecas de programacin (libc, Perl, SSL, Tcl).
Seccin 4: archivos especiales y dispositivos.
Seccin 5: archivos de configuracin, formatos y formalismos.
Seccin 6: juegos.
Seccin 7: varios.
Seccin 8: comandos de administracin.
Seccin 9: rutinas del ncleo.
Las secciones 1 y 8, que describen el conjunto de comandos disponibles en GNU/Linux, son las ms
importantes.

2. Comando man
El acceso a una pgina del manual se realiza lanzando el comando man y especificando, como
argumento en la lnea de comandos, el trmino buscado. Este trmino corresponde al nombre del
comando, del archivo o bien de la biblioteca de programacin para lo que se busca informacin.
As, para mostrar la pgina del manual sobre el comando fingervisto anteriormente:

$ man finger
Aparece la pgina siguiente:

NOMBRE
finger - buscar informacin sobre un usuario.
SINOPSIS
finger [-lmps] [user...] [user@host...]
DESCRIPCIN
finger muestra informacin sobre los usuarios.
Opciones:

http://www.eni-training.com/client_net/mediabook.aspx?idR=72833

1/4

25/4/2014

ENI Training - Libro online

-s

finger muestra el nombre de login, el nombre real, el ordenador


y la autorizacin de escritura ( * significa que la escritura
sobre el ordenador est prohibida), el tiempo de inactividad,
la fecha de login, la direccin y el nmero de telfono del
trabajo. La fecha de login se muestra bajo el formato mes, da,
hora, minutos, salvo si se remonta a ms de seis meses ya que,
en este caso, se muestra el ao en lugar de la hora y los minutos.

...

Navegacin en la pgina
La herramienta man contiene las mismas funciones de desplazamiento y bsqueda que los
comandos less y vi descritos ms adelante. Cabe sealar que conviene saber que las
flechas[Arriba] y [Abajo] permiten navegar por el documento y la tecla [q] cierra la pgina del manual.

Descripcin de una pgina del manual


Las
pginas
del
manual
electrnico
se
dividen
en
varios
apartados
ejemplo anterior: NOMBRE,SINOPSIS, DESCRIPCIN...). Los apartados ms frecuentes son:

NOMBRE

Nombre de la pgina del manual seguido de una descripcin


sucinta de su contenido.

SINOPSIS

Sintaxis del comando con sus opciones y argumentos.


Los []indican que la opcin o el argumento es opcional
y ...indica que la opcin o el argumento anterior puede
repetirse.

DESCRIPCIN

Descripcin detallada del comando. Tpicamente, contiene una


explicacin de sus diferentes opciones.

EJEMPLOS

Como su nombre indica, proporciona ejemplos de uso del


comando.

VER TAMBIN

Indica las otras pginas del manual relativas al tema de la


pgina presentada.

ERRORES

Agrupa las observaciones respecto a las diferencias que se


pueden encontrar entre el comando GNU presentado aqu y el
mismo comando en otro sistema UNIX. Los errores y otros
comportamientos anormales detectados pero no resueltos
hasta el momento tambin se indican aqu.

TRADUCCIN

Nombre del traductor de la pgina.

Otros

En funcin del contenido, las pginas del manual pueden tener


otros apartados distintos.

(en

el

Bsqueda en las secciones del manual


Cuando el usuario busca un trmino en el manual, el comando man recorre las distintas secciones
segn este orden: 1, 8, 2, 3, 4, 5, 6, 7, 9. De este modo, el trmino buscado se compara primero con
los comandos existentes (comandos bsicos y comandos de administracin) antes de compararse con
las llamadas al sistema y otros nombres de archivos de configuracin. Este orden de recorrido de las
secciones se puede modificar en el archivo de configuracin /etc/man.configdescrito ms adelante.
Un mismo trmino puede aparecer en diferentes secciones del manual, por lo que se puede forzar la
seccin de la pgina buscada como primer argumento de la lnea de comando. Por ejemplo, man
signaldevuelve la pgina relativa a la llamada al sistema signal (Seccin 2 del manual), mientras
http://www.eni-training.com/client_net/mediabook.aspx?idR=72833

2/4

25/4/2014

ENI Training - Libro online

que man 7 signaldevuelve la definicin de las diferentes seales que pueden ser recibidas por los
procesos.

Encontrar la informacin en el manual


La gran dificultad, para el usuario nuevo en Linux, es encontrar la informacin sin conocer el nombre de
los comandos que busca.
Para resolver este problema, el comando manacepta la opcin -k. Esta opcin indica que busque la
cadena de caracteres pasada como argumento en las descripciones de las pginas del manual, y no
slo en el ttulo de las pginas.
As, para buscar las pginas del manual asociadas a "calcula", se puede escribir:

[nicolas]$ man -k clculo


abs
(3) - Calcular el valor absoluto de un entero
acl_calc_mask
(3) - Calculate the file group class mask
allneeded
(1) - Force the calculation of all fonts now needed
bc
(1) - An arbitrary precision calculator language
bc
(1) - Un lenguaje de calculadora de precisin
arbitraria
carg
(3) - calculate the argument
cargf [carg]
(3) - calculate the argument
cargl [carg]
(3) - calculate the argument
conj
(3) - calculate the complex conjugate
conj
(3) - Calcular el conjugado complejo
conjf [conj]
(3) - calculate the complex conjugate
conjf [conj]
(3) - Calcular el conjugado complejo
conjl [conj]
(3) - calculate the complex conjugate
conjl [conj]
(3) - Calcular el conjugado complejo
cvt
(1) - calculate VESA CVT mode lines
dc
(1) - an arbitrary precision calculator
dc
(1) - una calculadora de precisin arbitraria
difftime
(3) - calculate time difference
...
La visualizacin producida indica que el comando bc, en la seccin 1 del manual (cifra mostrada entre
parntesis), permite efectuar clculos matemticos.
Otra manera de obtener este resultado es ejecutar el comando apropos:

[nicolas]$ apropos clculo


abs
(3) - Calcular el valor absoluto de un entero
acl_calc_mask
(3) - Calculate the file group class mask
allneeded
(1) - Force the calculation of all fonts now needed
bc
(1) - An arbitrary precision calculator language
bc
(1) - Un lenguaje de calculadora de precisin
arbitraria
carg
(3) - calculate the argument
cargf [carg]
(3) - calculate the argument
cargl [carg]
(3) - calculate the argument
conj
(3) - calculate the complex conjugate
conj
(3) - Calcular el conjugado complejo
conjf [conj]
(3) - calculate the complex conjugate
conjf [conj]
(3) - Calcular el conjugado complejo
conjl [conj]
(3) - calculate the complex conjugate
conjl [conj]
(3) - Calcular el conjugado complejo
cvt
(1) - calculate VESA CVT mode lines
http://www.eni-training.com/client_net/mediabook.aspx?idR=72833

3/4

25/4/2014

ENI Training - Libro online

dc
dc
difftime
...

(1) - an arbitrary precision calculator


(1) - una calculadora de precisin arbitraria
(3) - calculate time difference

El comando apropos y la opcin -k de man buscan en las definiciones de las pginas del
manual, principalmente en ingls. Es preciso, pues, buscar la cadena de caracteres "print" en
lugar de "impresin" para encontrar los comandos que permiten imprimir un documento.

Finalmente, es posible escribir esto para obtener ms informacin sobre el comando man:

$ man man

3. /etc/man.config
El archivo de configuracin del manual electrnico es /etc/man.config. El administrador del sistema
puede editarlo para modificar el comportamiento predeterminado del comando man.
Veamos un extracto de este archivo de configuracin; las lneas que empiezan con un # son
comentarios:
# Directorios que contienen las pginas de manual en el disco
#
MANPATH /usr/share/man
MANPATH /usr/man
MANPATH /usr/local/share/man
MANPATH /usr/local/man
MANPATH /usr/X11R6/man
#
# Rutas de las herramientas subyacentes al comando man.
#
TROFF
/usr/bin/groff -Tps -mandoc
NROFF
/usr/bin/nroff -c -mandoc
PAGER
/usr/bin/less -isr
CAT
/bin/cat
#
# Orden de consulta de las secciones del manual
#
MANSECT
1:8:2:3:4:5:6:7:9:tcl:n:l:p:o
#
# Las pginas del manual se guardan generalmente en un formato
# comprimido, se indican aqu las herramientas de descompresin utilizadas
# segn las extensiones de los archivos
#
.gz
/usr/bin/gunzip -c
.bz2
/usr/bin/bzip2 -c d
Algunas distribuciones de GNU/Linux como Fedora incluyen en su ltima versin un paquete
llamado man-db para poder editar las pginas del manual. En ese caso, el archivo de
configuracin utilizado es /etc/man_db.conf y su sintaxis, descrita en la pgina man 5 manpath, es
similar al archivo /etc/man.conf presentado anteriormente.

http://www.eni-training.com/client_net/mediabook.aspx?idR=72833

4/4

25/4/2014

ENI Training - Libro online

Documentacin Info
1. Comando info
El comando infoes una herramienta que agrupa bsicamente la misma informacin contenida en las
pginas del manual. Su principal ventaja, respecto a man, es que presenta los datos de forma
jerrquica y con vnculos entre s.
Para acceder a la documentacin "Info", basta con escribir el comando info:

$ info
Aparece la visualizacin siguiente:

File: dir

Node: Top

This is the top of the INFO tree

This (the Directory node) gives a menu of major topics.


Typing "q" exits, "?" lists all Info commands, "d" returns here,
"h" gives a primer for first-timers,
"mEmacs<Return>" visits the Emacs topic, etc.
In Emacs, you can click mouse button 2 on a menu item or cross reference
to select it.
* Menu:
Texinfo documentation system
* Info: (info).
Documentation browsing system.
* Pinfo: (pinfo).
curses based lynx-style info browser.
* Texinfo: (texinfo).
The GNU documentation format.
* info standalone: (info-stnd).
Read Info documents without Emacs.
* infokey: (info-stnd)Invoking infokey.
Compile Info customizations.
* install-info: (texinfo)Invoking install-info. Update info/dir entries.
* makeinfo: (texinfo)Invoking makeinfo.
Translate Texinfo source.
* texindex: (texinfo)Format with tex/texindex. Sort Texinfo index files.
* pdftexi2dvi: (texinfo)PDF Output.
PDF output for Texinfo.
-----Info: (dir)Top, 2089 lines --Top
Welcome to Info version 4.11. Type ? for help, m for menu item.
Nos encontramos aqu en la raz de la jerarqua (File: dir) y los enlaces (precedidos por el
carcter *) apuntan a los diferentes nodos de los archivos de documentacin "Info".
Un nodo puede considerarse como un captulo dentro de un archivo de documentacin. Puede
existir un rbol de nodos, y por lo tanto captulos y subcaptulos, en un mismo archivo de
documentacin.

Para llamar al comando infose puede indicar, como en el comando man, un argumento con el trmino
buscado en la documentacin:

$ info date
Esto devuelve:
http://www.eni-training.com/client_net/mediabook.aspx?idR=72834

1/5

25/4/2014

ENI Training - Libro online

File: coreutils.info, Node: date invocation, Next: uname invocation,


Up: System context
21.1 `date: Print or set system date and time
==============================================
Synopses:
date [OPTION]... [+FORMAT]
date [-u|--utc|--universal] [ MMDDhhmm[[CC]YY][.ss] ]
Invoking `date with no FORMAT argument is equivalent to invoking it
with a default format that depends on the `LC_TIME locale category.
In the default C locale, this format is `+%a %b %e %H:%M:%S %Z %Y,
so the output looks like `Thu Mar 3 13:47:51 PST 2005.
Normally, `date uses the time zone rules indicated by the `TZ
environment variable, or the system default rules if `TZ is not set.
*Note Specifying the Time Zone with `TZ: (libc)TZ Variable.
If given an argument that starts with a `+, `date prints the
current date and time (or the date and time specified by the `--date
--zz-Info: (coreutils.info.gz)date invocation, 40 lines --Top
Welcome to Info version 4.11. Type ? for help, m for menu item.
En esta ocasin, nos encontramos en el nodo "date invocation" (Node: date invocation) del archivo
de documentacin "coreutils" (File: coreutils.info).
Si no existe documentacin "Info" para el trmino buscado, el comando info se limita a
mostrar la pgina del manual electrnico relativa a dicho trmino y se observa al principio de la
pgina la indicacin File: *manpages*. Si no corresponde ninguna pgina del manual a este
trmino, entonces el comando equivale a una llamada sin argumentos a info.

Organizacin de la documentacin
Como se ha indicado anteriormente, la informacin contenida en los archivos de documentacin "Info"
est vinculada internamente y se organiza en forma de rbol. Para saber el lugar donde se encuentra
en la documentacin, la primera lnea de la vista proporciona las indicaciones siguientes:

File

Nombre del archivo de documentacin "Info" actual.

Node

Nodo (o captulo) visible actualmente.

Next

Nodo siguiente o primer subnodo segn el caso.

Prev

Nodo anterior o nodo padre segn el caso.

Up

Nodo (o captulo) padre; el nodo visible actualmente (Node) es un


subcaptulo de este nodo (Up).

Navegacin
Varios comandos (teclas del teclado), bajo info, permiten pasar de un nodo a otro; destacan:
[n]

Nodo siguiente (Next).

[p]

Nodo anterior (Prev).

http://www.eni-training.com/client_net/mediabook.aspx?idR=72834

2/5

25/4/2014

ENI Training - Libro online

[u]

Nodo padre (Up).

[t]

Nodo raz del archivo de documentacin (Top).

[l]

Volver al ltimo nodo visitado (Last).

Para consultar la informacin de un nodo que puede ocupar varias pantallas se utilizan las teclas
siguientes:
[Espacio]

Baja pantalla por pantalla en el nodo o pasa al nodo siguiente,


segn el caso.

[Supr]

Sube pantalla por pantalla en la pgina o pasa al nodo anterior,


segn el caso.

[b]

Vuelve a la primera lnea del nodo (Beginning).

[e]

Va a la ltima lnea del nodo (End).

[Ctrl]+[n]

Baja una lnea en el nodo.

[Ctrl]+[p]

Sube una lnea en el nodo.

Adems, en la informacin mostrada se encuentran asimismo tambin vnculos de hipertexto a los


nodos inferiores (llamados tambin "men") o a otros nodos (llamados tambin "referencias
cruzadas"). Para acceder y seguir estos vnculos (precedidos por *para los mens y por *nodepara las
referencias cruzadas):
[m] <men>

Muestra el nodo referenciado por el men <men>.

[F] <xref>

Muestra el nodo referenciado por la referencia cruzada <xref>.

[Tab]

Coloca el cursor en el vnculo siguiente.

[Ecs], [Tab]

Coloca el cursor en el vnculo anterior.

[Entr]

Muestra el nodo referenciado por el vnculo debajo del cursor.

Para aclarar esta organizacin, veamos


documentacin "Info":

http://www.eni-training.com/client_net/mediabook.aspx?idR=72834

un

esquema

recapitulativo

de

la

estructura

de

la

3/5

25/4/2014

ENI Training - Libro online

Consideraciones
Aunque el comando infoes ms evolucionado que el comando many la escritura de la documentacin
asociada es ms fcil, se utiliza preferentemente el manual en lnea.
Las pginas del manual estn traducidas en su mayor parte y la navegacin impuesta por el
comando infoes bastante compleja. stas parecen ser buenas razones.
Es cierto que un sistema GNU/Linux pide probablemente ms esfuerzo al usuario, especialmente debido
a la internacionalizacin de los programas y su documentacin.
Pero en cuanto a la ergonoma del comando info, existen otras herramientas, como pinfo, que
proponen una exploracin de la documentacin "Info" o lynxque es un navegador web de lnea de
comandos.
Ejemplo de visualizacin con pinfo:

http://www.eni-training.com/client_net/mediabook.aspx?idR=72834

4/5

25/4/2014

ENI Training - Libro online

Para navegar dentro de pinfo:


[Av Pg]

Baja una pantalla en el nodo mostrado.

[Re Pg]

Sube una pantalla en el nodo mostrado.

[Abajo]

Selecciona el vnculo siguiente en el nodo.

[Arriba]

Selecciona el vnculo anterior en el nodo.

[Derecha]

Sigue el vnculo seleccionado.

[Izquierda]

Vuelve al nodo anterior.

[q]

Salir de pinfo.

http://www.eni-training.com/client_net/mediabook.aspx?idR=72834

5/5

25/4/2014

ENI Training - Libro online

Opcin --help de los comandos en Linux


Adems de las pginas del manual y de la documentacin "Info" que ya hemos visto, los comandos GNU
que se encuentran en Linux aceptan habitualmente la opcin --help.
Los comandos invocados con esta opcin devuelven una sucinta ayuda que describe la sintaxis general
del comando y las opciones ms utilizadas; por ejemplo:

$ wc -help
Usage: wc [OPCION]... [ARCHIVO]...
or: wc [OPCION]... --referencia=ARCHIVO-R ARCHIVO...
Muestra el nmero de nuevas lneas, palabras y bytes para cada ARCHIVO,
y el nmero total de lneas si se especifica ms de un ARCHIVO.
Sin ARCHIVO, o cuando ARCHIVO es -, lee la entrada estndar.
-c, --bytes
muestra el nmero de bytes
-m, --chars
muestra el nmero de caracteres
-l, --lines
muestra el nmero de lneas
--files0-from=F
read input from the files specified by
NUL-terminated names in file F
-L, --max-line-length print the length of the longest line
-w, --words
print the word counts
--help
muestra la ayuda
--version muestra el nombre y la versin del programa
Comunicar las anomalias a <bug-coreutils@gnu.org>.
Esta ayuda resulta muy prctica cuando se conoce ya el comando que hay que emplear, pero se
tienen dudas sobre la sintaxis o el nombre de una opcin.

http://www.eni-training.com/client_net/mediabook.aspx?idR=72835

1/1

25/4/2014

ENI Training - Libro online

Documentacin HOWTO
A su manera, los documentos HOWTO aportan una mina de informacin al usuario que quiera dominar el
sistema operativo con el que trabaja.
Estos documentos de varias pginas se refieren a temas especficos, como la impresin con Linux, la
configuracin de red del sistema o bien la administracin de dispositivos SCSI.
Tambin existen otros documentos, llamados "mini-HOWTO", ms sucintos que los otros HOWTO.

Por citar slo uno de estos documentos, el HOWTO Index recoge todos los HOWTO existentes y los
clasifica por categoras, dando una descripcin rpida de cada uno.
Estos archivos estn disponibles en diferentes formatos:

.txt

Archivos en formato de texto.

.ps

Archivos PostScript imprimibles directamente en las impresoras que


reconocen este formato.

.pdf

Archivos en formato Adobe PDF que pueden leerse con


laherramienta xpdfen la interfaz grfica.

.html

Pginas HTML legibles desde cualquier navegador web.

.texy .dvi

Formatos de archivo asociados a las herramientas de paginacin y


publicacin TeX y LaTeX.

Cuando
estn
instalados
en
el
equipo,
se
colocan
generalmente
en
el
directorio /usr/share/doc/HOWTO. Pero en este caso, el espacio ocupado es bastante notable. Por otra
parte, algunos editores como Red Hat slo los proporcionan en un CD-ROM separado de la distribucin.
Si no se encuentran en el equipo, es posible consultarlos en uno de los numerosos sitios espejo
presentes en Internet (vase, en este captulo, Internet - Sitios).

http://www.eni-training.com/client_net/mediabook.aspx?idR=72836

1/1

25/4/2014

ENI Training - Libro online

/usr/share/doc
Adems de toda la documentacin vista hasta ahora, los desarrolladores y editores de programas
proporcionan generalmente una serie completa de documentos que describen su obra.
Esta documentacin se encuentra en subdirectorios de /usr/share/doc/:

[nicolas]$ ls /usr/share/doc
abattis-cantarell-fonts-0.0.10.1
abrt-2.0.19
acl-2.2.51
aic94xx-firmware-30
akonadi-1.8.1
alsa-firmware-1.0.25
alsa-lib-1.0.26
alsa-plugins-pulseaudio-1.0.26
alsa-tools-1.0.26.1
alsa-utils-1.0.26
anaconda-yum-plugins-1.0
anthy-9100h
apper-0.8.0
apr-1.4.6
apr-util-1.4.1
...
Al igual que los HOWTO, los archivos se encuentran en diferentes formatos, por ejemplo:

[nicolas]$ pwd
/usr/share/doc
[nicolas]$ ls pam-1.1.6
Copyright html Linux-PAM_SAG.txt rfc86.0.txt txts
[nicolas]$ ls iproute-3.6.0
COPYING README.decnet
README.iproute2+tc
README README.distribution README.lnstat

http://www.eni-training.com/client_net/mediabook.aspx?idR=72837

1/1

25/4/2014

ENI Training - Libro online

Internet
1. Sitios
Internet es una inmensa fuente de informacin; veamos una breve seleccin de sitios relacionados con
los sistemas GNU/Linux.

Genricos
http://www.gnu.org/home.es.html
Ttulo: GNUs Not Unix
Idioma: multilinge
Descripcin: sitio oficial del proyecto GNU.
http://www.tldp.org
Ttulo: The Linux Documentation Project
Idioma: multilinge
Descripcin: sitio oficial que agrupa toda la documentacin de Linux actualizada: HOWTO,
guas, FAQ, pginas de manual...

Editores
http://www.redhat.es
Ttulo: Red Hat Espaa
Idioma: espaol
Descripcin: editor de las distribuciones Red Hat Enterprise.
http://fedoraproject.org/
Ttulo: Fedora
Idioma: multilinge
Descripcin: sitio oficial del proyecto Fedora.
http://www.debian.org
Ttulo: Debian
Idioma: multilinge
Descripcin: editor de la distribucin del mismo nombre.
http://www.suse.com/es-es/
Ttulo: SuSE
Idioma: multilinge
Descripcin: editor de las distribuciones SuSE Linux.
http://es.opensuse.org/
http://www.eni-training.com/client_net/mediabook.aspx?idR=72838

1/3

25/4/2014

ENI Training - Libro online

Ttulo: openSUSE Espaa


Idioma: espaol
Descripcin: sitio de la distribucin libre openSUSE.
http://ubuntu.com/
Ttulo: Ubuntu
Idioma: ingls
Descripcin: editor de la distribucin del mismo nombre.

2. Grupos de discusin
De entre todos los grupos de discusin (o newsgroups) existentes en Usenet, un cierto nmero est
dedicado
a
Linux
y
a
las
aplicaciones
GNU.
Por
ejemplo,
los
grupos
de
la
jerarqua es.comp.os.linux.*son generalmente relevados por los proveedores de acceso a Internet.
Programas como tin (en lnea de comandos) o knode (con una interfaz grfica amigable) permiten
aprovechar estos grupos de discusin.

Buzones pblicos en los que todo el mundo puede enviar o leer mensajes, es el lugar apropiado para
obtener ayuda cuando toda la documentacin vista anteriormente no basta para resolver un problema.
Existen ciertas reglas de uso en estos grupos. Evite, por ejemplo, hacer una pregunta sobre un
problema resuelto anteriormente; para ello, conviene consultar los mensajes anteriores y las FAQ
(Frequently Asked Questions), documentos que contienen las preguntas hechas con frecuencia
acompaadas de sus respuestas.
http://www.eni-training.com/client_net/mediabook.aspx?idR=72838

2/3

25/4/2014

ENI Training - Libro online

Adems, para tener ocasin de obtener una respuesta correcta ms rpidamente:


Enve la pregunta al grupo de discusin adecuado.
Primero busque en la documentacin presentada a lo largo de este captulo: normalmente
est mal visto preguntar el nombre de una opcin para un comando cuando un simple uso del
comando manbastara.
Facilite el mximo de informacin para orientar a las personas que quieran responderle: "No
consigo imprimir" no permitir obtener ayuda, mientras que "No consigo imprimir a pesar de
haber ledo el Printing-HOWTO. Utilizo la distribucin X con una impresora Y. Los mensajes de
error son Z" ser sin duda ms fructfero.
Sea educado, evidentemente.

http://www.eni-training.com/client_net/mediabook.aspx?idR=72838

3/3

25/4/2014

ENI Training - Libro online

El rbol de Linux
Lo ms difcil, cuando se empieza con Linux, es sin duda conocer la ubicacin de los archivos y la utilidad
de los directorios presentes en el rbol.
Este captulo propone una panormica general del sistema de archivos de Linux.

Organizacin
Presentado en forma de rbol, el sistema de archivos de Linux es una jerarqua de directorios que tienen
como nica raz / (barra).
Al instalar una distribucin de Linux, es posible crear, adems de la particin principal que contiene /,
otras particiones dedicadas a ciertos directorios del rbol. Sin embargo, los directorios indispensables
para iniciar el sistema deben estar en la misma particin que / y no pueden, por tanto, instalarse en una
particin separada; en el esquema anterior, esos directorios esenciales aparecen en gris en el esquema
siguiente.

En la medida de lo posible, se trazar una analoga entre el rbol de Linux y los directorios
clsicos del sistema Microsoft Windows; esto permitir orientarse mejor a los usuarios de este
http://www.eni-training.com/client_net/mediabook.aspx?idR=72840

1/2

25/4/2014

ENI Training - Libro online

extendido sistema.

El rbol de archivos de Linux respeta, exceptuando algunos directorios, el FHS (Filesystem Hierarchy
Standard) implementado con el objetivo de homogeneizar la estructura de los sistemas de archivos de
Unix. Este documento detalla el nombre y el contenido de los directorios; se encuentra disponible en la
direccin http://www.pathname.com/fhs.

http://www.eni-training.com/client_net/mediabook.aspx?idR=72840

2/2

25/4/2014

ENI Training - Libro online

Directorios principales
1. /bin, /sbin, /lib
El directorio /bin contiene los ejecutables (binarios) bsicos necesarios para el funcionamiento del
sistema; los comandos como dateestn aqu.
Por su parte, todos los comandos fundamentales de administracin del sistema estn
en /sbin("sper" binarios). Aqu se encuentran, por ejemplo, los comandos de particionado y de
administracin de dispositivos de red.
Los binarios compilados para Linux utilizan bibliotecas de funciones, lo que permite aligerar en gran
medida el tamao de los archivos porque varios ejecutables podrn utilizar la misma porcin de cdigo
contenida en una de estas bibliotecas. El directorio /lib(libraries) rene las bibliotecas utilizadas por
los binarios incluidos en /biny /sbin.
En comparacin con un sistema Windows, estos tres directorios corresponden a los ejecutables
contenidos
en
C:\windows con
sus
bibliotecas
(archivos
.dll)
ubicados
en C:\windows\system.

Estos tres directorios son vitales para el sistema y deben estar en la misma particin que /.

2. /boot
Este directorio contiene el ncleo Linux y otros archivos ejecutados al arrancar el sistema.
Por razones no detalladas en esta obra, este directorio puede disponer de una particin distinta.

3. /dev
Una de las particularidades de Linux es presentar, en forma de archivos, los dispositivos conectados al
sistema.
Este directorio contiene archivos como /dev/fd0y /dev/cdrom que representan respectivamente la
unidad de disquetes y la unidad de CD-ROM.
La forma de acceder a los archivos presentes en estos soportes extraibles se aborda en el
apartado que trata de los montajes.

Siguiendo en el mbito de los archivos especiales, existen en este directorio archivos como /dev/null;
ste es en cierto modo una papelera a la que se pueden redirigir todos los datos que no se quiera
conservar. Su uso se detallar en el captulo sobre el Shell Bash.
La particularidad de los archivos presentes en /devno guarda relacin con sus nombres, sino con sus
nmeros mayor y menor. Estos dos nmeros indican al ncleo Linux el tipo de dispositivo vinculado al
archivo; se muestran con el comando ls -lque se detallar en el captulo Manipulacin de archivos.
Los archivos de este directorio sirven para acceder a los dispositivos o para implementar
funcionalidades importantes para el sistema, por lo que /devdebe estar en la misma particin que /.
http://www.eni-training.com/client_net/mediabook.aspx?idR=72841

1/5

25/4/2014

ENI Training - Libro online

4. /home
El directorio /homecontiene los directorios personales de los usuarios del equipo. As, para las cuentas
de
usuario
nicolas,
linus
y
richard,
existirn
los
directorios /home/nicolas,/home/linusy /home/richard.
En su directorio personal es donde un usuario guarda sus archivos de datos; en l se inscriben los
archivos de configuracin propios del usuario. Por ejemplo, la configuracin del editor Vi, para el
usuario nicolas, se encuentra en el archivo /home/nicolas/.exrc.
El directorio personal del usuario de Linux puede compararse a la carpeta "Mis documentos" de
un sistema Windows.

Al instalar el sistema, el administrador dedica habitualmente una particin a este directorio para
separar fsicamente los datos de usuario y los datos del sistema.

5. /root
Este directorio tiene la misma funcin que el anterior, pero est reservado al usuario rootque es el
administrador del equipo.
No se encuentra en /homepor razones de seguridad y porque no puede estar en una particin distinta
como /home.

6. /tmp
Como su nombre indica, el directorio /tmpest previsto para acoger los archivos temporales.
Todos los usuarios del sistema pueden escribir en este directorio, pero el administrador planifica
generalmente una limpieza automtica de este directorio a intervalos regulares. El tiempo de vida de
un archivo presente en este directorio se estima en unas horas o en unos das.

7. /lost+found
Este directorio se crea automticamente en cada particin de Linux al arrancar el sistema. Lo utiliza la
herramienta de verificacin fsck (File System ChecK) para guardar los archivos recuperados tras un
incidente en el sistema; por ejemplo, tras un corte de corriente imprevisto.
Este directorio debera, si todo va bien, permanecer vaco.

8. /mnt
/mntes un directorio vaco o que contiene una serie de directorios vacos predefinidos. Se reserva para
el montaje de sistemas de archivos de terceros.
Existen generalmente los subdirectorios /mnt/floppy y /mnt/cdrom, previstos
respectivamente a los disquetes y a los CD-ROM.

para

acceder

Las distribuciones recientes prevn tambin puntos de montaje en /mediapara los sistemas
de archivos que provienen de medios extraibles (disquetes, CD-ROM...) y en /misc para los
http://www.eni-training.com/client_net/mediabook.aspx?idR=72841

2/5

25/4/2014

ENI Training - Libro online

rboles montados automticamente por el montador automtico del sistema.

9. /proc
/proces un sistema de archivos virtual que representa el estado del sistema en curso de ejecucin.
No ocupa espacio en el disco; slo existe en memoria RAM y cada archivo que contiene da acceso a
informacin del sistema, como el uso actual de la memoria, la lista de dispositivos detectados en los
diferentes buses del equipo (ISA, PCI, USB...) o bien el enrutamiento de los paquetes de red.
El anlisis de los archivos presentes en /proc es responsabilidad del administrador del
sistema y puede ignorarse en el marco del uso diario del puesto de trabajo.

Adems, por cada proceso iniciado en el sistema, existe un subdirectorio que lo caracteriza en /proc.
Comandos como psy top, abordados ms adelante en este libro, utilizan esta informacin.
Todos estos datos estn presentes en archivos "virtuales", por lo que no se reserva ninguna particin
particular a /proc.

10. /sys
A la manera de /proc, /syses un sistema de archivos virtuales que no ocupan espacio en el disco. Su
meta es representar en forma de archivos los diferentes perifricos e indicar caractersticas y estados
de hardware.

11. /usr
Es el directorio ms voluminoso creado al instalar el sistema; /usrcontiene todos los programas que
no estn en /biny /sbin. Tambin contiene la documentacin y las fuentes de los programas.
Este directorio corresponde aproximadamente a la carpeta c:\archivos de programa de
Windows.

Se puede crear una particin especial para este directorio al instalar el sistema.

/usr/bin, /usr/sbin, /usr/lib


Estos tres subdirectorios contienen binarios (y bibliotecas asociadas) suplementarios, pero no
esenciales para el uso o la administracin bsica del sistema.

/usr/games
Como su nombre indica, los juegos instalados en el sistema deberan encontrarse aqu.

/usr/include
Aqu se encuentran las definiciones de las distintas bibliotecas utilizadas en programacin. El contenido
http://www.eni-training.com/client_net/mediabook.aspx?idR=72841

3/5

25/4/2014

ENI Training - Libro online

de este directorio slo es necesario en la compilacin de programas.

/usr/local
Este directorio est dedicado a las aplicaciones y documentos propios del equipo local; los programas
compilados especficamente para el sistema se encuentran, pues, aqu.
Este directorio se divide en subdirectorios bin, lib, ...

/usr/share
Adems de los archivos de internacionalizacin con la traduccin de los mensajes mostrados por las
aplicaciones (/usr/share/locale), este subdirectorio contiene la documentacin presentada en el
captulo Documentacin (/usr/share/man, /usr/share/infoy /usr/share/doc).
Los recursos compartidos destinados
subdirectorio /usr/share/X11.

las

aplicaciones

grficas

se

encuentran

en

el

/usr/src
La mayor parte de los programas utilizados estn desarrollados bajo licencia libre (GPL), por lo que no
es raro disponer de su cdigo fuente para recompilarlos de forma especfica.
Si es as, el cdigo fuente de estos programas se guarda aqu. Por ejemplo, el cdigo fuente del ncleo
Linux se encuentra en el directorio /usr/src/linux.

12. /var
Otro directorio voluminoso de un sistema de archivos Linux; /varrene todos los archivos de datos
"variables" en el tiempo: las colas de espera de impresora, los buzones de los usuarios y los registros
del sistema.
Un registro o archivo de "log" contiene el historial de la actividad de un programa. Existe por
ejemplo un archivo de log que registra la hora de conexin y desconexin de los usuarios al
equipo.

El tamao de este directorio depende en gran medida de los servicios implementados en el sistema;
as, si el equipo cumple la funcin de servidor de correo, de archivos y de impresora al mismo tiempo,
este directorio ser ms grande que en un equipo que sirva nicamente como puesto de trabajo.
Finalmente, se puede reservar para este directorio una particin especfica.

/var/lib
Este subdirectorio contiene generalmente los archivos de los sistemas de gestin de bases de datos
(SGBD), como MySQL.

/var/log
Aqu se agrupan todos los registros del sistema y de aplicaciones. La consulta de archivos de log
permite al administrador comprender -y por lo tanto resolver- un gran nmero de problemas del
sistema y de aplicaciones.

http://www.eni-training.com/client_net/mediabook.aspx?idR=72841

4/5

25/4/2014

ENI Training - Libro online

/var/lock
Las aplicaciones de servidor (servidor web, servidor ftp, planificador de tareas) crean cada una un
archivo en este directorio para dejar testimonio de su ejecucin. Llamados archivos "de bloqueo",
permiten con su presencia evitar que uno de estos programas se ejecute varias veces.
Estos archivos, lgicamente, se borran al detener los programas correspondientes.

/var/run
Adems de los archivos de bloqueo (/var/lock), los servicios iniciados en el equipo crean
generalmente un archivo que lleva su nombre y contiene el identificador del proceso (PID)
correspondiente en /var/run.
En otro captulo abordaremos la nocin de proceso.

Estos archivos permiten recuperar ms fcilmente los identificadores de los procesos con los scripts de
control.

/var/spool
Este subdirectorio agrupa los archivos de espera (spool) de diferentes servicios: impresin
(/var/spool/lpd y /var/spool/cups), correo electrnico (/var/spool/mail), tareas planificadas
(/var/spool/cron)...

/var/tmp
Al igual que el directorio /tmp, todos los usuarios del sistema pueden almacenar archivos temporales
en /var/tmp.
La diferencia entre estas dos ubicaciones es el tiempo de vida atribuido generalmente por el
administrador a estos archivos; desde unos das hasta varias semanas para /var/tmp.

13. /etc
El directorio /etc("etctera") contiene los archivos que no tienen cabida en los otros directorios, es
decir, todos los archivos de configuracin y scripts de arranque del sistema.
Se divide en subdirectorios, entre los que destacan:

/etc/rc.dque acoge los scripts de arranque y de control de los servicios;


/etc/skel (directorio "esqueleto"), que contiene los archivos que se copiarn en el
directorio del usuario al crear su cuenta Linux;

/etc/sysconfigque contiene principalmente la configuracin de los dispositivos.


Este directorio corresponde, en cierto modo, a la base de registros del sistema Windows.

Este directorio, fundamental para el sistema operativo, se encuentra obligatoriamente en la particin


principal.

http://www.eni-training.com/client_net/mediabook.aspx?idR=72841

5/5

25/4/2014

ENI Training - Libro online

Montar y acceder a los medios extraibles


Considerado en su conjunto hasta ahora, el rbol de Linux puede estar compuesto por varios sistemas
de archivos guardados en soportes diferentes.
De hecho, cada particin o medio extraible habilita un sistema de archivos "fsico". Una vez reunidos,
forman el rbol -o sistema de archivos- de Linux que hemos descrito anteriormente. Para ello, una
particin del disco duro del equipo se designa como principal y acoge el sistema de archivos raz (el que
contiene /), del que se colgarn los dems sistemas de archivos.
Por ejemplo:

1. Comando mount
Para acceder al contenido de un sistema de archivos fsico, hay que "conectarlo" al rbol de Linux. Esta
operacin se llama "montaje" y se efecta mediante el comando mount. Su sintaxis general es la
siguiente:
mount [-t <type>] [-o opciones[,...]] <disp.> <rep.>
Una pgina del manual detalla este comando; slo se exponen aqu los montajes de sistemas de
archivos presentes en CD-ROM o disquete.
Como se ha indicado anteriormente, los archivos asociados a las unidades de disquetes y de CD-ROM
son /dev/fd0y /dev/cdrom.
Para montar los sistemas de archivos presentes en los medios insertados en estos dispositivos, hay
http://www.eni-training.com/client_net/mediabook.aspx?idR=72842

1/3

25/4/2014

ENI Training - Libro online

que escribir los comandos mountsiguientes:


mount /dev/fd0
mount /dev/cdrom
El comando mount sin parmetros indica el directorio utilizado en el rbol de Linux para todos los
montajes del sistema de archivos; los directorios de montaje asociados de modo predeterminado a las
unidades de disquetes y CD-ROM se definen en el archivo /etc/fstab; para ms informacin sobre
este archivo: man 5 fstab.
Segn losderechos otorgados por el administrador en el archivo /etc/fstab, los usuarios
pueden no estar autorizados para efectuar montajes. Entonces ser necesario conectarse
como root.

Por ejemplo, para ver el contenido de un disquete:

[root]# mount
/dev/hda3 on / type ext3 (rw)
none on /proc type proc (rw)
[root]# ls /mnt/floppy/
[root]# mount /dev/fd0
[root]# mount
/dev/hda3 on / type ext3 (rw)
none on /proc type proc (rw)
/dev/fd0 on /mnt/floppy type vfat (rw,nosuid,nodev)
[root]# ls /mnt/floppy/
command.com ega2.cpi io.sys
keybrd2.sys mode.com
config.sys ega3.cpi keyb.com
keybrd3.sys msdos.sys
display.sys ega.cpi keyboard.sys keybrd4.sys
En este ejemplo, el segundo comando mount, sin parmetros, indica que el sistema de archivos
presente en el disquete (/dev/fd0) est montado en el directorio /mnt/floppy. Las llamadas del
comando lsmuestran el contenido del directorio /mnt/floppyantes y despus del montaje efectuado
con mount /dev/fd0.
En las distribuciones recientes, se implementa un sistema de automontaje. Esto permite que el
usuario acceda a los sistemas de archivos presentes en los disquetes y CD-ROM sin invocar el
comando mount, u, nicamente accediendo a los directorios asociados a los dispositivos en el
archivo /etc/fstab.

2. Comando umount
De igual manera, cuando ya no se quiere acceder a un sistema de archivos en Linux, hay que
"desmontarlo" antes de poder extraer el medio de su unidad. En el caso de un CD-ROM, la bandeja de
la unidad est bloqueada hasta que se realiza esta accin.
Si bien es posible extraer mecnicamente un disquete de su unidad o una memoria USB de su
puerto, sigue siendo obligatorio desmontar el sistema de archivos montado previamente, so
pena de perder los datos guardados en el medio.

http://www.eni-training.com/client_net/mediabook.aspx?idR=72842

2/3

25/4/2014

ENI Training - Libro online

El comando umount, seguido del nombre del dispositivo o del directorio de montaje, permite desmontar
el sistema de archivos; por ejemplo, para el disquete:

# umount /mnt/floppy
o:

# umount /dev/fd0
Dicho esto, no es posible desmontar un sistema de archivos en uso; hay que tener la precaucin de no
encontrarse en el directorio de montaje al llamar a umount.

3. Caja de herramientas mtools


Instalado de modo predeterminado con las distribuciones de Linux recientes, el paquete de software
mtools es una serie de comandos que permiten acceder a los medios de la misma manera que en la
lnea de comandos del DOS.
Estos comandos tienen los mismos nombres que los comandos DOS, aunque poniendo delante la letra
"m".
Por ejemplo, para leer un disquete DOS y copiar uno de sus archivos al directorio /tmpsin montar, se
utilizarn los comandos mdiry mcopyas:

[root]# mdir a:
Volume in drive A has no label
Volume Serial Number is 2A87-6CE1
Directory for A:/
EGA2
CPI
EGA3
CPI
EGA
CPI
KEYB
COM
KEYBOARD SYS
KEYBRD2 SYS
KEYBRD3 SYS
KEYBRD4 SYS
MODE
COM
COMMAND COM
DISPLAY SYS
CONFIG SYS
12 files

58870 06-08-2000 17:00


58753 06-08-2000 17:00
58870 06-08-2000 17:00
21607 06-08-2000 17:00
34566 06-08-2000 17:00
31942 06-08-2000 17:00
31633 06-08-2000 17:00
13014 06-08-2000 17:00
29239 06-08-2000 17:00
93040 06-08-2000 17:00
17175 06-08-2000 17:00
33 03-01-2004 19:16
448 742 bytes
888 832 bytes free

# mcopy a:\command.com /tmp


# ls /tmp
command.com
Atencin: los comandos
el comando mount.

mtools

http://www.eni-training.com/client_net/mediabook.aspx?idR=72842

no

pueden acceder a

los

medios

ya

montados

con

3/3

25/4/2014

ENI Training - Libro online

Introduccin
Tras leer este captulo, el lector estar capacitado para moverse por el rbol de Linux y para crear, mover
y borrar archivos y directorios.

http://www.eni-training.com/client_net/mediabook.aspx?idR=72844

1/1

25/4/2014

ENI Training - Libro online

Nombres de archivos y de directorios


Los nombres de archivos y de directorios en Linux responden a ciertas reglas de escritura.

Descripcin del contenido


En primer lugar, un nombre de archivo debe proporcionar indicaciones sobre su contenido; esto es vlido
para todos los sistemas operativos.
Para un profesor, es ms fcil encontrar las notas de historia de la clase de 4 A del primer trimestre de
2011 en el archivo llamado notas.historia.clase.4A.trim.1.2011que en el archivo llamado vale.

Sintaxis
La distincin de maysculas y minsculas es determinante en la sintaxis de los nombres de archivos. As,
los archivos vale, Valey VALEson distintos.
Slo deben utilizarse los caracteres alfanumricos (de a a z, A a Z y 0 a 9) junto con algunos ms
(_,., @, -, +) en los nombres de archivos.
Algunos caracteres tienen un significado especial en la lnea de comandos; stos se detallarn en el
captulo dedicado al Shell Bash. Por ejemplo, borrar a* no significa borrar el archivo llamado a*, sino
todos los archivos que empiezan por la letra a.
De hecho, pueden utilizarse todos los caracteres en los nombres de archivo exceptuando /, que
es el carcter de separacin de nombres de directorios en la lnea de comandos.

Los signos - y + deben evitarse al principio de un nombre de archivo porque puede haber ambigedad
con algunas opciones de la lnea de comandos. Por ejemplo, en la lnea siguiente, -fices un nombre
de archivo pasado como argumento al comando, o se trata de las opciones f, iy c?

$ ls -fic
Finalmente, el .(punto) no tiene un significado especial en un nombre de archivo, excepto en la primera
posicin, donde indica que ese archivo est oculto. La nica particularidad de un archivo oculto es que no
aparece de modo predeterminado en la lista del directorio.
En Linux no existe la nocin de extensin determinante como en Windows. No es un nombre
terminado por .exe, .como .batlo que permite la ejecucin de un archivo, sino los derechos
que tiene asociados; los derechos se explican ms adelante en esta obra.

Longitud
La longitud mxima de un nombre de archivo (o de directorio) en Linux es de 255 caracteres.
Este lmite no presenta problemas, pero ciertas herramientas no aceptan rutas de archivo (ver
ms adelante) de tamao infinito. Es el caso del comando t
ar, para el que estas rutas no
pueden pasar de 1.024 caracteres.

http://www.eni-training.com/client_net/mediabook.aspx?idR=72845

1/1

25/4/2014

ENI Training - Libro online

Tipos de archivos
En Unix se entiende por archivo la estructura que contiene datos del usuario.
Los archivos estndar estn constituidos por una serie de caracteres o flujo de bytes cuyo formato no
viene impuesto por el sistema, sino por las aplicaciones.
La analoga entre byte y carcter se debe al hecho de que un carcter se codifica con un byte; el
tamao de un archivo puede indicarse, por tanto, tanto en bytes como en caracteres.

Los directorios son archivos especiales que pueden contener otros muchos archivos (directorios o no).
Esto permite organizar los archivos de forma jerrquica en estructura de rbol.
Los trminos "directorio" y "archivo", utilizados en Linux, son equivalentes a "carpeta" y
"documento" empleados habitualmente en Windows y Mac OS.

Existen siete tipos de archivos en Linux; los tres ms importantes son:


archivo estndar u ordinario;
directorio;
vnculo simblico o lgico (soft link).
Los otros cuatro tipos de archivo, que se trabajan principalmente en la administracin o en programacin
del sistema, son:
archivo que apunta a un dispositivo de tipo "bloque" (archivos presentes /dev);
archivo que apunta a un dispositivo de tipo "carcter" (archivos presentes en /dev);
archivo de tubera llamado "named pipe" para la comunicacin entre procesos;
archivo "socket", como las tuberas con nombre, pero generalmente en un contexto de red.
Los archivos se guardan y referencian en un sistema de archivos. Pueden tener varios nombres
(referencias) gracias a la propia estructura de los sistemas de archivos de Unix.

http://www.eni-training.com/client_net/mediabook.aspx?idR=72846

1/1

25/4/2014

ENI Training - Libro online

Rutas
Conocer el nombre de un archivo (o de un directorio) no es suficiente para acceder a l; un mismo
nombre puede estar asociado a varios archivos en directorios diferentes.
La referencia plenamente cualificada de un archivo se denomina "ruta" e indica el directorio en el que se
encuentra el archivo. Los nombres de directorios y de archivos van separados por una / (barra oblicua)
en las rutas.
Atencin, en un sistema Windows, el separador entre los nombres de archivo y de directorios es
el \ (barra inversa).

Existen tres tipos de rutas: absolutas, relativas y personales. Pueden utilizarse indiferentemente en la
forma de nombrar archivos en la lnea de comando.
Veamos un ejemplo de rbol:

1. Rutas absolutas
Una ruta absoluta se basa en la raz del rbol de Linux. Toda ruta absoluta empieza, pues, por /.
Sea cual sea la ubicacin actual donde se encuentre, se podr referenciar el archivo notesdel ejemplo
anterior con la ruta /home/willy/notas.
Por ejemplo:

[willy]$ ls /home/willy/notas
/home/willy/notas

2. Rutas relativas
http://www.eni-training.com/client_net/mediabook.aspx?idR=72847

1/3

25/4/2014

ENI Training - Libro online

Las rutas relativas dependen del directorio actual en el que se encuentra el usuario.
Sabiendo que cada directorio en el sistema contiene los archivos . (punto) y .. (punto-punto) que
referencian respectivamente el propio directorio actual y el directorio padre, existen varias rutas
relativas que designan el archivo notesen el ejemplo:
Directorio actual

Ruta relativa correspondiente

/home

willy/notas

/home/willy

./notas

/home/willy/colores

../notas

home/willy/notas

/home

../tmp/./../home/./willy/notas

Para un mismo directorio actual (/home), existen varias rutas posibles, por absurdas que sean; esta
ltima manera de definir la ruta relativa al archivo notas podr emplearse en scripts shell
concatenando diversas variables, por ejemplo.
Por comodidad, es posible suprimir el ./ al principio de una ruta relativa; as, la ruta
relativa notasequivale a ./notas.

Por ejemplo:

[willy]$ pwd
/home/willy
[willy]$ ls notas
notas
[willy]$ ls ./notas
./notas
[willy]$ ls ../willy/notas
../willy/notas

3. Rutas personales
Esta tercera forma de definir la ruta de un archivo se refiere al directorio personal de un usuario; se
emplea principalmente para acceder a los archivos presentes en los subdirectorios de /home.
Una ruta personal empieza por el carcter ~ seguido del nombre del usuario que tiene como directorio
personal el directorio contenido en /home. Si no se especifica el nombre del usuario, se usa
implcitamente la identidad del usuario conectado.
Considerando que los usuarios gerardo, nicolas y willy tienen respectivamente como directorio
personal /home/gerardo, /home/nicolasy /home/willy, se obtendr:
Como gerardo:

[gerardo]$ whoami
gerardo
[gerardo]$ ls ~/archivo1
/home/gerardo/archivo1
[gerardo]$ ls ~willy/formas/tringulo
/home/willy/formas/tringulo
http://www.eni-training.com/client_net/mediabook.aspx?idR=72847

2/3

25/4/2014

ENI Training - Libro online

Como nicolas:

[nicolas]$ whoami
nicolas
[nicolas]$ ls ~gerardo/archivo1
/home/gerardo/archivo1
[nicolas]$ ls ~willy/notas
/home/willy/notas
Como willy:

[willy]$ whoami
willy
[willy]$ ls ~/notas
/home/willy/notas
[willy]$ ls ~/colores/amarillo
/home/willy/colores/amarillo
[willy]$ ls ~gerardo/archivo1
/home/gerardo/archivo1

http://www.eni-training.com/client_net/mediabook.aspx?idR=72847

3/3

25/4/2014

ENI Training - Libro online

Exploracin del rbol


1. pwd
El comando pwd (print working directory) muestra la ruta absoluta del directorio actual en el que se
encuentra el usuario:

[willy]$ pwd
/home/willy

2. cd
El comando cd (change directory) permite cambiar de directorio actual. En la lnea de comandos, se
indica como argumento junto con el directorio al que se quiere ir:

[willy]$ pwd
/home/willy
[willy]$ cd /var/spool
[willy]$ pwd
/var/spool
[willy]$ cd ..
[willy]$ pwd
/var
En este ejemplo el comando que permite "subir" hacia el directorio padre cd ..y no cd..(sin
espacio) como en DOS: el carcter de espacio es obligatorio entre el comando y su argumento.

Adems, la ruta del archivo (o del directorio) como argumento puede ser absoluta, relativa o
personal; esto es vlido para todos los comandos.

Llamado sin argumentos, el comando cddevuelve al usuario a su directorio personal:

[willy]$ pwd
/var
[willy]$ whoami
willy
[willy]$ cd
[willy]$ pwd
/home/willy
Finalmente, la sintaxis particular siguiente permite volver al directorio anterior:

[willy]$ pwd
/home/willy
[willy]$ cd /var
[willy]$ pwd
/var
No hay que confundir el directorio "padre" (..), situado sobre el directorio actual en el rbol de
http://www.eni-training.com/client_net/mediabook.aspx?idR=72848

1/6

25/4/2014

ENI Training - Libro online

Linux, con el directorio "anterior", que corresponde al directorio en el que se encontraba antes el
usuario.

3. ls
El comando lspermite listar el contenido de directorios. Sin opciones, la visualizacin sigue el orden
alfabtico de los nombres de archivo.

Argumentos
Llamado sin argumentos, lsse limita a mostrar los archivos presentes en el directorio actual:

[willy]$ cd
[willy]$ pwd
/home/willy
[willy]$ ls
colores formas notas
Puede especificarse una o ms rutas en la lnea de comandos. Si la ruta corresponde a un directorio, se
muestran los archivos que contiene; si es un archivo, se muestra su nombre:

[willy]$ pwd
/home/willy
[willy]$ ls notas . colores /home/gerardo ~nicolas/novale
ls: /home/nicolas/novale: No such file or directory
notas
.:
colores formas notas
colores:
azul amarillo rojo
/home/gerardo:
archivo1
Cuando la ruta no corresponde a ningn archivo o directorio, el comando devuelve un error.

Opcin -l
La opcin -l(long) produce una salida detallada con una parte de la informacin contenida en el inodo
de los archivos (vase seccin Organizacin fsica de los archivos en Linux, ms adelante en este
captulo):

[willy]$ ls -l
total 12
drwxr-xr-x 2 willy tec 4096 jun 1 10:42 colores
drwxr-xr-x 2 willy tec 4096 jun 1 10:43 formas
-rw-r--r-- 1 willy tec 62 may 26 22:55 notas
La primera lnea total 12indica que la suma de los bloques de datos ocupados por los archivos del
directorio es igual a 12.
http://www.eni-training.com/client_net/mediabook.aspx?idR=72848

2/6

25/4/2014

ENI Training - Libro online

La informacin sobre el archivo notasen el directorio es:

El primer carcter indica el tipo de archivo; los valores posibles son (vase seccin Tipos de archivos, en
este captulo):

archivo comn

directorio (directory)

enlace simblico (link)

dispositivo de tipo "bloque"

dispositivo de tipo "carcter"

archivo intermedio o tubo con nombre (pipe)

archivo "socket"

Los permisos de Linux sobre los archivos se detallan en un captulo posterior.


El nmero de referencias corresponde al nmero de nombres de archivo que apuntan al mismo inodo.
El usuario y el grupo propietarios estn vinculados a los derechos y se abordarn ms adelante.
El tamao del archivo se expresa en nmero de bytes. Corresponde a la cantidad real de datos
guardados en el archivo, y no al espacio en disco ocupado por el archivo en nmero de bloques.
La fecha mostrada corresponde a la fecha de la ltima modificacin del archivo.
El nombre del archivo va al final de la lnea.

Otras opciones
La opcin -a(all) pide a ls que muestre tambin los archivos ocultos (cuyo nombre empieza por un
punto):

[willy]$ ls
colores formas notas
[willy]$ ls -a
. .. .bash_history .bash_profile .bashrc colores formas notas

-i(inodo) muestra, adems, el nmero de inodo de cada archivo.


[willy]$ ls -i
http://www.eni-training.com/client_net/mediabook.aspx?idR=72848

3/6

25/4/2014

ENI Training - Libro online

15874 colores 15882 formas 15880 notas


[willy]$ ls -i /bin/gzip /bin/gunzip
32837 /bin/gunzip 32837 /bin/gzip

/bin/gzipy /bin/gunzipson dos nombres posibles para un mismo archivo.


El concepto de inodo se detalla ms adelante en este captulo.

-R(recursivo) da una vista del rbol de un directorio recorriendo sus subdirectorios:


[willy]$ pwd
/home/willy
[willy]$ ls -R
.:
colores formas notas
./colores:
azul amarillo rojo
./formas:
crculo tringulo
El trmino "recursivo" proviene del tipo de algoritmo utilizado en los programas que recorren
datos estructurados jerrquicamente en forma de rbol.

-d muestra el directorio, y no su contenido. Resulta muy prctico en combinacin con la opcin lcuando se trata de mostrar las caractersticas de un directorio:
[willy]$ ls colores
azul amarillo rojo
[willy]$ ls -d colores
colores
[willy]$ ls -ld colores
drwxr-xr-x 2 willy tec 4096 jun 1 10:42 colores
La opcin -tordena los archivos segn su fecha de ltima modificacin; el ltimo archivo modificado en
un directorio aparece el primero en la lista.
Finalmente, la opcin -rinvierte el orden de visualizacin de los archivos.
Todas estas opciones pueden combinarse entre s para obtener la vista deseada. Por ejemplo, puede
resultar til ver de forma detallada los archivos del directorio /var/logordenados del ms antiguo al
ms reciente. As se sabe el nombre y las caractersticas del ltimo archivo de registro modificado:

[willy]$ ls -ltr /var/log


total 2480
drwxr-xr-x
2 root
root
drwxr-xr-x
2 root
root
-rw-r--r-1 root
root
-rw-r--r-1 root
root
drwxr-sr-x
2 news
news
-rw-r--r-1 root
root
-rw-r--r-1 root
root
-rw-r--r-1 root
root
http://www.eni-training.com/client_net/mediabook.aspx?idR=72848

4096 Apr 25 2008 vbox


4096 Apr 25 2008 isdn
0 Mar 18 20:43 uucp.log
0 Mar 18 20:43 user.log
4096 Mar 18 20:43 news
0 Mar 18 20:43 mail.warn
0 Mar 18 20:43 mail.log
0 Mar 18 20:43 mail.info
4/6

25/4/2014

-rw-r--r--rw-r--r--rw-r--r--rw-r--r--rw-r--r--rw-r--r-drwxrws---rw-r--r-drwxr-xr-x
-rw-r----drwxr-s---rw-r-----rw-r-----rw-r--r--rw-r--r-drwxr-xr-x
-rw-r--r--rw-r--r--rw-r--r--rw-r--r--rw-rw-r--rw-rw-r--rw-r-----rw-r-----

ENI Training - Libro online

1 root
1 root
1 root
1 root
1 root
1 root
3 root
1 root
2 root
1 root
2 mail
1 root
1 root
1 root
1 root
2 root
1 root
1 root
1 root
1 root
1 root
1 root
1 root
1 root

root
root
root
root
root
root
adm
root
root
adm
adm
adm
adm
root
root
root
root
root
root
root
utmp
utmp
adm
adm

0 Mar 18 20:43 mail.err


0 Mar 18 22:06 lp-errs
0 Mar 18 22:06 lp-acct
41 Mar 18 22:06 lpr.log
52261 Mar 18 23:09 installer.timings.1
938374 Mar 18 23:09 installer.log.1
4096 Mar 18 23:21 webmin
2927 Mar 19 15:27 aptitude
4096 Mar 22 06:26 apache
465921 Mar 24 06:25 setuid.yesterday
4096 Mar 26 06:25 exim
465921 Mar 26 06:25 setuid.today
329 Mar 26 06:25 setuid.changes
24024 Apr 3 01:04 faillog
3818 Apr 3 02:17 daemon.log
4096 Apr 27 08:23 ksymoops
5463 Apr 27 08:23 dmesg
86972 Apr 27 08:23 kern.log
3393 Apr 27 08:23 debug
98415 Apr 27 09:43 messages
292292 Apr 27 09:52 lastlog
131712 Apr 27 09:52 wtmp
41367 Apr 27 09:53 syslog
121593 Apr 27 09:53 auth.log

4. file
El comando ls -lpermite obtener cierta informacin sobre los archivos listados, pero no describe su
contenido.
Dado que la nocin de extensin no existe en Linux, es arriesgado fiarse slo del nombre del archivo
para determinar su tipo de contenido.
El comando filemuestra esta informacin:

[willy]$ file /etc/passwd /home /bin/ls


/etc/passwd: ISO-8859 text
/home:
directory
/bin/ls:
ELF 32-bit LSB executable, Intel 80386, version 1 (SYSV),
for GNU/Linux 2.2.5, dynamically linked (uses shared libs), stripped
Para obtener estos resultados, el comando filecompara el contenido de los archivos pasados como
argumentos con las descripciones indicadas en su base de datos. La base de datos de filese
encuentra en el archivo /usr/share/file/magic(ver pgina del manual man 5 magic).

5. stat
Al igual que el comando ls -l, la herramienta statmuestra la informacin contenida en el inodo de
los archivos pasados como argumentos:

[willy]$ ls -ld /bin/ls /etc/passwd /tmp


-rwxr-xr-x 1 root root 82060 jan 26 19:38 /bin/ls
-rw-r--r-- 1 root root 1364 may 26 23:08 /etc/passwd
drwxrwxrwt 18 root root 4096 jun 1 10:53 /tmp
[willy]$ stat /bin/ls /etc/passwd /tmp
File: /bin/ls
http://www.eni-training.com/client_net/mediabook.aspx?idR=72848

5/6

25/4/2014

ENI Training - Libro online

Size: 82060
Blocks: 176
IO Block: 4096 archivo regular
Device: 305h/773d
Inodo: 32802 Links: 1
Access: (0755/-rwxr-xr-x) Uid: ( 0/ root) Gid: (
0/
root)
Access: 2008-06-01 11:28:05.000000000 +0200
Modify: 2008-01-26 19:38:12.000000000 +0100
Change: 2008-05-26 07:43:30.000000000 +0200
File: /etc/passwd
Size: 1364
Blocks: 8
IO Block: 4096 archivo regular
Device: 305h/773d
Inodo: 557308
Links: 1
Access: (0644/-rw-r--r--) Uid: (
0/
root) Gid: (
0/
root)
Access: 2008-06-01 11:28:15.000000000 +0200
Modify: 2008-05-26 23:08:54.000000000 +0200
Change: 2008-05-26 23:08:54.000000000 +0200
File: /tmp
Size: 4096
Blocks: 8
IO Block: 4096
Device: 305h/773d
Inodo: 81921
Links: 18
Access: (1777/drwxrwxrwt) Uid: (
0/
root) Gid: (
Access: 2008-06-01 11:28:02.000000000 +0200
Modify: 2008-06-01 10:53:11.000000000 +0200
Change: 2008-06-01 10:53:11.000000000 +0200

directorio
0/

root)

La informacin mostrada es:

File

Nombre del archivo.

Size

Tamao real del contenido del archivo en nmero de bytes.

Blocks

Nmero de bloques ocupados en el disco por el archivo.

IO Block

Tamao de un bloque de datos en bytes en la particin donde se


encuentra el archivo.

tipo de archivo

(equivalente a los presentados por el comando ls -l).

Access

Permiso de acceso al archivo.

Uid

Identificador del usuario propietario del archivo.

Gid

Identificador del grupo propietario del archivo.

Access

Fecha de la ltima consulta del archivo.

Modify

Fecha de la ltima modificacin del contenido del archivo (es la


fecha mostrada con ls -l).

Change

Fecha de la ltima modificacin del inodo del archivo; al cambiar


los derechos asociados al archivo, por ejemplo.

http://www.eni-training.com/client_net/mediabook.aspx?idR=72848

6/6

25/4/2014

ENI Training - Libro online

Directorios
1. mkdir
El comando mkdir(make directory) permite crear directorios:

[willy]$ ls -l
total 12
drwxr-xr-x 2 willy tec 4096 jun 1 10:42 colores
drwxr-xr-x 2 willy tec 4096 jun 1 10:43 formas
-rw-r--r-- 1 willy tec 62 may 26 22:55 notas
[willy]$ mkdir flores
[willy]$ ls -l
total 16
drwxr-xr-x 2 willy tec 4096 jun 1 10:42 colores
drwxr-xr-x 2 willy tec 4096 jun 1 11:30 flores
drwxr-xr-x 2 willy tec 4096 jun 1 10:43 formas
-rw-r--r-- 1 willy tec 62 may 26 22:55 notas
Se pueden indicar varios argumentos en la lnea de comandos:

[willy]$ ls
colores flores formas notas
[willy]$ mkdir nombres flores/alegres
[willy]$ ls . flores
.:
colores flores formas nombres notas
flores:
alegres
Hay que agregar la opcin -ppara crear una serie de directorios anidados:

[willy]$ mkdir -p estaciones/invierno/enero


[willy]$ ls -R
.:
colores flores formas nombres notas estaciones
./colores:
azul amarillo rojo
./flores:
alegres
./flores/alegres:
./formas:
crculo tringulo
./nombres:
./estaciones:
invierno
./estaciones/invierno:
enero
http://www.eni-training.com/client_net/mediabook.aspx?idR=72849

1/2

25/4/2014

ENI Training - Libro online

./estaciones/invierno/enero:

2. rmdir
rmdir(remove directory) permite borrar directorios. Como en el comando mkdir, la opcin -ppermite
borrar una serie de directorios anidados.
La ejecucin de rmdirest sometida a condiciones:
El directorio que
archivo .y..);

se

quiere

borrar debe

estar vaco (slo incluye

los nombres de

El directorio que se quiere borrar o uno de sus subdirectorios no deben ser el directorio
actual del usuario (o de cualquier otro proceso); si es as, el usuario se encuentra en una
ubicacin indefinida donde ya no puede crear nuevos archivos hasta el prximo cambio de
directorio con el comando cd.
[willy]$ ls
colores flores formas nombres notas estaciones
[willy]$ rmdir nombres
[willy]$ ls
colores flores formas notas estaciones
[willy]$ rmdir -p estaciones/invierno/enero
[willy]$ ls
colores flores formas notas
[willy]$ rmdir flores
rmdir: flores: Directory not empty
[willy]$ rmdir flores/alegres
[willy]$ rmdir flores
[willy]$ ls
colores formas notas

http://www.eni-training.com/client_net/mediabook.aspx?idR=72849

2/2

25/4/2014

ENI Training - Libro online

Archivos
1. touch
El comando touch cambia las fechas del ltimo acceso y de la ltima modificacin de un archivo
existente:

[willy]$ ls -l notas
-rw-r--r-- 1 willy tec 62 may 26 22:55 notas
[willy]$ touch notas
[willy]$ ls -l notas
-rw-r--r-- 1 willy tec 62 jun 1 11:37 notas
Diversas opciones, detalladas en la pgina del manual electrnico (vase captulo Documentacin Manual), permiten precisar el nuevo fechado del archivo.
Cuando se emplea este comando con un nombre de archivo inexistente como argumento, se crea un
archivo con ese nombre que no contiene ningn dato:

[willy]$ ls -l
total 12
drwxr-xr-x 2 willy tec 4096 jun
drwxr-xr-x 2 willy tec 4096 jun
-rw-r--r-- 1 willy tec 62 jun
[willy]$ touch nuevoarch
[willy]$ ls -l
total 12
drwxr-xr-x 2 willy tec 4096 jun
drwxr-xr-x 2 willy tec 4096 jun
-rw-r--r-- 1 willy tec 62 jun
-rw-r--r-- 1 willy tec
0 jun

1 10:42 colores
1 10:43 formas
1 11:37 notas

1 10:42 colores
1 10:43 formas
1 11:37 notas
1 11:38 nuevoarch

2. cp
La copia de archivos se efecta con el programa cp; la sintaxis principal de este comando es:
cp [-R] <origen ...> <destino>
Se puede copiar un archivo normal en un nuevo directorio o con un nuevo nombre, o ambas cosas a la
vez; por ejemplo:

[willy]$ ls -R
.:
colores formas notas nuevoarch
./colores:
azul amarillo rojo
./formas:
crculo tringulo
[willy]$ cp notas minota
[willy]$ cp colores/amarillo formas
[willy]$ cp formas/tringulo curva
[willy]$ ls -R
http://www.eni-training.com/client_net/mediabook.aspx?idR=72850

1/5

25/4/2014

ENI Training - Libro online

.:
colores curva formas rombo notas nuevoarch
./colores:
azul amarillo rojo
./formas:
amarillo crculo tringulo
Atencin: segn la configuracin del sistema (alias predefinidos), la destruccin de un archivo
existente en una copia no genera ni error, ni mensaje de alerta.

cppermite la copia de varios archivos al mismo tiempo. En este caso, el destino es obligatoriamente un
directorio:

[willy]$ cp notas minota formas


[willy]$ ls -R
.:
colores curva formas rombo notas nuevoarch
./colores:
azul amarillo rojo
./formas:
amarillo rombo notas crculo tringulo
Finalmente, la opcin -R (recursivo) permite especificar un directorio como argumento de origen; sin
ste, cpignora los directorios durante la copia:

[willy]$ cp notas formas colores


cp: omisin del directorio `formas
[willy]$ ls -R
.:
colores curva formas rombo notas nuevoarch
./colores:
azul amarillo notas rojo
./formas:
amarillo rombo notas crculo tringulo
[willy]$ cp -R formas colores
[willy]$ ls -R colores
colores:
azul formas amarillo notas rojo
colores/formas:
amarillo rombo notas crculo tringulo

Otras opciones
La opcin -i(o --interactive) pregunta al usuario antes de destruir un archivo ya existente. Por el
contrario, la opcin -f (o --force) destruye los archivos de destino sin preguntar nada. Si ambas
opciones se emplean a la vez, cpdestruye los archivos de destino sin preguntar al usuario.

http://www.eni-training.com/client_net/mediabook.aspx?idR=72850

2/5

25/4/2014

ENI Training - Libro online

willy]$ ls notas colores


notas
colores:
azul formas amarillo notas rojo
[willy]$ cp notas colores
[willy]$ cp -i notas colores
cp: destruir colores/notas?s
[willy]$ cp -if notas colores

-d(o --no-dereference) permite copiar los enlaces como tales en lugar de copiar los archivos a los
que apuntan.
Con la opcin -p(o --preserve), la copia conserva el propietario, el grupo, los derechos de acceso y el
fechado del archivo original. Esto slo vale si el usuario est conectado como administrador (root).

[willy]$ ls -l notas
-rw-r--r-- 1 willy tec 62 jun 1 11:37 notas
[willy]$ cp notas notas.2
[willy]$ ls -l notas notas.2
-rw-r--r-- 1 willy tec 62 jun 1 11:37 notas
-rw-r--r-- 1 willy tec 62 jun 1 12:06 notas.2
[willy]$ cp -p notas notas.3
[willy]$ ls -l notas notas.2 notas.3
-rw-r--r-- 1 willy tec 62 jun 1 11:37 notas
-rw-r--r-- 1 willy tec 62 jun 1 12:06 notas.2
-rw-r--r-- 1 willy tec 62 jun 1 11:37 notas.3
Finalmente, la opcin -a (o --archive) equivale a las opciones -dpR. La usa bsicamente el
administrador para guardar directorios de forma idntica.

3. rm
El comando rm(remove) borra los archivos pasados como argumento. Esta eliminacin es definitiva. No
hay ningn mecanismo de papelera implementado de modo predeterminado en Linux.

[willy]$ ls -R
.:
colores curva formas rombo notas notas.2 notas.3 nuevoarch
./colores:
azul formas amarillo notas rojo
./colores/formas:
amarillo rombo notas crculo tringulo
./formas:
amarillo rombo notas crculo tringulo
[willy]$ rm notas.2 notas.3 nuevoarch colores/notas formas/notas
[willy]$ ls -R
colores curva formas rombo notas
./colores:
azul formas amarillo rojo
./colores/formas:
http://www.eni-training.com/client_net/mediabook.aspx?idR=72850

3/5

25/4/2014

ENI Training - Libro online

amarillo rombo notas crculo tringulo


./formas:
amarillo rombo crculo tringulo
A la manera de cp, el comando rmrequiere la opcin -R(o -r) para el borrado de directorios:

[willy]$ ls -l colores
total 16
-rw-r--r-- 1 willy tec 30 jun 1 10:42 azul
drwxr-xr-x 2 willy tec 4096 jun 1 12:03 formas
-rw-r--r-- 1 willy tec 172 jun 1 10:42 amarillo
-rw-r--r-- 1 willy tec 54 jun 1 10:42 rojo
[willy]$ rm colores/formas
rm: no se puede borrar colores/formas: Is a directory
[willy]$ rm -R colores/formas
[willy]$ ls -l colores
total 12
-rw-r--r-- 1 willy tec 30 jun 1 10:42 azul
-rw-r--r-- 1 willy tec 172 jun 1 10:42 amarillo
-rw-r--r-- 1 willy tec 54 jun 1 10:42 rojo
As, ahora es posible borrar directorios no vacos; esto no ocurrira con el comando rmdirvisto
anteriormente.

Opciones
Como en el comando cp, existen las opciones -i (--interactive) y -f (--force) que permiten
respectivamente preguntar o no al usuario al borrar archivos y directorios.

4. mv
El comando mv(move) permite mover y renombrar archivos o directorios.
A diferencia de

cpy rm,este comando puede tratar directorios sin opciones suplementarias.

La sintaxis de este comando es:


mv <origen ...> <destino>
El origen puede ser tanto un archivo normal como un directorio; este archivo:
Se mueve al directorio de destino si existe.
Se renombra con el nombre del destino si no existe.
Destruye el archivo de destino si existe.
[willy]$ ls -R
.:
colores curva formas rombo notas
./colores:
http://www.eni-training.com/client_net/mediabook.aspx?idR=72850

4/5

25/4/2014

ENI Training - Libro online

azul amarillo rojo


./formas:
amarillo rombo crculo tringulo
[willy]$ mv rombo cuadrado
[willy]$ mv notas colores/verde
[willy]$ mv formas/amarillo colores
[willy]$ ls -R
.:
cuadrado colores curva formas
./colores:
azul amarillo rojo verde
./formas:
rombo crculo tringulo
Cuando hay varios archivos o directorios origen, el destino es el directorio que los acoger:

[willy]$ mv cuadrado curva formas


[willy]$ ls -R
.:
colores formas
./colores:
azul amarillo rojo verde
./formas:
cuadrado curva rombo crculo tringulo
Una vez ms, las opciones -i(--interactive) y -f(--force) permiten preguntar o no al usuario al
destruir archivos.

http://www.eni-training.com/client_net/mediabook.aspx?idR=72850

5/5

25/4/2014

ENI Training - Libro online

Organizacin fsica de los archivos en Linux


Aunque esta etapa parezca precipitada para una aproximacin de tipo "usuario" a Linux, el aprendizaje
de la organizacin fsica de los sistemas de archivos es primordial. Permite una correcta comprensin de
la nocin de enlaces y una buena gestin de los derechos de acceso.

1. Inodos y bloques de datos


Un sistema de archivos fsico puede separarse en dos partes distintas:
la tabla de inodos;
los bloques de datos.
Todo archivo est constituido por un inodo con la informacin relativa al archivo y un cierto nmero de
bloques de datos con los datos del usuario almacenados en el archivo.

Inodos
Cada archivo se representa por una estructura llamada inodo (ndex node). Estos inodos se agrupan en
una tabla y se identifican por un nmero.
El inodo contiene toda la informacin sobre el archivo, salvo su nombre:
Tipo
de
archivo:
(normal),
d
simblico), b(bloque), c(carcter), p(tubo), s(socket).

(directorio),

(enlace

Modo o derechos de acceso al archivo.


Nmero de enlaces fsicos (hard links): corresponde al nmero de referencias, es decir, al
nmero de nombres para este mismo archivo.
UID o identificador del usuario propietario.
GID o identificador del grupo propietario.
Tamao del archivo en nmero de bytes.
Fechas de la ltima consulta, modificacin del contenido y modificacin del inodo del archivo.
Direcciones que apuntan a los bloques de datos que constituyen el archivo.
Veamos un ejemplo de archivo de cada tipo:

[gerardo]$ ls -ld /etc/motd /lib /dev/hda /dev/null /etc/rc.local /dev/


initctl /dev/log
-rw-r--r-1 root root
0 jan 13 2008 /etc/motd
drwxr-xr-x
7 root root
3072 nov 1 06:29 /lib
brw-rw---1 root disk
3, 0 aug 31 01:31 /dev/hda
crw-rw-rw1 root root
1, 3 aug 31 01:31 /dev/null
lrwxrwxrwx
1 root root
13 nov 1 05:56 /etc/rc.local
-> rc.d/rc.local
prw------1 root root
0 nov 12 05:30 /dev/initctl
srw-rw-rw1 root root
0 nov 12 05:32 /dev/log

Bloques de datos
Los datos reales de los archivos se guardan en los bloques de datos.
http://www.eni-training.com/client_net/mediabook.aspx?idR=72851

1/3

25/4/2014

ENI Training - Libro online

En el caso de un archivo directorio, los datos guardados pueden representarse como una tabla que
establece la correspondencia entre los nombres de los archivos contenidos en el directorio y sus
nmeros de inodos.
Por ejemplo:

[gerardo]$ ls -ali
total 3
12378 drwxr-xr-x
2 root root
32641 drwxr-x--4 root root
14455 -rw-r--r-2 root root
$ cat archivo1
texto contenido en el archivo

1024 nov 13 03:15 .


1024 nov 13 03:13 ..
30 nov 13 03:14 archivo1

Puede representarse por:

El nombre de un archivo se guarda en los datos del directorio, y no en su inodo, por lo que es fcil dar
varios nombres (referencias o enlaces duros) al mismo archivo.
La adicin de un nuevo nombre a un archivo se hace mediante:
ln [-s] <nombre del archivo> <nombre suplementario>
Sin la opcin -s, este comando crear un enlace duro (hard link), mientras que con la opcin -s, crear
un enlace simblico (soft link):

[gerardo]$ ln archivo1 archivo2


[gerardo]$ cat archivo2
texto contenido en el archivo
[gerardo]$ ln -s archivo1 archivo3
[gerardo]$ ls -ali
total 4
12378 drwxr-xr-x 2 root root 1024 nov 13 03:15 .
32641 drwxr-x--- 4 root root 1024 nov 13 03:13 ..
14455 -rw-r--r-- 2 root root
30 nov 13 03:14 archivo1
14455 -rw-r--r-- 2 root root
30 nov 13 03:14 archivo2
16214 lrwxrwxrwx 1 root root
30 nov 13 03:15 archivo3 -> archivo1
http://www.eni-training.com/client_net/mediabook.aspx?idR=72851

2/3

25/4/2014

ENI Training - Libro online

Un enlace duro es una segunda entrada que apunta al mismo inodo, mientras que el enlace simblico
es un archivo especial (tipo l) con la ruta del archivo al que apunta; este ltimo equivale a los "accesos
directos" de los sistemas Microsoft Windows.

http://www.eni-training.com/client_net/mediabook.aspx?idR=72851

3/3

25/4/2014

ENI Training - Libro online

Administradores de archivos
Existen en Linux muchas herramientas que agrupan de forma ms o menos ergonmica y amigable todas
las funcionalidades implementadas por los comandos enunciados hasta ahora.

1. Midnight Commander
Midnight Commander se llama con el comando mc en la lnea de comandos. Es un administrador de
archivos completo en un entorno de texto con una interfaz de usuario de un producto similar existente
en DOS.
Veamos un ejemplo de presentacin:

La tecla [Tab] permite pasar de una mitad de la pantalla a la otra (izquierda-derecha), mientras que las
teclas de funcin [F1] a [F10] invocan los comandos indicados en la parte inferior de la pantalla.

2. Konqueror, Nautilus
En la consola grfica, los administradores de archivos ms extendidos son Konqueror y su substituto
Dolphin y Nautilus.
La eleccin de la herramienta es subjetiva y depende generalmente de la distribucin y el entorno de
escritorio utilizados.
Una ventana de Dolphin:

http://www.eni-training.com/client_net/mediabook.aspx?idR=72852

1/3

25/4/2014

ENI Training - Libro online

Una vista posible de Nautilus:

http://www.eni-training.com/client_net/mediabook.aspx?idR=72852

2/3

25/4/2014

http://www.eni-training.com/client_net/mediabook.aspx?idR=72852

ENI Training - Libro online

3/3

25/4/2014

ENI Training - Libro online

Consultar archivos
1. cat
cat muestra en la pantalla el contenido de los archivos pasados como argumento en la lnea de
comandos:

[nicolas]$ cat /etc/motd


Bienvenido a Linux
Est conectado al equipo doe.reso.local

2. more, less
El comando Unix moretambin permite la presentacin del contenido de archivos de texto en pantalla.
Sin embargo, su visualizacin se hace pgina por pgina; las teclas tiles con moreson:
[Intro]

Desplaza el texto lnea a lnea.

[Espacio]

Desplaza el texto pgina por pgina.

[q]

Sale del programa.

Este ejemplo muestra el indicador presente en la parte inferior de la pantalla:

[nicolas]$ more /etc/services


ssh
22/udp
telnet
23/tcp
telnet
23/udp
# 24 - private mail system
smtp
25/tcp
mail
smtp
25/udp
mail
time
37/tcp
timserver
time
37/udp
timserver
rlp
39/tcp
resource
rlp
39/udp
resource
nameserver
42/tcp
name
nameserver
42/udp
name
nicname
43/tcp
whois
nicname
43/udp
whois
tacacs
49/tcp
tacacs
49/udp
re-mail-ck
50/tcp
re-mail-ck
50/udp
domain
53/tcp
domain
53/udp
whois++
63/tcp
--Sigue--(10%)

# SSH Remote Login Protocol

# resource location
# resource location
# IEN 116
# IEN 116

# Login Host Protocol (TACACS)


# Login Host Protocol (TACACS)
# Remote Mail Checking Protocol
# Remote Mail Checking Protocol
# name-domain server

Existe en Linux un comando similar, ms evolucionado que more, llamado less. Adems de las teclas
anteriores, acepta tambin:
[Arriba]

Sube una lnea.

[Abajo]

Baja una lnea.

[Re pg]

Sube una pgina.

http://www.eni-training.com/client_net/mediabook.aspx?idR=72853

1/2

25/4/2014

ENI Training - Libro online

[Av pg]

Baja una pgina.

Finalmente, el comando less tiene las mismas funciones de bsqueda de cadenas que el editor Vi
descrito en el captulo Edicin de archivos de texto - Vi.
El uso de los comandos
largos.

morey lessse adapta bien a la presentacin de archivos de texto

3. od, strings
El comando od(octal dump) muestra el contenido de un archivo en octal o en otros formatos segn las
opciones; la opcin -xproduce una salida hexadecimal, por ejemplo:

[nicolas]$ cat /etc/motd


Bienvenido a Linux
Est conectado al equipo doe.reso.local
[nicolas]$ od /etc/motd
0000000 064502 067145 062566 072556 020145 067563 071565 046040
0000020 067151 074165 053012 072557 020163 072352 071545 061440
0000040 067157 062556 072143 020351 072563 020162 060554 066440
0000060 061541 064550 062556 062040 062557 071056 071545 027157
0000100 067554 060543 005154
0000106
[nicolas]$ od -x /etc/motd
0000000 6942 6e65 6576 756e 2065 6f73 7375 4c20
0000020 6e69 7875 560a 756f 2073 74ea 7365 6320
0000040 6e6f 656e 7463 20e9 7573 2072 616c 6d20
0000060 6361 6968 656e 6420 656f 722e 7365 2e6f
0000100 6f6c 6163 0a6c
0000106
Este tipo de presentacin lo usan principalmente los programadores para examinar el
contenido de archivos binarios.

Del mismo estilo, el comando stringsmuestra las cadenas de caracteres legibles contenidas en los
archivos binarios; esto puede resultar til para un programador o un administrador del sistema en caso
de depuracin:

[nicolas]$ strings /bin/ls


/lib/ld-linux.so.2
libtermcap.so.2
_DYNAMIC
_init
tgetent
_fini
_GLOBAL_OFFSET_TABLE_
_Jv_RegisterClasses
tgetstr
...

http://www.eni-training.com/client_net/mediabook.aspx?idR=72853

2/2

25/4/2014

ENI Training - Libro online

Introduccin
Sea cual sea el sistema operativo utilizado, es indispensable saber editar archivos de texto. Esto es
mucho ms cierto an en Linux, pues la inmensa mayora de los archivos de configuracin y de scripts del
shell estn en este formato, sin olvidar tambin los archivos de log.
Se entiende por archivo de texto un archivo que contiene datos en forma de caracteres
ASCII(American Standard Code for Information Interchange), es decir, texto sin formato, ni siquiera
la nocin de tipo de letra.

Desde el simple comando ed que permite editar lnea por lnea un archivo de texto, hasta la
herramienta nedit con interfaz grfica que propone el coloreado sintctico de diferentes formatos de
archivo, existe un gran nmero de editores en Linux.
A pesar de una interfaz poco ergonmica (pero sin embargo muy potente), el editor de Vi, se ha
convertido en un estndar en todos los sistemas UNIX, y es el que presentaremos en este captulo.
Actualmente, se utiliza una variante de Vi, normalmente Vim (Vi IMproved). Sin embargo, los
comandos que veremos aqu son idnticos.

http://www.eni-training.com/client_net/mediabook.aspx?idR=72855

1/1

25/4/2014

ENI Training - Libro online

Presentacin de Vi
Vi, que significa "VIsual editor" y se pronuncia "vi-ei" (o [vi:ai]), es un editor a pantalla completa con lnea
de comandos.
Pensado para trabajar en cualquier tipo de terminal (y por lo tanto con cualquier teclado), esta
herramienta puede funcionar utilizando nicamente las teclas alfanumricas bsicas, adems de la tecla
de escape del teclado.
En un teclado de PC espaol "qwerty" actual, podramos limitarnos a utilizar las teclas blancas
siguientes:

Es posible utilizar las teclas grises del teclado, como las flechas de direccin o el teclado
numrico, pero es preferible saber manipular vimsin estas teclas al principio. As, sea cual sea la
configuracin del terminal o la variante de vi - empleada, la edicin de un archivo en Linux no
presentar problemas.

1. Inicio de Vi
Basta con escribir el comando vi para iniciar el editor Vi. En este caso, se abre el editor, listo para
escribir un nuevo archivo:

_
~
~
~
~
~
~
~
~
~
~
~
~
~
~
~
~
~
~
~

VIM - Vi
Improved
versin 7.3.712
by Bram Moolenaar et al.
Modified by <bugzilla@redhat.com>
Vim is open source and freely distributable
Sponsor Vim development!
type :help sponsor<Enter> for information
type :q<Enter> to exit
type :help<Enter> or <F1> for on-line help
type :help version7<Enter> for version info

http://www.eni-training.com/client_net/mediabook.aspx?idR=72856

1/11

25/4/2014

ENI Training - Libro online

~
~
~
~
Aqu, el cursor se encuentra arriba a la izquierda de la pantalla y se muestra un texto de bienvenida;
ste no interfiere con el texto del nuevo archivo y se ocultar automticamente con el primer comando
de edicin.
La ltima lnea de la vista se reserva a mostrar informacin diversa (posicin del cursor, nmero de
lnea, modo de funcionamiento...) y a los comandos en modo "ex" que se detallarn ms adelante.
El carcter ~ al principio de lnea significa que no hay ningn carcter -ni siquiera un retorno de
carro (tecla [Intro])- en la lnea, es decir, que se ha llegado al final del archivo.

Tambin puede editarse un archivo existente especificando su nombre como argumento en la lnea de
comando:

$ vi archivo
Finalmente, si el argumento pasado es un nombre de archivo inexistente, el nuevo archivo editado se
guardar con este nombre predeterminado:

$ vi nuevo_archivo
Para salir del editor Vi sin haber ledo el resto del captulo, hay que escribir la siguiente
secuencia de teclas: [Esc], [:], [q], [!], [Intro].

2. Modos de funcionamiento
Vi dispone de tres modos de funcionamiento:
Modo "comandos": en este modo, cada pulsacin de una tecla o una combinacin de teclas se
interpreta como un comando (mover el cursor, edicin del texto...).
Modo "insercin" o "edicin": en este modo, los caracteres pulsados en el teclado se insertan
tal cual en el archivo.
Modo "inferior de la pantalla", "ex" o "global": este modo permite ordenar a Vi la ejecucin de
comandos complejos (mostrados a medida que se escriben en la parte inferior de la pantalla).
Los comandos pasados en este modo afectan a todo el archivo o al propio editor; por
ejemplo, buscar o reemplazar cadenas de caracteres, guardar el archivo modificado,
configurar opciones del editor.
En todo momento, el usuario se encuentra en uno de estos modos y la tecla [Esc] permite volver al
modo "comandos" (o permanecer en l):

http://www.eni-training.com/client_net/mediabook.aspx?idR=72856

2/11

25/4/2014

ENI Training - Libro online

Al abrir el editor, el usuario se encuentra en el modo "comandos".

3. Comandos de desplazamiento
Vi funciona perfectamente sin usar las flechas del teclado; para ello, se han definido diversos comandos
que permiten desplazarse dentro de un archivo. Para su ejecucin, todos estos comandos deben
escribirse en el modo "comandos" de Vi.

En principio, el desplazamiento del cursor a la izquierda, abajo, arriba y a la derecha se realiza con los
comandos h, j, ky l.
Es fcil recordar estas teclas: estn dispuestas de forma adyacente en el teclado:
La [h] es a la izquierda: permite mover el cursor un carcter a la izquierda.
La [l] es a la derecha: permite mover el cursor un carcter a la derecha.
La [j] es una letra "descendente": permite mover el cursor una lnea hacia abajo.
La [k] es una letra "ascendente": permite mover el cursor una lnea hacia arriba.

Movimiento en la misma lnea


Los principales comandos de desplazamiento del cursor en una misma lnea son:
[0]: mueve el cursor a principio de lnea (al primer carcter).
http://www.eni-training.com/client_net/mediabook.aspx?idR=72856

3/11

25/4/2014

ENI Training - Libro online

[$]: mueve el cursor a fin de lnea (al ltimo carcter).


[w] y [W] (word): mueve el cursor al primer carcter de la palabra siguiente. El
comando w(minscula) difiere de W(mayscula) slo en la nocin de "palabra"; en el primer
caso, todo carcter no alfanumrico es un separador, mientras que en el segundo caso, slo
los caracteres de espacio (espacio, tabulacin y salto de lnea) separan las palabras.
[b] y [B] (back): mueve el cursor al primer carcter de la palabra anterior. La distincin entre
b y B es la misma que entre wy W.
[e] y [E] (end): mueve el cursor al ltimo carcter de la palabra siguiente. De nuevo, la
diferencia entre ey Eafecta a la definicin de los caracteres de separacin de palabras.
Estos tres ltimos comandos (w, by e) con sus contrapartes en maysculas (W, By E) muestran
que existe una cierta lgica en los comandos de Vi. Normalmente, los comandos en maysculas
extienden las funciones de los comandos en minsculas. Los trminos mnemotcnicos se
presentan entre parntesis.

Movimientos de cambio de lnea


Adems de las teclas [j] y [k], que permiten mover el cursor a la lnea siguiente o anterior, existen
principalmente:
[G]: mueve el cursor al primer carcter de la ltima lnea del archivo.
[nG] (donde n es un nmero): mueve el cursor al primer carcter de la lnea nmero n. Por
ejemplo, 6Gcoloca el cursor en el primer carcter de la sexta lnea y 1Glo lleva al principio del
archivo.
El comando Gpuede llevar como prefijo un nmero; otros muchos comandos de Vi aceptan un
"multiplicador" as. Por ejemplo, 3j mueve el cursor tres lneas hacia abajo y 2w mueve el
cursor a la primera letra de la segunda palabra siguiente.

Existen otros muchos comandos de movimiento, como:


[Ctrl]+[b]

Mueve el cursor (y la visualizacin) una pgina hacia arriba


(pgina anterior).

[Ctrl]+[f]

Mueve el cursor (y la visualizacin) una pgina hacia abajo


(pgina siguiente).

4. Comandos de insercin
A partir del modo "comandos" en el que el usuario se encuentra de modo predeterminado, no es
posible escribir texto. En efecto, no se puede insertar directamente el texto "hello world" en un archivo:
las pulsaciones de las teclas [h], [e], [l] y siguientes corresponden a comandos ya parcialmente
presentados.
Hay que pasar al modo "insercin" para escribir texto; se entra en este modo con diferentes comandos
escritos en el modo "comandos"; los principales son:

i(insert): pasa al modo "insercin"; los nuevos caracteres pulsados se insertan delante del
cursor. No es posible, con este comando, escribir texto al final de la lnea porque se inserta
obligatoriamente delante del ltimo carcter sobre el que se encuentra el cursor.

a (append): pasa al modo "insercin"; los nuevos caracteres escritos se insertan tras el
http://www.eni-training.com/client_net/mediabook.aspx?idR=72856

4/11

25/4/2014

ENI Training - Libro online

cursor; en este caso, es posible escribir texto al final de la lnea.

o(abrir una lnea): "abre" una nueva lnea bajo el cursor y pasa al modo "insercin".

Como ocurre con ciertos comandos de desplazamiento, los comandos anteriores se amplan cuando se
escriben en mayscula:

Mueve el cursor al principio de lnea y pasa al modo "insercin".

Mueve el cursor al fin de lnea y pasa al modo "insercin".

"Abre" una nueva lnea encima del cursor y pasa al modo "insercin".
Hemos visto anteriormente que la tecla [Esc] permita, en cualquier momento, volver al modo
"comandos".

5. Comandos de edicin y de correccin


Al no disponer de las teclas [Supr] y [Retroceso] del teclado, no es posible con la versin original de Vi
corregir los errores de escritura durante la insercin. Los comandos de edicin y de correccin se
ejecutan a partir del modo "comandos" y no pueden usarse en modo "insercin".
Vim, que se utiliza en Linux, soporta sin problemas la correccin durante la insercin mediante
las teclas [Supr] y [Retroceso] del teclado.

http://www.eni-training.com/client_net/mediabook.aspx?idR=72856

5/11

25/4/2014

ENI Training - Libro online

Borrar caracteres
La supresin del carcter situado bajo el cursor se efecta mediante el comando x. El carcter que
antecede al cursor, por su parte, se borra con X.
Una serie de comandos que empiezan por d(delete) permite borrar todo o parte de una lnea:

dd

Borra toda la lnea.

d0

Borra desde el cursor hasta el principio de la lnea.

d$

Borra desde el cursor hasta el fin de la lnea.

dw

Borra desde el cursor hasta el principio de la palabra siguiente. De hecho, se


puede combinar los comandos de desplazamiento que hemos visto
anteriormente con d; por ejemplo dW, db, dE...

La cadena de caracteres borrada por un comando que empiece por d se guarda en una memoria
intermedia o "bfer" (equivalente al portapapeles de Windows). El texto contenido en esta memoria
intermedia puede "pegarse" tras el cursor mediante el comando p(paste) o delante del cursor con P.
Los comandos de supresin y los comandos siguientes de edicin aceptan -como los comandos
de desplazamiento- un multiplicador como prefijo.

Copiar texto
Al igual que los comandos que empiezan por d permiten "cortar" texto, los comandos que empiezan
por y"copian" una cadena de caracteres en la memoria intermedia de Vi. De nuevo, el contenido de
esta memoria intermedia puede "pegarse" con los comandos py P.
Los comandos " y" se asocian a los comandos de desplazamiento vistos anteriormente; por ejemplo:

yy

Copia toda la lnea.

y0

Copia del cursor al principio de la lnea.

y$

Copia del cursor al final de la lnea.

El contenido de la memoria intermedia se conserva mientras no se ejecute ningn nuevo


comando " y" o " d" .

http://www.eni-training.com/client_net/mediabook.aspx?idR=72856

6/11

25/4/2014

ENI Training - Libro online

Anular y repetir
El comando u anula el comando anterior. Vim (y no Vi) permite la anulacin sucesiva de todas las
modificaciones realizadas en el archivo hasta la ltima vez que se guard.
El comando Uanula de golpe todas las modificaciones aportadas a la lnea actual.
Por el contrario, el comando . (punto) repite el ltimo comando ejecutado en Vi excepto un
desplazamiento o una anulacin.

6. Comandos globales
El tercer modo de funcionamiento de Vi, llamado "ex" en el esquema, permite ejecutar comandos
relativos a todo el archivo.
Un comando global empieza por [:], [/] o [?] (los dos ltimos caracteres en el caso de una bsqueda)
y se valida con la tecla [Intro]. Para anular un comando "ex" y volver de inmediato al modo
"comandos", basta pulsar la tecla [Esc].

Guardar y salir
Los comandos para guardar y salir de Vi son:

:w

Guarda en el archivo existente (cuyo nombre ya se ha definido).

:w archivo

Guarda en el archivo cuyo nombre es

:w!

Fuerza la grabacin si el usuario no tiene el derecho de modificar


el archivo; ste debe, sin embargo, pertenecer al usuario
(vase chmody los derechos de acceso en el captulo Permisos de
acceso a los archivos).

http://www.eni-training.com/client_net/mediabook.aspx?idR=72856

archivo.

7/11

25/4/2014

ENI Training - Libro online

:q

Sale del editor Vi salvo si se han hecho cambios no guardados en


el archivo.

:q!

Fuerza la detencin de Vi sin guardar los cambios.

:wq, :xo ZZ

Guarda el archivo y sale del editor.

(en modo
"comandos")

Buscar
En Vi, hay dos maneras de iniciar una bsqueda de cadena de caracteres: con el carcter [/] para una
bsqueda desde el cursor hasta el fin del archivo, o con el carcter [?] para una bsqueda desde el
cursor hasta el principio del archivo.
La bsqueda se efecta sobre la cadena de caracteres escrita en la parte inferior de la pantalla con
el /o el ?:

/modeloo ?modelo.
Por ejemplo, tras la validacin, /vale colocar el cursor en la primera instancia de la cadena de
caracteres "vale" encontrada tras la posicin actual del cursor.
El modelo indicado tras el /o el ?puede tomar la forma de una expresin regular para efectuar
bsquedas
ms
evolucionadas.
Las
expresiones
regulares
se
abordarn
con
el comando grepms adelante en esta obra.

De nuevo en modo "comandos", n (next) coloca el cursor sobre la siguiente instancia (el sentido
depende de la forma como se haya iniciado la bsqueda: /o ?) de la ltima cadena buscada; Npermite
volver a la instancia anterior.

Buscar y reemplazar
La sintaxis general del comando de sustitucin en Vi es:
:[rango]s/modelo/cadena/[g][i][I]
En realidad, el comando de sustitucin de Vi es ms complejo. Aqu slo se presentan las
funcionalidades ms interesantes.

[rango] es optativo e indica en qu lneas del archivo realizar el reemplazo; su sintaxis


es n,mdonde nes el nmero de la primera lnea considerada y mes el de la ltima lnea del rango; el
carcter $ permite indicar la ltima lnea del archivo. As, para realizar una sustitucin en todas las
lneas del archivo (de la primera a la ltima lnea), el rango ser 1,$.
modelo representa
caracteres cadena.

la

cadena

de

caracteres

que

ser

reemplazada

por

la

cadena

de

Si el modelo o la cadena de reemplazo presentan en su interior el carcter /, ste deber ir


prefijado con un \ para evitar toda ambigedad en la sintaxis.

Los tres parmetros siguientes son opcionales:


http://www.eni-training.com/client_net/mediabook.aspx?idR=72856

8/11

25/4/2014

ENI Training - Libro online

Indica que la sustitucin se realiza en todas las instancias de la lnea tratada;


sin este parmetro, slo la primera instancia del modelo se cambiar en cada
lnea.

Precisa que la caja del modelo (maysculas/minsculas) se ignora en la


bsqueda. En este caso, la cadena "vale" se considera como equivalente de la
cadena "vALe".

Especifica que la caja del modelo (maysculas/minsculas) se respeta en la


bsqueda. En este caso, la cadena "vale" es diferente de la cadena "vALe". Este
parmetro est activo de modo predeterminado.

Para resumir, la sustitucin global en todo el archivo de la cadena "vale" por la cadena "pif" se realizar
con:

:1,$s/vale/pif/g

Comandos externos
Otra particularidad del editor Vi es permitir la ejecucin de comandos externos, es decir, de comandos
de shell, sin tener que salir del programa.
Para ello, una vez en modo "ex" llamado con :, basta con escribir un comando del shell precedido del
carcter !, esto da, por ejemplo, en la parte inferior de la pantalla:

[nicolas]$ cal 6 2008


junio de 2008
do lu ma mi ju vi s
1 2 3 4 5 6 7
8 9 10 11 12 13 14
15 16 17 18 19 20 21
22 23 24 25 26 27 28
29 30
Pulsar enter y teclear un comando para seguir
Se pide una nueva pulsacin de la tecla [Intro] para volver al editor cuando el comando de shell ha
terminado.
Para insertar el resultado del comando externo en el archivo
comando rantes de ejecutar el comando del shell, por ejemplo:

editado, hay que

llamar al

:r!date
La fecha devuelta por el comando datedel shell se inserta en el texto tras el cursor.

Opciones del editor


:setslo devuelve las opciones de configuracin actuales del editor, mientras que :set allmuestra
todas las opciones disponibles.
Algunas de estas opciones se activan escribiendo :set seguido del nombre de la opcin y se
desactivan precediendo con no el nombre de esta opcin. Por ejemplo, para activar la opcin que
muestra los nmeros de lnea:
http://www.eni-training.com/client_net/mediabook.aspx?idR=72856

9/11

25/4/2014

ENI Training - Libro online

:set number
Y para desactivar esta misma opcin:

:set nonumber
El segundo tipo de opciones est asociado a un nmero o a una cadena de caracteres. Para asignar un
valor a una de estas opciones, se usa la sintaxis siguiente: :set opcin=valor
Por ejemplo, para fijar la anchura visible de una tabulacin en cuatro espacios:

:set tabstop=4
Existen muchas opciones configurables en Vim, como:

[no]autoindent

[Des]Activa el sangrado automtico de las lneas al escribir.

[no]number

[Des]Activa la numeracin de lneas.

[no]list

[Des]Activa la presentacin de los caracteres no


imprimibles.

[no]showmode

[Des]Activa la presentacin del modo actual en la parte


inferior de la pantalla.

tabstop=n

Define el tamao de una tabulacin a nespacios.

[no]ignorecase

[Des]Activa la distincin de la caja de los caracteres en las


bsquedas y sustituciones.

7. Archivo de configuracin personal


Para que las opciones especificadas en Vi se tengan en cuenta cada vez que arranca el editor, hay que
escribirlas en un archivo de configuracin.
Cada usuario tiene su propio archivo de configuracin, que se encuentra en el directorio personal del
usuario y se llama .exrc(EX Run Commands) o .vimrcen el caso del editor Vim.
Este archivo contiene las opciones tal como se definen en el editor sin el primer :; por ejemplo, el
usuario linusque quiere numerar las lneas y tener tabulaciones visibles con cuatro espacios cada vez
que inicie Vi, crear el archivo siguiente:

[linus]$ cat /home/linus/.exrc


set number
set tabstop=4

8. Otros comandos tiles


En Vim hay otros muchos comandos tiles; veamos algunos de ellos:

:helpcomandoVim

Muestra la ayuda correspondiente al comando Vim pasado como


argumento.

:r archivo

Inserta el contenido del archivo pasado como argumento en el


texto.

Une la lnea actual a la siguiente.

http://www.eni-training.com/client_net/mediabook.aspx?idR=72856

10/11

25/4/2014

ENI Training - Libro online

Cambia la caja (maysculas/minsculas) del carcter bajo el


cursor.

rc

Reemplaza el carcter bajo el cursor por c.

cw, c$, c0, ...

Reemplaza el cursor hasta el principio de la palabra siguiente,


hasta el fin de lnea o hasta el principio de la lnea, y pasa el
modo "insercin".

>>

Inserta una tabulacin al principio de lnea.

<<

Suprime una tabulacin presente al principio de lnea.

http://www.eni-training.com/client_net/mediabook.aspx?idR=72856

11/11

25/4/2014

ENI Training - Libro online

Otras herramientas de edicin


Las distribuciones de Linux incluyen generalmente una multitud de editores de texto, editores
hexadecimales (para los archivos binarios, por ejemplo) y tratamientos de texto (maquetacin de
documentos).

1. Otros editores de texto


Veamos algunas herramientas suplementarias para la edicin de archivos de texto.

Emacs, XEmacs
Emacs (comando emacs) es un editor que funciona en una consola de texto desarrollado por Richard
Stallman. Ms all de la edicin de archivos de texto, dispone un gran nmero de mdulos
complementarios.

La versin grfica de esta utilidad se llama XEmacs y puede iniciarse con el comando xemacs:

http://www.eni-training.com/client_net/mediabook.aspx?idR=72857

1/7

25/4/2014

ENI Training - Libro online

Gedit, NEdit
Estas dos herramientas son de uso muy simple y ofrecen un cierto nmero de funcionalidades
interesantes, entre las que se encuentra la aplicacin de color por criterios sintcticos.
GEdit, lanzado con el comando gedit, propone la edicin de varios archivos al mismo tiempo utilizando
un sistema de pestaas:

http://www.eni-training.com/client_net/mediabook.aspx?idR=72857

2/7

25/4/2014

ENI Training - Libro online

Coloreado sintctico con NEdit (comando nedit):

http://www.eni-training.com/client_net/mediabook.aspx?idR=72857

3/7

25/4/2014

ENI Training - Libro online

kedit, kwrite
Otros editores estn ms integrados a un entorno de escritorio especfico, como KEdit y KWrite con el
escritorio KDE.
KEdit es un simple editor grfico (comando kedit):

http://www.eni-training.com/client_net/mediabook.aspx?idR=72857

4/7

25/4/2014

ENI Training - Libro online

KWrite -llamado con el comando kwrite- posee funciones avanzadas de reconocimiento de lenguajes
de programacin, lo que le permite ofrecer una interfaz de desarrollo muy amigable en diversos
lenguajes:

http://www.eni-training.com/client_net/mediabook.aspx?idR=72857

5/7

25/4/2014

ENI Training - Libro online

2. Editores hexadecimales
Adems de la herramienta odvista en el captulo Manipulacin de archivos, tambin es posible editar
archivos que no son de texto con el programa khexdit:

http://www.eni-training.com/client_net/mediabook.aspx?idR=72857

6/7

25/4/2014

ENI Training - Libro online

Las herramientas Emacs y XEmacs ya citadas tambin permiten la edicin de archivos que no
son de texto.

http://www.eni-training.com/client_net/mediabook.aspx?idR=72857

7/7

25/4/2014

ENI Training - Libro online

Conceptos de cuentas de usuario y de grupos


El sistema GNU/Linux es multiusuario, por tanto las personas que lo usan deben identificarse para
asegurar la confidencialidad de los datos contenidos en los archivos. En efecto, no sera aceptable que el
usuario "Nicolas" pudiera consultar los archivos personales de "Richard" sin el permiso de ste.
Cada una de estas personas dispone por tanto de una "cuenta de usuario" en el sistema; pueden
utilizarlo tras ser claramente identificadas. Sin embargo, est permitido compartir archivos entre
colaboradores y existe una nocin de "grupo de usuarios" en GNU/Linux.
Un usuario debe ser miembro obligatoriamente de un grupo de usuarios en un sistema Unix como
GNU/Linux: su grupo principal es el utilizado al crear archivos. Por el contrario, puede pertenecer a otros
varios grupos: sus grupos secundarios determinan sus derechos de acceso a los archivos creados por
otros miembros de los grupos.
Por ejemplo, si se representa los diferentes servicios de una empresa con su personal, puede
observarse que, si bien cada individuo tiene una funcin primaria (indicada entre parntesis), algunos
pueden asumir varias misiones:

Se observa aqu que:


Richard y Gerardo pertenecen al servicio tcnico (Tec).
Nicolas, que es ante todo formador (Curso), tambin forma parte del servicio tcnico (Tec).
Willy, que pertenece al servicio tcnico
departamento de formacin (Curso).

(Tec) principalmente, tambin

trabaja

en

el

Linus es un formador (Curso) que colabora con los departamentos tcnicos (Tec) y de
contabilidad (Conta).
Antonio, del servicio tcnico (Tec), ofrece sus competencias al servicio comercial (Venta) y
tambin da clases (Cursos).
Alejandro es un comercial (Venta) que se ocupa tambin de tareas administrativas (Conta).
Silvia forma parte nicamente del departamento de contabilidad (Conta).
Para identificar a todos estos usuarios a nivel del sistema operativo, se les atribuye un nmero nico: el
UID (Users ID); el propietario de un archivo se determina por este nmero en Unix. Estos usuarios estn
dotados tambin de un nombre de usuario nico (login) y de una contrasea (password) para que puedan
autenticarse al conectarse al sistema.
De la misma manera, los grupos de usuarios se representan por un nombre nico al que se asocia un
identificador nico: el GID (Groups ID). Este nmero se utiliza tambin para determinar el grupo
propietario de un archivo.
http://www.eni-training.com/client_net/mediabook.aspx?idR=72859

1/3

25/4/2014

ENI Training - Libro online

1. Jerarqua de usuarios
Los usuarios, y por consiguiente las cuentas de usuario, no son todas iguales en Unix. Se pueden
distinguir tres tipos de cuentas:

root
Es el usuario ms importante del sistema desde el punto de vista de la administracin. No
se ve afectado por los derechos de acceso a los archivos y puede hacer ms o menos de
todo en el sistema, excepto escribir en un sistema de archivos montado en lectura exclusiva
(CD-ROM). Su UID igual a 0 le confiere su especificidad. Este "superusuario" se encarga de
las tareas administrativas del sistema. Para evitar errores al trabajar, es muy recomendable
utilizar la cuenta administrativa slo para las tareas que requieren los derechos de
superusuario.

bin, daemon, sync, apache...


Existe en el sistema una serie de cuentas que no se asignan a personas fsicas. Estas
cuentas sirven para facilitar la administracin de los derechos de acceso de ciertas
aplicaciones y demonios. Los UID comprendidos entre 1 y 499 se utilizan generalmente para
estas cuentas.

linus, nicolas...
Todas las dems cuentas de usuario se asocian a personas reales; su funcin es permitir a
los usuarios estndar conectarse y utilizar los recursos del equipo. El UID de un usuario es
normalmente un nmero superior a 499.

Se denominan "demonios" los programas que se ejecutan como tarea en segundo plano, como
un servidor web o un servidor de impresin.

Al igual que las cuentas de usuario, existen diferentes tipos de grupos en un sistema GNU/Linux que
permiten dar derechos comunes a una serie de usuarios:

root
Su GID es 0 y es el grupo principal del administrador.

bin, daemon, sync, apache...


Estos grupos tienen la misma funcin que las cuentas del mismo nombre y permiten dar los
mismos derechos de acceso a una serie de aplicaciones. Por convencin, los grupos del
sistema tienen un GID comprendido entre 1 y 499.

curso, tec...
Estos grupos representan una serie de personas reales que deben acceder a los mismos
archivos. Tpicamente, tienen un GID superior o igual a 500.

2. Comandos tiles
http://www.eni-training.com/client_net/mediabook.aspx?idR=72859

2/3

25/4/2014

ENI Training - Libro online

Los comandos idy groups permiten mostrar informacin sobre los grupos. El primero da el UID del
usuario, el GID de su grupo principal y los GID de todos los grupos a los que pertenece. El segundo slo
proporciona la lista completa de los grupos pero acepta varios nombres de usuario como argumentos:

[nicolas]$ whoami
nicolas
[nicolas]$ id
uid=500(nicolas) gid=500(curso) grupos=500(curso),501(tec)
[nicolas]$ id richard
uid=502(richard) gid=501(tec) grupos=501(tec)
[nicolas]$ groups
curso tec
[nicolas]$ groups gerardo alejandro willy root
antonio : tec curso venta
alejandro : venta conta
willy : tec curso
root : root

http://www.eni-training.com/client_net/mediabook.aspx?idR=72859

3/3

25/4/2014

ENI Training - Libro online

Permisos de Unix
Los permisos de acceso a los archivos determinan las acciones que pueden emprender los usuarios.
La mayora de los problemas de instalacin, configuracin y funcionamiento de las aplicaciones
en GNU/Linux se debe a derechos de acceso mal adjudicados.

En primer lugar, es necesario saber que los derechos de acceso en Linux se definen por:
Una cuenta de usuario: propietario del archivo, es en principio el usuario que lo ha creado.
Un grupo: este grupo es generalmente el grupo principal del propietario del archivo, pero
puede ser modificado por ste y tomar el valor de uno de sus grupos secundarios.
Los otros: esta entidad representa toda persona distinta del propietario y que no es miembro
del grupo citado anteriormente.
Los derechos de acceso a un archivo se llaman tambin "modo" en Unix.

Los derechos, el usuario y el grupo propietarios de un archivo pueden verse con el comando ls -l:

En este ltimo ejemplo, el archivo pertenece al usuario willyy al grupo tec; los nueve caracteres rw-r-r--definen los derechos de acceso a este archivo para el usuario willy("user" o "u"), los miembros
del grupo tec ("group" o "g") y los dems ("other" u "o"). Ms exactamente, estos caracteres se
distribuyen as:

Todo usuario est asociado, pues, a una de estas entidades para determinar los permisos vigentes.
Atencin: si el usuario es propietario del archivo, se aplican los permisos del propietario, y no los
del grupo, aunque el usuario sea tambin miembro de ese grupo.

El comando GNU ls puede aadir un carcter adicional a la sucesin de nueve derechos Unix estndar
cuando las autorizaciones especiales estn ubicadas. Un punto . seala un contexto de seguridad
SELinux especfico y un + indica que se utiliza otro mtodo de autorizacin, como las ACL (Access Control
Lists).
http://www.eni-training.com/client_net/mediabook.aspx?idR=72860

1/7

25/4/2014

ENI Training - Libro online

1. Permisos estndar
Los permisos de acceso fundamentales en los archivos y directorios en Unix/Linux son los permisos de
lectura r(Read), escritura w(Write) y ejecucin x(eXecute).
Estos permisos -definidos para las entidades u, gy o- aparecen en el orden r, seguido de w, seguido
de xcon el comando ls -l. Cuando uno de estos caracteres se reemplaza por un guin, significa que
el permiso asociado no est otorgado.
En el ejemplo del apartado anterior, el usuario willyque tiene los permisos rw-:
Tiene permiso para leer el archivo notas.
Tiene permiso para modificar el archivo notas.
No tiene permiso para ejecutar el archivo notas.
Ms exactamente, se distinguen los permisos Unix estndar segn el tipo de archivo: archivo normal o
directorio.
Permiso

Archivo

Directorio

permiso de lectura del contenido


del archivo.

permiso para listar las entradas


del directorio.

permiso para modificar el contenido del archivo.

permiso para modificar las


entradas del directorio.

permiso para ejecutar el archivo.

permiso de acceso a las entradas


del directorio.

Es relativamente simple comprender los permisos correspondientes cuando se otorgan a un archivo


normal; esto no es tan evidente cuando se trata de un directorio.
Si consideramos los directorios como tablas que contienen, en una columna, los inodos y en otra, los
nombres de archivo presentes en el directorio, es ms fcil comprender los permisos estndar:

Aqu se observa que los permisos r y x deben estar activos para acceder al archivo archivo y al
subdirectorio srep: rpermite conocer su nombre y xsu nmero de inodo (necesario para trabajar con
ellos porque el inodo es el que permite acceder a los datos de un archivo y a la lista de archivos
contenidos en un directorio).
Si agregamos el permiso w, se puede crear/modificar/borrar una entrada en el directorio.
Esta ltima observacin es muy importante porque significa que los permisos asociados al
directorio son los que definen el derecho de conservar o borrar los archivos en su interior.

http://www.eni-training.com/client_net/mediabook.aspx?idR=72860

2/7

25/4/2014

ENI Training - Libro online

Ejemplo: borrar un archivo no accesible en lectura/escritura


El ejemplo siguiente ilustra el caso de un archivo no accesible en lectura/escritura que, a pesar de todo,
puede borrarse, debido a los permisos asociados al directorio.
Por ejemplo, como usuario alejandro:

[alejandro]$ ls -ld direc


drwxrwxrwx 2 alejandro venta 4096 jun 3 01:51 direc
[alejandro]$ ls -l direc
total 4
-rw------- 1 alejandro venta 47 jun 3 01:51 secreto
Ahora, como nicolas:

[nicolas]$ ls -l direc
total 4
-rw------- 1 alejandro venta 47 jun 3 01:51 secreto
[nicolas]$ cat direc/secreto
cat: direc/secreto: Permission denied
[nicolas]$ rm direc/secreto
rm: borrar un archivo protegido en escritura de archivo normal
direc/secreto? S
[nicolas]$ ls -l direc
total 0

Ejemplo: permisos de acceso a las rutas


El permiso de acceso a un archivo no se define nicamente por los permisos otorgados al archivo y al
directorio que lo contiene; hay que tener el permiso para "atravesar" todos los directorios especificados
en la ruta de acceso al archivo.
As, para acceder en lectura al archivo /dir1/dir2/dir3/arch, hay que tener el permiso r en el
archivo archpero tambin los permisos ry xen los tres directorios dir1, dir2y dir3.
Para la ruta siguiente:

[root]# ls -ld /dir1


drwxr-xr-x 3 root root 4096 jun 3 01:55 /dir1/
[root]# ls -ld /dir1/dir2
drwxr-xr-- 3 root root 4096 jun 3 01:55 /dir1/dir2/
[root]# ls -ld /dir1/dir2/dir3
drwxr-xr-x 2 root root 4096 jun 3 01:55 /dir1/dir2/dir3/
[root]# ls -l /dir1/dir2/dir3
total 4
-rw-r--r-- 1 root root 23 jun 3 01:55 arch
El usuario alejandro, al que se aplican los permisos de la entidad "others", no puede acceder al
archivo porque no tiene los permisos suficientes sobre el directorio /dir1/dir2:

[alejandro]$ cat /dir1/dir2/dir3/arch


cat: /dir1/dir2/dir3/arch: Permission denied
[alejandro]$ cd /dir1
[alejandro]$ ls -l
total 4
http://www.eni-training.com/client_net/mediabook.aspx?idR=72860

3/7

25/4/2014

ENI Training - Libro online

drwxr-xr-- 3 root root 4096 jun 3 01:55 dir2


[alejandro]$ cd dir2
-bash: cd: dir2: Permission denied

Ejemplo: archivo de registro


Ciertos archivos pueden tener permisos de acceso atpicos a primera vista. Por ejemplo, un archivo de
registro con los mensajes de diversas aplicaciones debe ser accesible en modificacin para diferentes
procesos, pero no necesariamente en lectura por razones de seguridad.
Se puede comparar este tipo de archivo a una urna electoral en la que cada uno puede inscribir datos,
pero slo el propietario del archivo -de la urna- posee el permiso de leer todo el contenido.

[alejandro]$ ls -l urna
-rw------w- 1 root root 0 jun 3 02:01 urna

2. SUID, SGID y Sticky Bit


Los tres derechos suplementarios SUID, SGID y Sticky Bit son menos conocidos, pero tambin
indispensables en la administracin de permisos en Linux.
Como ocurre con los permisos estndar, se puede diferenciar el significado de estos permisos
extendidos segn el tipo de archivo considerado: archivo o directorio.
Permiso

Archivo

Directorio

SUID

Ejecuta el archivo con la identidad


del propietario del archivo.

SGID

Ejecuta el archivo con la identidad


del grupo del archivo.

Los archivos creados en el


directorio heredan del grupo del
directorio, en lugar del grupo
principal del usuario.

Sticky

La imagen del ejecutable sigue en


memoria, su recarga es ms rpida
(este uso ya no tiene razn de ser
con la administracin actual de la
memoria).

Slo el propietario del archivo o del


directorio puede borrar los
archivos.

Por razones de seguridad, los permisos especiales SUID y SGID funcionan nicamente con
archivos binarios (cdigo compilado), y no con los scripts (exceptuando los scripts Perl).

La representacin de estos permisos en la presentacin del comando ls -les la siguiente:


SUID
El carcter xde los permisos del propietario se cambia por un scuando este permiso est
activado; una S (mayscula) significa que el permiso en ejecucin no est activado al mismo
tiempo.

SGID
Igual pero en los permisos del grupo.

http://www.eni-training.com/client_net/mediabook.aspx?idR=72860

4/7

25/4/2014

ENI Training - Libro online

Sticky Bit
Se indica una ten lugar de la xen los permisos de la entidad "others". Como antes, si este
permiso est en mayscula (T), significa que el permiso xoculto no est activo.

Por ejemplo:

[root]# ls -l /usr/bin/passwd
-r-s--x--x
1 root
root
[root]# ls -l /usr/bin/write
-rwxr-sr-x
1 root
tty
[root]# ls -ld /tmp/
drwxrwxrwt
5 root
root

15368 may 28 2002 /usr/bin/passwd


18605 ago 30 22:00 /usr/bin/write
1024 dic 12 15:12 /tmp/

Ejemplo: administracin de contraseas


En condiciones normales, los programas toman la identidad de los usuarios que los ejecutan. Esto
implica que no es posible que un usuario sobrepase sus permisos de acceso a un archivo utilizando un
comando particular porque el comando tendr los mismos permisos.
Sin embargo, el archivo /etc/shadowque contiene las contraseas de las cuentas de usuario en el
sistema, tiene los permisos siguientes:

[alejandro]$ ls -l /etc/shadow
-r-------- 1 root root 1087 may 27 00:09 /etc/shadow
Slo el administrador tiene el permiso de lectura sobre este archivo. Sin embargo, los usuarios pueden
utilizar el comando passwdpara cambiar su contrasea.
Esto es debido al bit SUID, que da al programa los permisos del propietario del archivo (y por tanto de
root), y no los del usuario que lo ha ejecutado:

[alejandro]$ ls -l /usr/bin/passwd
-r-s--x--x 1 root root 15760 jun 21 2003 /usr/bin/passwd

Ejemplo: trabajo en equipo


En
el
ejemplo
de
grupos
de
usuarios
presentado
al
principio
del
captulo,
los
usuarios nicolas ywilly son ambos miembros de los grupos curso y tec. Sin embargo, el grupo
principal del primero es cursoy del segundo tec.

[root]# id nicolas
uid=500(nicolas) gid=500(curso) grupos=500(curso),501(tec)
[root]# id willy
uid=504(willy) gid=501(tec) grupos=501(tec),500(curso)
Para que puedan colaborar juntos tanto en proyectos tcnicos como en formacin, es preciso que los
archivos que creen pertenezcan al grupo adecuado. Pero, de modo predeterminado, los archivos
creados por Nicolas pertenecen al grupo cursoy los creados por Willy, al grupo tec.
Este problema se resuelve creando un directorio de trabajo por grupo de usuarios y activando su
permiso SGID, con el grupo adecuado como grupo propietario:

http://www.eni-training.com/client_net/mediabook.aspx?idR=72860

5/7

25/4/2014

ENI Training - Libro online

[root]# ls -l
total 8
drwxrwsr-x 2 root curso 4096 jun 3 02:23 formacion/
drwxrwsr-x 2 root tec 4096 jun 3 02:23 tecnico/
Cuando el usuario nicolascrea archivos:

[nicolas]$ touch arch1 formacion/arch2 tecnico/arch3


[nicolas]$ ls -lR
.:
total 8
-rw-r--r-- 1 nicolas curso
0 jun 3 02:27 arch1
drwxrwsr-x 2 root
curso 4096 jun 3 02:27 formacion/
drwxrwsr-x 2 root
tec 4096 jun 3 02:27 tecnico/
./formacion:
total 0
-rw-r--r-- 1 nicolas curso 0 jun 3 02:27 arch2
./tecnico:
total 0
-rw-r--r-- 1 nicolas tec 0 jun 3 02:27 arch3
Cuando el usuario willycrea archivos:

[willy]$ touch archA formacion/archB tecnico/archC


[willy]$ ls -lR
.:
total 8
-rw-r--r-- 1 nicolas curso
0 jun 3 02:27 arch1
-rw-r--r-- 1 willy tec
0 jun 3 02:27 archA
drwxrwsr-x 2 root
curso 4096 jun 3 02:27 formacion/
drwxrwsr-x 2 root
tec 4096 jun 3 02:27 tecnico/
./formacion:
total 0
-rw-r--r-- 1 nicolas curso 0 jun 3 02:27 arch2
-rw-r--r-- 1 willy curso 0 jun 3 02:27 archB
./tecnico:
total 0
-rw-r--r-- 1 nicolas tec 0 jun 3 02:27 arch3
-rw-r--r-- 1 willy tec 0 jun 3 02:27 archC

Ejemplo: espacio de almacenamiento compartido /tmp


Los derechos estndar de Unix hacen que todo usuario con los permisos rwxsobre un directorio puede
crear archivos en l, pero tambin borrar todos los que se encuentran all.
El directorio temporal /tmp permite a cualquier usuario almacenar sus propios archivos, pero, para
evitar que borre los archivos de otros, debe activarse el permiso Sticky:

[willy]$ ls -ld /tmp


drwxrwxrwt 5 root root 4096 jun 3 02:32 /tmp/
[willy]$ touch /tmp/archivoDeWilly
[willy]$ ls -l /tmp
http://www.eni-training.com/client_net/mediabook.aspx?idR=72860

6/7

25/4/2014

ENI Training - Libro online

total 0
-rw-r--r-- 1 nicolas curso 0 jun 3 02:32 archivoDeNicolas
-rw-r--r-- 1 willy tec 0 jun 3 02:32 archivoDeWilly
[willy]$ rm /tmp/archivoDeNicolas
rm: borrar un archivo protegido en escritura archivo normal vaco `/tmp/
archivoDeNicolas? s
rm: no se puede borrar `/tmp/archivoDeNicolas : Operation not permitted

http://www.eni-training.com/client_net/mediabook.aspx?idR=72860

7/7

25/4/2014

ENI Training - Libro online

Administrar permisos
1. chgrp
El grupo predeterminado atribuido a los nuevos archivos es el grupo principal del usuario que lo ha
creado, a menos que est habilitado el permiso SGID en el directorio de bienvenida.
El comando chgrp (change group) permite cambiar este grupo; el usuario puede ceder el archivo a
cualquier grupo al que pertenezca. La sintaxis del comando es:
chgrp [-R] <grupo> <archivo ...>
La opcin principal -Rindica al comando que aplique el cambio de forma recursiva (es decir, a todos los
archivos y subdirectorios del directorio pasado como argumento).
A diferencia del administrador, el usuario normal slo puede cambiar los archivos de los que es
propietario.

Por ejemplo:

[alejandro]$ id
uid=506(alejandro) gid=502(venta) grupos=502(venta),503(conta)
[alejandro]$ touch archivo
[alejandro]$ ls -l archivo
-rw-r--r-- 1 alejandro venta 0 jun 3 03:58 archivo
[alejandro]$ chgrp conta archivo
[alejandro]$ ls -l archivo
-rw-r--r-- 1 alejandro conta 0 jun 3 03:58 archivo
El comando similar chown(change owner) tambin permite cambiar el propietario de un archivo,
pero slo el administrador cuenta con los permisos necesarios.

2. chmod
El comando chmod permite cambiar los permisos (o "modo") de los archivos. Slo el propietario del
archivo y el administrador del sistema (root) pueden utilizarlo.
La sintaxis general del comando es la siguiente:
chmod [-R] <permisos> <archivo ...>
Como en el comando chgrp, la opcin -Rindica al comando la aplicacin del cambio de forma recursiva.
Hay dos maneras de indicar los permisos de acceso a un archivo en Unix: en notacin simblica y en
notacin octal.

Notacin simblica
La notacin simblica se basa en los caracteres r(lectura) w(escritura) x (ejecucin) para indicar los
permisos y u(usuario) g(grupo) o(otros) para simbolizar las entidades afectadas.
http://www.eni-training.com/client_net/mediabook.aspx?idR=72861

1/6

25/4/2014

ENI Training - Libro online

En la notacin simblica, el carcter aequivale a ugoy representa las tres entidades.

Un +en esta sintaxis indica que hay que activar el permiso, un -indica que este permiso debe quitarse
y un =permite definir los tres permisos en una sola etapa para la entidad especificada.
La sintaxis general se parece ahora a:
<entidad(es)>[+-=]<permiso(s)>
Tenemos, por ejemplo:

u+x

Agrega (+) el permiso de ejecucin (x) para el propietario (u).

g-w

Suprime (-) el permiso de modificacin (w) para el grupo (g).

o-rw

Suprime (-) los permisos de lectura (r) y de modificacin (w) para los
dems (o).

ug-x

Suprime (-) el permiso de ejecucin (x) para el propietario (u) y el grupo


(g).

a+r

Agrega (+) el permiso de lectura (r) para todas las entidades (a).

u=rw

Fija (=) los permisos de lectura (r) y de modificacin (w) y suprime el


permiso de ejecucin (x) para el propietario (u).

Agregar un permiso ya activo -o quitar uno no activo- no provoca ningn error: es una
operacin nula.

Los dems permisos se activan con la letra sy la entidad upara el SUID, la letra sy la entidad gpara el
SGID, y la letra ty la entidad opara el bit Sticky; es decir:

u+s: aade (+) el bit SUID (sy u).


g+s: aade (+) el bit SGID (sy g).
o+t: aade (+) el bit SUID (ty o).
Ejemplos del comando chmod con notacin simblica:

[alejandro]$ ls -l archivo
-rw-r--r-- 1 alejandro conta 0 jun
[alejandro]$ chmod u+x archivo
[alejandro]$ ls -l archivo
-rwxr--r-- 1 alejandro conta 0 jun
[alejandro]$ chmod go+w archivo
[alejandro]$ ls -l archivo
-rwxrw-rw- 1 alejandro conta 0 jun
[alejandro]$ chmod a-r archivo
[alejandro]$ ls -l archivo
--wx-w--w- 1 alejandro conta 0 jun
[alejandro]$ chmod o=rx archivo
[alejandro]$ ls -l archivo
--wx-w-r-x 1 alejandro conta 0 jun

3 03:58 archivo

3 03:58 archivo

3 03:58 archivo

3 03:58 archivo

3 03:58 archivo

Notacin octal
http://www.eni-training.com/client_net/mediabook.aspx?idR=72861

2/6

25/4/2014

ENI Training - Libro online

Esta segunda notacin es la codificacin en 3 bits de los permisos de cada entidad.


Poniendo el bit a 1 cuando el permiso correspondiente est activo, y a 0 cuando no lo est, da por
ejemplo 101 para los permisos r-x.
Un nmero de 3 bits puede codificarse en una sola cifra de base octal; la tabla de conversin siguiente
permite relacionar las notaciones:
Permisos
(simblico)

Notacin binaria

Notacin octal

---

000

--x

001

-w-

010

-wx

011

r--

100

r-x

101

rw-

110

rwx

111

Repitiendo esto para las tres entidades, los permisos rwxr-xr--pueden traducirse en notacin octal
por 754.
Para los permisos SUID, SGID y Sticky, se agrega a este nmero de base octal una cifra suplementaria
a la izquierda, segn la relacin:
Permisos
(simblico)

Notacin binaria

Notacin octal

---

000

--t

001

-s-

010

-st

011

s--

100

s-t

101

ss-

110

sst

111

Esto da, por ejemplo, 2754 para rwxr-sr--.


Otra forma rpida de convertir los permisos de Unix a notacin octal consiste en sumar los valores 4, 2
y 1 para cada conjunto de tres permisos cuando estn activos:

http://www.eni-training.com/client_net/mediabook.aspx?idR=72861

3/6

25/4/2014

ENI Training - Libro online

Ejemplos del comando chmod con la notacin octal:

[alejandro]$ ls -l archivo
--wx-w-r-x 1 alejandro conta 0 jun
[alejandro]$ chmod 644 archivo
[alejandro]$ ls -l archivo
-rw-r--r-- 1 alejandro conta 0 jun
[alejandro]$ chmod 0744 archivo
[alejandro]$ ls -l archivo
-rwxr--r-- 1 alejandro conta 0 jun
[alejandro]$ chmod 766 archivo
[alejandro]$ ls -l archivo
-rwxrw-rw- 1 alejandro conta 0 jun
[alejandro]$ chmod 0322 archivo
[alejandro]$ ls -l archivo
--wx-w--w- 1 alejandro conta 0 jun
[alejandro]$ chmod 4755 archivo
[alejandro]$ ls -l archivo
-rwsr-xr-x 1 alejandro conta 0 jun

3 03:58 archivo

3 03:58 archivo

3 03:58 archivo

3 03:58 archivo

3 03:58 archivo

3 03:58 archivo

Las cifras que faltan de la notacin octal (en 4 cifras) se reemplazan automticamente por
ceros a la izquierda; as, 755 equivale a 0755.

3. umask
Los permisos de acceso predeterminados de los nuevos archivos se definen por el valor de una
mscara que se aplica al conjunto de los permisos estndar.
El valor habitual de esta mscara para los usuarios normales es 002; ello significa que se sustrae bit a
bit los permisos de la mscara ------w- (en notacin simblica) al conjunto de permisos
fundamentales rwxrwxrwx(o 777 en octal).
En el caso de archivos normales, los permisos de ejecucin x nunca se activan de modo
predeterminado y, por lo tanto, tambin se sustraen:
http://www.eni-training.com/client_net/mediabook.aspx?idR=72861

4/6

25/4/2014

ENI Training - Libro online

Archivo

Directorio

conjunto de permisos
fundamentales

rwxrwxrwx

rwxrwxrwx

mscara 002

-------w-

-------w-

permisos predeterminados
de los archivos

rw-rw-r--(supresin de

rwxrwxr-x

los permisos x)

La mscara del administrador generalmente es 022; roototorga por tanto menos confianza a
su grupo que un usuario normal.

El valor de la mscara se muestra mediante el comando umask:

[linus]$ umask
0002
[linus]$ umask -S
u=rwx,g=rwx,o=rx
[linus]$ touch archivo1
[linus]$ mkdir dir1
[linus]$ ls -l
total 4
-rw-rw-r-- 1 linus curso
0 jun 3 04:55 archivo1
drwxrwxr-x 2 linus curso 4096 jun 3 04:55 dir1/
[linus]$ umask 0022
[linus]$ touch archivo2
[linus]$ mkdir dir2
[linus]$ ls -l
total 8
-rw-rw-r-- 1 linus curso
0 jun 3 04:55 archivo1
-rw-r--r-- 1 linus curso
0 jun 3 04:55 archivo2
drwxrwxr-x 2 linus curso 4096 jun 3 04:55 dir1/
drwxr-xr-x 2 linus curso 4096 jun 3 04:55 dir2/
[linus]$ umask 1234
-bash: umask: 1234: octal number out of range
[linus]$ umask 6
[linus]$ umask
0006
Por evidentes razones de seguridad, no es posible activar de modo predeterminado los permisos de
acceso extendidos (SUID, SGID y sticky bit) al crear archivos.
Este comando est inscrito en el archivo /etc/profileo /etc/bashrc para que se ejecute
con cada nuevo shell. El usuario puede sobrecargar el valor definido por el administrador en su
propio archivo de configuracin $HOME/.bash_profile.

4. Administradores de archivos
Todo administrador de archivos en Linux debe ser capaz de presentar los permisos de acceso
asociados a los archivos y permitir cambiarlos.
Si se han entendido bien los conceptos de este captulo, se comprendern sin problemas las opciones
de las interfaces de los administradores de archivos.
http://www.eni-training.com/client_net/mediabook.aspx?idR=72861

5/6

25/4/2014

ENI Training - Libro online

En Konqueror, por ejemplo:

http://www.eni-training.com/client_net/mediabook.aspx?idR=72861

6/6

25/4/2014

ENI Training - Libro online

Introduccin
Un proceso es un programa o un comando en curso de ejecucin en un sistema. Linux puede ejecutar
varios procesos al mismo tiempo y es posible iniciar varias instancias de un mismo programa
simultneamente.
El trmino "tarea" equivale al trmino "proceso". Por ello se califica a Linux de sistema
multitarea.

Un proceso demonio es un proceso que se ejecuta permanentemente en el sistema; su cdigo se repite


hasta el infinito para esperar y estar a punto cuando un usuario solicite el servicio al que est vinculado.
Los nombres de los demonios terminan generalmente en d; encontramos por ejemplo los
demonios crond (planificacin de tareas), httpd (servidor web Apache) y syslogd (registro de
mensajes) en un sistema Linux.

http://www.eni-training.com/client_net/mediabook.aspx?idR=72863

1/1

25/4/2014

ENI Training - Libro online

rbol de procesos y PID


Todo proceso se identifica por un nmero nico, el PID (Process IDentifier); el ncleo utiliza una tabla de
procesos para la gestin de las tareas.
Dos primitivas del ncleo Linux permiten crear procesos: fork y exec (estas primitivas programables
pueden llamarse desde un lenguaje como el C). La primera permite que un proceso cree un clon de s
mismo, la segunda la usa ese clon para ejecutar el cdigo de otro programa en su lugar. De ello resulta
una filiacin entre procesos; as, se habla de procesos hijos y de procesos padres.
Todo proceso tiene, pues, obligatoriamente un padre, salvo el primer proceso del sistema: init. ste es el
antecesor de todos los procesos del sistema y su PID es 1.
El PID asignado a un proceso lo da el ncleo de Linux al iniciar el programa. No existe forma de predecir
este nmero.

http://www.eni-training.com/client_net/mediabook.aspx?idR=72864

1/1

25/4/2014

ENI Training - Libro online

Visualizacin de los procesos


1. ps
El comando pspermite ver la lista de procesos del sistema: presenta una imagen simplificada de las
estructuras del ncleo que administran los procesos. Extrae toda la informacin del pseudosistema de
archivos /procen el que el ncleo coloca toda la informacin respecto al estado del sistema en curso
de ejecucin.
De modo predeterminado, este comando muestra nicamente los procesos iniciados por el usuario
desde el terminal; por ejemplo:

[nicolas]$ ps
PID TTY
TIME CMD
1200 pts0
00:00:00 bash
1239 pts0
00:00:00 ps
Este comando cuenta con muchas opciones. Adems, acepta opciones de Unix98 (con -), BSD (sin -) y
GNU (formato largo con --). Veamos un ejemplo:

[nicolas]$ ps --help
********* simple selection *********
-A all processes
-N negate selection
-a all w/ tty except session leaders
-d all except session leaders

********* selection by list *********


-C by command name
-G by real group ID (supports names)
-U by real user ID (supports names)
-g by session OR by effective group
name
-e all processes
-p by process ID
T all processes on this terminal
-s processes in the sessions given
a all w/ tty, including other users -t by tty
g OBSOLETE -- DO NOT USE
-u by effective user ID (supports
names)
r only running processes
U processes for specified users
x processes w/o controlling ttys
t by tty
*********** output format ********** *********** long options ***********
-o,o user-defined -f full
--Group --User --pid --cols --ppid
-j,j job control s signal
--group --user --sid --rows --info
-O,O preloaded -o v virtual memory --cumulative --format --deselect
-l,l long
u user-oriented --sort --tty --forest --version
-F extra full
X registers
--heading --no-heading --context
********* misc options *********
-V,V show version
L list format codes f ASCII art forest
-m,m,-L,-T,H threads S children in sum
-y change -l format
-M,Z security data
c true command name -c scheduling class
-w,w wide output
n numeric WCHAN,UID -H process hierarchy
Es casi imposible recordar todas las opciones del comando ps, y algunas de ellas, segn si son de
origen Unix98 o BSD (con o sin -), no dan el mismo resultado. As, la opcin -e presenta todos los
procesos, mientras que emuestra el entorno de los procesos en la lista.
La versin espaola de la pgina del manual puede ser obsoleta y no presentar todas las
opciones del comando. Para ver las pginas del manual en lenguaje internacional (ANSI C) a
pesar de haberse instalado la distribucin en espaol, basta con modificar la variable de
entorno $LANGescribiendo LANG=Cen el shell (vase el captulo Shell Bash).
http://www.eni-training.com/client_net/mediabook.aspx?idR=72865

1/5

25/4/2014

ENI Training - Libro online

Veamos, al menos, dos sintaxis utilizadas frecuentemente:

ps aux
Muestra los procesos de todos los usuarios (a) y los que no estn vinculados a un terminal
(x), especificando el nombre del usuario y la fecha de inicio (u).

ps -ef
Muestra todos los procesos (-e) y mucha informacin (-f).

Por ejemplo:
[nicolas]$ ps aux
USER
PID %CPU %MEM VSZ RSS TTY STAT START
root
1 0.8 0.4 1584 F520 ?
S
13:31
root
2 0.0 0.0
0
0?
SWN 13:31
root
3 0.0 0.0
0
0?
SW
13:31
root
4 0.0 0.0
0
0?
SW
13:31
root
5 0.0 0.0
0
0?
SW
13:31
root
6 0.0 0.0
0
0?
SW
13:31
root
7 0.0 0.0
0
0?
SW
13:31
root
8 0.0 0.0
0
0?
SW
13:31
root
9 0.0 0.0
0
0?
SW
13:31
root
11 0.0 0.0
0
0?
SW
13:31
root
15 0.0 0.0
0
0?
SW
13:31
root
121 0.0 0.8 2036 132 ?
S
13:31
root
211 0.0 0.0
0
0?
SW
13:31
root
346 0.0 0.0
0
0?
SW
13:31
root
786 0.0 0.4 1640 604 ?
S
13:32
root
794 0.1 1.2 2592 1532 ?
S
13:32
root
912 0.0 1.1 3152 1420 ?
S
13:32
root
1145 0.0 0.4 1624 616 ?
S
13:32
root
1191 0.0 0.3 1568 444 tty1 S
13:32
root
1192 0.0 0.3 1568 444 tty2 S
13:32
root
1193 0.0 0.3 1568 444 tty3 S
13:32
root
1194 0.0 0.3 1568 444 tty4 S
13:32
root
1195 0.0 0.3 1568 444 tty5 S
13:32
root
1196 0.0 0.3 1568 444 tty6 S
13:32
root
1197 0.0 1.5 6304 1976 ?
S
13:33
nicolas 1199 0.1 1.6 6304 2076 ?
S
13:33
nicolas 1200 0.1 1.2 2784 1600 pts0 S
13:33
nicolas 1425 0.0 0.6 2420 780 pts0 R
13:37

TIME COMMAND
0:03 init [3]
0:00 [ksoftirqd/0]
0:00 [events/0]
0:00 [kblockd/0]
0:00 [kapmd]
0:00 [pdflush]
0:00 [pdflush]
0:00 [kswapd0]
0:00 [aio/0]
0:00 [kseriod]
0:00 [kjournald]
0:00 devfsd /dev
0:00 [khubd]
0:00 [kjournald]
0:00 syslogd -m 0 -a /
0:00 klogd -2
0:00 /usr/sbin/sshd
0:00 crond
0:00 /sbin/mingetty tt
0:00 /sbin/mingetty tt
0:00 /sbin/mingetty tt
0:00 /sbin/mingetty tt
0:00 /sbin/mingetty tt
0:00 /sbin/mingetty tt
0:00 sshd: nicolas [pr
0:00 sshd: nicolas@pts
0:00 -bash
0:00 ps aux

Y tambin:

[nicolas]$ ps -ef
UID
PID PPID
root
1
0
root
2
1
root
3
1
root
4
1
root
5
1
root
6
1
root
7
1
root
8
1

C STIME TTY
0 13:31 ?
0 13:31 ?
0 13:31 ?
0 13:31 ?
0 13:31 ?
0 13:31 ?
0 13:31 ?
0 13:31 ?

http://www.eni-training.com/client_net/mediabook.aspx?idR=72865

TIME
CMD
00:00:03 init [3]
00:00:00 [ksoftirqd/0]
00:00:00 [events/0]
00:00:00 [kblockd/0]
00:00:00 [kapmd]
00:00:00 [pdflush]
00:00:00 [pdflush]
00:00:00 [kswapd0]
2/5

25/4/2014

ENI Training - Libro online

root
root
root
root
root
root
root
root
root
root
root
root
root
root
root
root
root
nicolas
nicolas
nicolas

9
1
11
1
15
1
121
1
211
1
346
1
786
1
794
1
912
1
1145
1
1191
1
1192
1
1193
1
1194
1
1195
1
1196
1
1197 912
1199 1197
1200 1199
1426 1200

0 13:31 ?
0 13:31 ?
0 13:31 ?
0 13:31 ?
0 13:31 ?
0 13:31 ?
0 13:32 ?
0 13:32 ?
0 13:32 ?
0 13:32 ?
0 13:32 tty1
0 13:32 tty2
0 13:32 tty3
0 13:32 tty4
0 13:32 tty5
0 13:32 tty6
0 13:33 ?
0 13:33 ?
0 13:33 pts0
0 13:37 pts0

00:00:00 [aio/0]
00:00:00 [kseriod]
00:00:00 [kjournald]
00:00:00 devfsd /dev
00:00:00 [khubd]
00:00:00 [kjournald]
00:00:00 syslogd -m 0 -a /var/spool/postf
00:00:00 klogd -2
00:00:00 /usr/sbin/sshd
00:00:00 crond
00:00:00 /sbin/mingetty tty1
00:00:00 /sbin/mingetty tty2
00:00:00 /sbin/mingetty tty3
00:00:00 /sbin/mingetty tty4
00:00:00 /sbin/mingetty tty5
00:00:00 /sbin/mingetty tty6
00:00:00 sshd: nicolas [priv]
00:00:00 sshd: nicolas@pts/0
00:00:00 -bash
00:00:00 ps -ef

Atencin: todo usuario puede ver todos los procesos iniciados en el sistema. En cierto modo,
es posible, segn el nombre de los procesos iniciados, deducir la actividad de otro usuario sin
que lo sepa, sin poseer permisos de administracin especiales; ello no presenta ningn problema
para el correcto funcionamiento del sistema, pero esta consideracin tiene su importancia desde el
punto de vista tico.

Detalle de la informacin mostrada


Las principales columnas que aparecen en la vista del comando psson:

%CPU

Porcentaje de tiempo de procesador utilizado desde la


ejecucin del comando.

%MEM

Porcentaje de uso de la memoria disponible.

COMMANDo CMD

Nombre del comando que origin el proceso.

GIDo GROUP

Identidad del grupo bajo la cual se ejecuta el proceso.

NI

Nivel de prioridad del proceso.

PID

Identificador del proceso.

PPID

Identificador del proceso padre.

RSS

Cantidad de memoria RAM utilizada (en KB).

STARTo STIME

Fecha de lanzamiento del proceso.

STAT

Estado del proceso.

TIME

Tiempo total de uso de la CPU para este proceso.

TTo TTY

El nombre del terminal al que est vinculado el proceso. En


el caso de un proceso no asociado a un terminal como
undemonio, este campo contiene el carcter "?".

UIDo USER

Identidad del usuario bajo la cual se ejecuta el proceso.

Campo STAT
http://www.eni-training.com/client_net/mediabook.aspx?idR=72865

3/5

25/4/2014

ENI Training - Libro online

Los estados definidos por el campo STATpresentan tres caracteres. En Linux, los valores del primero
significan:

R(Running)

Proceso en curso de ejecucin.

T(sTopped)

Proceso parado (con las teclas [Ctrl]+[z] por ejemplo).

S(Sleeping)

Proceso dormido, en espera de procesador.

D(Device)

Proceso dormido en espera de un recurso (generalmente una


entrada/salida). Los procesos en este estado no pueden
interrumpirse.

Z(Zombie)

Proceso terminado. Seguir en este estado hasta que su padre lo


note y recupere su cdigo de retorno. Como los anteriores (D),
esos procesos no pueden interrumpirse, pero no consumen
ningn recurso, excepto una entrada en la tabla de procesos.

El segundo carcter del campo STAT est ubicado en W si el proceso se ha movido al espacio de
paginacin.
Finalmente, aparece una N o un < como tercer carcter de la columna STAT si el proceso es
respectivamente de menor o de mayor prioridad.

2. top
El comando top permite visualizar la actividad del procesador en tiempo real. Muestra la lista de
procesos que se ejecutan en ese momento y la refresca automticamente.
Adems, esta herramienta usa las mismas etiquetas de columna que ps. Es posible modificar las
columnas presentadas y la ordenacin de los procesos de forma interactiva.
Al pulsar la tecla [?] aparece la ayuda del comando. La tecla [q] permite salir de top.

top - 13:38:26 up 6 min, 1 user, load average: 0.11, 0.10, 0.06


Tasks: 28 total, 2 running, 26 sleeping, 0 stopped, 0 zombie
Cpu(s): 0.3% us, 0.3% sy, 0.0% ni, 99.0% id, 0.0% wa, 0.3% hi, 0.0% si
Mem:
126300k total,
36368k used,
89932k free,
3228k buffers
Swap: 511520k total,
0k used, 511520k free,
22776k cached
PID USER
1427 nicolas
1 root
2 root
3 root
4 root
5 root
6 root
7 root
8 root
9 root
11 root
15 root
121 root
211 root
346 root
786 root
794 root

PR NI
16 0
16 0
34 19
5 -10
5 -10
15 0
25 0
15 0
25 0
10 -10
23 0
15 0
16 0
15 0
15 0
16 0
16 0

VIRT RES SHR


2172 1004 1964
1584 520 1424
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
2036 1132 1588
0
0
0
0
0
0
1640 604 1468
2592 1532 1416

http://www.eni-training.com/client_net/mediabook.aspx?idR=72865

S %CPU %MEM
R 0.7 0.8
S 0.0 0.4
S 0.0 0.0
S 0.0 0.0
S 0.0 0.0
S 0.0 0.0
S 0.0 0.0
S 0.0 0.0
S 0.0 0.0
S 0.0 0.0
S 0.0 0.0
S 0.0 0.0
S 0.0 0.9
S 0.0 0.0
S 0.0 0.0
S 0.0 0.5
S 0.0 1.2

TIME+
0:00.09
0:03.28
0:00.00
0:00.01
0:00.11
0:00.00
0:00.00
0:00.05
0:00.00
0:00.00
0:00.00
0:00.14
0:00.16
0:00.00
0:00.00
0:00.22
0:00.41

COMMAND
top
init
ksoftirqd/0
events/0
kblockd/0
kapmd
pdflush
pdflush
kswapd0
aio/0
kseriod
kjournald
devfsd
khubd
kjournald
syslogd
klogd
4/5

25/4/2014

ENI Training - Libro online

912 root
1145 root
1191 root
1192 root
1193 root
1194 root
1195 root
1196 root
1197 root
1199 nicolas
1200 nicolas

16
16
18
19
20
21
22
22
16
16
15

0
0
0
0
0
0
0
0
0
0
0

3152 1420 2940


1624 616 1460
1568 444 1408
1568 444 1408
1568 444 1408
1568 444 1408
1568 444 1408
1568 444 1408
6304 1976 5844
6304 2076 5844
2784 1600 2376

S
S
S
S
S
S
S
S
S
R
S

0.0
0.0
0.0
0.0
0.0
0.0
0.0
0.0
0.0
0.0
0.0

1.1
0.5
0.4
0.4
0.4
0.4
0.4
0.4
1.6
1.6
1.3

0:00.12
0:00.01
0:00.01
0:00.01
0:00.01
0:00.00
0:00.00
0:00.01
0:00.12
0:00.55
0:00.32

sshd
crond
mingetty
mingetty
mingetty
mingetty
mingetty
mingetty
sshd
sshd
bash

Para modificar los campos presentados, pulse la tecla [f] (field) y seleccinelos en un men.
Este comando acepta tambin un archivo de configuracin para definir su vista predeterminada. Este
archivo es /etc/toprc para una configuracin global de todos los usuarios y ~/.toprc (en el
directorio personal del usuario) para una configuracin personalizada.

3. pstree
pstree es otro comando presente en Linux. Permite mostrar los nombres de procesos de forma
jerrquica; as es ms fcil conocer su filiacin.

[nicolas]$ pstree
init-+-aio/0
|-crond
|-devfsd
|-events/0
|-kapmd
|-kblockd/0
|-khubd
|-2*[kjournald]
|-klogd
|-kseriod
|-ksoftirqd/0
|-kswapd0
|-6*[mingetty]
|-2*[pdflush]
|-sshd---sshd---sshd---bash---pstree
`-syslogd
Desde luego, es posible mostrar el PID de los procesos con la opcin -p.
Esta vista es ms condensada que las de pso topporque el comando pstree slo muestra
una lnea cuando existen varias instancias del mismo proceso; el nmero que aparece delante
del carcter * indica el nmero de instancias correspondientes.

http://www.eni-training.com/client_net/mediabook.aspx?idR=72865

5/5

25/4/2014

ENI Training - Libro online

Seales y comando kill


Los comandos kill y killall permiten enviar seales a los procesos. El comando kill espera un
nmero de proceso como argumento, mientras que killallespera un nombre de comando.
El comando killall debe utilizarse con mucha precaucin porque enva la seal a todos los
procesos con el nombre pasado como argumento.

Estos dos comandos pueden, opcionalmente, recibir un nmero de seal como argumento. De modo
predeterminado, ambos envan la seal 15 (ver ms adelante) a los procesos pasados como argumento:
kill [-<seal>] <pid> ...
Un usuario normal slo puede enviar una seal con estos comandos a sus propios procesos.
Es posible obtener la lista de seales disponibles con la opcin -ldel comando kill:

[nicolas]$ kill -l
1) SIGHUP
2) SIGINT
3) SIGQUIT
4) SIGILL
5) SIGTRAP
6) SIGABRT
7) SIGBUS
8) SIGFPE
9) SIGKILL
10) SIGUSR1
11) SIGSEGV
12) SIGUSR2
13) SIGPIPE
14) SIGALRM
15) SIGTERM
17) SIGCHLD
18) SIGCONT
19) SIGSTOP
20) SIGTSTP
21) SIGTTIN
22) SIGTTOU
23) SIGURG
24) SIGXCPU
25) SIGXFSZ
26) SIGVTALRM 27) SIGPROF
28) SIGWINCH
29) SIGIO
30) SIGPWR
31) SIGSYS
35) SIGRTMIN
36) SIGRTMIN+1
37) SIGRTMIN+2 38) SIGRTMIN+3 39) SIGRTMIN+4 40) SIGRTMIN+5
41) SIGRTMIN+6 42) SIGRTMIN+7 43) SIGRTMIN+8 44) SIGRTMIN+9
45) SIGRTMIN+10 46) SIGRTMIN+11 47) SIGRTMIN+12 48) SIGRTMIN+13
49) SIGRTMIN+14 50) SIGRTMAX-14 51) SIGRTMAX-13 52) SIGRTMAX-12
53) SIGRTMAX-11 54) SIGRTMAX-10 55) SIGRTMAX-9 56) SIGRTMAX-8
57) SIGRTMAX-7 58) SIGRTMAX-6 59) SIGRTMAX-5 60) SIGRTMAX-4
61) SIGRTMAX-3 62) SIGRTMAX-2 63) SIGRTMAX-1 64) SIGRTMAX
La pgina de la seccin 7 del manual sobre las seales (man 7 signal) es una fuente de informacin
muy interesante para el empleo del comando kill as como el archivo /usr/include/asm/signal.h.
En l se detalla el significado de todas las seales disponibles y el comportamiento predeterminado de
los procesos ante estas seales.
Las principales seales son:

SIGHUP(1) "Hang up"


Si el usuario se desconecta del terminal que tiene permiso para ejecutar el programa, esta
seal se enva automticamente al proceso; de modo predeterminado, el proceso termina.

SIGINT(2)
Interrupcin desde el teclado con la combinacin de teclas [Ctrl]+[c]. El comportamiento
predeterminado es la finalizacin del proceso.

SIGQUIT(3)
Salida por teclado con [Ctrl]+[\]. Una vez ms, el comportamiento predeterminado es
http://www.eni-training.com/client_net/mediabook.aspx?idR=72866

1/2

25/4/2014

ENI Training - Libro online

terminar el proceso. Pero, adems, se guarda una copia del espacio de memoria en un
archivo llamado core (til slo para la depuracin de aplicaciones).

SIGKILL(9)
Es una de las raras seales que no pueden ser interceptadas por un proceso ni ignorarse.
Todo proceso que recibe la seal KILL termina inmediatamente sin proceder a ninguna
operacin de limpieza (como cerrar los archivos abiertos o borrar los archivos temporales).
Esta seal, que mata el proceso, slo debe enviarse si ste no responde a ninguna otra
seal.

SIGTERM(15)
Seal predeterminada del comando kill. De modo predeterminado, el proceso termina.

SIGCHLD(17)
Seala a un proceso la parada o la terminacin de uno de sus hijos.

Veamos un ejemplo de parada del comando


comando killutilizando la seal 15:

find (proceso que tiene el PID1308) con el

[nicolas]$ ps
PID TTY
TIME CMD
1223 pts0
00:00:00 bash
1308 pts0
00:00:02 find
1313 pts0
00:00:00 ps
[nicolas]$ kill -15 1308
[nicolas]$ ps
PID TTY
TIME CMD
1223 pts0
00:00:00 bash
1314 pts0
00:00:00 ps
[1]+ Terminated
find / >/dev/null 2>&1
El ncleo no reasigna inmediatamente un nmero de PID liberado al finalizar la ejecucin de un
programa. Esto evita el riesgo de enviar una seal a otro proceso cuando el proceso destinatario
termina de otra manera, entre el momento en que se usa el comando pspara identificar el PID y el
momento de ejecucin del comando kill.

El programa top, visto anteriormente, tambin permite enviar seales a los procesos; para ello, hay que
pulsar la tecla [k] una vez ejecutado ste.

http://www.eni-training.com/client_net/mediabook.aspx?idR=72866

2/2

25/4/2014

ENI Training - Libro online

Administradores de procesos grficos


Existe evidentemente una amplia gama de herramientas grficas de administracin de procesos.
Por ejemplo, el "Monitor del sistema GNOME" funciona tambin con el entorno de escritorio KDE y se inicia
con el comando gnome-system-monitor:

http://www.eni-training.com/client_net/mediabook.aspx?idR=72867

1/1

25/4/2014

ENI Training - Libro online

Trabajo con procesos


1. Iniciar un proceso
En primer plano
Les ejemplos presentados hasta ahora funcionan como programas iniciados en primer plano, es decir,
procesos que pasan el control al usuario slo cuando terminan.
Esta ejecucin de un programa se realiza escribiendo simplemente el comando correspondiente en la
lnea de comandos con sus eventuales opciones y argumentos.
Por ejemplo:

[nicolas]$ sleep 10
(espera de 10 segundos)
[nicolas]$
El comando sleep, utilizado en el ejemplo, se limita a esperar el nmero de segundos
indicados en el argumento.

En segundo plano
Para no verse obligados a esperar el fin del programa antes de poder iniciar otro, es posible ejecutar
un comando en segundo plano; as, la lnea de comandos reaparece inmediatamente y el usuario
puede escribir nuevos comandos.
Para iniciar un proceso en segundo plano, basta con agregar el carcter & al final de la lnea de
comando:

[nicolas]$ sleep 10 &


[1] 2004
[nicolas]$
La lnea situada despus del comando slo aparece a ttulo indicativo y no interfiere en nada con los
tratamientos que puede efectuar el comando. El nmero entre corchetes identifica el trabajo (nmero
de "job") del proceso en el shell actual; el segundo indica el nmero de PID que el ncleo ha asignado
a este proceso.
Un poco ms tarde, al actualizarse la lnea de comandos del shell y cuando el proceso que se ejecutaba
en segundo plano finaliza, el shell muestra:

[nicolas]$
[1]+ Done
[nicolas]$

sleep 10

De nuevo, esta lnea no interfiere con los tratamientos en curso de los dems comandos.

2. Detener un proceso
http://www.eni-training.com/client_net/mediabook.aspx?idR=72868

1/3

25/4/2014

ENI Training - Libro online

Hay tres formas de detener prematuramente un proceso en primer plano:


Escribir la combinacin de teclas [Ctrl]+[c]. La seal 2 (SIGINT) se enva al proceso en curso
de ejecucin.
Pulsar la combinacin de teclas [Ctrl]+[\]. La seal 3 (SIGQUIT) se enva al proceso en curso
de ejecucin.
Identificar el PID del proceso a partir de otro terminal y ejecutar el comando killadecuado.
Por el contrario, el nico medio para detener un proceso que se ejecuta en segundo plano es emplear
el comando killapropiado. En efecto, el proceso ya ha pasado el control al usuario, y ya no puede
controlarse directamente desde el terminal mediante una combinacin de teclas.

3. Controlar los procesos iniciados desde la lnea de comandos


Al ser posible ejecutar varios programas desde el mismo terminal, est disponible una serie de
comandos para controlarlos.

Jobs
El comando jobsmuestra la lista de procesos en curso de ejecucin que han sido iniciados desde el
terminal actual:

[nicolas]$ sleep 2222 &


[1] 2034
[nicolas]$ sleep 3333 &
[2] 2035
[nicolas]$ sleep 4444 &
[3] 2036
[nicolas]$ sleep 5555 &
[4] 2037
[nicolas]$ jobs
[1] Running
[2] Running
[3]- Running
[4]+ Running

sleep 2222 &


sleep 3333 &
sleep 4444 &
sleep 5555 &

Encontramos en esta lista con el carcter & el nmero de "job" indicado al ejecutar los procesos en
segundo plano.
Los caracteres + y - presentes al lado de los nmeros de "job" indican respectivamente el ltimo y el
penltimo procesos con los que se ha trabajado en la lnea de comandos.

bg y fg
Si un proceso largo se ha iniciado por error en primer plano (por olvido del carcter & al final de la
lnea), no es necesario interrumpirlo para reiniciarlo en segundo plano: la combinacin de teclas[Ctrl]+
[z] lo suspende y permite al usuario recuperar el control del terminal.
Entonces es posible volver a ejecutar el proceso, en primer plano o en segundo plano, utilizando
respectivamente el comando fgo el comando bg.
Estos dos comandos toman como argumento, precedido por el carcter %, el nmero de "job" del
proceso. Si no se indica este nmero, el comando toma en consideracin el ltimo proceso con el que se
ha trabajado (indicado con un + por el comando jobs).
http://www.eni-training.com/client_net/mediabook.aspx?idR=72868

2/3

25/4/2014

ENI Training - Libro online

[nicolas]$ jobs
[1] Running
sleep 2222 &
[2] Running
sleep 3333 &
[3]- Running
sleep 4444 &
[4]+ Running
sleep 5555 &
[nicolas]$ sleep 6666 (pulsar Ctrl + z)
[5]+ Stopped
[nicolas]$ jobs
[1] Running
[2] Running
[3] Running
[4]- Running
[5]+ Stopped
[nicolas]$ bg %5
[5]+ sleep 6666 &
[nicolas]$ jobs
[1] Running
[2] Running
[3] Running
[4]- Running
[5]+ Running
[nicolas]$ fg %2
sleep 3333 (pulsar Ctrl + z)

sleep 6666

[2]+ Stopped
[nicolas]$ jobs
[1] Running
[2]+ Stopped
[3] Running
[4] Running
[5]- Running
[nicolas]$ bg
[2]+ sleep 3333 &

sleep 3333

sleep 2222 &


sleep 3333 &
sleep 4444 &
sleep 5555 &
sleep 6666

sleep 2222 &


sleep 3333 &
sleep 4444 &
sleep 5555 &
sleep 6666 &

sleep 2222 &


sleep 3333
sleep 4444 &
sleep 5555 &
sleep 6666 &

El comando killtambin funciona con los nmeros de "jobs" precedidos por el carcter %.

http://www.eni-training.com/client_net/mediabook.aspx?idR=72868

3/3

25/4/2014

ENI Training - Libro online

Introduccin
A pesar de la existencia de interfaces grficas cada vez ms fciles de utilizar y ergonmicas, el uso de la
lnea de comandos sigue siendo frecuente en Linux.
El aprendizaje del shell permite al lector comprender mejor el funcionamiento del sistema y aumentar su
productividad al facilitarle el uso de ste.
Este captulo pasa revista a diferentes funcionalidades ofrecidas por el shell Bash.

http://www.eni-training.com/client_net/mediabook.aspx?idR=72870

1/1

25/4/2014

ENI Training - Libro online

Generalidades y definiciones
El shell
El shell es el programa que se ejecuta automticamente cuando un usuario se conecta al sistema en un
terminal de texto y establece el vnculo entre el usuario y el sistema:

El trmino "shell" en ingls significa "concha", lo que se corresponde con la imagen de


encapsulacin que realmente representa.

El shell se llama tambin "intrprete de comandos" porque:


Es el que traduce al sistema las instrucciones indicadas por el usuario mediante la lnea de
comandos y el que presenta la informacin devuelta en la pantalla.
A diferencia de un compilador utilizado en programacin (que construye un archivo binario
comprensible por el ncleo Linux a partir de una serie de instrucciones contenidas en el cdigo
fuente), el shell interpreta y ejecuta cada comando a medida que el usuario los escribe.
Existen muchos shells disponibles para Linux; destacan:
Bourne Shell o sh: es el primer shell escrito para Unix por Steve Bourne. Hoy obsoleto, muchos
intrpretes de comandos recientes conservan la compatibilidad con l. El programa
correspondiente en Linux es sho bsh.
Korn Shell o KSH: es uno de los intrpretes de comandos ms utilizados en el mundo Unix. Es
compatible con el shell Bourne original.
C shell :este shell fue desarrollado por la rama BSD de Unix y usa una sintaxis diferente de los
anteriores. Puede ejecutarse mediante el programa csh.
tcsh : es una implementacin mejorada del C shell que dispone de una edicin avanzada de la
lnea de comandos. Su ejecutable es tcsh.
Bash o Bourne Again Shell: como su nombre indica, es una nueva implementacin del shell
Bourne y se parece mucho al Korn Shell. Muy funcional, es el intrprete de comandos
predeterminado en Linux que se detalla en el resto del captulo. El programa correspondiente
es bash.

Caracteres especiales
Los caracteres especiales tienen un significado particular para el shell en la lnea de comandos. Se
distinguen varias categoras de caracteres especiales:
los
metacaracteres
incluyen
los
caracteres
separadores
en
la
comandos: <, >, |, (, ),;, &, espacio, retorno de carro (tecla [Intro]) y tabulacin.
http://www.eni-training.com/client_net/mediabook.aspx?idR=72871

lnea

de

1/2

25/4/2014

ENI Training - Libro online

los caracteres genricos (o caracteres de expansin), que permiten la creacin de comodines


de reemplazo en los nombres de archivo: *, ?y [].
los caracteres utilizados en las sustituciones de variables y comandos: $, `, y {}.
los caracteres de cita :\, "y .
Algunos de estos caracteres pueden tener diferentes significados segn el contexto en el que
aparezcan.

El significado de cada uno de estos caracteres se estudia ms adelante.

http://www.eni-training.com/client_net/mediabook.aspx?idR=72871

2/2

25/4/2014

ENI Training - Libro online

Variables
Verdadero lenguaje de programacin, el shell Bash proporciona todos los elementos necesarios para
desarrollar aplicaciones; este apartado trata sobre las variables.
Una variable es un parmetro que puede cambiar durante la ejecucin de un programa; se le da
un nombre para recuperar el valor que representa.

1. Trabajo con variables


Asignacin de nombre
El nombre de una variable es una palabra compuesta exclusivamente por caracteres alfanumricos y el
subrayado _ (underscore), que empieza por una letra o un subrayado.
Por convencin, el usuario nombrar a las variables con caracteres en minsculas porque las
maysculas se emplean generalmente para los nombres de variables de entorno.
Como en los nombres de archivo, es preferible dar nombres explcitos a las variables para facilitar el
mantenimiento de los scripts generados.

Asignacin
Una variable llamada varpuede recibir un valor valorpor una asignacin de la forma var=valor.
No hay ningn espacio antes ni despus del carcter = y si el valor se compone de varias palabras o
caracteres especiales, debe ir enmarcado entre caracteres de cita (vase seccin Caracteres de cita en
este captulo).
Una variable existe desde que se le asigna un valor; este valor puede ser un nmero, una palabra o
una cadena de caracteres con cualquier carcter especial:

[nicolas]$ var1=12
[nicolas]$ var2=palabra
[nicolas]$ var3="dos palabras"
[nicolas]$ var4=car. especiales: $* ?{}()[]"\&~|`!=%,.;#
Si no se proporciona ningn valor, la variable recibe una cadena vaca; las dos sintaxis siguientes son
equivalentes:

[nicolas]$ var5=""
[nicolas]$ var6=

Llamada y visualizacin
El shell reemplaza una variable por su valor si su nombre precedido por el carcter $aparece en la lnea
de comandos, antes incluso de interpretar el comando escrito:

[nicolas]$ echo $var2


palabra
http://www.eni-training.com/client_net/mediabook.aspx?idR=72872

1/7

25/4/2014

ENI Training - Libro online

La interpretacin de la lnea de comandos por parte del shell se efecta en dos etapas:

La llamada a un nombre de variable no definida no genera errores; el shell se limita a reemplazarla por
una cadena vaca.
Cuando el nombre de una variable es ambiguo en la lnea de comandos, es posible delimitar su nombre
con la sintaxis ${var}, por ejemplo:

[nicolas]$ var7=vender
[nicolas]$ echo ver el contenido de la variable var7: $var7
ver el contenido de la variable var7: vender
[nicolas]$ echo el quinto da de la semana es: $var7vi
el quinto da de la semana es:
[nicolas]$ echo el quinto da de la semana es: ${var7}vi
el quinto da de la semana es: viernes
Cuando se llama al comando setsin argumentos, muestra la lista completa de las variables definidas
en el shell actual.
Aparecen las variables definidas anteriormente:

[nicolas]$ set
...
var1=12
var2=palabra
var3=dos palabras
var4=$car. especiales: $* ?{}()[]"\\&~|`!=%,.;#
var5=
var6=
var7=vender
...
La visualizacin producida puede reutilizarse como una entrada.

Visibilidad de una variable


De modo predeterminado, toda variable slo se define en el shell donde se ha creado; es decir, slo es
accesible desde los subprocesos del shell y se destruye al finalizar la ejecucin de dicho shell:

[nicolas]$ x=3
[nicolas]$ echo $x
3
[nicolas]$ bash
[nicolas]$ echo $x
[nicolas]$ x=7
[nicolas]$ echo $x
http://www.eni-training.com/client_net/mediabook.aspx?idR=72872

2/7

25/4/2014

ENI Training - Libro online

7
[nicolas]$ exit
[nicolas]$ echo $x
3

El comando export especifica al shell que una variable debe copiarse en el entorno de todos los
procesos hijos del shell actual. Este comando puede utilizarse junto con la asignacin de una variable:

[nicolas]$ export x=3


[nicolas]$ echo $x
3
[nicolas]$ bash
[nicolas]$ echo $x
3
[nicolas]$ x=7
[nicolas]$ echo $x
7
[nicolas]$ y=2
[nicolas]$ export y
[nicolas]$ echo $y
2
[nicolas]$ exit
[nicolas]$ echo $x
3
[nicolas]$ echo $y

http://www.eni-training.com/client_net/mediabook.aspx?idR=72872

3/7

25/4/2014

ENI Training - Libro online

El argumento del comando exportes el nombre de la variable, y no su contenido: el nombre


de la variable no debe ir, pues, antecedido de $.

Eliminacin
Una vez que una variable existe, slo puede suprimirse con el comando unset:

[nicolas]$ set
...
var1=12
var2=palabra
var3=dos palabras
var4=$car. especiales: $* ?{}()[]"\\&~|`!=%,.;#
var5=
var6=
var7=vender
...
[nicolas]$ unset var2
[nicolas]$ set
...
var1=12
var3=dos palabras
var4=$car. especiales: $* ?{}()[]"\\&~|`!=%,.;#
var5=
var6=
var7=vender
...

2. Variables de entorno
Las variables de entorno afectan al comportamiento del shell y de la interfaz de usuario. Se definen al
cargar el shell y pueden enumerarse mediante el comando setvisto anteriormente.
http://www.eni-training.com/client_net/mediabook.aspx?idR=72872

4/7

25/4/2014

ENI Training - Libro online

Aunque se pueden modificar como cualquier otra variable, la asignacin de valores errticos a
las variables de entorno puede llevar a un comportamiento "aleatorio" del shell y los comandos
ejecutados desde l.

Los nombres de estas variables de entorno generalmente van en maysculas.


Aqu presentaremos slo las principales variables de entorno.

$BASH
Ruta al propio binario Bash:

[nicolas]$ echo $BASH


/bin/bash

$BASH_ENV
Variable que apunta al archivo de arranque de Bash. Se lee al arrancar cada script para reinterpretar
este archivo de comandos.

$EDITOR
Nombre del editor predeterminado invocado por otras
generalmente es la ruta absoluta de vio emacs.

herramientas

en lnea

de

comandos;

$HOME
Ruta completa del directorio personal del usuario conectado actualmente:

[nicolas]$ echo $HOME


/home/nicolas

$IGNOREEOF
Indica el nmero de veces que el shell ignorar el carcter de fin de archivo (EOF o End Of File) pasado
mediante las teclas [Ctrl]+[d] antes de terminar:

[nicolas]$ IGNOREEOF=3
pulsar Ctrl + d
[nicolas]$ Use "exit" to leave the shell.
pulsar Ctrl + d
[nicolas]$ Use "exit" to leave the shell.
pulsar Ctrl + d
[nicolas]$ Use "exit" to leave the shell.
pulsar Ctrl + d
[nicolas]$ exit

$OLDPWD
Directorio donde estaba antes el usuario. Esta variable la usa el comando cd -:

http://www.eni-training.com/client_net/mediabook.aspx?idR=72872

5/7

25/4/2014

ENI Training - Libro online

[nicolas]$ pwd
/home/nicolas
[nicolas]$ cd /var
[nicolas]$ pwd
/var
[nicolas]$ cd
[nicolas]$ pwd
/home/nicolas
[nicolas]$ echo $OLDPWD
/var
[nicolas]$ OLDPWD=/tmp
[nicolas]$ cd /tmp
[nicolas]$ pwd
/tmp

$PATH
Lista de directorios separados por el carcter :(dos puntos) con los ejecutables del sistema (binarios,
scripts shell). Cuando se da un comando, el shell busca automticamente los ejecutables en los
directorios listados en esta variable, por orden de lista.

[nicolas]$ echo $PATH


/usr/local/bin:/bin:/usr/bin:/usr/X11R6/bin:/usr/games:/home/
nicolas/bin
Para agregar un directorio a esta lista, se usa la sintaxis siguiente:

PATH=$PATH:/nuevo_directorio

$PS1
ste es el smbolo del sistema principal, visto desde la lnea de comandos:

[nicolas]$ echo $PS1


[\u]$
[nicolas]$ PS1=[\u@\h \W]$
[nicolas@mandrake tmp]$
El prompt del shell Bash puede estar compuesto por secuencias de caracteres que representan
diversas informaciones; el uso de apstrofes es necesario para asignar esta variable. Las principales
secuencias de caracteres son:
\a

Emite un bip al mostrar el smbolo del sistema.

\d

Muestra la fecha.

\h

Muestra el nombre del equipo.

\H

Muestra el nombre completo del equipo (con el nombre de dominio).

\t

Muestra la hora actual.

\u

Muestra el nombre del usuario conectado.

\w

Muestra la ruta del directorio actual.

http://www.eni-training.com/client_net/mediabook.aspx?idR=72872

6/7

25/4/2014

ENI Training - Libro online

\W

Muestra el nombre del directorio actual.

$PS2
Esta variable representa el smbolo del sistema secundario que se muestra cuando el shell espera el
resto de la entrada de un comando:

[nicolas]$ echo $PS2


>
[nicolas]$ echo "no
> vale"
no
vale

$PWD
Directorio actual donde se encuentra el usuario. Su valor equivale al resultado del comando pwd:

[nicolas]$ echo $PWD


/home/nicolas
[nicolas]$ pwd
/home/nicolas

$TMOUT
Si esta variable de entorno se inicia con un valor numrico distinto de cero, el shell se desconecta
automticamente al cabo del nmero de segundos indicado aqu, en caso de inactividad por parte del
usuario.
Al igual que un protector de pantalla con contrasea, esto evita que un usuario deje su sesin
abierta inadvertidamente.

http://www.eni-training.com/client_net/mediabook.aspx?idR=72872

7/7

25/4/2014

ENI Training - Libro online

Caracteres genricos
Los caracteres genricos son caracteres especiales dedicados a la escritura de motivos en los nombres
de archivo.
Permiten efectuar una bsqueda segn un motivo por los nombres de archivo presentes en el directorio
actual.
Los ejemplos de este apartado se basan en un directorio con los archivos siguientes:

[nicolas]$ ls -a
. banco azul
.. blanco ejemplos

arch1 arch2.4
arch2 arch2.7

.os
rosado
redonda rojo

El asterisco: *
Cuando el Bash encuentra este carcter en la lnea de comandos, lo sustituye por una cadena de
caracteres (que puede ser de longitud nula) para enumerar todos los nombres de archivo que
corresponden al motivo en el directorio actual.
As, el motivo r*o se reemplaza por todos los nombres de archivo que empiezan por el carcter r y
terminan con el carcter o:

[nicolas]$ ls r*o
rosado rojo
El signo * reemplaza cualquier carcter en el motivo, excepto el . (punto) en primera posicin en el
nombre de archivo; por ejemplo, el motivo *scorresponde al archivo ejemplos, pero no al archivo .os:

[nicolas]$ ls *s
ejemplos
La exclusin del primer punto por el carcter genrico *evita la supresin de archivos ocultos
con el comando rm *; el objetivo de los nombres de archivo que empiezan por un punto es
precisamente ocultar los archivos de los que uno no se quiere preocupar (pero sin suprimirlos).

Un motivo puede estar compuesto por varios caracteres genricos; repitiendo el asterisco, se obtiene,
por ejemplo, *e*que concuerda con todos los archivos con al menos una een su nombre:

[nicolas]$ ls *e*
ejemplos redonda
Finalmente, si el shell no encuentra correspondencias con el motivo entre los nombres de archivo
presentes en el directorio actual, dicho motivo se transmite tal cual al comando:

[nicolas]$ ls *zork
ls: *zork: No such file or directory
En este ltimo ejemplo, ningn nombre de archivo se corresponde con el motivo *zork; el
comando lsrecibe el motivo como argumento y lo devuelve en su mensaje de error.

http://www.eni-training.com/client_net/mediabook.aspx?idR=72873

1/5

25/4/2014

ENI Training - Libro online

Esta observacin es vlida tambin para los caracteres genricos siguientes.

El signo de interrogacin: ?
Como el signo *, el shell sustituye el carcter genrico ? por cualquier carcter, excepto el punto, al
principio de un nombre de archivo. A diferencia del asterisco, el signo de interrogacin se reemplaza por
un carcter (y slo uno), y no por una cadena de cualquier longitud.
As, el motivo ro?ocorresponde a todos los nombres de archivo de exactamente cuatro caracteres que
empiezan por roy terminan por o:

[nicolas]$ ls ro?o
rojo
De nuevo, este carcter genrico puede combinarse con otros en el mismo motivo:

?a?

Nombre de archivo de tres letras con una aen segunda posicin.

*a?

Nombre de archivo que presenta una aen penltima posicin.

??a*b?

Nombre de archivo que presenta una aen tercera posicin y una ben
penltima posicin.

Los corchetes: [ ]
La sintaxis [lista_de_caracteres] en un motivo representa un carcter (y slo uno) entre los
propuestos en la lista. Por ejemplo, [abc]se reemplaza por una a, una bo una c.
Todo carcter situado entre los corchetes forma parte de la lista de posibles caracteres; no hay,
pues, espacios entre los corchetes, a menos que el espacio sea un carcter posible de la lista.

Para listar todos los archivos cuyo nombre contiene una o o una l en segunda posicin, se usa el
motivo ?[ol]*:

[nicolas]$ ls ?[ol]*
rosado rojo blanco
Es posible simplificar listas de caracteres consecutivos (segn el orden de la tabla ASCII) separando el
primero y el ltimo carcter de la lista con un - (guin). La sintaxis [b-e]equivale a [bcde]:

[nicolas]$ ls [b-e]*
banco blanco ejemplos
Para especificar el carcter - como elemento de la lista, se inserta al principio o al fin de la lista:
[ab-]corresponde a a, a bo a -.

Al ser las minsculas y las maysculas distintas en Linux, para representar todas las letras posibles del
alfabeto en un nombre de archivo, se usa la sintaxis [a-zA-Z].
Si el primer carcter de la lista es un signo de exclamacin !o un acento circunflejo , la correspondencia
http://www.eni-training.com/client_net/mediabook.aspx?idR=72873

2/5

25/4/2014

ENI Training - Libro online

se hace con cualquier carcter que no est en la lista; para listar todos los archivos cuyo nombre no
empiece por a, ni par un r:

[nicolas]$ ls [!ar]*
banco blanco ejemplos
[nicolas]$ ls [ar]*
banco blanco ejemplos
Para especificar el carcter !o como elemento de la lista, se inserta en cualquier lugar de la
lista salvo al principio: [a!b]corresponde a a, a !o a b.

Finalmente, existen ciertas clases de caracteres predefinidas. Sus nombres son bastante explcitos:
[:alpha:], [:digit:], ... por ejemplo, [[:alnum:]]corresponde a [0-9A-Za-z], con la diferencia de
que el ltimo caso depende de la codificacin ASCII, mientras que el primero incluye todas las letras del
idioma configurado en el sistema.
Por ejemplo, los caracteres acentuados forman parte de la clase [:alnum:] en espaol, pero no en
lenguaje internacional C ANSI:

[nicolas]$ ls
espacio satlite
[nicolas]$ echo $LANG
sp_SP
[nicolas]$ ls [[:alnum:]]*
espacio satlite
[nicolas]$ LANG=C
[nicolas]$ ls [[:alnum:]]*
espacio
Los corchetes en los nombres de clases forman parte integral del nombre simblico; deben
aadirse, pues, a los corchetes que enmarcan la lista.

Las principales clases son:

[:alnum:]
Corresponde a los caracteres alfabticos y numricos. Equivale a [A-Za-z0-9].

[:alpha:]
Corresponde a los caracteres alfabticos. Equivale a [A-Za-z].

[:digit:]
Corresponde a las cifras (decimales). Equivale a [0-9].

[:graph:]
(caracteres grficos visibles). Corresponde a los caracteres comprendidos entre ASCII 33 y
ASCII 126. Es idntico a [:print:], presentado anteriormente, pero excluye el carcter
espacio.

http://www.eni-training.com/client_net/mediabook.aspx?idR=72873

3/5

25/4/2014

ENI Training - Libro online

[:lower:]
Corresponde a los caracteres alfabticos en minscula. Equivale a [a-z].

[:print:]
(caracteres imprimibles). Corresponde a los caracteres comprendidos entre ASCII 32 y ASCII
126. Equivale a [:graph:], presentado anteriormente, pero se aade el carcter espacio.

[:space:]
Corresponde a cualquier espacio en blanco (espacio y tabulacin horizontal).

[:upper:]
Corresponde a cualquier carcter alfabtico en maysculas. Equivale a [A-Z].

[:xdigit:]
Corresponde a las cifras hexadecimales. Equivale a [0-9A-Fa-f].

Para todos los nombres de archivo cuyo ltimo carcter es una cifra, se obtiene:

[nicolas]$ ls *[[:digit:]]
arch1 arch2 arch2.4 arch2.7

Las llaves: {}
A la manera de los corchetes que ya hemos visto para la creacin de listas de caracteres, las llaves
permiten especificar listas de motivos separadas por una coma en un motivo de reemplazo. La
sintaxis {abc,def}se reemplaza por la cadena abco la cadena def.
Por ejemplo, {az,ro}*corresponde a todos los nombres de archivo que empiezan por la cadena azo la
cadena ro:

[nicolas]$ ls {az,ro}*
azul rosado rojo
Las cadenas de caracteres presentes entre llaves pueden ser, a su vez, motivos compuestos de
caracteres genricos:

[nicolas]$ ls {*ro[sj]*,?a*}
banco rosado rojo

Operadores de correspondencia extendida


Si la opcin extglobdel shell se ha activado con el comando shopt, se reconocen varios operadores de
correspondencia extendida. En la descripcin siguiente, una "lista_motivo" es una lista de uno o ms
motivos separados por |. Los motivos compuestos se indican entre parntesis y van precedidos por un
operador que define el nmero de instancias:
http://www.eni-training.com/client_net/mediabook.aspx?idR=72873

4/5

25/4/2014

ENI Training - Libro online

?(lista_motivo)
Corresponde a cero o una instancia de los motivos indicados.

*(lista_motivo)
Corresponde a cero o ms instancias de los motivos indicados.

+(lista_motivo)
Corresponde a una o ms instancias de los motivos indicados.

@(lista_motivo)
Corresponde a exactamente una instancia de los motivos indicados.

!(lista_motivo)
Corresponde a todo salvo a los motivos indicados.

Por ejemplo, +([[:digit:]])*corresponde a todos los archivos cuyo nombre empieza por al menos
una cifra.

http://www.eni-training.com/client_net/mediabook.aspx?idR=72873

5/5

25/4/2014

ENI Training - Libro online

Caracteres de cita
Los caracteres de cita se utilizan para modificar la interpretacin del shell de otros caracteres. As, un carcter especial
puede interpretarse literalmente, y no de forma simblica.
Esto permite que ciertos programas y utilidades reinterpreten o extiendan los caracteres especiales pasados en la lnea
de comandos sin que los interprete el propio shell.
Los comandos grepy find,descritos ms adelante, usan en particular caracteres de cita.

Los apstrofes:
El shell ignora todos los caracteres especiales escritos entre apstrofes.
Por ejemplo:

[nicolas]$ echo variable $HOME y asterisco *


variable /home/nicolas y asterisco banco blanco azul ejemplos arch1 arch2 arch2.4 arch2.7 redonda rosado rojo
[nicolas]$ echo variable $HOME y asterisco *
variable $HOME y asterisco *

Las comillas: "


Como ocurre con los apstrofes, todos los caracteres especiales entre comillas se ignoran, exceptuando $, ` (acento
abierto) y \:

[nicolas]$ echo "variable $HOME y asterisco *"


variable /home/nicolas y asterisco *

La barra invertida: \
Todo carcter que sigue a la barra invertida pierde su significado especial:

[nicolas]$ echo \variable \$HOME y asterisco \*


variable $HOME y asterisco *

La
barra
invertida
no
produce ningn
efecto
si
el

carcter siguiente no es un carcter especial.


El uso de los caracteres de cita permite trabajar con archivos que tienen nombres poco convencionales. Una vez creados,
hay que usarlos con mucha prudencia, especialmente a la hora de borrar; as:

[nicolas]$ ls
banco blanco azul ejemplos arch1 arch2 arch2.4 arch2.7 redonda
rosado rojo
[nicolas]$ touch \* "dos palabras"
[nicolas]$ ls
*
blanco dos palabras arch1 arch2.4 redonda rojo
banco azul ejemplos arch2 arch2.7 rosado
[nicolas]$ ls *
*
blanco dos palabras arch1 arch2.4 redonda rojo
banco azul ejemplos arch2 arch2.7 rosado
[nicolas]$ ls *
[nicolas]$ ls dos palabras
ls: dos: No such file or directory
ls: palabras: No such file or directory
[nicolas]$ ls dos palabras
dos palabras
[nicolas]$ ls dos\ palabras
dos palabras
[nicolas]$ rm *
[nicolas]$ ls
http://www.eni-training.com/client_net/mediabook.aspx?idR=72874

Finalmente,
estos
caracteres
de
cita inhiben el
significado de la

1/2

25/4/2014

ENI Training - Libro online

[nicolas]$
tecla [Intro] que caracteriza el fin del comando; por ello se obtiene la presentacin del prompt secundario $PS2cuando
falta una comilla o un apstrofe de cierre, o bien cuando se coloca una barra invertida al final de la lnea:
[nicolas]$ echo "va
> le"
va
le
[nicolas]$ ec\
> ho v\
> al\
>e
vale

http://www.eni-training.com/client_net/mediabook.aspx?idR=72874

2/2

25/4/2014

ENI Training - Libro online

Redirecciones
1. Descriptores de archivos
Cualquier proceso ejecutado en Linux se asocia a tres descriptores de archivos que permiten
administrar las entradas, las salidas y los errores estndar.
Se llama descriptor de archivo a un puntero hacia un archivo. Un programa que accede a un
archivo para leer o escribir en l datos, primero tiene que asociar (mediante una llamada al
sistema) un descriptor de archivo al archivo; a continuacin, usa el descriptor como punto de
entrada (lectura) o de salida (escritura) para los datos que debe tratar.

Se llama "entradas" a los parmetros tratados por el proceso, y "salidas", a los resultados obtenidos.
Los "errores" corresponden a un resultado proveniente de un error de tratamiento por parte del
proceso. Los tres descriptores de archivo correspondientes tambin se identifican por un nmero: 0
para la entrada, 1 para la salida y 2 para el error:

Por ejemplo, si se considera la operacin "8 dividido por 2", un proceso que efecte este clculo
presentar en entrada la operacin que se debe realizar, "8/2", y en salida el resultado, "4":

Si ahora se da la operacin "5/0" al mismo proceso, devolver en error un mensaje que indica que no
se permite una divisin por cero:

Los dispositivos en Linux se representan por archivos en el directorio /dev, y los tres descriptores de
archivo asociados de modo predeterminado a un proceso son:
http://www.eni-training.com/client_net/mediabook.aspx?idR=72875

1/8

25/4/2014

ENI Training - Libro online

el teclado como entrada estndar para que el usuario pueda escribir los datos y parmetros
que se deben tratar;
el terminal en salida estndar para mostrar los resultados del comando;
el terminal como error estndar para que el usuario sea informado de que se ha producido un
error de tratamiento.
Estos descriptores pueden redefinirse; se llama a esta operacin "redireccin".

2. Redireccin de la entrada estndar


Para redirigir la entrada estndar de un proceso de modo que no trate los datos desde el teclado, sino
desde el contenido de un archivo, se usa el carcter < seguido del nombre del nuevo archivo al que
debe apuntar el descriptor de archivo de entrada.
La entrada de un comando finaliza cuando todos los datos del archivo correspondiente se han
ledo; cuando la entrada es el teclado (predeterminado, sin redireccin), se puede notificar el
fin de la entrada enviando el carcter no imprimible EOF (End Of File). Hay que pulsar la
combinacin de teclas [Ctrl]+[d] en una lnea vaca para transmitir este carcter al proceso con el
fin de que pueda terminar su tratamiento.

Para el ejemplo siguiente, el comando wc -que se ha estudiado en un captulo anterior- debe


redefinirse primero ms precisamente:
Seguido de uno o ms argumentos, el comando wcdevuelve en su salida el nmero de lneas,
palabras y caracteres contenidos en cada archivo.
Sin argumentos, el comando wc muestra en la salida el nmero de lneas, palabras y
caracteres recibidos en la entrada.
Este comando puede emplearse, pues, de diversas maneras:

[nicolas]$ wc
esta frase se escribe desde el teclado
y el comando slo finalizar cuando
reciba el carcter de fin de archivo (EOF)
mediante la combinacin de teclas Ctrl + d
pulsar Ctrl + d
4
29
162
[nicolas]$ wc /etc/passwd
30
43
1340 /etc/passwd
[nicolas]$ wc < /etc/passwd
30
43
1340
Los espacios alrededor del signo de redireccin en la lnea de comandos no son obligatorios,
pero mejoran la legibilidad. Esto vale tambin para las redirecciones de la salida y error.

Una redireccin no se considera como un argumento del comando; el shell es quien efecta las
redirecciones de los descriptores de archivo previamente al interpretar la lnea de comandos. En el
ejemplo anterior, el nombre del archivo no se muestra en la redireccin porque el comando wc no
conoce el archivo /etc/passwd; desde el punto de vista del comando, la primera y la tercera llamada al
comando son equivalentes: los datos que se deben tratar se encuentran en la entrada del proceso.

http://www.eni-training.com/client_net/mediabook.aspx?idR=72875

2/8

25/4/2014

ENI Training - Libro online

3. Redireccin de la salida estndar


La redireccin de la salida estndar permite escribir el resultado de un comando en un archivo en lugar
de mostrarlo en la pantalla. Para ello, hay que colocar al final de la lnea de comandos el
carcter > seguido del nombre de archivo en el que se escribir el resultado del comando:

[nicolas]$ echo vale


vale
[nicolas]$ echo vale > archtest
[nicolas]$ cat archtest
vale
El archivo de redireccin se crea si no existe. Si existe, su contenido lo borra la redireccin. Para aadir
la salida de un comando a un archivo sin borrar su contenido, se duplica el carcter > en la redireccin:

[nicolas]$ who > archout


[nicolas]$ date > archout
[nicolas]$ cat archout
lun jun 28 22:05:49 CEST 2004
[nicolas]$ who > archout
[nicolas]$ date >> archout
[nicolas]$ cat archout
francisco vc/1
Jun 28 22:05
nicolas
pts/0
Jun 28 22:04 (192.168.200.1)
lun jun 28 22:05:58 CEST 2004
Si el signo de redireccin se duplica y el archivo especificado de salida no existe, ste se crea
como en una redireccin simple.

4. Redireccin del error estndar


La redireccin del error estndar se basa en el mismo principio que los dos anteriores; en este caso, se
usa 2>para introducir el archivo de destino de los mensajes de error.
A menudo es mejor suprimir la presentacin de los mensajes de error conocidos. Por ejemplo, para
listar los archivos presentes en el sistema, hemos visto que el comando ls -R /recorre todo el rbol.
Sin embargo, aparecen mensajes de error porque el usuario normal no tiene acceso a ciertos
directorios; entonces se redirige la salida de errores al archivo especial /dev/nullen el que todos los
datos escritos se destruyen automticamente:

[nicolas]$ ls -R / 2>/dev/null
Como en la redireccin de salida, hay que recordar que debe duplicarse el signo > para agregar los
datos enviados por el comando al final del archivo sin borrar su contenido:

[nicolas]$ ls glurp 2> archerr


[nicolas]$ vale 2> archerr
[nicolas]$ cat archerr
-bash: vale: command not found
[nicolas]$ ls glurp 2> archerr
[nicolas]$ vale 2>> archerr
[nicolas]$ cat archerr
ls: glurp: No such file or directory
http://www.eni-training.com/client_net/mediabook.aspx?idR=72875

3/8

25/4/2014

ENI Training - Libro online

-bash: vale: command not found

5. Redirecciones combinadas
Se puede redirigir la entrada, la salida y el error simultneamente:
comando < archin > archout 2> archerr

[nicolas]$ ls
blanco azul amarillo marrn out rojo verde violeta
[nicolas]$ ls azul verde naranja rojo > archout 2> archerr
[nicolas]$ cat archout
azul
rojo
verde
[nicolas]$ cat archerr
ls: naranja: No such file or directory
La salida del comando lses ligeramente distinta cuando est redirigida: los nombres listados
estn presentes en lneas distintas. Esta modificacin se justifica por la simplificacin del
tratamiento de este tipo de datos: una lnea equivale a un archivo listado.

Por el contrario, dos descriptores de archivo diferentes no pueden apuntar simultneamente a un solo
archivo, ni siquiera para redirigir todas las salidas estndar (salida + error); esto es debido al uso de
memorias intermedias de escritura en la gestin de archivos por parte del ncleo de Linux.
El resultado puede ser inesperado, como en este ejemplo en el que el mensaje de error ha sido
destruido parcialmente por la lista de archivos:

[nicolas]$ ls azul verde naranja rojo


ls: naranja: No such file or directory
azul rojo verde
[nicolas]$ ls azul verde naranja rojo > archout 2> archout
[nicolas]$ cat archout
azul
rojo
verde
No such file or directory
La solucin consiste en redirigir uno de los descriptores de archivo a otro previamente redirigido a un
archivo. La sintaxis utilizada es n>&mdonde nes el nmero del descriptor para redirigir y mel nmero
de aquel al que hay que enviar los datos:

[nicolas]$ ls azul verde naranja rojo > archout 2>&1


[nicolas]$ cat archout
ls: naranja: No such file or directory
azul
rojo
verde
O bien, de forma equivalente:

[nicolas]$ ls azul verde naranja rojo 2> archout 1>&2


[nicolas]$ cat archout
http://www.eni-training.com/client_net/mediabook.aspx?idR=72875

4/8

25/4/2014

ENI Training - Libro online

ls: naranja: No such file or directory


azul
rojo
verde
Sin embargo, el shell interpreta las redirecciones en la lnea de comandos de izquierda a derecha. Su
orden de escritura es, pues, importante, como se puede constatar en el ejemplo siguiente: el error se
ha redirigido a la salida, la cual an no haba sido redirigida al archivo ficout:
[nicolas]$ ls azul verde naranja rojo 2>&1 > archout
ls: naranja: No such file or directory
[nicolas]$ cat archout
azul
rojo
verde

6. Ejemplos de redirecciones
Como en el comando wc, es necesario redefinir el comando catde forma ms precisa para comprender
los ejemplos siguientes:
Seguido de uno o ms argumentos, el comando cat devuelve en la salida el contenido de
cada archivo.
Sin argumentos, el comando catmuestra en la salida los datos recibidos en su entrada.
La mayora de los comandos de tratamiento de archivos funcionan con el mismo principio: si un
archivo se pasa como argumento, el tratamiento se efecta sobre su contenido; si no, se trata
la entrada del proceso.

Sin argumentos ni redireccin, catrepite las lneas entradas por teclado:

[nicolas]$ cat
las lneas se muestran dos veces
las lneas se muestran dos veces
porque la entrada por teclado se muestra en el terminal
porque la entrada por teclado se muestra en el terminal
al igual que la salida del comando
al igual que la salida del comando
pulsar Ctrl + d
Sin argumentos y con la salida redirigida, catpermite crear pequeos archivos de texto rpidamente:

[nicolas]$ cat > arch1


esta forma de crear un archivo de texto con algunas
lneas se llama tambin "el editor del experto" porque no es
posible modificar una lnea una vez validada.
pulsar Ctrl + d
Sin redireccin con un nombre de archivo como argumento, o sin argumentos y con una redireccin de
entrada, catmuestra el contenido de un archivo:

[nicolas]$ cat arch1


esta forma de crear un archivo de texto con algunas
http://www.eni-training.com/client_net/mediabook.aspx?idR=72875

5/8

25/4/2014

ENI Training - Libro online

lneas se llama tambin "el editor del experto" porque no es


posible modificar una lnea una vez validada.
[nicolas]$ cat < arch1
esta forma de crear un archivo de texto con algunas
lneas se llama tambin "el editor del experto" porque no es
posible modificar una lnea una vez validada.
Sin argumentos y con redirecciones de entrada y salida, catpermite realizar una copia de un archivo:

[nicolas]$ cat < arch1 > arch2


[nicolas]$ cat arch2
esta forma de crear un archivo de texto con algunas
lneas se llama tambin "el editor del experto" porque no es
posible modificar una lnea una vez validada.
Con varios argumentos y una redireccin de salida, catconcatena los archivos de los argumentos en el
archivo de la redireccin:

[nicolas]$ cat > arch3


aaaaaaaaaaaaa
pulsar Ctrl + d
[nicolas]$ cat > arch4
bbbbbbbbbbbbb
pulsar Ctrl + d
[nicolas]$ cat arch3 arch4 > arch5
[nicolas]$ cat arch5
aaaaaaaaaaaaa
bbbbbbbbbbbbb
Todos estos ejemplos demuestran que, a partir del simple comando cat-que muestra en su salida el
contenido de archivos pasados como argumentos o su entrada a falta de argumentos- y el uso de las
redirecciones del shell, es posible implementar:
el eco de la salida del teclado en el terminal;
la visualizacin de archivos;
el editor bsico de archivos de texto;
la copia de archivos;
la concatenacin de archivos.
Los dems comandos de Linux pueden emplearse basndose en el mismo principio.

7. Los tubos
Mediante las redirecciones y comandos ya estudiados, ahora resulta fcil, por ejemplo, contar el
nmero de archivos presentes en el directorio siguiente:

[nicolas]$ ls
blanco azul amarillo marrn rojo verde violeta
El comando lspuede mostrar la lista de archivos presentes en el directorio en su salida, mientras que
el comando wc -lpuede contar el nmero de lneas pasadas en su entrada.

http://www.eni-training.com/client_net/mediabook.aspx?idR=72875

6/8

25/4/2014

ENI Training - Libro online

[nicolas]$ ls > /tmp/lista


[nicolas]$ wc -l < /tmp/lista
7
[nicolas]$ rm /tmp/lista
rm: borrar archivo regular `/tmp/lista? y
Respecto a los descriptores de archivo, los comandos lsy wcse usan as:

La idea aqu es utilizar el archivo temporal /tmp/listaque se borra una vez obtenido el resultado.
Esto se puede hacer mediante los "tubos" ("pipes" en ingls), que permiten enviar los datos de la
salida estndar de un proceso a la entrada estndar de un segundo proceso.
La sintaxis utilizada para materializar un tubo es la barra vertical | obtenida mediante la combinacin
de teclas [AltGr]+[1] en un teclado espaol:

[nicolas]$ ls | wc -l
7
El resultado se obtiene, en esta ocasin, con una sola lnea de comandos y un tubo:

Se pueden encadenar varios tubos en la misma lnea de comandos, pero slo el ltimo comando del
"pipeline" muestra un resultado en su salida estndar.
El comando tee permite consultar y guardar el resultado de un comando intermedio sin romper la
sucesin de tubos. Duplica los datos que recibe en la entrada, por una parte en su salida estndar y
por otra, en el archivo pasado como argumento.
Por ejemplo:

[nicolas]$ ls | tee /tmp/lista | wc -l


7
[nicolas]$ cat /tmp/lista
blanco
azul
amarillo
marrn
rojo
verde
violeta
Esquemticamente, a nivel de las entradas/salidas:

http://www.eni-training.com/client_net/mediabook.aspx?idR=72875

7/8

25/4/2014

http://www.eni-training.com/client_net/mediabook.aspx?idR=72875

ENI Training - Libro online

8/8

25/4/2014

ENI Training - Libro online

Alias
El conjunto de redirecciones vistas en este captulo muestra la lgica de Unix en la disponibilidad de
herramientas atmicas (dedicadas a una sola funcin). stas pueden asociarse para formar comandos
ms complejos y adaptados a las necesidades del usuario.
Sin embargo, ciertas lneas de comandos pueden alargarse rpidamente y un uso frecuente de esta
sintaxis pronto puede resultar desagradable. Pero es posible simplificar el trabajo del usuario definiendo
alias de comandos.
Un alias est compuesto por un nombre (generalmente simple) que ser reemplazado por un comando
(generalmente complejo o largo).
La lista de alias existentes puede conseguirse ejecutando el comando aliassin argumentos:

[nicolas]$ alias
alias cd..=cd ..
alias cp=cp -i
alias d=ls
alias df=df -h -x supermount
alias du=du -h
alias kde=xinit /usr/bin/startkde
alias l=ls
alias la=ls -a
alias ll=ls -l
alias ls=ls -F --color=auto
alias lsd=ls -d */
alias mc=. /usr/share/mc/bin/mc-wrapper.sh
alias md=mkdir
alias mv=mv -i
alias p=cd -
alias rd=rmdir
alias rm=rm -i
alias s=cd ..
Se llama a un alias como a cualquier otro comando:

[nicolas]$ pwd
/home/nicolas
[nicolas]$ s
[nicolas]$ pwd
/home
La sintaxis de definicin de un nuevo alias es: alias nombre=comando.
El comando unaliaspermite suprimir un alias: unalias nombre.
Por ejemplo:

[nicolas]$ alias lw
-bash: alias: lw: not found
[nicolas]$ alias lw=ls | wc -l
[nicolas]$ alias lw
alias lw=ls | wc -l
[nicolas]$ lw
8
[nicolas]$ unalias lw
http://www.eni-training.com/client_net/mediabook.aspx?idR=72876

1/2

25/4/2014

ENI Training - Libro online

[nicolas]$ lw
-bash: lw: command not found
Si un alias tiene el mismo nombre que un comando, se interpreta el alias. Para forzar la ejecucin de un
comando y no de un posible alias, hay que escribir antes de su nombre el carcter \ o utilizar el
comando command:
[nicolas]$ alias pwd
-bash: alias: pwd: not found
[nicolas]$ pwd
/home/nicolas
[nicolas]$ alias pwd=echo directorio actual: $PWD
[nicolas]$ pwd
directorio actual: /home/nicolas
[nicolas]$ \pwd
/home/nicolas
[nicolas]$ command pwd
/home/nicolas
Se puede suprimir todos los alias con la opcin -adel comando unalias:

[nicolas]$ unalias -a
[nicolas]$ alias

http://www.eni-training.com/client_net/mediabook.aspx?idR=72876

2/2

25/4/2014

ENI Training - Libro online

Ejecucin de comandos
Los comandos escritos por el usuario pueden ser de diferentes naturalezas:
alias;
comando interno;
comando externo.

Comandos internos del shell


Se califican como internos los comandos integrados en el shell. Su ejecucin no genera subprocesos.
Los comandos internos se componen esencialmente de herramientas que permiten modificar el entorno del shell: cambio del directorio actual (cd), definicin de variables
(set, unset, etc.) y de alias (alias, unalias), estructuras de control (if, for, while, etc.), etc.
La
lista
exhaustiva
de
comandos
internos
incluidos
en
el
shell
Bash
es: :, ., alias, bg, bind, break,builtin, case, cd, command, continue, declare, dirs, disown, echo, enable, eval, exec, exit,export, fc, fg, for, getopts, hash, help
La pgina del manual de Bash (man bash) detalla los comandos internos que no se estudian en
esta obra.

Comandos externos
Los comandos externos agrupan todos los archivos ejecutables presentes en el sistema de archivos. Su ejecucin genera un proceso hijo del shell que ha interpretado el
comando.
El archivo binario o el script asociado a un comando debe estar presente en uno de los directorios listados por la variable de entorno $PATH. Si es preciso, el usuario
deber escribir la ruta (absoluta o relativa) del archivo para ejecutar el comando.
Si un comando externo tiene el mismo nombre que un comando interno del shell, se interpretar este ltimo. La redundancia de ciertos comandos internos y externos
permite que el usuario llame a las mismas herramientas desde un shell distinto de Bash si ste no posee dichas funcionalidades. Encontramos por
ejemplo /bin/echoy /bin/pwdcomo comandos externos.

1. type, whereis
El comando typepermite determinar la naturaleza de los comandos pasados como argumentos:

[nicolas]$ type echo ls cat


echo is a shell builtin
ls is aliased to `ls -F --color=auto
cat is /bin/cat

Cuando un mismo nombre se atribuye a un alias, un comando


interno y un comando externo, typeindica la interpretacin que
se har del comando:
En la misma lnea, el comando whereis permite localizar
rpidamente un comando externo y los archivos de ayuda y de
fuentes asociados si estn presentes en el sistema:

[nicolas]$ alias pwd=echo directorio actual: $PWD


[nicolas]$ ls /bin/pwd
/bin/pwd
[nicolas]$ pwd
directorio actual: /home/nicolas
[nicolas]$ type pwd
pwd is aliased to `echo directorio actual: $PWD
[nicolas]$ unalias pwd
[nicolas]$ type pwd
pwd is a shell builtin
[nicolas]$ pwd
/home/nicolas

[nicolas]$ whereis echo ls cat


echo: /bin/echo /usr/share/man/man1/echo.1.bz2 /usr/share/man/man3/
echo.3x.bz2
ls: /bin/ls /usr/share/man/man1/ls.1.bz2
cat: /bin/cat /usr/share/man/man1/cat.1.bz2
El comando whereisno indica, en ningn caso, si existe un alias o un comando interno con el
mismo nombre.

http://www.eni-training.com/client_net/mediabook.aspx?idR=72877

1/1

25/4/2014

ENI Training - Libro online

Sustitucin de comandos
La sustitucin de comandos consiste en recuperar la salida de un comando en la lnea de comandos. Las
salidas de comandos pueden utilizarse para la asignacin de una variable o como argumento de otro
comando.
El shell efecta las sustituciones de comandos antes de interpretar la lnea de comandos en su totalidad.
La sintaxis clsica de una sustitucin de comandos utiliza el apstrofe invertido (o acento abierto, o
"back quote") obtenido con la tecla [`]+[espacio] en un teclado espaol:

[nicolas]$ whoami
nicolas
[nicolas]$ echo "mi login es `whoami`"
mi login es nicolas
[nicolas]$ milogin=`whoami`
[nicolas]$ echo "mi login es $milogin"
mi login es nicolas
La ventaja de asignar la salida de un comando a una variable radica en poder reutilizar varias
veces el resultado evaluando una sola vez el comando.

La segunda sintaxis admitida para la sustitucin de comandos es $(). La ventaja de esta sintaxis reside
en poder anidar las sustituciones de comandos:

[nicolas]$ echo "contenido de mi directorio: $(ls /home/$(whoami))"


contenido de mi directorio: blanco
azul
amarillo
marrn
rojo
verde
violeta

http://www.eni-training.com/client_net/mediabook.aspx?idR=72878

1/1

25/4/2014

ENI Training - Libro online

Opciones del shell Bash


El comportamiento del shell Bash puede modificarse con la activacin de opciones.
La sintaxis general, para activar una opcin, es: set -o opcin. Para desactivar una opcin, utilice set
+o opcin.
Aunque parezca poco lgico -porque el signo menos es el carcter previsto inicialmente para
introducir las opciones de comandos en Unix- aqu se usa el + para la desactivacin.

El estado de las distintas opciones del shell puede visualizarse mediante el comando set -osolo:

[nicolas]$ set -o
allexport
off
braceexpand
on
emacs
on
errexit
off
hashall
on
histexpand
on
history
on
ignoreeof
off
interactive-comments
keyword
off
monitor
on
noclobber
off
noexec
off
noglob
off
nolog
off
notify
off
nounset
off
onecmd
off
physical
off
posix
off
privileged
off
verbose
off
vi
off
xtrace
off

on

Se describe a continuacin el significado de las opciones interesantes en el marco de esta obra.

allexport
El shell exporta automticamente toda variable creada o modificada sin emplear el comando export.
Esta opcin puede activarse tambin con el comando set -a.

emacs
La edicin de la lnea de comandos sigue el estilo del programa de edicin Emacs.

ignoreeof
Idntico a la definicin de la variable de entorno IGNOREEOF=10.

http://www.eni-training.com/client_net/mediabook.aspx?idR=72879

1/3

25/4/2014

ENI Training - Libro online

noclobber
Con esta opcin, el shell no borra un archivo existente en una redireccin simple; para forzarlo, hay que
emplear la sintaxis >|:

[nicolas]$ touch archtest


[nicolas]$ echo texto > archtest
[nicolas]$ set -o noclobber
[nicolas]$ echo texto > archtest
-bash: archtest: cannot overwrite existing file
[nicolas]$ echo texto >| archtest
Esta opcin puede activarse tambin con el comando set -C.

noglob
Desactiva la expansin de caracteres genricos:

[nicolas]$ echo *
blanco azul amarillo marrn rojo verde violeta
[nicolas]$ set -o noglob
[nicolas]$ echo *
*
Esta opcin puede activarse tambin con el comando set -f.

nounset
El shell considera las variables inexistentes como errores en la expansin de los parmetros. Si se
intenta desarrollar una variable inexistente, el shell muestra un mensaje de error:

[nicolas]$ echo $vale


[nicolas]$ set -o nounset
[nicolas]$ echo $vale
-bash: vale: unbound variable
Esta opcin puede activarse tambin con el comando set -u.

verbose
Muestra las lneas de comandos a medida que se leen; muy til para la depuracin de scripts del shell:

[nicolas]$ echo $PWD


/home/nicolas
[nicolas]$ set -o verbose
[nicolas]$ echo $PWD
echo $PWD
/home/nicolas
Esta opcin puede activarse tambin con el comando set -v.

vi
http://www.eni-training.com/client_net/mediabook.aspx?idR=72879

2/3

25/4/2014

ENI Training - Libro online

La edicin de la lnea de comandos sigue el estilo del programa de edicin Vi.

xtrace
Tras la expansin de cada comando simple, el shell muestra el valor de la variable de entorno PS4
seguida por el comando y sus argumentos desarrollados; como la opcin verbose, xtrace resulta muy til
para la depuracin de scripts del shell:

[nicolas]$ echo $PWD


/home/nicolas
[nicolas]$ set -o xtrace
[nicolas]$ echo $PWD
+ echo /home/nicolas
/home/nicolas
[nicolas]$ PS4=DEPURACION >>>
+ PS4= DEPURACION >>>
[nicolas]$ echo $PWD
DEPURACION >>> echo /home/nicolas
/home/nicolas
Esta opcin puede activarse tambin con el comando set -x.

http://www.eni-training.com/client_net/mediabook.aspx?idR=72879

3/3

25/4/2014

ENI Training - Libro online

Introduccin
Este captulo explica cmo automatizar la ejecucin de trabajos a partir de los elementos estudiados
anteriormente. Las funcionalidades abordadas permitirn al usuario crear sus propios scripts de shell,
programas desarrollados en lenguaje shell.
Adems, el lector podr comprender y personalizar los muchos scripts ya proporcionados con el sistema
Linux.

http://www.eni-training.com/client_net/mediabook.aspx?idR=72881

1/1

25/4/2014

ENI Training - Libro online

Scripts Shell
Un script Bash es un archivo de texto que contiene una serie de comandos como los ejecutados en la
lnea de comandos.
Toda lnea de comandos vlida puede ser objeto de un script de shell para un tratamiento por lotes
("batch"). Y viceversa, todo el cdigo escrito en un script Bash puede escribirse directamente en la lnea
de comandos.
En este ejemplo, el archivo de script se llama prog.sh:

[nicolas]$ cat prog.sh


date
whoami
var=12
echo $var

1. Llamada y ejecucin
Las modificaciones del entorno del shell que llama dependen de la forma como se llama al script shell.

bash prog.sh
La primera forma de llamar a un script shell consiste en lanzar un nuevo bashcon el nombre del script
como argumento. Este nuevo shell trata las instrucciones contenidas en el archivo como si se hubieran
escrito en el teclado.
De ello resulta la creacin de un subproceso bashque termina automticamente al finalizar la ejecucin
del script.

[nicolas]$ cat prog.sh


date
whoami
var=12
echo $var
[nicolas]$ echo $var
[nicolas]$ bash prog.sh
mi jun 30 06:40:40 CEST 2008
nicolas
12
[nicolas]$ echo $var
Toda modificacin del entorno -como el cambio de directorio o la definicin de variable- slo interviene
en el subshell creado temporalmente. No se modifica el shell inicial.
Se puede representar este tipo de script as:

El primer shell iniciado en un terminal (llamado shell de conexin) lleva como prefijo un guin en
http://www.eni-training.com/client_net/mediabook.aspx?idR=72882

1/5

25/4/2014

ENI Training - Libro online

la lista de procesos. Por esta razn, su nombre es -bashen el esquema anterior, mientras que el
subshell se llama bash.

El shell bash es un subproceso del shell de conexin -bash. Asimismo, los comandos
externos datey whoamison subprocesos del shell bashmientras que la asignacin de la variable vary
su visualizacin son comandos internos del shell y no generan subprocesos. Al final, el entorno del
shell-bashno se ha modificado y la variable varno est definida.

bash prog.sh
Esta forma de iniciar un script del shell utiliza implcitamente un subshell para ejecutar las instrucciones
contenidas en el archivo. El resultado de la ejecucin es el mismo que en la sintaxis anterior:

Por el contrario, si el nombre del script se trata como un comando en la lnea de comandos, es preciso:
que estn otorgados los permisos de ejecucin para el archivo (chmod u+x prog.sh por
ejemplo);
que el archivo se encuentre en un directorio listado por la variable de entorno $PATHo que
su ruta se precise en la lnea de comandos (con ./ por ejemplo, si se encuentra en el
directorio actual).
El shell llamado implcitamente para ejecutar el script es el shell predeterminado del usuario, esto es, el
Bash en Linux. Si el script lo ejecuta otro usuario que no tiene el Bash como shell predeterminado, el
script puede generar errores. Para imponer un intrprete y no otro, existe un comentario especial
(llamado shebang) que hay que colocar en la primera lnea del script #!seguido de la ruta al intrprete
utilizado. Se obtiene:

[nicolas]$ cat prog.sh


#!/bin/bash
date
whoami
var=12
echo $var
[nicolas]$ prog.sh
-bash: prog.sh: command not found
[nicolas]$ ./prog.sh
-bash: ./prog.sh: Permission denied
[nicolas]$ chmod u+x prog.sh
[nicolas]$ ./prog.sh
mer jun 30 08:06:33 CEST 2008
nicolas
12
[nicolas]$ echo $var

. prog.sh
El comando interno del shell . (punto) indica al bash actual que interprete las instrucciones contenidas
en el archivo pasado como argumento.
http://www.eni-training.com/client_net/mediabook.aspx?idR=72882

2/5

25/4/2014

ENI Training - Libro online

El comando .(punto) es idntico al comandointerno del shell source.

En este caso, el entorno del shell de conexin se modifica segn el cdigo del script que ejecuta:

[nicolas]$ cat prog.sh


date
whoami
var=12
echo $var
[nicolas]$ echo $var
[nicolas]$ . prog.sh
mi jun 30 07:47:38 CEST 2008
nicolas
12
[nicolas]$ echo $var
12
Esta llamada puede representarse as:

exec ./prog.sh
Cuando el shell encuentra el comando interno

exec, ejecuta el cdigo del comando pasado como

argumento en su lugar y termina al finalizar la ejecucin de ste.


En el caso de un script pasado como argumento, el shell Bash actual ejecuta las instrucciones
contenidas en el archivo y termina al finalizar el script:

execdebe ser un comando vlido, por lo que es necesario -como


./prog.sh- activar los permisos de ejecucin en el script e indicar su ruta.

El argumento del comando


en la sintaxis

2. Mtodos de trabajo
La escritura de scripts de shell, como la de programas en otros lenguajes, debe seguir ciertas reglas
para producir un cdigo ms transportable y de fcil mantenimiento.

http://www.eni-training.com/client_net/mediabook.aspx?idR=72882

3/5

25/4/2014

ENI Training - Libro online

Nombre de los scripts


Aunque es tentador llamar a los archivos s
cripto testcuando se empieza a escribir un script del
shell, no es recomendable reutilizar el nombre de un comando existente porque la llamada a este
nuevo programa en la lnea de comandos puede presentar problemas.
El comando script escribe en un archivo toda la informacin que aparece en el terminal:

nicolas]$ script
El script ha empezado, el archivo es typescript
[nicolas]$ pwd
/home/nicolas
[nicolas]$ echo vale
vale
[nicolas]$ exit
exit
Script completado, el archivo es typescript
[nicolas]$ cat typescript
El script ha empezado el vie 02 jul 2008 23:08:24 CEST
[nicolas]$ pwd
/home/nicolas
[nicolas]$ echo vale
vale
[nicolas]$ exit
exit
Script completado el vie 02 jul 2008 23:08:39 CEST
El comando test se estudia ms adelante en este captulo.
Puede ser interesante agregar la extensin .sh a los nombres de los scripts del shell. Esto permite
reconocer fcilmente el tipo de archivo. Por otra parte, cuando un archivo de este tipo se edita con VIM
(Vi IMproved), la aplicacin sintctica de color correspondiente al shell se activa automticamente.
Finalmente, es prudente crear los propios scripts del shell en el subdirectorio bin del directorio personal.
Este directorio suele estar presente en la lista de directorios de la variable $
PATH, lo que evita que el
usuario indique la ruta cuando llama al script que ha escrito:

[nicolas]$ echo $PATH


/usr/local/bin:/bin:/usr/bin:/usr/X11R6/bin:/usr/games:/home/nicolas/bin

Uso de varios terminales


Los scripts del shell se escriben en un lenguaje interpretado, por lo que resulta fcil probarlos a medida
que se escriben.
En lugar de editar el script, guardarlo, salir del editor, ejecutar el script y volver a iniciar el editor de
texto varias veces seguidas, una permutacin entre diferentes terminales aligerar el trabajo del
programador.
Linux proporciona, de modo predeterminado, seis terminales virtuales de texto y una consola
grfica en la que se pueden iniciar tantos emuladores de terminal como sea necesario.

Comentarios
http://www.eni-training.com/client_net/mediabook.aspx?idR=72882

4/5

25/4/2014

ENI Training - Libro online

Como en cualquier otro lenguaje de programacin, el uso de comentarios es muy recomendable.


Todo lo que va tras el carcter # en la lnea de comandos es ignorado por el Bash salvo, lgicamente, si
va protegido por un carcer de cita.
Es bueno escribir al principio del script una serie de comentarios que indiquen:
el nombre del autor;
la fecha de creacin o de modificacin, con una descripcin de los cambios realizados;
la descripcin general del script;
el uso o la manera de llamar al script con sus opciones y argumentos.

Opciones del shell y depuracin


Entre las opciones del shell estudiadas al final del captulo Shell Bash, es interesante agregar, al
principio del script del shell, durante la fase de depuracin:
set -o xtrace
set -o nounset
As, ser ms fcil rastrear la ejecucin del programa y se evitar llamar en el cdigo a variables sin
inicializar.

http://www.eni-training.com/client_net/mediabook.aspx?idR=72882

5/5

25/4/2014

ENI Training - Libro online

Cdigos de retorno
Todo comando en Linux devuelve un cdigo al terminar su ejecucin. Este cdigo asegura el correcto
desarrollo de la ejecucin: cero cuando el programa ha terminado correctamente, diferente de cero en
caso contrario.
El cdigo de retorno de un comando es un valor comprendido entre 0 y 255.

Un mismo comando puede devolver diferentes cdigos si su ejecucin termina mal, por diversas razones.
Por ejemplo, el comando cppuede fallar porque el archivo fuente no existe, los permisos de escritura del
directorio de destino son insuficientes, el sistema de archivos est saturado, etc.
La variable especial

$?contiene el cdigo de retorno del ltimo comando ejecutado:

[nicolas]$ pwd
/home/nicolas
[nicolas]$ echo $?
0
[nicolas]$ ls zorglub
ls: zorglub: No such file or directory
[nicolas]$ echo $?
1
[nicolas]$ echo $?
0
El ltimo cdigo de retorno es cero porque indica que el comando anterior (e
cho $?) se ha llevado a
cabo bien. Para reutilizar ulteriormente el cdigo de retorno de un programa, hay que guardarlo en una
variable:

[nicolas]$ ls zorglub
ls: zorglub: No such file or directory
[nicolas]$ cr=$?
[nicolas]$ pwd
/home/nicolas
[nicolas]$ echo $?
0
[nicolas]$ echo $cr
1
De modo predeterminado, el cdigo de retorno de un script del shell es el del ltimo comando ejecutado
antes de finalizar. Para cambiar este valor, se usa el comando e
xiten el script del shell, con el cdigo
de retorno deseado como argumento:

[nicolas]$ cat prog.sh


#!/bin/bash
pwd
[nicolas]$ ./prog.sh
/home/nicolas
[nicolas]$ echo $?
0
[nicolas]$ cat prog2.sh
#!/bin/bash
pwd
exit 2
http://www.eni-training.com/client_net/mediabook.aspx?idR=72883

1/2

25/4/2014

ENI Training - Libro online

[nicolas]$ ./prog2.sh
/home/nicolas
[nicolas]$ echo $?
2
Cuando el Bash encuentra el comando

http://www.eni-training.com/client_net/mediabook.aspx?idR=72883

exit, termina el script del shell en curso.

2/2

25/4/2014

ENI Training - Libro online

Encadenamiento de comandos
En lugar de escribir los comandos uno tras otro y esperar el fin de su ejecucin antes de ejecutar el
siguiente, es posible encadenar varios comandos en la misma lnea, separndolos por punto y coma:

[nicolas]$ date
mi jun 30 14:14:29 CEST 2004
[nicolas]$ ps
PID TTY
TIME CMD
4511 pts/1
00:00:00 bash
4613 pts/1
00:00:00 ps
[nicolas]$ date ; ps
mi jun 30 14:14:48 CEST 2004
PID TTY
TIME CMD
4511 pts/1
00:00:00 bash
4624 pts/1
00:00:00 ps
Estos encadenamientos son prcticos cuando deben lanzarse sucesivamente varios comandos largos, sin
que el usuario tenga que intervenir.
Los espacios alrededor del
legibilidad.

;en la lnea de comandos no son obligatorios, pero mejoran la

En el encadenamiento cmd1 ; cmd


2 ; cmd3, el comando cmd2 se ejecuta al terminar el
comando c
md1; igualmente, cmd3se inicia cuando cmd2ha terminado. Por el contrario, no hay ningn
vnculo entre estos tres comandos; es decir, la ejecucin de un comando no est condicionada por el
resultado (cdigo de retorno) del anterior.
En un script del shell, el punto y coma permite presentar varias instrucciones en una misma lnea.

1. Ejecucin condicional
Para ejecutar el comando

cmd2slo si el comando cmd1ha tenido xito, se separan ambos con&&:

[nicolas]$ pwd && ls zorglub


/home/nicolas
ls: zorglub: No such file or directory
[nicolas]$ ls zorglub && pwd
ls: zorglub: No such file or directory
En el caso contrario, para ejecutar el comando
se separan ambos con ||:

cmd2slo si el comando cmd1termina anormalmente,

[nicolas]$ pwd || ls zorglub


/home/nicolas
[nicolas]$ ls zorglub || pwd
ls: zorglub: No such file or directory
/home/nicolas
La ejecucin condicional se basa en el cdigo de retorno de los comandos.
http://www.eni-training.com/client_net/mediabook.aspx?idR=72884

1/2

25/4/2014

ENI Training - Libro online

Son tiles en fase de pruebas, los comandos


de retorno de cero y uno:

truey falseterminan respectivamente con un cdigo

[nicolas]$ true ; echo "ok"


ok
[nicolas]$ true && echo "ok"
ok
[nicolas]$ true || echo "ok"
[nicolas]$ false ; echo "ok"
ok
[nicolas]$ false && echo "ok"
[nicolas]$ false || echo "ok"
ok
[nicolas]$ true && false || echo "ko"
ok
[nicolas]$ true && false && echo "ok"
[nicolas]$ false || false && echo "ok"
[nicolas]$ false || false || echo "ok"
ok

http://www.eni-training.com/client_net/mediabook.aspx?idR=72884

2/2

25/4/2014

ENI Training - Libro online

Variables especiales
Ciertas variables son definidas por el shell y pueden ser referenciadas por el usuario en los scripts del
shell.

1. $$, $PPID
La variable especial $$contiene el PID del shell que se est ejecutando, mientras que
Process ID) da el PID de su proceso padre:

$PPID(Parent

[nicolas]$ cat prog.sh


#!/bin/bash
echo "mi PID: $$"
echo "mi PPID: $PPID"
[nicolas]$ echo $$
1223
[nicolas]$ echo $PPID
1222
[nicolas]$ ./prog.sh
mi PID: 1380
mi PPID: 1223
[nicolas]$ . ./prog.sh
mi PID: 1223
mi PPID: 1222

2. $0
La variable $
0contiene el nombre del script en curso de ejecucin tal como ha sido llamado en la lnea
de comandos:

[nicolas]$ cat prog.sh


#!/bin/bash
echo "mi nombre: $0"
[nicolas]$./prog.sh
mi nombre: ./prog.sh
[nicolas]$ /home/nicolas/prog.sh
mi nombre: /home/nicolas/prog.sh

3. $1, $2, $3, ...


Las variables $1, $2, $3, etc. representan los parmetros posicionales del shell, es decir, los
argumentos pasados al script en la lnea de comandos:

[nicolas]$ cat prog.sh


#!/bin/bash
echo "primer parmetro: $1"
echo "segundo parmetro: $2"
echo "tercer parmetro: $3"
[nicolas]$ ./prog.sh a b c
primer parmetro: a
segundo parmetro: b
tercer parmetro: c
[nicolas]$ ./prog.sh "a b" c
primer parmetro: a b
http://www.eni-training.com/client_net/mediabook.aspx?idR=72885

1/3

25/4/2014

ENI Training - Libro online

segundo parmetro: c
tercer parmetro:
Para referenciar los parmetros posicionales con un ndice superior a nueve, hay que usar las llaves con
objeto de evitar toda ambigedad sobre el nombre de la variable:

[nicolas]$ cat prog.sh


#!/bin/bash
echo "decimosegundo parmetro: $12"
echo "decimosegundo parmetro: ${12}"
[nicolas]$ ./prog.sh a b c d e f g h i j k l
decimosegundo parmetro: a2
decimosegundo parmetro: l

Comando shift
El comando s
hift n permite desplazar los parmetros posicionales n veces. Si no se precisa, se
considera igual a 1: $1toma el valor de $2, $2toma el valor de $3, y as sucesivamente:

[nicolas]$ cat prog.sh


#!/bin/bash
echo " p1=$1 p2=$2 p3=$3 p4=$4
echo "shift" ; shift
echo " p1=$1 p2=$2 p3=$3 p4=$4
echo "shift 2 " ; shift 2
echo " p1=$1 p2=$2 p3=$3 p4=$4
[nicolas]$ ./prog.sh a b c d e f
p1=a
p2=b
p3=c
p4=d
shift
p1=b
p2=c
p3=d
p4=e
shift 2
p1=d
p2=e
p3=f
p4=

p5=$5

p6=$6"

p5=$5

p6=$6"

p5=$5

p6=$6"

p5=e

p6=f

p5=f

p6=

p5=

p6=

4. $#
El nmero de parmetros posicionales se encuentra en la variable $#:

[nicolas]$ cat prog.sh


#!/bin/bash
echo "nmero de parmetros: $#"
[nicolas]$ ./prog.sh a b c
nmero de parmetros: 3
[nicolas]$ ./prog.sh "a b" c
nmero de parmetros: 2

5. $*, $@
Estas dos variables contienen el conjunto de parmetros posicionales pasados en la lnea de
comandos:

[nicolas]$ cat prog.sh


#!/bin/bash
echo "conjunto de parmetros con \$*: $*"
echo "conjunto de parmetros con \$@: $@"
[nicolas]$ ./prog.sh a b c
http://www.eni-training.com/client_net/mediabook.aspx?idR=72885

2/3

25/4/2014

ENI Training - Libro online

conjunto de parmetros con $*: a b c


conjunto de parmetros con $@: a b c
La diferencia entre estas dos variables escapa al marco de esta obra.

6. $LINENO
Esta variable es el nmero de lnea del script del shell donde aparece. Slo tiene sentido dentro del
script donde aparece y se usa especialmente en la fase de depuracin:

[nicolas]$ cat prog.sh


#!/bin/bash
echo "++++++++++ lnea nmero $LINENO ++++++++++"
echo "mi PID: $$"
echo "mi PPID: $PPID"
echo "++++++++++ lnea nmero $LINENO ++++++++++"
echo "primer parmetro: $1"
echo "segundo parmetro: $2"
echo "tercer parmetro: $3"
echo "++++++++++ lnea nmero $LINENO ++++++++++"
echo "decimosegundo parmetro: $12"
echo "decimosegundo parmetro: ${12}"
echo "++++++++++ lnea nmero $LINENO ++++++++++"
echo "nmero de parmetros: $#"
echo "++++++++++ lnea nmero $LINENO ++++++++++"
echo "conjunto de parmetros con \$*: $*"
echo "conjunto de parmetros con \$@: $@"
[nicolas]$ ./prog.sh a b c d e f g h i j k l
++++++++++ lnea nmero 2 ++++++++++
mi PID: 1455
mi PPID: 1223
++++++++++ lnea nmero 6 ++++++++++
primer parmetro: a
segundo parmetro: b
tercer parmetro: c
++++++++++ lnea nmero 11 ++++++++++
decimosegundo parmetro: a2
decimosegundo parmetro: l
++++++++++ lnea nmero 15 ++++++++++
nmero de parmetros: 12
++++++++++ lnea nmero 18 ++++++++++
conjunto de parmetros con $*: a b c d e f g h i j k l
conjunto de parmetros con $@: a b c d e f g h i j k l

http://www.eni-training.com/client_net/mediabook.aspx?idR=72885

3/3

25/4/2014

ENI Training - Libro online

Comando test
El comando testpermite efectuar una serie de pruebas sobre los archivos, las cadenas de caracteres,
los valores aritmticos y el entorno de usuario.
Este comando tiene un cdigo de retorno igual a cero cuando el test es positivo, y diferente de cero en
caso contrario; esto permite utilizarlo en encadenamientos de comandos con ejecucin condicional
(&&y ||) o en las estructuras de control que veremos ms adelante.
El comando test posee dos sintaxis: test expresin y [ expresin ], donde "expresin"
representa el test que se debe efectuar.
La segunda sintaxis ofrece una lectura ms fcil de las condiciones en las estructuras de control.

Los espacios detrs del corchete de apertura y antes del corchete de cierre son obligatorios en la
sintaxis [ expresin ]. En general, todos los elementos de sintaxis del comando test deben ir
separados por al menos un espacio.
El resto del apartado presenta los principales operadores que componen las expresiones de test del
comando.

1. Test de archivos
-f archivo
Devuelve verdadero (cdigo de retorno igual a cero) si el archivo es de tipo estndar (file):

[nicolas]$ test -f /etc/passwd


[nicolas]$ echo $?
0
[nicolas]$ [ -f /etc ] || echo "/etc no es un archivo estndar"
/etc no es un archivo estndar

-d archivo
Devuelve verdadero si el archivo es de tipo directorio (directory):

[nicolas]$ archivo=/etc
[nicolas]$ [ -d "$archivo" ] && echo "$archivo es un directorio"
/etc es un directorio
Cuando se comprueba el contenido de una variable, es preferible encerrarla entre comillas para
evitar un error en la sintaxis del comando testsi la variable no est definida.

-r archivo
Devuelve verdadero si el usuario tiene permiso para leer el archivo (read).

-w archivo
http://www.eni-training.com/client_net/mediabook.aspx?idR=72886

1/5

25/4/2014

ENI Training - Libro online

Devuelve verdadero si el usuario tiene permiso para modificar el archivo (write).

-x archivo
Devuelve verdadero si el usuario tiene permiso para ejecutar el archivo (o entrar en l en el caso de un
directorio) (execute).

-e archivo
Devuelve verdadero si el archivo existe (exist).

-s archivo
Devuelve verdadero si el archivo no est vaco (size):

[nicolas]$ touch arch1


[nicolas]$ echo "abc" > arch2
[nicolas]$ ls -l arch*
-rw-r--r-- 1 nicolas curso 0 jul 3 00:49 arch1
-rw-r--r-- 1 nicolas curso 4 jul 3 00:49 arch2
[nicolas]$ test -s arch1; echo $?
1
[nicolas]$ test -s arch2; echo $?
0

archivo1 -nt archivo2


Devuelve verdadero si archivo1es ms reciente que archivo2(newer than).

archivo1 -ot archivo2


Devuelve verdadero si archivo1es ms antiguo que archivo2(older than):

[nicolas]$ ls -l /etc/passwd /var/log/messages


-rw-r--r-- 1 root root 1364 may 26 23:08 /etc/passwd
-rw-r----- 1 root adm 29436 jul 3 00:01 /var/log/messages
[nicolas]$ [ /etc/passwd -nt /var/log/messages ]; echo $?
1
[nicolas]$ [ /etc/passwd -ot /var/log/messages ]; echo $?
0

archivo1 -ef archivo2


Devuelve verdadero si archivo1 es idntico a archivo2 (equal file), es decir, si los dos archivos
poseen el mismo inodo.

2. Test de cadenas de caracteres


-n cadena
Devuelve verdadero si la cadena de caracteres no es nula:

http://www.eni-training.com/client_net/mediabook.aspx?idR=72886

2/5

25/4/2014

ENI Training - Libro online

[nicolas]$ cadena=abc
[nicolas]$ [ -n $cadena ]; echo $?
0
[nicolas]$ [ -n "" ]; echo $?
1

-z cadena
Devuelve verdadero si la cadena de caracteres es nula:

[nicolas]$ cadena=abc
[nicolas]$ [ -z $cadena ]; echo $?
1
[nicolas]$ [ -z "" ]; echo $?
0

cadena1 = cadena2
Devuelve verdadero si las dos cadenas de caracteres son iguales:

[nicolas]$ test "abc" = "abc" ; echo $?


0
[nicolas]$ test "abc" = "Abc" ; echo $?
1
[nicolas]$ test "abc" = "abc " ; echo $?
1

cadena1 != cadena2
Devuelve verdadero si las dos cadenas de caracteres son diferentes.

3. Test aritmtico
valor1 -eq valor2
Devuelve verdadero si los dos valores aritmticos son iguales (equal):

[nicolas]$ valor1=32
[nicolas]$ [ $valor1 -eq 32 ]; echo $?
0
[nicolas]$ [ $valor1 -eq 23 ]; echo $?
1
Atencin: los tests de valores aritmticos se hacen con operadores de "texto" (-eq, -ne, -le,
etc.) mientras que los tests con cadenas de caracteres se realizan con operadores aritmticos
(=, !=).

valor1 -ne valor2


Devuelve verdadero si los dos valores aritmticos son diferentes (not equal).
http://www.eni-training.com/client_net/mediabook.aspx?idR=72886

3/5

25/4/2014

ENI Training - Libro online

valor1 -lt valor2


Devuelve verdadero si valor1 es estrictamente inferior a valor2 (lower than).

valor1 -le valor2


Devuelve verdadero si valor1 es inferior o igual a valor2 (lower or equal).

valor1 -gt valor2


Devuelve verdadero si valor1 es estrictamente superior a valor2 (greater than).

valor1 -ge valor2


Devuelve verdadero si valor1 es superior o igual a valor2 (greater or equal).

4. Test del entorno de usuario


-o opcin
Devuelve verdadero si la opcin del shell especificada est activa:

[nicolas]$ set -o
allexport
off
braceexpand
on
emacs
on
errexit
off
hashall
on
histexpand
on
history
on
ignoreeof
off
interactive-comments
on
keyword
off
monitor
on
noclobber
off
noexec
off
noglob
off
nolog
off
notify
off
nounset
off
onecmd
off
physical
off
posix
off
privileged
off
verbose
off
vi
off
xtrace
off
[nicolas]$ test -o emacs ; echo $?
0
[nicolas]$ test -o vi ; echo $?
1

5. Combinacin de expresiones
http://www.eni-training.com/client_net/mediabook.aspx?idR=72886

4/5

25/4/2014

ENI Training - Libro online

! expresin
Devuelve verdadero si la expresin es falsa, y viceversa:

[nicolas]$ [ -d /etc ] ; echo $?


0
[nicolas]$ [ ! -d /etc ] ; echo $?
1

expresin1 -a expresin2
-a(and) representa el "y lgico" entre expresin1 y expresin2:
[nicolas]$ valor=23
[nicolas]$ [ -d /etc -a $valor -eq 12 ] ; echo $?
1
El ejemplo anterior puede traducirse por: "si /etces un directorio Y la variable $valores igual a 12".

expresin1 -o expresin2
-o(or) representa el "o lgico" entre expresin1 y expresin2:
[nicolas]$ valor=23
[nicolas]$ [ -d /etc -o $valor -eq 12 ] ; echo $?
0
El ejemplo anterior puede traducirse por: "si /etces un directorio O la variable $valores igual a 12".

\( expresin \)
Se pueden agrupar varias expresiones para evitar toda ambigedad en el campo de aplicacin de !,ay -o.

[nicolas]$ valor=23
[nicolas]$ [ -d /etc -o $valor -eq 12 ] ; echo $?
0
[nicolas]$ [ ! \( -d /etc -o $valor -eq 12 \) ] ; echo $?
1
Las barras invertidas son necesarias para evitar una incorrecta interpretacin de los parntesis
por parte del shell.

http://www.eni-training.com/client_net/mediabook.aspx?idR=72886

5/5

25/4/2014

ENI Training - Libro online

Operaciones aritmticas
Como todo lenguaje de programacin, el Bash ofrece las herramientas necesarias para el clculo
aritmtico.
Para ello, existen principalmente los comandos expr, lety bc.

1. expr
expres un antiguo comando externo del Bash y se presenta aqu sucintamente porque se prefiere el
comando letque ofrece una sintaxis menos restrictiva.
Este comando devuelve en su salida estndar el resultado de las expresiones aritmticas pasadas
como argumentos. Su sintaxis es expr expresin.
Todos los elementos de la expresin deben ir separados por al menos un espacio, y ciertos operadores
aritmticos llevan como prefijo una barra invertida para evitar toda confusin con los caracteres
especiales del shell.

Operadores aritmticos
Los operadores aritmticos son:
+: suma
-: resta
\*: multiplicacin
/: divisin entera
%: resto de la divisin entera o mdulo
\( y \): parntesis
Se utiliza generalmente una sustitucin de comandos para asignar el resultado del comando expr a
una variable. Se obtiene por ejemplo:

[nicolas]$ expr 2 + 3
5
[nicolas]$ expr 2 - 3
-1
[nicolas]$ expr 2 + 3 \* 4
14
[nicolas]$ expr \( 2 + 3 \) \* 4
20
[nicolas]$ resultado=$(expr 9 / 2)
[nicolas]$ echo $resultado
4
[nicolas]$ expr $resultado % 3
1

Operadores lgicos
Los operadores lgicos son:
http://www.eni-training.com/client_net/mediabook.aspx?idR=72887

1/4

25/4/2014

ENI Training - Libro online

\|: o lgico
\&: y lgico
\<: estrictamente menor
\<=: menor o igual
\>: estrictamente mayor
\>=: mayor o igual
=: igual
!=: desigual
El lgebra de Boole (base matemtica del razonamiento lgico) define el valor 1 como "verdadero" y 0
como "falso"; por ello, cuando una expresin es verdadera, exprdevuelve 1 en su salida estndar con
el cdigo de retorno 0. Por el contrario, cuando una expresin es falsa, exprdevuelve 0 en su salida
estndar con el cdigo de retorno 1.
Por ejemplo:

[nicolas]$ expr 2 = 2
1
[nicolas]$ echo $?
0
[nicolas]$ expr 3 \> 6
0
[nicolas]$ echo $?
1
[nicolas]$ expr 1 \| 0
1
[nicolas]$ expr 1 \& 0
0
[nicolas]$ expr \( 2 != 3 \) \& \( 6 \<= 5 \)
0

2. let, (())
El comando let est integrado en el Bash y permite, como el anterior, efectuar operaciones
aritmticas.
Las ventajas de este comando respecto al anterior son:
Es ms rpido porque est integrado en el shell y no requiere la creacin de un subproceso.
Los operadores utilizados son los que se emplean habitualmente en matemticas y en otros
lenguajes de programacin.
No es necesario insertar un espacio entre cada elemento en una expresin ni preceder con
una barra invertida ciertos operadores como *, <y >.
El trabajo con variables se simplifica porque es posible asignar una variable dentro de una
expresin, y los nombres de variables no van precedidos de un $.
Existe un mayor nmero de operadores para el clculo aritmtico.
Como

en el caso del comando test, let puede llamarse de dos maneras: let
expresin o ((expresin)). Adems, es posible especificar varias expresiones separadas por una
coma en una misma llamada al comando.
http://www.eni-training.com/client_net/mediabook.aspx?idR=72887

2/4

25/4/2014

ENI Training - Libro online

Operadores aritmticos
Los operadores aritmticos son:
+: suma
-: resta
*: multiplicacin
/: divisin entera
%: resto de la divisin entera o mdulo
**: potencia
=: asignacin
Veamos distintos ejemplos de operaciones aritmticas realizadas mediante el comando let. La
sintaxis $(())se sustituye por el resultado de la expresin:

[nicolas]$ let var=2+3


[nicolas]$ echo $var
5
[nicolas]$ (( var = 2**3 ))
[nicolas]$ echo $var
8
[nicolas]$ echo $((9/4))
2

Operadores lgicos
Los operadores lgicos son:

&&: y lgico
||: o lgico
!: negacin lgica
<: estrictamente menor
<=: menor o igual
>: estrictamente mayor
>=: mayor o igual
==: igual
!=: desigual
Como en expr, el comando letes coherente con el lgebra de Boole:

[nicolas]$ (( var=1 && 0 ))


[nicolas]$ echo $?
1
[nicolas]$ echo $var
0

http://www.eni-training.com/client_net/mediabook.aspx?idR=72887

3/4

25/4/2014

ENI Training - Libro online

Otros operadores
El comando lettiene tambin otros operadores, como:

~: negacin binaria
>>: desplazamiento binario a la derecha
<<: desplazamiento binario a la izquierda
&: y binario
|: o binario
: o exclusivo binario
var++,

var--, ++var, --var: postincremento, postdecremento, preincremento y


predecremento de variable. Se usa generalmente en las expresiones de las estructuras de
control, como los bucles.
Este ejemplo muestra el postincremento de la variable $i; la comparacin > se evala antes del
incremento de la variable:

[nicolas]$ (( i=0 ))
[nicolas]$ (( i++ > 2 )); echo "cdigo de retorno: $? - variable i: $i"
cdigo de retorno: 1 - variable i: 1
[nicolas]$ (( i++ > 2 )); echo "cdigo de retorno: $? - variable i: $i"
cdigo de retorno: 1 - variable i: 2
[nicolas]$ (( i++ > 2 )); echo "cdigo de retorno: $? - variable i: $i"
cdigo de retorno: 1 - variable i: 3
[nicolas]$ (( i++ > 2 )); echo "cdigo de retorno: $? - variable i: $i"
cdigo de retorno: 0 - variable i: 4

http://www.eni-training.com/client_net/mediabook.aspx?idR=72887

4/4

25/4/2014

ENI Training - Libro online

Comando read
El comando read interrumpe la ejecucin del shell hasta que el usuario introduzca una cadena de
caracteres (aunque sea vaca) en su entrada estndar.
Las palabras que componen la cadena de caracteres escrita por el usuario se asignan a las variables
cuyos nombres se pasan como argumentos al comando read:

[nicolas]$ read a b c
123
[nicolas]$ echo $a ; echo $b ; echo $c
1
2
3
Si hay ms palabras que variables, la ltima variable contendr el fin de la cadena de caracteres. En el
caso inverso, las variables suplementarias sern nulas:

[nicolas]$ read a b c
1234
[nicolas]$ echo $a ; echo $b ; echo $c
1
2
34
[nicolas]$ read a b c
12
[nicolas]$ echo $a ; echo $b ; echo $c
1
2
Si se llama al comando read sin argumentos, la respuesta del usuario se asigna a la variable de
entorno $REPLY:

[nicolas]$ read
respuesta del usuario
[nicolas]$ echo $REPLY
respuesta del usuario
Se puede hacer que la entrada de una frase est precedida por la opcin -p(prompt) del comando read:

[nicolas]$ read -p "edad del capitn? " edad


edad del capitn? 12
[nicolas]$ echo $edad
12
Este comando se utiliza generalmente en los scripts interactivos; veamos un ejemplo de programa que
pide la intervencin del usuario:

[nicolas]$ cat prog.sh


#!/bin/bash
# Se pide al usuario que escriba un nombre de archivo
read -p "escriba un nombre de archivo: " archivo
# Si el archivo no existe,
# se sale del script con el cdigo de retorno igual a 1
http://www.eni-training.com/client_net/mediabook.aspx?idR=72888

1/2

25/4/2014

ENI Training - Libro online

[ -e "$archivo" ] || exit 1
# Se dan las caractersticas del archivo:
[ -f "$archivo" ] && echo "archivo de tipo estndar"
[ -d "$archivo" ] && echo "archivo de tipo directorio"
[ -r "$archivo" ] && echo "permiso de lectura activo" \
|| echo "permiso de lectura desactivado"
[ -w "$archivo" ] && echo "permiso de modificacin activo" \
|| echo "permiso de modificacin desactivado"
[ -x "$archivo" ] && echo "permiso de ejecucin activo" \
|| echo "permiso de ejecucin desactivado"
[nicolas]$ ./prog.sh
escriba un nombre de archivo: zorglub
[nicolas]$ echo $?
1
[nicolas]$ ./prog.sh
escriba un nombre de archivo: /etc/passwd
archivo de tipo estndar
permiso de lectura activo
permiso de modificacin desactivado
permiso de ejecucin desactivado
[nicolas]$ echo $?
0
[nicolas]$ ./prog.sh
escriba un nombre de archivo: /root
archivo de tipo directorio
permiso de lectura desactivado
permiso de modificacin desactivado
permiso de ejecucin desactivado
[nicolas]$ echo $?
0

http://www.eni-training.com/client_net/mediabook.aspx?idR=72888

2/2

25/4/2014

ENI Training - Libro online

Estructuras de control
Las estructuras de control permiten ejecutar uno o ms comandos segn el resultado de una expresin.
La expresin proporcionada como condicin de la estructura puede ser cualquier comando; el cdigo de
retorno de este comando es determinante. Se usan principalmente los comandos test o let como
condiciones.
Slo presentaremos las instrucciones "if", "for" y "while".

1. La instruccin if
La instruccin "if" ejecuta una serie de comandos si la condicin indicada es verdad.
La sintaxis general es:
if condicin
then
serie de comandos si condicin verdadera else
serie de comandos si condicin falsa
fi
Cada palabra clave de la estructura (if, then, elsey fi) debe encontrarse en una lnea distinta; la
clusula "else" no es obligatoria.
Veamos un ejemplo de uso:

[nicolas]$ cat prog.sh


#!/bin/bash
if [ "$1" = "vale" ]
then
echo "est bien"
else
echo "no est bien"
fi
[nicolas]$ ./prog.sh vale
est bien
[nicolas]$ ./prog.sh novale
no est bien

2. La instruccin for
El bucle "for" ejecuta la misma serie de comandos tantas veces como valores haya en una lista dada;
en cada iteracin, una variable contiene el valor considerado en esta lista.
Su sintaxis es:
for variable in lista de valores
do
serie de comandos
done
Por ejemplo:

[nicolas]$ cat prog.sh


http://www.eni-training.com/client_net/mediabook.aspx?idR=72889

1/3

25/4/2014

ENI Training - Libro online

#!/bin/bash
for var in a b c 1 5 4
do
echo "\$var=$var"
done
echo fin
[nicolas]$ ./prog.sh
$var=a
$var=b
$var=c
$var=1
$var=5
$var=4
fin
No es posible especificar lmites para la lista de valores como en otros lenguajes. Sin embargo, el
desarrollo de caracteres genricos en nombres de archivos en el directorio actual resulta interesante:

[nicolas]$ cd /
[nicolas]$ ls
bin dev home
lib
media opt dir1 sbin sys usr
boot etc initrd libro mnt
proc root srv tmp var
[nicolas]$ for f in b*
> do
> echo "directorio que empieza por b: $f"
> done
directorio que empieza por b: bin
directorio que empieza por b: boot

3. La instruccin while
La instruccin "while" ejecuta la serie de comandos mientras la condicin es verdad:
while condicin
do
serie de comandos
done
Por ejemplo:

[nicolas]$ cat prog.sh


#!/bin/bash
((i=0))
while ((i++ < 10))
do
echo "\$i=$i"
done
echo fin
[nicolas]$ ./prog.sh
$i=1
$i=2
$i=3
$i=4
$i=5
$i=6
$i=7
$i=8
$i=9
http://www.eni-training.com/client_net/mediabook.aspx?idR=72889

2/3

25/4/2014

ENI Training - Libro online

$i=10
fin

http://www.eni-training.com/client_net/mediabook.aspx?idR=72889

3/3

25/4/2014

ENI Training - Libro online

Introduccin
Aunque los usuarios normales no poseen los derechos necesarios para la administracin del sistema, sin
embargo pueden modificar su entorno personal.
El usuario puede personalizar la definicin de su cuenta (contrasea, nombre completo, shell
predeterminado), modificar el comportamiento del shell que emplea (variables de entorno, alias...),
adaptar la interfaz grfica a sus gustos y, desde luego, organizar sus archivos en los directorios
previstos al efecto.

http://www.eni-training.com/client_net/mediabook.aspx?idR=72891

1/1

25/4/2014

ENI Training - Libro online

Modificacin de la cuenta
El administrador crea las cuentas de usuario durante o despus de la instalacin del sistema. Sus
definiciones contienen valores predeterminados que el usuario tiene derecho a ver y cambiar mediante
los comandos siguientes.
Los comandos fingery who, descritos en el captulo Inicio de sesin y primeros comandos, devuelven
informacin respecto a las cuentas de usuario. El archivo /etc/passwd contiene gran parte de esta
informacin y slo puede ser modificado por root.
Ejemplo de archivo /etc/passwd:
root:x:0:0:root:/root:/bin/bash
bin:x:1:1:bin:/bin:/sbin/nologin
daemon:x:2:2:daemon:/sbin:/sbin/nologin
nobody:x:99:99:Nobody:/:/sbin/nologin
nicolas:x:500:100:Nicolas Pons:/home/nicolas:/bin/bash
linus:x:504:100:Linus Torvalds:/home/linus:/bin/bash
richard:x:505:100:Richard M. Stallman:/home/richard:/bin/bash
ken:x:501:100:Ken Thompson:/home/ken:/bin/bash
dennis:x:502:100:Dennis Ritchie:/home/dennis:/bin/bash
eric:x:506:100:Eric S. Raymond:/home/eric:/bin/bash
alan:x:507:100:Alan Cox:/home/alan:/bin/bash
gordon:x:503:100:Gordon E. Moore:/home/gordon:/bin/bash
Cada lnea de este archivo caracteriza una cuenta de usuario y los siete campos separados por : (dos
puntos) son:
El login (o nombre de usuario): es el nombre utilizado para conectarse al sistema. Debe ser
nico.
La contrasea : esta contrasea no se encuentra en este archivo por razones de seguridad; el
carcter xla reemplaza e indica una referencia al archivo /etc/shadowque no es accesible en
lectura a los usuarios normales.
El UID : identificador de la cuenta de usuario; normalmente es nico.
El GID : identificador del grupo principal de la cuenta.
Nombre completo: llamado tambin GECOS de "General Electric Comprehensive Operating
System" (el historial de este trmino se explica en la pgina del manual sobre el
archivo /etc/passwd), este campo libre y opcional indica generalmente la identidad real de la
persona asociada a la cuenta de Linux.
El directorio personal: es el directorio de base del usuario en el que se encuentra al iniciar
sesin.
El shell : es el programa que se ejecuta en el inicio de sesin. El shell predeterminado en
GNU/Linux es el Bash.
Los dems archivos que regulan las cuentas de usuario son /etc/shadow, que contiene las contraseas
cifradas, /etc/groupy /etc/gshadow, que definen los grupos de usuarios.

chfn
Un usuario puede modificar el campo GECOS asociado a su propia cuenta con el comando chfn.
Toda la informacin necesaria puede indicarse en la lnea de comandos, pero es ms simple escribir
nicamente el comando y responder a las preguntas propuestas:
http://www.eni-training.com/client_net/mediabook.aspx?idR=72892

1/2

25/4/2014

ENI Training - Libro online

[nicolas]$ chfn
Modificacin de la informacin de finger para nicolas.
Contrasea:
Nombre[]: Nicolas Pons
Oficina[]:
Telfono oficina[]:
Telfono casa[]:
La informacin de finger ha cambiado.
El campo GECOS es opcional y actualmente se usa poco; los detalles del comando chfn se
describen en el manual (man chfn).

chsh
Al igual manera que el comando anterior, chshpermite a un usuario modificar el shell predeterminado
cuando se inicia sesin:

[nicolas] $ chsh
Modificacin del shell para nicolas.
Contrasea:
Nuevo shell[/bin/bash]:

passwd
Mientras no se haya asignado una contrasea a una cuenta, no es posible utilizarla para conectarse al
sistema; por tanto, el administrador define generalmente una primera contrasea al abrir una cuenta y
pide al usuario que la modifique cuanto antes, para evitar problemas de seguridad.
Se permiten todos los caracteres en las contraseas y se recomienda incluir tanto minsculas como
maysculas, cifras e incluso caracteres de puntuacin o caracteres acentuados. Sin embargo, estos
ltimos pueden presentar problemas si se puede acceder al sistema desde varios terminales, y en
particular con teclados con una disposicin de teclas diferente (las teclas acentuadas no existen en un
teclado QWERTY).
Se impone un nmero mnimo de seis caracteres y ciertas distribuciones truncan una contrasea ms all
del octavo; imponer una contrasea de ocho caracteres constituye, pues, una buena solucin. Adems,
no hay que utilizar una palabra corriente susceptible de encontrarse en un diccionario de palabras
prohibidas, como qwerty, rooto pinguino.
Las restricciones sobre las contraseas (nmero mnimo de caracteres, nmero mximo de
caracteres iguales a la antigua contrasea, nmero mnimo de minsculas...) dependen de la
configuracin del sistema.

La asignacin de una contrasea a una cuenta de Unix se hace con el comando passwd; este comando
ya se analiz en el captulo Inicio de sesin y primeros comandos.

http://www.eni-training.com/client_net/mediabook.aspx?idR=72892

2/2

25/4/2014

ENI Training - Libro online

Datos personales
Los datos de usuario -o ms exactamente los archivos que contienen los datos de los usuarios- se
guardan en distintos sitios en el sistema de archivos; conocer su ubicacin es importante cuando se
quiere guardar todos los datos de un usuario sin omitir ciertos archivos.

1. /home
Los archivos pertenecientes a los usuarios se guardan mayoritariamente en los directorios personales
asociados. El directorio personal de un usuario es generalmente un subdirectorio de /home con el
nombre de la cuenta.
Todos los archivos de configuracin de las aplicaciones ejecutadas por el usuario se guardan aqu.
Estos archivos de configuracin tienen un nombre que empieza habitualmente por un punto para que
no se listen de modo predeterminado con el comando ls.

[nicolas]$ pwd
/home/nicolas
[nicolas]$ ls
Escritorio Archivos Plantillas Pblico Vdeos
Documentos Imgenes Msica Descargas
[nicolas]$ ls -a
.
.esd_auth
Imgenes
.pulse-cookie
..
Archivos
.imsettings.log .recently-used.xbel
.bash_history .gconf
.kde
.setroubleshoot
.bash_logout .gconfd
.lesshst
Descargas
.bash_profile .gnome2
.local
.themes
.bashrc
.gnome2_private .mc
.thumbnails
Escritorio
.gnupg
Plantillas
Vdeos
.cache
.gstreamer-0.10 .mozilla
.viminfo
.config
.gtk-bookmarks
Msica
.xine
.dbus
.gtkrc-2.0-kde4 .nautilus
.xsession-errors
.directory
.gvfs
.openoffice.org .xsession-errors.old
.dmrc
.ICEauthority
Pblico
Documentos
.icons
.pulse
Se encontrar, por ejemplo, la configuracin del navegador web Mozilla (y Firefox) para el
usuario nicolasen el subdirectorio /home/nicolas/.mozilla.

2. /tmp
El directorio /tmp es un espacio de almacenamiento comn para todos los usuarios del sistema.
Borrado regularmente por el administrador, no debera contener archivos de usuario importantes.
Sin embargo, tngase presente que un usuario puede almacenar aqu archivos de forma temporal.

3. /var/spool/*
Como se indica en el captulo que detalla el rbol de Linux, el directorio /var/spool contiene las
diferentes colas de espera de los servicios propuestos por el sistema.
Muchos datos personales se encuentran aqu; por ejemplo:
http://www.eni-training.com/client_net/mediabook.aspx?idR=72893

1/2

25/4/2014

ENI Training - Libro online

los trabajos de impresin en espera (/var/spool/lpdy /var/spool/cups);


la definicin de las tareas planificadas (/var/spool/crony /var/spool/at);
el correo electrnico
(/var/spool/mail).

de

los

http://www.eni-training.com/client_net/mediabook.aspx?idR=72893

usuarios

an no

entregado

sus

clientes

de

correo

2/2

25/4/2014

ENI Training - Libro online

Entorno de shell
Cuando el usuario se conecta al sistema en un terminal de texto, se leen varios archivos al iniciar el shell
para definir el entorno de trabajo.

1. /etc/profile
El archivo /etc/profile es un script de shell que se ejecuta en primer lugar, al conectarse a un
terminal de texto. Este archivo contiene las variables de entorno de base de todos los procesos, y slo
el administrador del sistema puede modificarlo. Por otra parte, este archivo ejecuta comandos en el
entorno del shell de conexin.
Este script slo se interpreta en la conexin del usuario.

2. ~/.bash_profile, ~/.bash_login, ~/.profile


Tras

leer
el
archivo
/etc/profile,
Bash
busca
el
archivo
~/.bash_profile, ~/.bash_logino ~/.profileen este orden y ejecuta los comandos contenidos en el primero
de estos scripts que encuentra y que est accesible en lectura.
Este archivo tiene la misma funcin que el archivo /etc/profile, con la diferencia de que puede ser
modificado por el usuario para cambiar su propio entorno.
Como el archivo anterior, este script slo se interpreta en la conexin; las modificaciones aportadas
slo son tenidas en cuenta tras una nueva conexin del usuario.

3. ~/.bashrc
El archivo ~/.profile slo se ejecuta en el inicio de sesin. Si el usuario dispone de un entorno
grfico, se ignora cuando el usuario inicia un emulador de terminal con un shell. Esto presenta
problemas para todos los elementos, como los alias, definidos en el archivo ~/.profile, distintos de
las variables de entorno.
El archivo ~/.bashrc se usa para este fin porque se interpreta al arrancar cada nuevo shell Bash
interactivo.
En el caso de un shell no interactivo, si la variable de entorno $BASH_ENVcontiene el nombre de un
archivo, se ejecuta ste.
Se califica de interactivo un shell empleado para introducir comandos manualmente (con un
prompt y una lnea de comandos). Por el contrario, un shell no interactivo es, por ejemplo, el
proceso lanzado para interpretar un script.

4. /etc/bashrc
El archivo /etc/bashrc tiene la misma funcin que el archivo anterior a escala del sistema; slo lo
puede modificar el administrador.
Invocado en el archivo ~/.bashrc, se lee en la ejecucin de cada nuevo proceso Bash.
http://www.eni-training.com/client_net/mediabook.aspx?idR=72894

1/2

25/4/2014

ENI Training - Libro online

5. ~/.bash_logout
Este script de shell slo se ejecuta en la desconexin del usuario. Incluye por ejemplo los comandos de
limpieza automtica (eliminacin de archivos de trabajo temporales) y la copia de datos personales.

http://www.eni-training.com/client_net/mediabook.aspx?idR=72894

2/2

25/4/2014

ENI Training - Libro online

Entorno grfico
La configuracin del entorno grfico depende del escritorio utilizado (KDE, GNOME...) y de las aplicaciones
que contiene. Dicho esto, es una buena idea utilizarlo porque proporciona herramientas ergonmicas y
amigables.
Los mens propuestos por los entornos de escritorio permiten acceder a estas herramientas de
configuracin.
Por ejemplo, en KDE el centro de control (systemsettings):

GNOME tiene un "Centro de control" (gnome-control-center) que


herramientas de configuracin del entorno:

http://www.eni-training.com/client_net/mediabook.aspx?idR=72895

rene

la mayora de

las

1/2

25/4/2014

ENI Training - Libro online

Aunque el entorno y las aplicaciones grficas se configuran en gran parte mediante herramientas
grficas, los archivos de configuracin producidos por estas herramientas siguen siendo archivos de
texto presentes en el directorio personal del usuario. Es fcil modificarlos con un editor como Vi o
copiarlos en otras cuentas.

http://www.eni-training.com/client_net/mediabook.aspx?idR=72895

2/2

25/4/2014

ENI Training - Libro online

Copia de seguridad de los datos del usuario


La copia de seguridad de todos los datos en un sistema Unix -incluyendo los archivos pertenecientes a
los usuarios- es generalmente responsabilidad del administrador. Por ello el tema de la copia de
seguridad se aborda en detalle en las obras de administracin del sistema en Linux.
Sin embargo, un usuario puede hacer su propia copia de seguridad de sus datos, aunque slo sea para
facilitar el transporte y la distribucin de sus archivos en medios extraibles (disquetes, memoria USB...).
Para ello, el formato de copia de seguridad ms extendido en el mundo Linux es el formato de archivo
tar, asociado al formato de compresin gzip.

tar
El comando tares una herramienta de archivo prevista originalmente para funcionar con los lectores de
cintas magnticas (tape archiver). Se usa mucho en el mundo Unix y particularmente en GNU/Linux, donde
los archivos fuentes de los programas libres se archivan, principalmente, en este formato.
Por compatibilidad con otros Unix, el comando GNU tar acepta, adems de las opciones largas, las
opciones cortas (monocarcter) precedidas o no del carcter -.
Una de las opciones siguientes debe indicarse obligatoriamente para sealar al comando el tipo de
accin que se debe emprender:

c, --create

crear de un archivo.

r, --append

agregar archivos al final del archivo.

u, --update

agregar slo los archivos ms recientes que el


archivo, til para copias de seguridad incrementales.

x, --extract, --get

extraer de archivos del archivo.

t, --list

mostrar la TOC (Table Of Contents) del archivo: lista


de archivos contenidos en el archivo.

Pueden agregarse otras opciones, entre las destacan:

f, --file

nombre fichero de archivo (archivo.tarpor ejemplo);


sin esta opcin, los datos del archivo aparecen en la
salida estndar.

v, --verbose

modo verboso; el comando muestra los archivos


tratados durante el proceso.

z, --gzip, --ungzip

uso de la compresin en formato gzip.

Generalmente se usan, pues, las sintaxis siguientes:


para crear un archivo: tar cvf <archivo> <fichero ...>
para enumerar el contenido de un archivo: tar tvf <archivo>
para restaurar un archivo: tar xvf <archivo>
Al crear un archivo, su nombre no debe formar parte de los archivos que hay que guardar. As, se
evitar incluir el propio archivo en la copia; un error clsico es escribir: tar cvf archive.tar.

http://www.eni-training.com/client_net/mediabook.aspx?idR=72896

1/5

25/4/2014

ENI Training - Libro online

tar es una herramienta recursiva, por lo que un nombre de directorio pasado como argumento al
comando implica el archivado completo del rbol subyacente.
Veamos un ejemplo de creacin, verificacin y restauracin de un archivo que contiene los archivos del
usuario alan:

[alan]$ cd /home
[alan]$ ls -aR alan
alan:
. .. .bash_logout .bash_profile .bashrc .gnome2 .mozilla
alan/.gnome2:
. ..
alan/.mozilla:
. .. extensions plugins
alan/.mozilla/extensions:
. ..
alan/.mozilla/plugins:
. ..
[alan]$ tar cvf /tmp/archivo.tar alan
alan/
alan/.gnome2/
alan/.bashrc
alan/.bash_logout
alan/.mozilla/
alan/.mozilla/plugins/
alan/.mozilla/extensions/
alan/.bash_profile
[alan]$ tar tvf /tmp/archivo.tar
drwx------ alan/users
0 2011-02-22 17:35 alan/
drwxr-xr-x alan/users
0 2010-09-29 06:15 alan/.gnome2/
-rw-r--r-- alan/users
124 2010-06-22 17:15 alan/.bashrc
-rw-r--r-- alan/users
18 2010-06-22 17:15 alan/.bash_logout
drwxr-xr-x alan/users
0 2011-02-18 10:57 alan/.mozilla/
drwxr-xr-x alan/users
0 2009-07-27 05:01 alan/.mozilla/plugins/
drwxr-xr-x alan/users
0 2009-07-27 05:01 alan/.mozilla/extensions/
-rw-r--r-- alan/users
176 2010-06-22 17:15 alan/.bash_profile
[alan]$ cd /tmp
[alan]$ tar xvf archivo.tar
alan/
alan/.gnome2/
alan/.bashrc
alan/.bash_logout
alan/.mozilla/
alan/.mozilla/plugins/
alan/.mozilla/extensions/
alan/.bash_profile
[alan]$ ls -aR /tmp/alan
/tmp/alan:
. .. .bash_logout .bash_profile .bashrc .gnome2 .mozilla
/tmp/alan/.gnome2:
. ..
/tmp/alan/.mozilla:
. .. extensions plugins
http://www.eni-training.com/client_net/mediabook.aspx?idR=72896

2/5

25/4/2014

ENI Training - Libro online

/tmp/alan/.mozilla/extensions:
. ..
/tmp/alan/.mozilla/plugins:
. ..
La restauracin de un archivo tar se hace en el directorio actual (/tmp/alan) de modo
predeterminado. Para restaurar archivos en su lugar de origen, hay que situarse en el directorio
de origen antes de extraer los archivos.

Este comando es en principio slo una herramienta de archivado y no un programa de compresin. A


menudo se une a un programa de compresin para reducir el tamao de los archivos.

[alan]$ pwd
/tmp
[alan]$ ls -l archivo.tar
-rw-r--r--. 1 alan users 10240 22 feb. 18:27 archivo.tar
[alan]$ gzip archivo.tar
[alan]$ ls -l archivo.tar.gz
-rw-r--r--. 1 alan users 513 22 feb. 18:27 archivo.tar.gz
El uso de la compresin gzip con el formato tar est muy extendido en Internet y la
extensin .tgz, ms corta, se usa tambin para designar estos archivos pasados por tar y gzip.

Adems, la versin GNU del comando taradmite la compresin al vuelo con la opcin zpara el formato
gzip; no siempre es as en los dems Unix.
Por ejemplo:

[alan]$ ls archivo.tar.gz
archivo.tar.gz
[alan]$ tar tvzf archivo.tar.gz
drwx------ alan/users
0 2011-02-22 17:35 alan/
drwxr-xr-x alan/users
0 2010-09-29 06:15 alan/.gnome2/
-rw-r--r-- alan/users
124 2010-06-22 17:15 alan/.bashrc
-rw-r--r-- alan/users
18 2010-06-22 17:15 alan/.bash_logout
drwxr-xr-x alan/users
0 2011-02-18 10:57 alan/.mozilla/
drwxr-xr-x alan/users
0 2009-07-27 05:01 alan/.mozilla/plugins/
drwxr-xr-x alan/users
0 2009-07-27 05:01 alan/.mozilla/extensions/
-rw-r--r-- alan/users
176 2010-06-22 17:15 alan/.bash_profile
Se obtiene, en resumen:

http://www.eni-training.com/client_net/mediabook.aspx?idR=72896

3/5

25/4/2014

ENI Training - Libro online

Ark
Para la copia de seguridad y la restauracin de datos, existen diferentes herramientas integradas a los
entornos de escritorio.
Ark es una herramienta grfica que permite generar archivos comprimidos como el programa Winzip de
Windows.

http://www.eni-training.com/client_net/mediabook.aspx?idR=72896

4/5

25/4/2014

ENI Training - Libro online

Evidentemente, esta herramienta puede trabajar con archivos tar comprimidos en formato gzip.

http://www.eni-training.com/client_net/mediabook.aspx?idR=72896

5/5

25/4/2014

ENI Training - Libro online

Presentacin de las principales herramientas de Linux


Este captulo presenta una serie de herramientas de Linux que todo usuario debera conocer. A menudo
basta con una lnea de comandos adecuada para efectuar los mismos tratamientos que un centenar de
clics de ratn con un administrador de archivos grfico.
Al finalizar este captulo el lector sabr, entre otras cosas:
buscar archivos segn ciertos criterios y aplicarles un tratamiento;
filtrar el contenido de archivos y las salidas de comandos con expresiones regulares;
ordenar y separar datos;
ver parcialmente el contenido de archivos.

1. find
El comando find permite buscar, en uno o ms rboles de directorios, archivos que respondan a
ciertos criterios y aplicarles un tratamiento segn una accin determinada.
La sintaxis global del comando es:
find ruta(s) parmetro(s) accin
La sintaxis del comando findno sigue las reglas elementales de sintaxis de los comandos de
Linux descritos en el captulo Inicio de sesin y primeros comandos.

a. Ruta de bsqueda
Se especifica en el comando find una o ms rutas de bsqueda; estas rutas son directorios del
sistema de archivos y findse encarga de recorrer todo el rbol subyacente en busca de archivos.
Si no se especifica una ruta, findinicia su bsqueda en el directorio actual:

$ ls -R
.:
archivo1 archivo2 dir1 dir2
./dir1:
./dir2:
$ find
.
./dir2
./dir1
./archivo2
./archivo1
$ find .
.
./dir2
./dir1
./archivo2
./archivo1
http://www.eni-training.com/client_net/mediabook.aspx?idR=72898

1/16

25/4/2014

ENI Training - Libro online

Cuando se especifican varias rutas, se separan con espacios:

$ find /var/spool/mail . /etc/skel


/var/spool/mail
/var/spool/mail/alan
/var/spool/mail/linus
/var/spool/mail/richard
/var/spool/mail/gordon
/var/spool/mail/eric
/var/spool/mail/rpc
/var/spool/mail/ken
/var/spool/mail/dennis
/var/spool/mail/nicolas
.
./dir2
./dir1
./archivo2
./archivo1
/etc/skel
/etc/skel/.gnome2
/etc/skel/.bashrc
/etc/skel/.bash_logout
/etc/skel/.mozilla
/etc/skel/.mozilla/plugins
/etc/skel/.mozilla/extensions
/etc/skel/.bash_profile

b. Expresiones de seleccin
Los criterios de seleccin, o expresiones, empiezan con un -(guin) seguido por sus parmetros.
Por ejemplo, la expresin -name nomarcpide al comando find que busque slo los archivos cuyo
nombre sea nomfic. La lnea de comando completa, para una bsqueda en todo el rbol de Linux, es:
find / -name nomarc 2>/dev/null
Un usuario normal no tiene los permisos suficientes para acceder a todos los archivos
presentes en el sistema. Como por lo general slo se buscan los archivos a los que se puede
acceder, habitualmente se suprimen los mensajes de error del comando find debidos a esta
falta de permiso de acceso, redirigiendo la salida de errores estndar al archivo /dev/null.

El comando findcuenta con un gran nmero de parmetros de seleccin; veremos a continuacin las
principales expresiones.

-name motivo
El parmetro -nameafecta al nombre de los archivos presentes en los rboles de bsqueda.
El motivo puede contener los mismos caracteres genricos de reemplazo que el shell, pero el
comando finddebe interpretarlos; por ello, el motivo se pone generalmente entre apstrofes para
inhibir la interpretacin del shell.
Por ejemplo, los archivos cuyo nombre empieza por una sen el rbol subyacente de /usr:

$ find /usr -name s* 2>/dev/null


http://www.eni-training.com/client_net/mediabook.aspx?idR=72898

2/16

25/4/2014

ENI Training - Libro online

/usr/src
/usr/libexec/perf-core/scripts
/usr/libexec/perf-core/scripts/python/sctop.py
/usr/libexec/perf-core/scripts/python/syscall-counts-by-pid.pyc
/usr/libexec/perf-core/scripts/python/syscall-counts-by-pid.py
/usr/libexec/perf-core/scripts/python/syscall-counts-by-pid.pyo
/usr/libexec/perf-core/scripts/python/syscall-counts.pyo
/usr/libexec/perf-core/scripts/python/syscall-counts.py
/usr/libexec/perf-core/scripts/python/bin/syscall-counts-by-pid-report
/usr/libexec/perf-core/scripts/python/bin/syscall-counts-report
...

-size [+-]<tamao>(bck)
La expresin -sizedetermina el tamao de los archivos que se quieren buscar.
El tamao de los archivos se indica en nmero de bloques, precedido eventualmente del signo + o-;
eso significa:

-size 12

archivos que usan exactamente doce bloques de datos, por


tanto un tamao comprendido entre 11 y 12 bloques.

-size -12

archivos que usan menos de doce bloques de datos, por tanto


de un tamao estrictamente inferior a 12 bloques.

-size +12

archivos que usan ms de doce bloques de datos, por tanto de


un tamao estrictamente superior a 12 bloques.

Los bloques de datos tienen un tamao predeterminado de 512 bytes, pero la unidad puede
especificarse aadiendo el carcter b, c, k, Mo Gjusto despus del tamao:

bloques de datos de 512 bytes (valor predeterminado).

bloques de datos de 1 byte.

k, Mo G

bloques de datos de 1 KB, 1 MB o 1 GB.

Por ejemplo, los archivos cuyo tamao es de 10 KB en el rbol /usr:

$ find /usr -size 10k 2>/dev/null


/usr/libexec/ck-get-x11-server-pid
/usr/libexec/nm-avahi-autoipd.action
/usr/libexec/pulse/proximity-helper
/usr/libexec/mission-control-5
/usr/libexec/udisks-helper-drive-detach
...
$ ls -l /usr/libexec/ck-get-x11-server-pid
-rwxr-xr-x. 1 root root 9920 6 oct 00:32 /usr/libexec/ck-get-x11-server-pid
$ ls -l /usr/libexec/nm-avahi-autoipd.action
-rwxr-xr-x. 1 root root 9300 15 oct 21:24 /usr/libexec/nm-avahi-autoipd.action
$ ls -l /usr/libexec/pulse/proximity-helper
-rwsr-xr-x. 1 root root 9596 23 feb 2010 /usr/libexec/pulse/proximity-helper
$ ls -l /usr/libexec/mission-control-5
-rwxr-xr-x. 1 root root 10120 9 oct 00:34 /usr/libexec/mission-control-5
$ ls -l /usr/libexec/udisks-helper-drive-detach
-rwxr-xr-x. 1 root root 9944 19 may
2010 /usr/libexec/udisks-helper-drive-detach

-mtime [+-]<das>
http://www.eni-training.com/client_net/mediabook.aspx?idR=72898

3/16

25/4/2014

ENI Training - Libro online

La expresin -mtimeespecifica la fecha de la ltima modificacin de los archivos buscados en nmero


de das.
Como en el parmetro -size, el nmero de das puede ir precedido de los signos - y +:

-mtime 3

archivos modificados hace 3 das, o sea entre 72 horas (3 x 24


horas) y 96 horas (4 x 24 horas).

-mtime -3

archivos modificados hace menos de 3 das, o sea menos de 72


horas (3 x 24 horas).

-mtime +3

archivos modificados hace ms de 3 das, o sea ms de 96 horas


(4 x 24 horas).

-perm <permisos>
Esta expresin permite recuperar todos los archivos con permisos de acceso particulares.
Los permisos pueden indicarse en notacin octal o simblica, por ejemplo:

$ find /etc -perm 700 2>/dev/null


/etc/lvm
/etc/cups/ssl
/etc/selinux/targeted/modules/active
/etc/pki/CA/private
/etc/sssd
/etc/polkit-1/localauthority
$ find /etc -perm u=rwx 2>/dev/null
/etc/lvm
/etc/cups/ssl
/etc/selinux/targeted/modules/active
/etc/pki/CA/private
/etc/sssd
/etc/polkit-1/localauthority
$ ls -ld /etc/lvm
drwx------. 5 root root 4096 18 feb 11:05 /etc/lvm
$ ls -ld /etc/cups/ssl
drwx------. 2 root lp 4096 17 sept 18:30 /etc/cups/ssl
$ ls -ld /etc/selinux/targeted/modules/active
drwx------. 3 root root 4096 18 feb 17:31 /etc/selinux/targeted/modules/active
$ ls -ld /etc/pki/CA/private
drwx------. 2 root root 4096 30 jun 2010 /etc/pki/CA/private
$ ls -ld /etc/sssd
drwx------. 3 root root 4096 18 feb 11:07 /etc/sssd
$ ls -ld /etc/polkit-1/localauthority
drwx------. 7 root root 4096 18 feb 11:01 /etc/polkit-1/localauthority

-newer <archivo>
La expresin -newer busca todos los archivos con una fecha de modificacin ms reciente que el
archivo de referencia pasado como parmetro.
Este parmetro de seleccin es muy prctico para efectuar copias de seguridad incrementales
(guardar nicamente archivos modificados despus de la ltima copia):

$ touch ref
$ ls -l
total 8
http://www.eni-training.com/client_net/mediabook.aspx?idR=72898

4/16

25/4/2014

ENI Training - Libro online

-rw-r--r--. 1 nicolas users


0 23 feb. 09:10 archivo1
-rw-r--r--. 1 nicolas users
0 23 feb. 09:10 archivo2
-rw-r--r--. 1 nicolas users
0 23 feb. 09:26 ref
drwxr-xr-x. 2 nicolas users 4096 23 feb. 09:09 dir1
drwxr-xr-x. 2 nicolas users 4096 23 feb. 09:09 dir2
$ find . -newer ref
$ echo texto >> archivo1
$ find . -newer ref
./archivo1

-user <usuario>
Este parmetro permite recuperar todos los archivos pertenecientes a un mismo usuario.
El parmetro puede ser el login o el UID del usuario:

$ id nicolas
uid=500(nicolas) gid=100(users) grupos=100(users)
$ find /var -user nicolas 2> /dev/null
/var/cache/gdm/nicolas
/var/cache/gdm/nicolas/dmrc
/var/spool/mail/nicolas
$ find /var -user 500 2> /dev/null
/var/cache/gdm/nicolas
/var/cache/gdm/nicolas/dmrc
/var/spool/mail/nicolas

-group <grupo>
Al igual que la expresin anterior, -group permite buscar todos los archivos pertenecientes a un
mismo grupo de usuarios.
De nuevo, se puede indicar indiferentemente el nombre del grupo o su GID.

c. Operadores sobre las expresiones


Las expresiones se evalan como operaciones booleanas: devuelven verdadero o falso.
Es posible combinar varias expresiones; para ello, existe una serie de operadores.

-and o -a
Colocado entre dos expresiones, el operador -and (o -a) efecta un Y lgico entre las dos
expresiones.
El operador -and se utiliza de modo predeterminado cuando no se indica ningn operador. La
sintaxis expresin1 -and expresin2equivale a expresin1 expresin2.
Por ejemplo, para buscar todos los archivos que pertenecen al usuario nicolas y cuyo nombre
empieza por s en el directorio /tmp:

$ find /tmp -user nicolas -and -name s* 2> /dev/null


/tmp/keyring-6wqI14/ssh
/tmp/sv6h.tmp
/tmp/.esd-500/socket
$ find /tmp -user nicolas -name s* 2> /dev/null
http://www.eni-training.com/client_net/mediabook.aspx?idR=72898

5/16

25/4/2014

ENI Training - Libro online

/tmp/keyring-6wqI14/ssh
/tmp/sv6h.tmp
/tmp/.esd-500/socket

-or u -o
Este operador efecta un O lgico entre dos expresiones.
Por ejemplo, para buscar todos los archivos que pertenecen al usuario nicolas y cuyo nombre
empieza por sen el directorio /tmp:

$ find /tmp -user nicolas -or -name s* 2> /dev/null


/tmp/keyring-6wqI14
/tmp/keyring-6wqI14/gpg
/tmp/keyring-6wqI14/pkcs11
/tmp/keyring-6wqI14/ssh
/tmp/keyring-6wqI14/control
/tmp/OSL_PIPE_500_SingleOfficeIPC_78d1f4adfd9e62660b247a5f42d4d7c
/tmp/virtual-nicolas.MyGDbR
/tmp/.ICE-unix/1758
/tmp/virtual-nicolas.fpLGsV
...

-not o !
El operador -not (o !) es la negacin lgica. Debe colocarse justo antes de la expresin
correspondiente.
Por ejemplo, para buscar todos los archivos cuyo nombre no empieza por sen el directorio /tmp:

$ find /tmp -not -name s* 2>/dev/null


/tmp
/tmp/keyring-6wqI14
/tmp/keyring-6wqI14/gpg
/tmp/keyring-6wqI14/pkcs11
/tmp/keyring-6wqI14/control
/tmp/OSL_PIPE_500_SingleOfficeIPC_78d1f4adfd9e62660b247a5f42d4d7c
/tmp/alan
/tmp/virtual-nicolas.MyGDbR
/tmp/.X11-unix
/tmp/.X11-unix/X0
...

Los parntesis
Los parntesis permiten definir el orden de los operadores lgicos. Se colocan antes y despus de un
conjunto de expresiones para formar una sola a nivel lgico.
Los parntesis tienen un significado particular para el shell, por lo que hay que protegerlos
con el carcter de cita \ (barra invertida).

Por ejemplo:

$ find /tmp -not -name s* -or -user nicolas 2>/dev/null


http://www.eni-training.com/client_net/mediabook.aspx?idR=72898

6/16

25/4/2014

ENI Training - Libro online

/tmp
/tmp/keyring-6wqI14
/tmp/keyring-6wqI14/gpg
/tmp/keyring-6wqI14/pkcs11
/tmp/keyring-6wqI14/ssh
/tmp/keyring-6wqI14/control
/tmp/OSL_PIPE_500_SingleOfficeIPC_78d1f4adfd9e62660b247a5f42d4d7c
/tmp/alan
/tmp/virtual-nicolas.MyGDbR
/tmp/.X11-unix
...
$ find /tmp -not \( -name s* -or -user nicolas \) 2>/dev/null
/tmp
/tmp/alan
/tmp/.X11-unix
/tmp/.X11-unix/X0
/tmp/vmware-root
/tmp/.ICE-unix
/tmp/pulse-FDPK5kbTSV2P
/tmp/pulse-PKdhtXMmr18n
/tmp/archive.tar.gz
/tmp/orbit-gdm
...
En el primer ejemplo, se enumeran los archivos cuyo nombre no empieza por s o que pertenecen
a nicolas. En el segundo ejemplo, no se enumeran ni los archivos que empiezan por s, ni los que
pertenecen a nicolas.

d. Acciones
-print
La accin predeterminada (para el comando GNU, presente en Linux) que se aplica a cada archivo
encontrado por el comando findes -printque muestra el nombre de la instancia encontrada:

$ find .
.
./ref
./dir2
./dir1
./archivo2
./archivo1
$ find . -print
.
./ref
./dir2
./dir1
./archivo2
./archivo1
Las rutas de los archivos mostrados son relativas a la ruta de bsqueda especificada en el
comando find.

-exec
http://www.eni-training.com/client_net/mediabook.aspx?idR=72898

7/16

25/4/2014

ENI Training - Libro online

Para ejecutar un comando externo del shell por cada instancia encontrada, se usa la directiva de
accin -exec. Las llaves {}se usan para especificar la ruta del archivo encontrado en el comando que
se debe ejecutar por find.
Para delimitar el fin de la directiva -exec, se termina obligatoriamente el comando con la secuencia de
caracteres \;.
Por ejemplo, para borrar todos los archivos cuyo nombre empieza por la letra sen el directorio actual
con el comando rm:

$ ls
cosa cubo sofia sonrisa tarta toro tren truco
$ find . -name s* -exec rm {} \;
$ ls
cosa cubo tarta toro tren truco

-ok
La directiva -ok funciona igual que -exec pero hay que confirmar, antes de ejecutar el comando
externo, en cada instancia de archivo encontrada:

$ ls
cosa tarta tren truco
$ find . -name t* -ok rm {} \;
< rm ... ./tarta > ? s
< rm ... ./tren > ? n
< rm ... ./truco > ? s
$ ls
cosa tren
Las preguntas planteadas por el comando findse inscriben en su salida de error; en este
caso no hay que redirigirla. Se corre el riesgo de no ver aparecer las preguntas de la
directiva -ok.

-ls
La accin -lsmuestra, en detalle, los archivos encontrados, como el comando ls -ldi.
El resultado del ejemplo siguiente equivale al comando find . -exec ls -ldi {} \;:

$ find . -ls
934631
4 drwxr-xr-x
934108
0 -rw-r--r-934648
4 drwxr-xr-x
934634
4 drwxr-xr-x
934652
0 -rw-r--r-934651
4 -rw-r--r--

4 nicolas
1 nicolas
2 nicolas
2 nicolas
1 nicolas
1 nicolas

users
users
users
users
users
users

4096 feb. 23 10:14 .


0 feb. 23 09:26 ./ref
4096 feb. 23 09:09 ./dir2
4096 feb. 23 09:09 ./dir1
0 feb. 23 09:10 ./archivo2
6 feb. 23 09:27 ./archivo1

2. grep
El comando grep permite buscar en uno o ms archivos, o en la entrada estndar, las lneas
correspondientes a un filtro.
La sintaxis general de grepes:
http://www.eni-training.com/client_net/mediabook.aspx?idR=72898

8/16

25/4/2014

ENI Training - Libro online

grep opcin(es) filtro archivo(s)


Al utilizar la entrada estndar para filtrar la salida del comando ps, se limita el resultado a las lneas
que contienen una cadena de caracteres en particular; por ejemplo, para encontrar rpidamente el PID
del proceso sleep:

$ ps -ef
UID
PID PPID C STIME TTY
root
1
0 0 09:45 ?
root
2
0 0 09:45 ?
root
3
2 0 09:45 ?
root
4
2 0 09:45 ?
root
5
2 0 09:45 ?
root
6
2 0 09:45 ?
...
root
1528
1 0 09:46 ?
root
1542
1 0 09:46 ?
root
1550
1 0 09:46 ?
root
1555
1 0 09:46 tty2
root
1557
1 0 09:46 tty3
root
1559
1 0 09:46 tty4
root
1561
1 0 09:46 tty5
root
1565
1 0 09:46 tty6
root
1573 1550 0 09:46 ?
root
1576 1573 0 09:46 tty1
root
1591
1 0 09:46 ?
root
1635
1 0 09:46 ?
rtkit
1661
1 0 09:46 ?
root
1682 1573 0 09:46 ?
root
1686 1477 0 09:46 ?
nicolas 1698 1686 0 09:46 ?
nicolas 1699 1698 0 09:46 pts/0
nicolas 2162
1 0 09:48 ?
nicolas 2490 1699 0 10:16 pts/0
nicolas 2603 1699 3 10:18 pts/0
$ ps -ef | grep sleep
nicolas 2490 1699 0 10:16 pts/0
nicolas 2605 1699 0 10:18 pts/0

TIME CMD
00:00:02 /sbin/init
00:00:00 [kthreadd]
00:00:00 [ksoftirqd/0]
00:00:00 [migration/0]
00:00:00 [watchdog/0]
00:00:00 [events/0]
00:00:00 crond
00:00:00 /usr/sbin/atd
00:00:00 /usr/sbin/gdm-binary -nodaemon
00:00:00 /sbin/mingetty /dev/tty2
00:00:00 /sbin/mingetty /dev/tty3
00:00:00 /sbin/mingetty /dev/tty4
00:00:00 /sbin/mingetty /dev/tty5
00:00:00 /sbin/mingetty /dev/tty6
00:00:00 /usr/libexec/gdm-simple-slave -00:00:06 /usr/bin/Xorg :0 -nr -verbose -a
00:00:00 /usr/sbin/console-kit-daemon --n
00:00:00 /usr/libexec/upowerd
00:00:00 /usr/libexec/rtkit-daemon
00:00:00 pam: gdm-password
00:00:00 sshd: nicolas [priv]
00:00:03 sshd: nicolas@pts/0
00:00:00 -bash
00:00:00 /usr/libexec/gvfsd-metadata
00:00:00 sleep 9999
00:00:00 ps -ef
00:00:00 sleep 9999
00:00:00 grep sleep

La lnea que afecta al propio proceso grep se incluye en el resultado porque la cadena de
caracteres "sleep" est presente en la lnea de comandos.

Otro ejemplo, buscando esta vez en archivos pasados como argumentos al comando grep; todas las
lneas que se refieren al usuario nicolasen los archivos /etc/passwdy /etc/group:

$ grep nicolas /etc/passwd /etc/group


/etc/passwd:nicolas:x:500:100:Nicolas Pons:/home/nicolas:/bin/bash
/etc/group:users:x:100:nicolas,linus,richard,ken,dennis,eric,alan,gordon
Dado que el comando grep tiene varios nombres de archivo como argumentos, muestra,
adems de las lneas correspondientes al filtro, el nombre del archivo en el que se encuentra la
lnea.

Para el resto de los ejemplos, se usar el archivo deportistas con una lista de personas que
http://www.eni-training.com/client_net/mediabook.aspx?idR=72898

9/16

25/4/2014

ENI Training - Libro online

practican uno o ms deportes. El formato de este archivo es (los campos se separan con espacios):
nombre apellido sexo deporte1,deporte2...
Veamos el contenido:
gilberto garca hombre ping-pong
daniel rigal hombre ping-pong,carrera
francisco cornaz hombre vela
gerardo cani hombre natacin
juana barrera mujer natacin,marcha
nicolas pons hombre petanca,carrera,ping-pong
esteban olivar hombre petanca
patricio chekib hombre squash,vela
sofia py mujer carrera,tenis
maria baeza mujer marcha
julia ramrez mujer tenis,petanca
vernica garca mujer vela,carrera
claudio bermejo hombre carrera,petanca
willy mario hombre carrera,squash

a. Opciones
Opcin -v
La opcin -vdel comando grepimprime slo las lneas que no corresponden al filtro.
Por ejemplo, para ver todas las lneas que no contienen el deporte "carrera":

$ grep -v carrera deportistas


gilberto garca hombre ping-pong
francisco cornaz hombre vela
gerardo cani hombre natacin
juana barrera mujer natacin,marcha
esteban olivar hombre petanca
patricio chekib hombre squash,vela
maria baeza mujer marcha
julia ramrez mujer tenis,petanca
La opcin -vpuede usarse tambin para suprimir la lnea del proceso grepen el primer ejemplo del
apartado con:

$ ps -ef | grep sleep


nicolas 2490 1699 0 10:16 pts/0
nicolas 3624 1699 0 12:18 pts/0
$ ps -ef | grep sleep | grep -v grep
nicolas 2490 1699 0 10:16 pts/0

00:00:00 sleep 9999


00:00:00 grep sleep
00:00:00 sleep 9999

Se pueden encadenar varios filtros seguidos mediante los tubos proporcionados por el shell.

Opcin -c
Para conocer nicamente el nmero de lneas que concuerdan con el filtro, se usa la opcin -c:
http://www.eni-training.com/client_net/mediabook.aspx?idR=72898

10/16

25/4/2014

ENI Training - Libro online

$ grep carrera deportistas


daniel rigal hombre ping-pong,carrera
nicolas pons hombre petanca,carrera,ping-pong
sofia py mujer carrera,tenis
vernica garca mujer vela,carrera
claudio bermejo hombre carrera,petanca
willy mario hombre carrera,squash
$ grep -c carrera deportistas
6

Opcin -l
La opcin -lmuestra nicamente los nombres de archivos que cuentan con lneas que concuerdan.
Por ejemplo, para encontrar todos los archivos en /etcque tienen el nmero 192:

$ grep -l 192 /etc/* 2>/dev/null


/etc/dnsmasq.conf
/etc/hosts
/etc/jwhois.conf
/etc/mke2fs.conf
/etc/ntp.conf
/etc/pm-utils-hd-apm-restore.conf
/etc/rsyslog.conf
/etc/services
La redireccin del error permite suprimir los mensajes respecto a la falta de permisos de
acceso del usuario normal para leer ciertos archivos.

Opcin -n
El nmero de lnea donde se encuentra la lnea correspondiente se muestra con la opcin -n:

$ grep -n carrera deportistas


2:daniel rigal hombre ping-pong,carrera
6:nicolas pons hombre petanca,carrera,ping-pong
9:sofia py mujer carrera,tenis
12:vernica garcia mujer vela,carrera
13:claudio bermejo hombre carrera,petanca
14:willy mario hombre carrera,squash

Opcin -i
La opcin -i le indica a grep que ignore la distincin entre maysculas y minsculas en las
comparaciones:

$ grep petanca deportistas


nicolas pons hombre petanca,carrera,ping-pong
julia ramrez mujer tenis,petanca
claudio bermejo hombre carrera,petanca
[francisco]$ grep -i petanca deportivos
nicolas pons hombre petanca,carrera,ping-pong
esteban olivar hombre petanca
julia ramrez mujer tenis,petanca
http://www.eni-training.com/client_net/mediabook.aspx?idR=72898

11/16

25/4/2014

ENI Training - Libro online

claudio bermejo hombre carrera,petanca

Opcin -w
Finalmente, la opcin -w considera el filtro como una palabra entera. As, si se busca todos los
hombres en el archivo deportivo, la lnea donde se encuentra la persona "julia ramrez" no debe
aparecer:

$ grep hombre deportistas


gilberto garca hombre ping-pong
daniel rigal hombre ping-pong,carrera
francisco cornaz hombre vela
gerardo cani hombre natacin
nicolas pons hombre petanca,carrera,ping-pong
esteban olivar hombre petanca
patricio chekib hombre squash,vela
julia ramrez mujer tenis,petanca
claudio bermejo hombre carrera,petanca
willy mario hombre carrera,squash
$ grep -w hombre deportistas
gilberto garca hombre ping-pong
daniel rigal hombre ping-pong,carrera
francisco cornaz hombre vela
gerardo cani hombre natacin
nicolas pons hombre petanca,carrera,ping-pong
esteban olivar hombre petanca
patricio chekib hombre squash,vela
claudio bermejo hombre carrera,petanca
willy mario hombre carrera,squash

b. Expresiones regulares
Los filtros del comando grep pueden ser expresiones regulares. Las expresiones regulares sobre
lneas de texto son del mismo tipo que los caracteres genricos utilizados para los nombres de
archivos en el shell, pero no son idnticas.
Los principales metacaracteres de las expresiones regulares son:

cualquier carcter una vez (equivale al carcter genrico ?).

cero instancias o ms del carcter anterior.

[a-n]

un carcter de la lista, como en los caracteres genricos.

principio de lnea.

final de lnea.

inhibicin del metacarcter siguiente, como en el carcter de cita.


El equivalente del carcter genrico * en shell es .* en la expresin regular (cualquier
carcter repetido cero o ms veces).

Por ejemplo, para listar slo las lneas que empiezan por "g":

$ grep g deportistas
gerardo cani hombre natacin
gilberto garca hombre ping-pong
http://www.eni-training.com/client_net/mediabook.aspx?idR=72898

12/16

25/4/2014

ENI Training - Libro online

Los filtros con metacaracteres deben aparecer entre apstrofes para no ser interpretados
por el shell.

Para las lneas que empiezan por "g" y terminan por "n":

$ grep g.*n$ deportistas


gerardo cani hombre natacin
Esto es tan solo una idea aproximada de las expresiones regulares. Existen libros de la
misma coleccin, como "Programacin shell en Unix/Linux", que analizan esta cuestin.

3. cut
El comando cutpermite extraer columnas o campos seleccionados a partir de su entrada estndar o de
archivos.

Extraccin de campos
La primera sintaxis del comando cutpara extraer campos es:
cut -f campo(s) -d delimitador archivo(s)
Cuando se especifican varios campos, los nmeros se separan con comas.
Para mostrar slo el tercero y el sexto campo del archivo /etc/passwd:

$ cat /etc/passwd
root:x:0:0:root:/root:/bin/bash
bin:x:1:1:bin:/bin:/sbin/nologin
nicolas:x:500:100:Nicolas Pons:/home/nicolas:/bin/bash
linus:x:504:100:Linus Torvalds:/home/linus:/bin/bash
richard:x:505:100:Richard M. Stallman:/home/richard:/bin/bash
ken:x:501:100:Ken Thompson:/home/ken:/bin/bash
dennis:x:502:100:Dennis Ritchie:/home/dennis:/bin/bash
eric:x:506:100:Eric S. Raymond:/home/eric:/bin/bash
alan:x:507:100:Alan Cox:/home/alan:/bin/bash
gordon:x:503:100:Gordon E. Moore:/home/gordon:/bin/bash
$ cut -f 3,6 -d : /etc/passwd
0:/root
1:/bin
500:/home/nicolas
504:/home/linus
505:/home/richard
501:/home/ken
502:/home/dennis
506:/home/eric
507:/home/alan
503:/home/gordon

Extraccin de columnas
http://www.eni-training.com/client_net/mediabook.aspx?idR=72898

13/16

25/4/2014

ENI Training - Libro online

El separador de campos es un carcter definido por la opcin -d, por lo que no es posible ordenar
lneas en las que la informacin est espaciada por un nmero indeterminado de espacios.
Para extraer ciertos datos del comando ls -l, por ejemplo, se usa la nocin de columna con el
comando cut, es decir, para la salida del comando 1s -1siguiente:

$ ls -l
total 16
-rw-r--r--. 1 nicolas users
6 23 feb. 09:27 archivo1
-rw-r--r--. 1 nicolas users
0 23 feb. 09:10 archivo2
-rw-r--r--. 1 nicolas users
0 23 feb. 09:26 ref
drwxr-xr-x. 2 nicolas users 4096 23 feb. 09:09 dir1
drwxr-xr-x. 2 nicolas users 4096 23 feb. 09:09 dir2
-rw-r--r-- 1 nicolas users 465 23 feb. 12:24 deportistas
La sintaxis es:
cut -c columnas archivo(s)
Las columnas se definen por los nmeros del primer y del ltimo carcter que las componen, separados
por un guin. Si se omite el lmite inferior, cutconsidera el primer carcter de la lnea. Asimismo, si se
omite el lmite superior, se usar implcitamente el ltimo carcter de la lnea.
Como en la extraccin de campos, se puede especificar varias columnas separando sus definiciones por
comas.
Por ejemplo, para ver los permisos de los archivos, su tamao y su nombre filtrando la salida del
comando ls -lanterior mediante el comando cut:

$ ls -l | cut -c 2-10,28-32,48total 16
rw-r--r-6 archivo1
rw-r--r-0 archivo2
rw-r--r-0 ref
rwxr-xr-x 4096 dir1
rwxr-xr-x 4096 dir2
rw-r--r-- 465 deportistas

4. sort
El comando sortordena las lneas de un archivo (o su entrada estndar) y devuelve el resultado en su
salida estndar.
Su sintaxis general es:
sort -t delimitador +campo.carcter opcin(s) archivo
El archivo de ejemplo frutasutilizado en este prrafo es:
manzana.2
tomate.10
pera.4
En su expresin ms simple, sortordena alfabticamente por el primer carcter de cada lnea:

$ sort frutas
http://www.eni-training.com/client_net/mediabook.aspx?idR=72898

14/16

25/4/2014

ENI Training - Libro online

manzana.2
pera.4
tomate.10
La clasificacin puede empezar a partir de cualquier carcter de cualquier campo en el archivo. Se usa
entonces la sintaxis -kn.mdonde nes el nmero de campo y mel nmero del carcter en el campo. Si
el nmero de carcter se omite, la ordenacin se efectuar a partir del primer carcter del campo
especificado.
A diferencia del comando cut, el separador de campos predeterminado es uno o ms caracteres de
espacio. Adems, es modificable con la opcin -t.
Veamos una clasificacin a partir del tercer carcter en el primer campo de cada lnea:

$ sort -k1.3 frutas


tomate.10
manzana.2
pera.4
Veamos una clasificacin sobre el primer carcter del segundo campo de cada lnea:

$ sort -t. -k2 frutas


tomate.10
manzana.2
pera.4
La opcin -nclasifica los campos numricos en funcin de su valor aritmtico:

$ sort -t. -n -k2 frutas


manzana.2
pera.4
tomate.10
Para terminar, la opcin -rinvierte la ordenacin del comando sort:

$ sort -r frutas
tomate.10
pera.4
manzana.2

5. head, tail
Los comandos heady tailpermiten respectivamente mostrar slo el principio o el final de los archivos.
El comando headmuestra de modo predeterminado las diez primeras lneas de un archivo. Se puede
modificar esta opcin a las Nprimeras lneas del archivo con la sintaxis head -nN.
El comando tail muestra de modo predeterminado las diez ltimas lneas de un archivo. Se puede
cambiar este valor de dos modos:

tail -nN

muestra las Nltimas lneas del archivo.

tail -n+N

muestra desde la lnea Nhasta el final del archivo.

En resumen, se obtiene:
http://www.eni-training.com/client_net/mediabook.aspx?idR=72898

15/16

25/4/2014

ENI Training - Libro online

El comando tailse usa tambin para consultar archivos escritos al mismo tiempo por otros procesos,
como archivos de registro. La opcin -fle indica al comando tailque lea las nuevas lneas del archivo
de entrada a medida que estn disponibles; esto permite controlar el crecimiento del archivo.
Slo se puede utilizar la opcin -fde tail especificando un archivo. Es imposible emplearlo
cuando el comando lee los datos en su entrada estndar.

Para detener la visualizacin con la opcin -f, se interrumpe el comando con las teclas [Ctrl]+[c].

http://www.eni-training.com/client_net/mediabook.aspx?idR=72898

16/16

25/4/2014

ENI Training - Libro online

Introduccin
La configuracin del sistema es responsabilidad del administrador. Sin embargo, es bueno que el
principiante sepa efectuar ciertas tareas administrativas para instalar y quitar programas
complementarios, configurar el servicio de impresin, utilizar sus dispositivos de audio y de red, etc.
Las operaciones indicadas en este captulo requieren, en su mayor parte, los permisos del usuario root.

http://www.eni-training.com/client_net/mediabook.aspx?idR=72900

1/1

25/4/2014

ENI Training - Libro online

Instalar programas
Los programas que funcionan en Linux se distribuyen en diferentes formatos:
los paquetes RPM (Red Hat Package Manager);
los paquetes Debian;
los archivos comprimidos (vase captulo Administracin de la cuenta de usuario).

1. Los paquetes RPM


Creado por la empresa Red Hat, RPM (Red Hat Package Manager) es una herramienta de gestin de
paquetes de programas para Linux. Su distribucin bajo licencia GPL ha contribuido a su notoriedad y
actualmente la emplea un gran nmero de distribuciones de Linux, como Mandriva y SuSE.
Un paquete se presenta en forma de archivo con extensin .rpmy contiene, adems de los archivos de
la aplicacin, informacin general sobre el paquete, como la versin, la descripcin y el script de
instalacin.
El nombre tpico de un archivo de paquete RPM es foo-1.0-1.i386.rpm. Este nombre de archivo
indica el nombre del paquete (foo), la versin (1.0), el nmero de revisin o "release" (1) y la
arquitectura (i386) para la que se ha compilado el software. Si el nombre incluye src o noarch en
lugar de la arquitectura, significa que se trata respectivamente de un paquete que contiene nicamente
los archivos fuente del programa o de un paquete independiente de la arquitectura.
Los paquetes RPM se manejan mediante el comando rpm.

Instalacin
Para instalar o actualizar un paquete RPM, la sintaxis utilizada es:
rpm -Uvh paquete.rpm
Las opciones indican:

-U

instalacin del paquete si an no est en el sistema o actualizacin en caso


contrario.

-v

modo verboso; el comando rpmmuestra en salida el paquete que est tratando.

-h

visualizar una barra de progreso que muestra el avance de la instalacin en


curso.

Por ejemplo:

[root]# rpm -ivh vorbis-tools-1.4.0-5.fc18.x86_64.rpm


Preparing...
########################################### [100%]
Updating / installing...
1:vorbis-tools-1:1.4.0-5.fc18

#################################### [100%]

Desinstalacin
La sintaxis del comando rpmpara la desinstalacin de paquetes es algo diferente; no hay que pasar el
nombre de un archivo RPM como argumento, sino slo el nombre del paquete que hay que borrar:
http://www.eni-training.com/client_net/mediabook.aspx?idR=72901

1/3

25/4/2014

ENI Training - Libro online

rpm -e paquete
La opcin -e(erase) es la que ordena al comando rpmborrar un paquete del sistema:

[root]# rpm -e vorbis-tools-1.4.0-5.fc18.x86_64.rpm


error: package vorbis-tools-1.4.0-5.fc18.x86_64.rpm is not installed
[root]# rpm -e vorbis-tools
[root]#
Los editores de las distribuciones suelen proporcionar herramientas como yum o urpmi, que
permiten gestionar paquetes RPM de forma sencilla.

2. Los paquetes Debian


Los paquetes Debian, utilizados por la distribucin del mismo nombre, tienen la extensin .debpara los
paquetes binarios y .dscpara los paquetes de fuentes.
Al igual que el formato RPM, el formato Debian est bajo licencia GPL. Por consiguiente, otras
distribuciones de Linux tambin lo usan.
Adems, los nombres de archivo de estos paquetes contienen tambin un cierto nmero de
indicaciones. As, un archivo llamado foo_1.0-1.deb significa que estamos ante un paquete Debian
con el software foo en la versin 1.0 y que el nmero de revisin aportado por el desarrollador al
crear el paquete es 1.
La principal herramienta de manejo de archivos de Debian es dpkg.

Instalacin
La sintaxis bsica para la instalacin de un paquete .debes:
dpkg -i paquete.deb
La opcin -i(install) permite instalar el archivo Debian especificado como argumento:

[root]# dpkg -i vim_6.1.018-1_i386.deb


Selecting previously deselected package vim.
(Reading database ... 53816 files and directories currently installed.)
Unpacking vim (from vim_6.1.018-1_i386.deb) ...
Setting up vim (6.1.018-1) ...

Desinstalacin
Segn el efecto buscado, se usar -r(remove) para borrar el software conservando los archivos de
configuracin:
dpkg -r paquete
O -P(purge) para borrar todos los archivos del paquete:
dpkg -P paquete
http://www.eni-training.com/client_net/mediabook.aspx?idR=72901

2/3

25/4/2014

ENI Training - Libro online

As:

[root]# ls /etc/vim/vimrc
/etc/vim/vimrc
[root]# dpkg -r vim
(Reading database ... 54685 files and directories currently installed.)
Removing vim ...
dpkg - warning: while removing vim, directory `/etc/vim not empty
so not removed.
dpkg - warning: while removing vim, directory `/usr/share/doc/vim/html
not empty so not removed.
dpkg - warning: while removing vim, directory `/usr/share/doc/vim
not empty so not removed.
[root]# ls /etc/vim/vimrc
/etc/vim/vimrc
[root]# dpkg -P vim
(Reading database ... 53821 files and directories currently installed.)
Removing vim ...
Purging configuration files for vim ...
[root]# ls /etc/vim/vimrc
ls: /etc/vim/vimrc: No such file or directory

3. Los archivos comprimidos


Una gran mayora de las aplicaciones utilizadas en Linux est bajo licencia GPL y asimiladas, por lo que
los archivos fuentes de la mayor parte de los programas estn disponibles en forma de archivos
comprimidos.
Se pueden conseguir estos archivos en webs dedicadas a las aplicaciones de Linux y en los CD-ROM
que acompaan a algunas revistas de informtica.
Estos archivos tienen habitualmente la extensin .tar.gz o .tgz en el caso de archivos creados
mediante el comando tary comprimidos con gzip.

Instalacin
Para instalar una aplicacin distribuida en este formato, es preciso:
descomprimir el archivo .tgzen el directorio /tmpo /usr/srcprevisto a tal efecto;
explorar los archivos contenidos
normalmente READMEo INSTALL.

en

el

archivo

recuperar

el

archivo

llamado

Los desarrolladores de estos programas se esfuerzan en indicar, en este archivo README, el proceso
detallado de instalacin.

Desinstalacin
Generalmente no hay un procedimiento de desinstalacin que acompaa a las aplicaciones en forma de
archivos comprimidos; la desinstalacin de este software requiere un buen conocimiento del producto y
de los archivos que lo acompaan para evitar dejar archivos hurfanos.

http://www.eni-training.com/client_net/mediabook.aspx?idR=72901

3/3

25/4/2014

ENI Training - Libro online

Herramientas de administracin
Existen en Linux diversas herramientas que facilitan la administracin del sistema. stas son adecuadas
para la mayora de tareas administrativas normales realizadas por un usuario principiante.

Herramientas especficas de una aplicacin


Ciertas herramientas han sido desarrolladas por los autores de una aplicacin y estn dedicadas a ella;
es el caso de la herramienta SWAT (Samba Web Administration Tool).

Herramientas especficas de una distribucin de Linux


Los editores de una distribucin desarrollan otras herramientas para permitir la configuracin bsica de
dicha distribucin en particular.
Para encontrar las herramientas que acompaan a la distribucin, se recomienda a quien empieza y a
quien quiera administrar su sistema que lea la informacin indicada en la documentacin y durante la
instalacin.
Las distribuciones de Mandriva cuentan con un centro de control grfico.
Las distribuciones Red Hat y Fedora vienen con un conjunto de herramientas cuyo nombre empieza
por system-config-*y a las que puede accederse mediante mens de la interfaz grfica:

[root]# cd /usr/bin
[root]# ls system-config-*
system-config-authentication
system-config-date
system-config-keyboard
system-config-printer

system-config-printer-applet
system-config-samba
system-config-services
system-config-users

La distribucin Ubuntu, y en general las basadas en la interfaz GNOME, ofrece distintas herramientas de
administracin desde el centro de control de GNOME:

http://www.eni-training.com/client_net/mediabook.aspx?idR=72902

1/4

25/4/2014

ENI Training - Libro online

En cuanto a SuSE, sus principales herramientas de configuracin del sistema se llaman yast(Yet Another
System Tool) y yast2; la primera propone una interfaz de lnea de comandos y la segunda, una interfaz
grfica. Veamos una captura de pantalla de yast2:

http://www.eni-training.com/client_net/mediabook.aspx?idR=72902

2/4

25/4/2014

ENI Training - Libro online

Herramientas genricas de Linux


Finalmente, existen otras herramientas genricas, como Webmin, que no estn vinculadas a una
distribucin o a una aplicacin.
Webmin propone al programador toda una serie de rutinas para el desarrollo de mdulos de
administracin. El nmero de mdulos desarrollados es muy alto y actualmente se puede administrar casi
la totalidad de servicios de un sistema Linux con la interfaz propuesta por Webmin, es decir, mediante un
navegador web:

http://www.eni-training.com/client_net/mediabook.aspx?idR=72902

3/4

25/4/2014

http://www.eni-training.com/client_net/mediabook.aspx?idR=72902

ENI Training - Libro online

4/4

S-ar putea să vă placă și