Documente Academic
Documente Profesional
Documente Cultură
Informacin
Ttulo, autor...
Prefacio
Prefacio
Introduccin
o
o
o
o
o
Historia de Unix
GNU
Linux
Qu distribucin elegir?
Convenciones tipogrficas
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
o
o
o
Introduccin
Presentacin de Vi
Otras herramientas de edicin
o
o
o
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
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
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
o
o
o
Introduccin
Instalar programas
Herramientas de administracin
25/4/2014
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
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
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
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
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.
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
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
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
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...).
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
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.
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
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
2/4
25/4/2014
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
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
http://www.eni-training.com/client_net/mediabook.aspx?idR=72819
4/4
25/4/2014
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:
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
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
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.
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
http://www.eni-training.com/client_net/mediabook.aspx?idR=72823
2/5
25/4/2014
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
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
5/5
25/4/2014
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
2/2
25/4/2014
[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
$ 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 -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
$ 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 --help
$ comando --version
En el caso de una opcin con parmetro, ste se separa con un espacio:
$ 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
$ comando -a -- -b
Cuando el shell encuentra -- en la lnea de comando, interpreta todas las cadenas de caracteres
siguientes como argumentos del comando.
$ 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:
http://www.eni-training.com/client_net/mediabook.aspx?idR=72826
3/3
25/4/2014
http://www.eni-training.com/client_net/mediabook.aspx?idR=72827
1/1
25/4/2014
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]
[Mays]+[RePg]
[Mays]+[AvPg]
[Fin]
[Izquierda]
[Derecha]
[Supr]
[Retroceso]
[Ctrl]+[w]
[Ctrl]+[u]
Historial de comandos
[Arriba]
[Abajo]
[Ctrl]+[r]
[Ctrl]+[j] o [Esc]
http://www.eni-training.com/client_net/mediabook.aspx?idR=72828
1/2
25/4/2014
Varios
[Ctrl]+[c]
[Ctrl]+[d]
[Ctrl]+[s]
[Ctrl]+[q]
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
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.
[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
$ 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.
[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
[nicolas]$ wc -l /etc/archivo
2 /etc/archivo
[nicolas]$ wc -w /etc/archivo
14 /etc/archivo
[nicolas]$ wc -c /etc/archivo
82 /etc/archivo
[nicolas]$ clear
El comando echodevuelve la cadena de caracteres recibida como argumento:
entre
Aunque muy esquemticos, estos dos ltimos comandos tendrn su utilidad en la escritura de
scripts shell.
[nicolas]$ date
Vie may 10 14:55:16 CEST 2013
Tambin es posible dar formato a la salida, por ejemplo:
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
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:
http://www.eni-training.com/client_net/mediabook.aspx?idR=72829
4/4
25/4/2014
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
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
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
-s
...
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.
NOMBRE
SINOPSIS
DESCRIPCIN
EJEMPLOS
VER TAMBIN
ERRORES
TRADUCCIN
Otros
(en
el
2/4
25/4/2014
que man 7 signaldevuelve la definicin de las diferentes seales que pueden ser recibidas por los
procesos.
3/4
25/4/2014
dc
dc
difftime
...
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
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
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
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
Node
Next
Prev
Up
Navegacin
Varios comandos (teclas del teclado), bajo info, permiten pasar de un nodo a otro; destacan:
[n]
[p]
http://www.eni-training.com/client_net/mediabook.aspx?idR=72834
2/5
25/4/2014
[u]
[t]
[l]
Para consultar la informacin de un nodo que puede ocupar varias pantallas se utilizan las teclas
siguientes:
[Espacio]
[Supr]
[b]
[e]
[Ctrl]+[n]
[Ctrl]+[p]
[F] <xref>
[Tab]
[Ecs], [Tab]
[Entr]
http://www.eni-training.com/client_net/mediabook.aspx?idR=72834
un
esquema
recapitulativo
de
la
estructura
de
la
3/5
25/4/2014
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
[Re Pg]
[Abajo]
[Arriba]
[Derecha]
[Izquierda]
[q]
Salir de pinfo.
http://www.eni-training.com/client_net/mediabook.aspx?idR=72834
5/5
25/4/2014
$ 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
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
.ps
.html
.texy .dvi
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
/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
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
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
http://www.eni-training.com/client_net/mediabook.aspx?idR=72838
3/3
25/4/2014
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
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
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
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
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/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
/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
/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:
http://www.eni-training.com/client_net/mediabook.aspx?idR=72841
5/5
25/4/2014
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
[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
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.
[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
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
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
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
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.
http://www.eni-training.com/client_net/mediabook.aspx?idR=72846
1/1
25/4/2014
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
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
/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
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
[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.
[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
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
El primer carcter indica el tipo de archivo; los valores posibles son (vase seccin Tipos de archivos, en
este captulo):
archivo comn
directorio (directory)
archivo "socket"
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
3/6
25/4/2014
-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:
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-----
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
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:
5. stat
Al igual que el comando ls -l, la herramienta statmuestra la informacin contenida en el inodo de
los archivos pasados como argumentos:
5/6
25/4/2014
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)
File
Size
Blocks
IO Block
tipo de archivo
Access
Uid
Gid
Access
Modify
Change
http://www.eni-training.com/client_net/mediabook.aspx?idR=72848
6/6
25/4/2014
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:
1/2
25/4/2014
./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
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
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
.:
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:
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
-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
[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
4/5
25/4/2014
http://www.eni-training.com/client_net/mediabook.aspx?idR=72850
5/5
25/4/2014
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
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
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
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):
2/3
25/4/2014
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
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
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
3/3
25/4/2014
Consultar archivos
1. cat
cat muestra en la pantalla el contenido de los archivos pasados como argumento en la lnea de
comandos:
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]
[Espacio]
[q]
# resource location
# resource location
# IEN 116
# IEN 116
Existe en Linux un comando similar, ms evolucionado que more, llamado less. Adems de las teclas
anteriores, acepta tambin:
[Arriba]
[Abajo]
[Re pg]
http://www.eni-training.com/client_net/mediabook.aspx?idR=72853
1/2
25/4/2014
[Av pg]
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.
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:
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:
http://www.eni-training.com/client_net/mediabook.aspx?idR=72853
2/2
25/4/2014
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
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
~
~
~
~
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
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.
3/11
25/4/2014
[Ctrl]+[f]
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
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:
"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".
http://www.eni-training.com/client_net/mediabook.aspx?idR=72856
5/11
25/4/2014
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
d0
d$
dw
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
y0
y$
http://www.eni-training.com/client_net/mediabook.aspx?idR=72856
6/11
25/4/2014
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
:w archivo
:w!
http://www.eni-training.com/client_net/mediabook.aspx?idR=72856
archivo.
7/11
25/4/2014
:q
:q!
:wq, :xo ZZ
(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.
la
cadena
de
caracteres
que
ser
reemplazada
por
la
cadena
de
8/11
25/4/2014
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:
llamar al
:r!date
La fecha devuelta por el comando datedel shell se inserta en el texto tras el cursor.
9/11
25/4/2014
: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
[no]number
[no]list
[no]showmode
tabstop=n
[no]ignorecase
:helpcomandoVim
:r archivo
http://www.eni-training.com/client_net/mediabook.aspx?idR=72856
10/11
25/4/2014
rc
>>
<<
http://www.eni-training.com/client_net/mediabook.aspx?idR=72856
11/11
25/4/2014
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
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
http://www.eni-training.com/client_net/mediabook.aspx?idR=72857
3/7
25/4/2014
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
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
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
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
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
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.
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.
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
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
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
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
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
[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
3/7
25/4/2014
[alejandro]$ ls -l urna
-rw------w- 1 root root 0 jun 3 02:01 urna
Archivo
Directorio
SUID
SGID
Sticky
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).
SGID
Igual pero en los permisos del grupo.
http://www.eni-training.com/client_net/mediabook.aspx?idR=72860
4/7
25/4/2014
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
[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
[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
[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:
6/7
25/4/2014
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
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
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
g-w
o-rw
Suprime (-) los permisos de lectura (r) y de modificacin (w) para los
dems (o).
ug-x
a+r
Agrega (+) el permiso de lectura (r) para todas las entidades (a).
u=rw
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:
[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
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
http://www.eni-training.com/client_net/mediabook.aspx?idR=72861
3/6
25/4/2014
[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
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.
[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
http://www.eni-training.com/client_net/mediabook.aspx?idR=72861
6/6
25/4/2014
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.
http://www.eni-training.com/client_net/mediabook.aspx?idR=72863
1/1
25/4/2014
http://www.eni-training.com/client_net/mediabook.aspx?idR=72864
1/1
25/4/2014
[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
1/5
25/4/2014
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
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.
%CPU
%MEM
COMMANDo CMD
GIDo GROUP
NI
PID
PPID
RSS
STARTo STIME
STAT
TIME
TTo TTY
UIDo USER
Campo STAT
http://www.eni-training.com/client_net/mediabook.aspx?idR=72865
3/5
25/4/2014
Los estados definidos por el campo STATpresentan tres caracteres. En Linux, los valores del primero
significan:
R(Running)
T(sTopped)
S(Sleeping)
D(Device)
Z(Zombie)
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.
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
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
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
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
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:
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
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.
[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
http://www.eni-training.com/client_net/mediabook.aspx?idR=72867
1/1
25/4/2014
[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]$
[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
Jobs
El comando jobsmuestra la lista de procesos en curso de ejecucin que han sido iniciados desde el
terminal actual:
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
[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
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
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
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:
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
http://www.eni-training.com/client_net/mediabook.aspx?idR=72871
2/2
25/4/2014
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.
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:
1/7
25/4/2014
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.
[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
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:
http://www.eni-training.com/client_net/mediabook.aspx?idR=72872
3/7
25/4/2014
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
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.
$BASH
Ruta al propio binario 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:
$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
[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.
PATH=$PATH:/nuevo_directorio
$PS1
ste es el smbolo del sistema principal, visto desde la lnea de comandos:
\d
Muestra la fecha.
\h
\H
\t
\u
\w
http://www.eni-training.com/client_net/mediabook.aspx?idR=72872
6/7
25/4/2014
\W
$PS2
Esta variable representa el smbolo del sistema secundario que se muestra cuando el shell espera el
resto de la entrada de un comando:
$PWD
Directorio actual donde se encuentra el usuario. Su valor equivale al resultado del comando pwd:
$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
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
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?
*a?
??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
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.
[: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
[: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
4/5
25/4/2014
?(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
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:
La barra invertida: \
Todo carcter que sigue a la barra invertida pierde su significado especial:
La
barra
invertida
no
produce ningn
efecto
si
el
[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
[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
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
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".
[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
[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:
3/8
25/4/2014
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:
4/8
25/4/2014
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.
[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:
5/8
25/4/2014
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
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:
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
8/8
25/4/2014
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
[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
Ejecucin de comandos
Los comandos escritos por el usuario pueden ser de diferentes naturalezas:
alias;
comando interno;
comando externo.
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:
http://www.eni-training.com/client_net/mediabook.aspx?idR=72877
1/1
25/4/2014
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:
http://www.eni-training.com/client_net/mediabook.aspx?idR=72878
1/1
25/4/2014
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
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
noclobber
Con esta opcin, el shell no borra un archivo existente en una redireccin simple; para forzarlo, hay que
emplear la sintaxis >|:
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:
verbose
Muestra las lneas de comandos a medida que se leen; muy til para la depuracin de scripts del shell:
vi
http://www.eni-training.com/client_net/mediabook.aspx?idR=72879
2/3
25/4/2014
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:
http://www.eni-training.com/client_net/mediabook.aspx?idR=72879
3/3
25/4/2014
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
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:
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.
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
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:
. 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
En este caso, el entorno del shell de conexin se modifica segn el cdigo del script que ejecuta:
exec ./prog.sh
Cuando el shell encuentra el comando interno
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
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:
Comentarios
http://www.eni-training.com/client_net/mediabook.aspx?idR=72882
4/5
25/4/2014
http://www.eni-training.com/client_net/mediabook.aspx?idR=72882
5/5
25/4/2014
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
[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:
1/2
25/4/2014
[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
2/2
25/4/2014
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.
1. Ejecucin condicional
Para ejecutar el comando
1/2
25/4/2014
http://www.eni-training.com/client_net/mediabook.aspx?idR=72884
2/2
25/4/2014
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
2. $0
La variable $
0contiene el nombre del script en curso de ejecucin tal como ha sido llamado en la lnea
de comandos:
1/3
25/4/2014
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:
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:
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 $#:
5. $*, $@
Estas dos variables contienen el conjunto de parmetros posicionales pasados en la lnea de
comandos:
2/3
25/4/2014
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:
http://www.eni-training.com/client_net/mediabook.aspx?idR=72885
3/3
25/4/2014
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):
-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
-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):
http://www.eni-training.com/client_net/mediabook.aspx?idR=72886
2/5
25/4/2014
[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:
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
(=, !=).
3/5
25/4/2014
[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
! expresin
Devuelve verdadero si la expresin es falsa, y viceversa:
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
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
\|: 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
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:
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:
http://www.eni-training.com/client_net/mediabook.aspx?idR=72887
3/4
25/4/2014
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++,
[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
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:
1/2
25/4/2014
[ -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
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:
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:
1/3
25/4/2014
#!/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:
2/3
25/4/2014
$i=10
fin
http://www.eni-training.com/client_net/mediabook.aspx?idR=72889
3/3
25/4/2014
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
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
[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
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
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
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.
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
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
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):
http://www.eni-training.com/client_net/mediabook.aspx?idR=72895
rene
la mayora de
las
1/2
25/4/2014
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
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
u, --update
x, --extract, --get
t, --list
f, --file
v, --verbose
z, --gzip, --ungzip
http://www.eni-training.com/client_net/mediabook.aspx?idR=72896
1/5
25/4/2014
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
/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.
[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
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
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
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
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:
2/16
25/4/2014
/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
-size -12
-size +12
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:
k, Mo G
-mtime [+-]<das>
http://www.eni-training.com/client_net/mediabook.aspx?idR=72898
3/16
25/4/2014
-mtime 3
-mtime -3
-mtime +3
-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:
-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
-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.
-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:
5/16
25/4/2014
/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:
-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:
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:
6/16
25/4/2014
/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
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
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
$ 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:
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
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":
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
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:
Opcin -n
El nmero de lnea donde se encuentra la lnea correspondiente se muestra con la opcin -n:
Opcin -i
La opcin -i le indica a grep que ignore la distincin entre maysculas y minsculas en las
comparaciones:
11/16
25/4/2014
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:
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:
[a-n]
principio de lnea.
final de lnea.
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
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":
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
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
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 -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
tail -n+N
En resumen, se obtiene:
http://www.eni-training.com/client_net/mediabook.aspx?idR=72898
15/16
25/4/2014
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
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
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).
Instalacin
Para instalar o actualizar un paquete RPM, la sintaxis utilizada es:
rpm -Uvh paquete.rpm
Las opciones indican:
-U
-v
-h
Por ejemplo:
#################################### [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
rpm -e paquete
La opcin -e(erase) es la que ordena al comando rpmborrar un paquete del sistema:
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:
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
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
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
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.
[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
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
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
4/4