171
G.L.U.P. - Guía de Linux Para el Usuario Copyright Oc 1993, 1994, 1996 Larry Greenfield Todo lo que Ud. necesita saber para comenzar a utilizar Linux, el clon gratuito de Unix. Este manual cubre los comandos básicos de Unix, y también los específicos de Linux. El destinatario de este manual es el usuario principiante de Unix, aunque puede ser de utilidad como referencia para los usuarios más experimentados. UNIX es marca registrada de X/Open. MS-DOS y Microsoft Windows son marcas registradas de Microsoft Corporation. OS/2 y Operating System/2 son marcas registradas de IBM X Window System es una marca registrada del X Consortium, Inc. Motif es una marca registrada de la Open Software Foundation. Linux no es marca registrada, ni tiene ninguna conexión con UNIX o con los UNIX System Laboratories, o con X/Open. Por favor, ponga en conocimiento del autor cualquier marca registrada que no se haya mencionado. Copyright Oc Larry Greenfield 427 Harrison Avenue Highland Park, NJ 08904 [email protected] Traducción al castellano 1997 Grupo LuCAS. Montaje en HTML: InSeCtO en Noviembre de 1999. Ver apéndice LuCAS para una relación completa.

G.L.U.P.€€Guía€de€Linux€Para€el€Usuariomural.uv.es/~jalto/LINUX.pdf3 En€el€principio€11 3.1€La€computadora€despierta 3.2€Linux€despierta 3.3€La€actuación€del€usuario

  • Upload
    others

  • View
    1

  • Download
    0

Embed Size (px)

Citation preview

Page 1: G.L.U.P.€€Guía€de€Linux€Para€el€Usuariomural.uv.es/~jalto/LINUX.pdf3 En€el€principio€11 3.1€La€computadora€despierta 3.2€Linux€despierta 3.3€La€actuación€del€usuario

GLUP shy Guiacutea de Linux Para el Usuario

Copyright Oc 1993 1994 1996 Larry Greenfield

Todo lo que Ud necesita saber para comenzar a utilizar Linux el clon gratuito de UnixEste manual cubre los comandos baacutesicos de Unix y tambieacuten los especiacuteficos de Linux Eldestinatario de este manual es el usuario principiante de Unix aunque puede ser deutilidad como referencia para los usuarios maacutes experimentados

UNIX es marca registrada de XOpen

MSshyDOS y Microsoft Windows son marcas registradas de Microsoft Corporation

OS2 y Operating System2 son marcas registradas de IBM

X Window System es una marca registrada del X Consortium Inc

Motif es una marca registrada de la Open Software Foundation

Linux no es marca registrada ni tiene ninguna conexioacuten con UNIX o con los UNIX SystemLaboratories o con XOpen

Por favor ponga en conocimiento del autor cualquier marca registrada que no se hayamencionado

Copyright Oc Larry Greenfield

427 Harrison Avenue

Highland Park NJ

08904

leg+andrewcmuedu

Traduccioacuten al castellano 1997 Grupo LuCAS

Montaje en HTML InSeCtO en Noviembre de 1999

Ver apeacutendice LuCAS para una relacioacuten completa

Se garantiza el permiso para realizar y distribuir copias literales de este manualsiempre que se preserven la nota de derechos de autor y este permiso en todas las copias

Se garantiza el permiso para copiar y distribuir versiones modificadas de este manualbajo las condiciones de las copias literales siempre que las secciones en las cuales sereimprime La Licencia Puacuteblica General GNU La Licencia Puacuteblica General de BibliotecaGNU y otras en las cuales haya partes claramente marcadas bajo un derecho de autorseparado se reproduzcan bajo las mismas condiciones que ellas estipulan y se logre queel trabajo derivado resultante en su totalidad se distribuya bajo los teacuterminos de unanotificacioacuten de permiso ideacutentica a esta misma

Se garantiza el permiso de copiar y distribuir traducciones de este manual a otrosidiomas bajo las condiciones dadas para versiones modificadas La Licencia PuacuteblicaGeneral GNU y La Licencia Puacuteblica General de Biblioteca GNU pueden incluirse a traveacutesde una traduccioacuten aprobada por la Free Software Foundation en lugar de los originales eningleacutes

A su opcioacuten Ud puede distribuir copias literales o modificadas de este documento bajolos teacuterminos de la La Licencia Puacuteblica General GNU excepto las secciones marcadasclaramente bajo otros derechos de autor

Con distintos objetivos pueden garantizarse ciertas excepciones a esas reglas Escriba aLarry Greenfield a la direccioacuten dada maacutes arriba o utilice correo electroacutenico aleg+andrewcmuedu y consulte Se solicita (pero no se requiere) que Ud notifique alautor cuando se imprima a gran escala o se comercialice este documento Las regaliacuteas ydonaciones seraacuten aceptadas y sustentaraacuten las siguientes ediciones

Estas son algunas de las convenciones tipograacuteficas que se utilizan en este libro

negrita Se utiliza para iniciar nuevos conceptos AVISOS y palabras reservadas delenguajes

itaacutelica Se utiliza para enfatizar el texto

inclinada Se usa para marcar metashyvariables en el texto especialmente enrepresentaciones de la liacutenea de comandos Por ejemplo ls shyl foo donde foo se coloca enla posicioacuten donde iriacutea un nombre de archivo como por ejemplo bincp

monoespaciada Se usa para representar la interaccioacuten en la pantalla

Tambieacuten se usa para los ejemplos de coacutedigo fuente sea que se trate de coacutedigo Cguiones de shell o lo que sea y para mostrar archivos en general como por ejemploarchivos de configuracioacuten Cuando razones de claridad adicional lo exijan estos ejemplosse enmarcaraacuten en cuadros finos

|_Tecla_| Representa la tecla que debe oprimir En general lo veraacute utilizado de lasiguiente manera

Oprima |_Intro_| para continuar

3 El diamante en el margen como los diamantes negros en las montantildeas de ski marcan loslugares de peligro o precaucioacuten Debe leer cuidadosamente los paacuterrafos marcados deeste modo

Esta X en el margen indica la existencia de instrucciones especialmente destinadas a losusuarios del X Window System

Agradecimientos

El autor quiere agradecer a las siguientes personas por su invaluable ayuda tanto conLinux en siacute como con la escritura de The Linux Users Guide

Linus Torvalds por proveer el material acerca del cual se escribe este libro

Karl Fogel me ha proporcionado una enorme ayuda con la escritura de mi documentacioacuten deLinux y ademaacutes escribioacute la mayor parte del Capiacutetulo 8 y el Capiacutetulo 9 Cualquierreconocimiento hacia su labor seraacute insuficiente

Maurizio Codogno escribioacute gran parte del Capiacutetulo 11

David Channon escribioacute el apeacutendice sobre el vi (Apeacutendice A)

Yggdrasil Computing Inc por su generoso (y voluntario) sosteacuten para este manual

Red Hat Software por su (maacutes reciente y tambieacuten voluntario) sosteacuten

El programa fortune por proveerme algunas de las preciosas citas con las cuales comenzarcada capiacutetulo Auacuten cuando a nadie maacutes le gusten a miacute me encantan

Iacutendice General

1 Introduccioacuten 1

11 iquestQuieacuten debe leer este libro

111 iquestQueacute debe hacer antes de leer este libro

12 iquestCoacutemo evitar leer este libro

13 iquestCoacutemo leer este libro

14 Documentacioacuten de Linux

141 Otros libros de Linux

142 COMOs

143 iquestQueacute es el Proyecto de Documentacioacuten de Linux

15 Sistemas operativos

2 A propoacutesito iquestqueacute es Unix 7

21 La historia de Unix

22 La historia de Linux

221 Linux aquiacute y ahora

222 Unas pocas preguntas y respuestas

223 Software comercial en Linux

3 En el principio 11

31 La computadora despierta

32 Linux despierta

33 La actuacioacuten del usuario

331 El ingreso

332 Al abandonar la computadora

333 Como apagar la computadora

34 Mensajes del nuacutecleo

4 El shell de Unix 21

41 Comandos Unix

411 Un comando Unix tiacutepico

42 Autoayuda

43 Almacenaje de la informacioacuten

431 Miremos los directorios con ls

432 El directorio actual y cd

433 Creacioacuten y borrado de directorios

44 Informacioacuten en movimiento

441 cp como un monje

442 La poda con rm

443 Seriacutea interesante tener un rastrillo

5 El sistema de ventanas X 35

51 Ejecucioacuten y salida del sistema de ventanas X

511 Ejecucioacuten de X

512 Saliendo de X

52 iquestQueacute es el sistema de ventanas X

53 iquestQueacute es esto que hay en mi pantalla

531 XClock

532 XTerm

54 Gestores de ventanas

541 Cuando se crean nuevas ventanas

542 Foco

543 Moviendo ventanas

544 Profundidad

545 Iconizar

546 Variando el tamantildeo

547 Maximizacioacuten

548 Menuacutes

55 Atributos X

551 Geometriacutea

552 Presentacioacuten

56 Caracteriacutesticas comunes

561 Botones

562 Barras de menuacute

563 Barras de desplazamiento

6 Trabajando con Unix 47

61 Comodines

611 iquestQueacute ocurre realmente

612 El signo de interrogacioacuten

62 Ganar tiempo con bash

621 Editando la liacutenea de comandos

622 Completamiento de comandos y nombres de fichero

63 La entrada estaacutendar y La salida estaacutendar

631 Algunos conceptos de Unix

632 Redireccionar la salida

633 Redireccionar la entrada

634 Las tuberiacuteas

64 Multitarea

641 Usando el control de trabajos

642 Teoriacutea del control de trabajos

65 Consolas virtuales como estar en varios lugares a la vez

7 Pequentildeos programas potentes 61

71 El poder de Unix

72 Trabajando con ficheros

73 Estadiacutesticas del sistema

74 iquestQueacute hay en un fichero

75 Comandos de edicioacuten

8 Editando archivos con Emacs 71

81 iquestQueacute es Emacs

82 Comenzar raacutepidamente en X

83 Editando varios archivos al mismo tiempo

84 Terminando una sesioacuten de edicioacuten

85 La tecla Meta

86 Cortar pegar destruir y tirar

87 Buscar y reemplazar

88 iquestQueacute es lo que ocurre realmente

89 Pidiendo ayuda a Emacs

810 Especializando buffers Modos

811 Modos de programacioacuten

8111 Modo C

8112 Modo Scheme

8113 Modo de correo

812 Como ser maacutes eficiente auacuten

813 Personalizando Emacs

814 Averiguando maacutes

9 Tengo que ser yo mismo 91

91 Personalizacioacuten del bash

911 Arranque del shell

912 Ficheros de arranque

913 Creando alias

914 Variables de entorno

92 Los ficheros de inicio de X Window

921 Configuracioacuten de twm

922 Configuracioacuten de fvwm

93 Otros ficheros de inicio

931 El fichero de configuracioacuten de Emacs

932 Configuracioacuten por defecto del FTP

933 Permitiendo un acceso remoto sencillo a su cuenta

934 Redireccioacuten de correo

94 Veamos algunos ejemplos

10 Hablando con los demaacutes 111

101 Correo electroacutenico

1011 Enviar correo

1012 Leer el correo

102 Noticias maacutes que de sobra

103 Localizar a la gente

1031 Planes y proyectos

104 Uso remoto de sistemas

105 Intercambio de ficheros

106 Viajando por la telarantildea

11 Comandos divertidos 117

111 find el buscador de ficheros

1111 Generalidades

1112 Expresiones

1113 Opciones

1114 Test

1115 Acciones

1116 Operadores

1117 Ejemplos

1118 Una uacuteltima palabra

112 tar el archivador en cinta

1121 Introduccioacuten

1122 Opciones principales

1123 Modificadores

1124 Ejemplos

113 dd el duplicador de datos

1131 Opciones

1132 Ejemplos

114 sort el clasificador de datos

1141 Introduccioacuten

1142 Opciones

1143 Ejemplos

12 Errores equivocaciones bugs y otras molestias 129

121 Evitando errores

122 Queacute hacer cuando algo va mal

123 No es fallo tuyo

1231 Cuando hay un error

1232 Notificando un error

A Introduccioacuten a vi 133

A1 Una raacutepida historia de Vi

A2 Raacutepido tutorial de Ed

A21 Crear un fichero

A22 Editar un fichero existente

A23 Nuacutemeros de liacutenea en detalle

A3 Raacutepido tutorial de Vi

A31 Ejecutar vi

A32 Comandos de movimiento del cursor

A33 Borrar texto

A34 Salvar un fichero

A35 iquestQueacute viene a continuacioacuten

A4 Tutorial avanzado de Vi

A41 Movimiento

A42 Modificacioacuten del texto

A43 Copiar y mover bloques de texto

A44 Buacutesqueda y cambio de texto

B The GNU General Public License 147

C The GNU Library General Public License 155

D iquestQueacute es LuCAS 165

E iquestQueacute es INSFLUG 167

Bibliografiacutea

[1] Almesberger Werner LILO Generic Boot Loader for Linux Disponibleelectroacutenicamente tsxshy11mitedu 3 de Julio de 1993

[2] Bach Maurice J The Design of the UNIX Operating System Englewood Cliffs NewJersey PrenticeshyHall Inc 1986

[3] Lamport Leslie LATEX A Document Preparation System Reading MassachusettsAddisonshyWesley Publishing Company 1986

[4] Stallman Richard M GNU Emacs Manual octava edicioacuten Cambridge Massachusetts FreeSoftware Foundation 1993

Capiacutetulo 1

Introduccioacuten

How much does it cost to entice a dopeshysmoking Unix system guru to Dayton

Brian Boyle Unix Worlds First Annual Salary Survey

11 iquestQuieacuten debe leer este libro

iquestEs Ud la persona que debe leer este libro Permiacutetame responder a esta preguntahacieacutendole estas otras iquestAcaba de obtener Linux de alguna fuente lo instaloacute y ahoraquiere saber que puede hacer O iquestes un usuario de computadoras que nunca ha utilizadoUnix y estaacute considerando usar Linux pero quiere saber lo que puede hacer con eacutel

Si tiene este libro la respuesta a esas preguntas probablemente es siacute Cualquiera quetiene Linux (el clon gratuito de Unix escrito por Linus Torvalds) en su PC pero no sabeque hacer despueacutes de la instalacioacuten debe leer este libro Aquiacute encontraraacute explicacionessobre la mayoriacutea de los comandos baacutesicos de Unix e incluso de algunos avanzados Tambieacutentrataremos acerca del potente editor GNU Emacs y de muchas otras aplicaciones importantesen Unix

111 iquestQueacute debe hacer antes de leer este libro

Este libro supone que Ud tiene acceso a un sistema Unix (iexclPara aprender a nadar hay quemojarse) Maacutes importante auacuten el sistema Unix antes mencionado debe ser una PC INTELcorriendo Linux

Este requerimiento no es estrictamente necesario pero cuando las versiones de Unixdifieran en su comportamiento nos ocuparemos de las respuestas que exhiba Linux y no delas otras variantes de Unix

Linux estaacute disponible de distintas maneras llamadas distribuciones Espero que hayaencontrado una distribucioacuten completa como por ejemplo la MCCshyInterim y que la tengainstalada Existen diferencias entre las distintas distribuciones de Linux pero lamayoriacutea de ellas son insignificantes

Ocasionalmente veraacute que en este libro las cosas se ven un poquito distintas a lo que veen su computadora Si le sucede esto es probable que esteacute utilizando una versioacutendistinta de la miacutea estoy interesado en recibir informes de tales casos

Si Ud es el superusuario (el ocupado del mantenimiento el instalador) del sistemadeberaacute crearse una cuenta de usuario normal para Ud mismo Consulte por favor losmanuales de instalacioacuten para obtener la informacioacuten necesaria Si no es el superusuariodeberaacute solicitarle a quien lo sea que le cree una cuenta

Ahora deberaacute tener tiempo y paciencia El aprendizaje de Linux no es faacutecil _la mayoriacutea delas personas encuentran que es maacutes faacutecil aprender el sistema operativo del Macintosh Unavez que aprende Linux las cosas se vuelven mucho maacutes faacuteciles Unix es un sistema muypoderoso y con eacutel es muy faacutecil realizar tareas complejas

Ademaacutes este libro supone que Ud estaacute moderadamente familiarizado con algunos teacuterminoscomputacionales Aunque este requerimiento no es necesario hace maacutes faacutecil la lecturaDebe conocer teacuterminos como `programa o `ejecucioacuten Si no los maneja necesitaraacute de laayuda de alguien maacutes avezado durante su aprendizaje de Unix

12 iquestCoacutemo evitar leer este libro

La mejor manera de aprender el uso de casi cualquier programa de computadora esponieacutendose a trabajar sobre la computadora La mayoriacutea de las personas encuentran de pocobeneficio la lectura de un libro si no utilizan a la vez el programa Por lo tanto lamejor manera de aprender Unix y Linux es utilizaacutendolos Utilice Linux para todo lo quepueda Experimente No tenga miedo es posible que haga algunos liacuteos pero siempre puedevolver a instalar todo Mantenga actualizadas las copias de seguridad y iexcldivieacutertase

Unix no es un sistema operativo tan intuitivamente obvio como algunos otros Por lotanto es probable que deba leer al menos los capiacutetulos 4 5 y el 6 antes de empezar aexperimentar

La manera nuacutemero uno para evitar la lectura de este libro es que utilice la documentacioacutendisponible en liacutenea en Linux Para ello debe aprender a utilizar el comando man sudescripcioacuten estaacute en la Seccioacuten 42

13 iquestCoacutemo leer este libro

La manera sugerida para aprender Unix es leer un poquito luego jugar un poquito Jueguehasta que se sienta coacutemodo con los conceptos y luego puede saltar entre los temas que secubren en el libro Encontraraacute una variedad de temas algunos de los cuales seraacuten de suintereacutes Luego de un tiempo se sentiraacute lo suficientemente confiado como para utilizarcomandos sin saber exactamente que es lo que deberiacutean hacer Esta es una buena sentildeal

Lo que mucha gente asocia con Unix es el shell de Unix se trata de un programa especialque interpreta comandos En la praacutectica eacutesta es una manera conveniente de ver las cosaspero debe saber que Unix es realmente mucho maacutes que el shell o mucho menos _dependiendode como lo mire Este libro le diraacute como utilizar el shell los programas que usualmentevienen con Unix y algunos programas que no son muy comunes (pero que Linux casi siempretrae)

El capiacutetulo actual es un metashycapiacutetulo se discute acerca del libro y de comoaplicarlo para poder hacer nuestro trabajo Los otros capiacutetulos contienen

Capiacutetulo 2 trata del origen y destino de Unix y Linux Tambieacuten se habla de laFree Software Foundation y el proyecto GNU

Capiacutetulo 3 habla de como arrancar y detener su computadora y de lo quesucede durante esas operaciones Gran parte de esto tiene que ver con temasque no es necesario conocer para utilizar Linux pero auacuten asiacute son uacutetiles einteresantes

Capiacutetulo 4 introduce el shell de Unix Es con este programa con el cual laspersonas realizan su trabajo y corren los programas que necesitan Trata delos programas y comandos baacutesicos que necesitaraacute conocer para utilizar Unix

Capiacutetulo 5 cubre el sistema de ventana X2 X es la cara graacutefica principal deUnix e incluso algunas distribuciones lo configuran como opcioacutenpredeterminada

Capiacutetulo 6 analiza algunas de las caracteriacutesticas maacutes avanzadas del shell deUnix El aprendizaje de las teacutecnicas tratadas en este capiacutetulo le ayudaraacute aser maacutes eficiente

Capiacutetulo 7 tiene breves descripciones de muchos de los comandos Unix Cuantomaacutes herramientas sabe utilizar un usuario maacutes raacutepidamente puede concluir sutrabajo

Capiacutetulo 8 describe el editor de textos Emacs Se trata de un programa muyextenso que integra varias de las herramientas de Unix bajo una uacutenicainterfaz

Capiacutetulo 9 trata acerca de las distintas maneras que hay de personalizar unsistema Unix para satisfacer sus gustos personales

Capiacutetulo 10 investiga los medios por los cuales un usuario Unix puedecomunicarse con otras maacutequinas alrededor del mundo incluyendo el correoelectroacutenico y la Red de Alcance Mundial3

Capiacutetulo 11 describe algunos de los comandos con maacutes opciones y maacutes difiacutecilesde utilizar

Capiacutetulo 12 muestra formas sencillas de evitar errores en Unix y Linux

14 Documentacioacuten de Linux

Este libro Guiacutea de Linux Para el Usuario estaacute pensado para el principiante en UnixAfortunadamente el Linux Documentation Project (Proyecto de Documentacioacuten de Linux)tambieacuten estaacute escribiendo libros para los usuarios maacutes experimentados4

_____________________________________________

2 N del T X Window System

3 N del T tambieacuten conocida como WWW o World Wide Web

4 N del T El proyecto LuCAS estaacute ocupaacutendose de traducir parte de la documentacioacuten deLinux al castellano Para obtener informacioacuten actualizada de las traducciones vea elapeacutendice D

141 Otros libros de Linux

Los otros libros incluyen Installation and Getting Started 5 que es una guiacutea paraobtener e instalar Linux The Linux System Administrators Guide trata como organizar ymantener un sistema Linux y The Linux Kernel Hackers Guide que explica como modificarLinux The Linux Network Administrator Guide6 muestra como instalar configurar yutilizar una conexioacuten de red

142 COMOs

Ademaacutes de los libros el Proyecto de Documentacioacuten de Linux7 ha realizado una serie depequentildeos documentos que describen como configurar alguacuten aspecto particular de Linux Porejemplo el SCSIshyCOMO describe algunas de las complicaciones que aparecen al utilizarSCSI (que es una manera estaacutendar de comunicarse con ciertos dispositivos) y Linux

Estos COMOs estaacuten disponibles en varios formatos en un libro como The Linux Bible o DrLinux en el foro de discusioacuten composlinuxanswers o en varios lugares de la WWW Elsitio central de la informacioacuten acerca de Linux es httpwwwlinuxorg

143 iquestQueacute es el Proyecto de Documentacioacuten de Linux

Como casi todo lo asociado con Linux el Proyecto de Documentacioacuten de Linux consiste enun conjunto de gente que trabaja alrededor del mundo Originalmente organizado por LarsWirzenius el Proyecto estaacute coordinado en la actualidad por Matt Welsh con la ayuda deMichael K Johnson

Se espera que el Proyecto de Documentacioacuten de Linux provea los libros que satisfagantodas las necesidades de documentacioacuten de Linux en alguacuten momento Por favor diacuteganos sihemos tenido eacutexito o queacute es lo que debemos mejorar Puede contactar al autor enleg+andrewcmuedu a Matt Welsh en mdwcscornelledu8

15 Sistemas operativos

El propoacutesito principal de un sistema operativo es dar el soporte que necesitan losprogramas que hacen un trabajo de intereacutes para el usuario Por ejemplo Ud puede estarutilizando un editor si quiere crear un documento Ese editor no puede realizar sutrabajo sin la ayuda del sistema operativo _necesitaraacute esta ayuda para interactuar con laterminal los archivos y el resto de la computadora

Si todo lo que hace el sistema operativo es dar soporte a las aplicaciones que Ud deseautilizar iquestpor queacute se necesita todo un libro soacutelo para hablar del sistema operativoExiste un montoacuten de actividades de mantenimiento de rutina (ademaacutes de los programas queutilizaraacute principalmente) que Ud tambieacuten necesitaraacute realizar En el caso de Linux elsistema operativo contiene ademaacutes un montoacuten de minishyaplicaciones para ayudarle arealizar de manera maacutes eficiente su trabajo El conocimiento del sistema operativo leseraacute de ayuda si su trabajo no se centra en alguna aplicacioacuten monoliacutetica

_____________________________________________

5 N del T Disponible en castellano como Linux Instalacioacuten y Primeros Pasos Vea elapeacutendice D

6 N del T Disponible en castellano como Guiacutea de Administracioacuten de Redes con Linux Veael apeacutendice D

7 N del T El grupo INSFLUG ha traducido varios de los documentos HOWTO acuntildeando elteacutermino COMO Vea el apeacutendice E

8 N del T y al coordinador de esta traduccioacuten Ceacutesar Ballardini en cballardsantafecomar

Los sistemas operativos (SO para abreviar) pueden ser simples y miacutenimos como DOS ograndes y complejos como OS2 o VMS Unix trata de estar en un punto medio A la vez queproporciona maacutes recursos y hace maacutes que los primitivos SO no trata de hacer todo Unixse disentildeoacute originalmente como una simplificacioacuten de un sistema operativo que se denominoacuteMultics

La filosofiacutea original de disentildeo de Unix fue la de distribuir la funcionalidad en pequentildeaspartes los programas9 De esta forma el usuario puede obtener nueva funcionalidad ynuevas caracteriacutesticas de una manera relativamente sencilla mediante las diferentescombinaciones de pequentildeas partes (programas) Ademaacutes en el caso de que aparezcan nuevasutilidades (y de hecho aparecen) puede Ud integrarlas en su espacio de trabajo Cuandoescribo este documento por ejemplo utilizo activamente los siguientes programas fvwmpara manejar mis ventanas emacs para editar el texto LATEX para darle forma xdvipara ver una presentacioacuten preliminar dvips para prepararlo para la impresioacuten y luegolpr para imprimirlo Si mantildeana llegara a conseguir otro programa de presentacioacutenpreliminar de archivos dvi podriacutea utilizarlo en lugar del xdvi sin cambiar el resto delos programas que uso En el momento actual mi sistema estaacute corriendo treinta y ocho

programas simultaacuteneamente (Gran parte de ellos son programas del sistema que duermenhasta que tienen alguacuten trabajo especiacutefico para realizar)

Cuando utilice un sistema operativo desearaacute minimizar la cantidad de trabajo que tieneque llevar a cabo para concluir su tarea Unix proporciona varias herramientas que puedenayudarle pero para ello debe conocer que es lo que hacen No es muy productivo perderseuna hora intentando poner a andar alguna cosa y al final tener que abandonar todo Estelibro le ensentildearaacute queacute herramientas debe Ud utilizar en queacute situacioacuten y como combinaresas herramientas entre siacute

La parte clave de un sistema operativo se denomina nuacutecleo10 En muchos sistemasoperativos como Unix OS2 o VMS el nuacutecleo proporciona las funciones necesarias paralos programas que estaacuten corriendo y los planifica para su ejecucioacuten Esto significabaacutesicamente que el programa A puede tomar una cierta cantidad de tiempo el programa B lamisma cantidad etc El nuacutecleo siempre estaacute funcionando es el primer programa quearranca cuando se enciende el sistema y el uacuteltimo programa que hace algo cuando se apagael equipo

_____________________________________________

9 Este disentildeo estuvo determinado por el hardware sobre el cual funcionoacute originalmenteUnix Por alguna extrantildea razoacuten el sistema operativo resultante fue muy uacutetil sobre otrasplataformas de hardware El disentildeo baacutesico fue tan bueno que auacuten veinticinco antildeos despueacutessigue usaacutendose

10 N del T nuacutecleo del ingleacutes kernel

Capiacutetulo 2

A propoacutesito iquestqueacute es Unix

Ken Thompson tiene un automoacutevil en cuyo proyecto de disentildeo trabajoacute A diferencia de otrosautomoacuteviles eacuteste no tiene velociacutemetro nivel de combustible ni ninguna de las estuacutepidasluces que importunan al conductor moderno En su lugar si el conductor comete alguacutenerror se enciende un enorme en el centro del tablero El conductor experimentadodice sabraacute usualmente que es lo que anda mal

21 La historia de Unix

En 1965 los Bell Telephone Laboratories (Bell Labs una divisioacuten de ATampT) estabatrabajando con General Electric y el Proyecto MAC del MIT para escribir un sistemaoperativo llamado Multics

Para hacer maacutes corta una historia de por siacute larga Bell Labs decidioacute que el proyecto noestaba yendo a ninguna parte y disolvioacute el grupo Esto sin embargo dejoacute a la Bell sinun buen sistema operativo

Ken Thompson y Dennis Ritchie decidieron esbozar un sistema operativo que supliera lasnecesidades de la Bell Labs Cuando Thompson llegoacute a necesitar un entorno de desarrollo(1970) que corriera en una PDPshy7 aprovechoacute para poner en praacutectica sus ideas BrianKernighan le dioacute el nombre de Unix como un juego de palabras contra Multics

Un tiempo despueacutes Dennis Ritchie inventoacute el lenguaje de programacioacuten C En 1973 sereescribioacute el sistema operativo Unix en C en lugar del ensamblador original1 En 1977se movioacute Unix a una nueva maacutequina distinta de las PDP en las que habiacutea corridopreviamente mediante un proceso que se denomina migracioacuten El hecho de que Unix estabaescrito en C facilitoacute la migracioacuten pues gran parte del coacutedigo ya escrito necesitoacute soacutelouna simple recompilacioacuten y no una reescritura

Al final de los 70 ATampT teniacutea prohibido competir en la industria de la computacioacuten porlo que otorgoacute licencias econoacutemicas de Unix a varios colegios y universidades Unix sedifundioacute lentamente fuera de las instituciones acadeacutemicas pero pronto tambieacuten se hizopopular en el aacutembito comercial

El Unix de la actualidad es distinto del Unix de 1970 Existen dos corrientesprincipales System V de los Unix System Laboratories (USL) que es una subsidiaria deNovell2 y BSD Berkeley Software Distribution La versioacuten USL estaacute ahora por su cuartaversioacuten o SVR43 mientras que la uacuteltima BSD es la 44 Sin embargo existen muchasdiferentes versiones de Unix entre estas dos La mayoriacutea de las versiones de Unix sondesarrolladas por compantildeiacuteas de software y derivan de uno de los dos agrupamientos Lasversiones que se utilizan actualmente incorporan caracteriacutesticas de ambas variaciones

Las versiones actuales de Unix para PC Intel cuestan entre $500 y $2000

_____________________________________________

1 Lenguaje ensamblador es un lenguaje de computadoras muy elemental y que estaacuteindisolublemente ligado a un tipo particular de ordenador

22 La historia de Linux

El autor primario de Linux es Linus Torvalds A partir de la versioacuten original ha sidomejorado por incontables personas de todo el mundo Se trata de un clon del sistemaoperativo Unix escrito desde cero Ni USL ni la Universidad de California Berkeleytuvieron participacioacuten en la escritura de Linux Una de las cosas maacutes interesantes deLinux es que el desarrollo ocurre simultaacuteneamente alrededor del mundo La gente hacontribuiacutedo desde Australia a Finlandia y esperamos que lo siga haciendo

Linux comenzoacute como un proyecto para explorar el chip 386 Uno de los primeros proyectosde Linus fue un programa que pueda alternar entre la impresioacuten de AAAA y BBBB Esto luegoevolucionoacute hacia Linux

Linux ha sido registrado bajo los teacuterminos de la Licencia Puacuteblica General GNU (GNUGeneral Public License) o GPL Esta licencia escrita por la Free Software Foundation(FSF) estaacute disentildeada para evitar que alguna persona restrinja la distribucioacuten desoftware En pocas palabras dice que aunque Ud cobre a alguien por entregarle unacopia no podraacute impedir que ese alguien la regale Tambieacuten significa que debe estardisponible el coacutedigo fuente4 Esto es uacutetil para los programadores

Cualquiera puede modificar Linux y auacuten distribuir sus modificaciones siempre quemantenga el coacutedigo bajo la misma licencia

En Linux puede correr la mayoriacutea del software popular en Unix incluyendo el Sistema deVentanas X X se desarrolloacute en el Instituto Tecnoloacutegico Massachusetts para permitir alos sistemas Unix la creacioacuten de ventanas graacuteficas y la coacutemoda interaccioacuten con lasmismas En la actualidad el sistema X se usa en todas las versiones disponibles de Unix

Ademaacutes de las dos variaciones de Unix System V y BSD existe un conjunto de documentosde estandarizacioacuten publicados por la IEEE denominados POSIX Linux antes que nadasatisface los documentos POSIXshy1 y POSIXshy2 Su apariencia se asemeja mucho a la de BSD enciertas partes mientras que es parecido a System V en otras Es una combinacioacuten (y parala mayoriacutea de las personas una buena) de los tres estaacutendares

Algunas de las utilidades incluiacutedas con las distribuciones de Linux proceden de la FreeSoftware Foundation y son parte del proyecto GNU El proyecto GNU es un esfuerzo paraescribir un avanzado sistema operativo portable con el estilo de Unix Portablesignifica que pueda correr en una variedad de maacutequinas distintas no soacutelo en PCs IntelMacintoshes o lo que sea El sistema operativo del Proyecto GNU se llama Hurd Laprincipal diferencia entre el Linux y el GNU Hurd no se encuentra en la interfaz delusuario sino en la del programador el Hurd es un sistema operativo moderno mientrasque Linux es maacutes parecido al disentildeo original de Unix

_____________________________________________

2 Recientemente vendida a Novell antes era propiedad de ATampT

3 Una manera criacuteptica de decir System five Revision four

4 El coacutedigo fuente de un programa es lo que el programador lee y escribe Luego setraduce a un coacutedigo de maacutequina ilegible para las personas que es el que la computadorainterpreta

La historia precedente de Linux olvida mencionar otra persona maacutes allaacute de Linus TorvaldsPor ejemplo H J Lu se ha ocupado de mantener gcc y la biblioteca C de Linux (doselementos necesarios para todos los programas en Linux) casi desde el principio de lavida del sistema operativo Ud puede encontrar una lista de personas que merecenreconocimiento por su trabajo en cada sistema Linux en el archivousrsrclinuxCREDITS

221 Linux aquiacute y ahora

La primer cifra en el nuacutemero de versioacuten de Linux indica revisiones realmente importantesen alcance

Este nuacutemero cambia muy lentamente y para la eacutepoca en que esto se escribe (febrero de1996) soacutelo estaacute disponible la versioacuten 115 La segunda cifra indica revisiones de menorenvergadura

Los segundos nuacutemeros cuando son pares representan versiones maacutes estables en las que unopuede confiar plenamente cuando son impares indican versiones en desarrollo que son maacutespropensas a contener errores La uacuteltima cifra es el nuacutemero menor de lanzamiento cada vezque se libera una nueva versioacuten que tal vez soacutelo arregla unos pocos problemas o agregaunas pocas caracteriacutesticas se incrementa en uno este nuacutemero En febrero de 1996 lauacuteltima versioacuten estable es la 1211 y la uacuteltima en desarrollo es la 1361

Linux es un sistema grande y desafortunadamente contiene errores que los desarrolladoresreparan al encontrarlos Auacuten cuando algunas personas puedan experimentarmalfuncionamientos regularmente esto se debe normalmente a causa de piezas de hardwareque no son estaacutendares o que estaacuten defectuosas los errores6 que afectan a todos losusuarios son escasos y no se dan seguido

Por supuesto eacutesos son los errores del nuacutecleo Los errores pueden presentarse en casicada aspecto del sistema y los usuarios de poca experiencia tienen problemas paradiferenciar los distintos programas entre siacute Por ejemplo cierto problema puede hacerque todos los caracteres aparezcan como un galimatiacuteas iquestes un error o unacaracteriacutestica Sorpresivamente es una caracteriacutestica existen ciertas secuencias decontrol que al aparecer provocan el galimatiacuteas Espero que este libro le sea de ayudapara poder identificar esas situaciones

222 Unas pocas preguntas y respuestas

Antes de embarcarnos para nuestra larga travesiacutea repasemos las cuestiones ultrashyimportantes

Pregunta iquestCoacutemo se pronuncia Linux

Respuesta De acuerdo con Linus debe pronunciarse con un sonido corto ih como prIntmInImal etc Linux debe rimar con Minix que es otro clon de Unix No debe pronunciarsecomo la pronunciacioacuten (americana) de Peanuts en Linus sino maacutes bien como LIHshynucksY la u es cortante como en rule no suave como en ducks Linux debe al menos rimarcon cynics

_____________________________________________

5 N del T La traduccioacuten se hace en febrero de 1997 y ya la versioacuten 2 es cosa detodos los diacuteas

6 N del T error del ingleacutes bug

Pregunta iquestPor queacute trabajar en Linux

Respuesta iquestPor queacute no Linux es generalmente maacutes barato que los otros sistemasoperativos (o al menos no maacutes caro) y con frecuencia es menos problemaacutetico que algunossistemas comerciales Puede que no sea el mejor sistema para sus aplicaciones enparticular pero para alguien que estaacute interesado en utilizar las aplicaciones Unixdisponibles para Linux se trata de un sistema de alta performance

223 Software comercial en Linux

Existe un montoacuten de software comercial disponible para Linux Comenzando con Motif quees una interfaz para el sistema X Window que vagamente nos recuerda a Microsoft WindowsLinux tiene cada vez maacutes software comercial En estos tiempos Ud puede adquirircualquier cosa desde WordPerfect (el popular procesador de palabras) hasta Maple que esun paquete que realiza complejas manipulaciones simboacutelicas para Linux

Para aquellos lectores interesados en las cuestiones legales esto estaacute permitido por lalicencia de Linux A la vez que la licencia GNU General Public License (que se reproduceen el Apeacutendice B) cubre el nuacutecleo de Linux la licencia GNU Library General PublicLicense (que se puede ver en el Apeacutendice C) cubre la mayor parte del coacutedigo del cualdependen las aplicaciones Esto permite que los proveedores de software comercial puedanvender sus aplicaciones y reservarse el coacutedigo fuente de las mismas

Debe Ud percatarse de que los dos documentos antes nombrados son notificaciones dederechos de autor Ellos no regulan como utiliza Ud el software solamente indican bajocuales circunstancias Ud puede copiar dicho software o sus productos derivados Para laFree Software Foundation eacutesta es una distincioacuten muy importante Linux no involucraninguna licencia estilo pitoacuten que lo envolveraacute y asfixiaraacute sino que estaacute protegidopor la misma ley que le impide a Ud fotocopiar un libro

Capiacutetulo 3

En el principio

This login session $1399 but for you $1188

Tal vez ha tenido experiencia con MSshyDOS u otro sistema operativo monousuario como OS2o el de Macintosh En esos sistemas operativos Ud no tiene que identificarse frente ala computadora antes de poder utilizarla siempre se supone que es el uacutenico usuario en elsistema y que puede acceder a todo lo que quiera Por el contrario Unix es un sistemaoperativo multiusuario no soacutelo puede utilizarlo maacutes de una persona a la vez sino quelas distintas personas recibiraacuten distinto trato

Para poder identificar las personas Unix necesita un usuario para que el procesodenominado ingreso1 pueda identificarlo o identificarla2 Apenas se enciende unacomputadora tiene lugar un complejo proceso antes que la misma esteacute lista para serusada Como esta guiacutea estaacute orientada a Linux les direacute que es lo que sucede durante lasecuencia de arranque3

Debe advertir Ud que si estaacute utilizando Linux en alguna clase de ordenador distinto auna PC Intel algunos temas de este capiacutetulo no se aplicaraacuten a su caso En su mayoriacuteadichos temas se encontraraacuten en la Seccioacuten 31

Si Ud estaacute interesado uacutenicamente en utilizar su computadora puede saltearse toda lainformacioacuten de este capiacutetulo excepto la de la Seccioacuten 33

31 La computadora despierta

Lo primero que sucede cuando se conecta la alimentacioacuten a su computadora es la ejecucioacutende un programa denominado BIOS Su nombre proviene de las iniciales de Basic InputOutputSystem que significa Sistema de EntradaSalida Baacutesico Este programa estaacute almacenado demanera permanente dentro de la computadora en chips que normalmente son del tipo delectura solamente Para nuestros propoacutesitos el BIOS es un programa que nunca se puedecambiar Al funcionar realiza ciertas comprobaciones miacutenimas y luego se fija si hay undisquete en la primer disquetera Si encuentra alguno mira en su sector de arranque ycomienza a ejecutar su coacutedigo si lo hay Si hay un disquete pero no contiene un sectorde arranque el BIOS mostraraacute el siguiente mensaje

Nonshysystem disk or disk error

_____________________________________________

1 N del T ingreso en ingleacutes logging in

2 Desde ahora en adelante utilizareacute los pronombres masculinos para identificar a todaslas personas Esta es la convencioacuten estaacutendar en ingleacutes (N del T y en castellano) ycon esto no quiero decir que soacutelo los hombres pueden utilizar computadoras

3 N del T arranque del ingleacutes bootshyup

Si quitamos el disquete y apretamos una tecla el proceso de arranque continuaraacute Si noexiste un disquete en la disquetera el BIOS se fija si existe un registro maestro dearranque (MBR master boot record) en el disco riacutegido Si es asiacute comienza a ejecutar elcoacutedigo que alliacute encuentra que se ocupa de cargar el sistema operativo En los sistemasLinux el cargador se llama LILO (por LInux LOader) puede ocupar el MBR y en ese casocargaraacute el Linux (La distribucioacuten en particular que esteacute utilizando puede manejar elarranque desde el disco riacutegido de otra manera asiacute que debe controlar esto en ladocumentacioacuten que se incluye con la distribucioacuten Otra buena referencia es ladocumentacioacuten de LILO [1 ])

32 Linux despierta

Luego que el BIOS le pasa el control a LILO LILO a su vez le pasa el control al nuacutecleode Linux El nuacutecleo es el programa central del sistema operativo que controla a todoslos demaacutes Lo primero que hace Linux una vez que comienza su ejecucioacuten es cambiar la CPUa modo protegido El procesador 803864 que controla su computadora tiene dos modos que sedenominan modo real y modo protegido El sistema operativo DOS corre en modo real aligual que el BIOS Sin embargo los sistemas operativos maacutes avanzados necesitan correr enmodo protegido Por ello cuando Linux arranca descarta el BIOS

Los procesadores distintos al 386 llegan a este estado de manera diferente Ninguacuten otroprocesador necesita cambiar a modo protegido y soacutelo unos pocos tienen un contexto tanpesado de carga como LILO y el BIOS Una vez que arranca el nuacutecleo Linux trabaja caside la misma manera

A continuacioacuten Linux mira que clase de hardware tiene debajo Necesita saber que clasede discos riacutegidos tiene si hay o no un ratoacuten de bus si estaacute conectado a una red yotras trivialidades como esas Linux no puede recordar ciertas cosas luego de apagado demanera que las pregunta cada vez que arranca Afortunadamente no se las pregunta a Udiexclse las pregunta al hardware Durante el arranque el nuacutecleo de Linux muestra unoscuantos mensajes aunque con ciertas variaciones

Puede leer acerca de esos mensajes en la Seccioacuten 34 Este proceso de consulta puedecausar algunos problemas con el sistema pero si lo hace lo haraacute probablemente cuandoinstale Linux por primera vez Si tiene problemas consulte la documentacioacuten de ladistribucioacuten

El nuacutecleo solamente se ocupa de administrar los otros programas entonces cuando estaacutesatisfecho con que todo anda bien debe arrancar otro programa para que haga los trabajosuacutetiles El programa que el nuacutecleo arranca se llama init_____________________________________________

4 Cuando hable del 80386 tambieacuten hago referencia a computadoras basadas en 80486Pentium y Pentium Pro a menos que especiacuteficamente indique lo contrario Ademaacutesabreviareacute 80386 mediante el teacutermino 386

Figura 31 El camino que sigue un PC Intel hasta que nos muestra el indicativo delinteacuterprete de comandos Init puede o no arrancar X Si lo hace corre xdm Si no corregetty

Una vez que el nuacutecleo arranca init no lanza ninguacuten otro programa El nuacutecleo setransforma asiacute en un administrador y proveedor no en un programa activo

Por lo tanto para saber que es lo que hace la computadora luego que el nuacutecleo arrancadeberemos examinar init La complicada secuencia de arranque por la que atraviesa init noes ideacutentica en todas las computadoras Para Linux existen varias versiones de init ycada una hace las cosas a su manera Ademaacutes tambieacuten influye si su maacutequina estaacute en red e

incluso cual distribucioacuten utilizoacute para instalar Linux Algunas de las cosas que puedensuceder cuando init arranca son

o El control de integridad del sistema de archivos iquestPero queacute es un sistema de archivosse estaraacute preguntando Ud Un sistema de archivos es la disposicioacuten de los archivos enel disco riacutegido Ademaacutes permite que Unix sepa cuales partes del disco riacutegido estaacutenocupadas y cuales no Desafortunadamente ciertos factores como los cortes en elsuministro de energiacutea hacen que la informacioacuten que el sistema de archivos tiene sobre ladisposicioacuten en el disco de los archivos no coincida con la disposicioacuten real En estoscasos se ve la utilidad de un programa llamado fsck que es capaz de encontrar estassituaciones y (con suerte) corregirlas

o Se lanzan programas especiales de encaminamiento para las redes Estos programasinforman a su computadora coacutemo se supone que puede comunicarse con las otras

o Se borran los archivos temporales que crean ciertos programas

o Se actualiza correctamente el reloj del sistema Esto es maacutes complicado de lo que puedeparecer pues Unix de manera predeterminada necesita la hora en UCT (UniversalCoordinated Time) tambieacuten conocido como hora de Greenwich y el reloj de la CMOS (que esalimentado por una bateriacutea dentro de la computadora) muy probablemente estaraacute configuradocon la hora local Esto significa que debe tener alguacuten programa que lea la hora del relojde la CMOS y la corrija transformaacutendola en hora UCT

Despueacutes que init termina con sus actividades de arranque comienza con sus tareasplanificadas

init se convierte asiacute en el padre de todos los procesos del sistema Unix Un proceso essimplemente un programa que estaacute corriendo como cualquier programa puede correr maacutes deuna vez entonces puede haber maacutes de un proceso para un programa dado en particular

En Unix los procesos (instancias de un programa) se crean mediante una llamada alsistema5 (que es un servicio provisto por el nuacutecleo) denominada fork (Se lo llama forko bifurcacioacuten pues un proceso se bifurca en dos independientes) init forkea (bifurca)unos cuantos procesos los que a su vez forkean6 otros En su sistema Linux con todaseguridad init corre varias instancias de un programa llamado getty getty es el programaque le permitiraacute iniciar el ingreso al usuario y que a continuacioacuten lanzaraacute el programalogin

33 La actuacioacuten del usuario

331 El ingreso

Lo primero que hay que hacer para poder utilizar una maacutequina con Unix es identificarsefrente a la misma Este proceso conocido en ingleacutes como logging in (registro deingreso) es la manera que tiene Unix de saber cuales son los usuarios autorizados parautilizar el sistema Durante el ingreso se le preguntaraacute un nombre de cuenta y unacontrasentildea7 Los nombres de las cuentas son por lo general parecidos a los nombres de laspersonas y se lo asignaraacute el administrador del sistema Si Ud es el administrador delsistema deberaacute crearse una cuenta para poder trabajar sin los cuidados especiales querequiere la cuenta root (La informacioacuten necesaria para llevar a cabo dicha tarea podraacuteencontrarla en Installation and Getting Started 8 o en The Linux System AdministratorsGuide)

Luego de que tenga lugar la secuencia de procedimientos durante el arranque Ud veraacute enla pantalla algo como lo que se muestra a continuacioacuten (la primer liacutenea es meramente unsaludo (podriacutea ser alguna advertencia legal o cualquier otra cosa)

Welcome to the mousehouse Please have some cheese

mousehouse login

Sin embargo puede ser que lo que el sistema le presente al arrancar no se parezca aesto Por ejemplo puede que en lugar de una aburrida pantalla de texto nos muestre unapantalla graacutefica Auacuten en este caso la computadora le pediraacute sus datos al ingreso y maacutes omenos de la misma manera Si eacuteste es el caso en su sistema entonces el entorno detrabajo que utilizaraacute es el sistema X El X Window

System es un sistema de ventanas y en el capiacutetulo 5 se discutiraacuten algunas de lasdiferencias con las que se enfrentaraacute De cualquier manera el proceso de ingreso seraacutesimilar en ambos casos

_____________________________________________

5 N del T llamada al sistema del ingleacutes system call

6 N del T Mis disculpas por el teacutermino prometo no usarlo maacutes shy)

7 N del T contrasentildea palabra clave del ingleacutes password

8 N del T Puede consultar la versioacuten en castellano ya existente

Esta es por supuesto la invitacioacuten que Ud buscaba para ingresar (login) A lo largo deeste manual utilizaremos el usuario ficticio (o no tan ficticio dependiendo de sumaacutequina) larry9 Donde Ud vea larry debe poner el nombre de su propia cuenta Losnombres de las cuentas se basan en general en los nombres reales los sistemas Unix maacutesgrandes y serios tienen cuentas que usan el apellido del usuario alguna combinacioacuten denombre y apellido y auacuten se da el caso que deban agregarle algunos diacutegitos Por ejemplonombres de cuentas posibles para Larry Greenfield podriacutean ser larry greenfie lgreenfilg19

mousehouse seraacute de la misma manera el nombre de la maacutequina sobre la que trabajareacute

Es posible que cuando Ud instale Linux se le pregunte el nombre que desea asignarleEsto no es demasiado importante pero cada vez que haga falta utilizareacute mousehouse o maacutesraramente lionsden cuando necesite de un segundo sistema por razones de claridad o decontraste

Luego de teclear larry y apretar |_Intro_| nos encontramos con lo siguiente

mousehouse login larry

Password

Linux estaacute solicitando su contrasentildea10 Cuando escriba su contrasentildea no podraacute ver lo queestaacute tecleando en razoacuten de la privacidad necesaria a dicha palabra Escribacuidadosamente puede borrar caracteres pero no podraacute ver lo que estaacute editando Noescriba muy despacio si hay gente miraacutendole podriacutean llegar a descubrirla En cualquiercaso si se equivoca no se haga problemas pues el sistema le daraacute otra oportunidad deingresar

Luego que ingrese correctamente su nombre de cuenta o nombre de usuario y su contrasentildeaapareceraacute un corto mensaje denominado mensaje del diacutea11 que se obtiene del archivoetcmotd

Este archivo se utiliza para dar a conocer cualquier clase de informacioacuten a los usuarioscon respecto al estado del sistema y es responsabilidad del administrador del sistemafijar su contenido Despueacutes de todo esto aparece un prompt Un prompt es un siacutembolo que

nos indica que la computadora estaacute lista para recibir un comando Debe parecerse a lasiguiente figura

homelarry$

Si Ud estaacute utilizando X Window el prompt apareceraacute en alguna de las ventanas que hayen pantalla (Las ventanas son simples cajas rectangulares) Para escribir en elprompt mediante el ratoacuten mueva el cursor del mismo (probablemente se ve como una granX o una flecha) dentro de la ventana

332 Al abandonar la computadora

iexclNo apague la computadora directamente iexclSe arriesga a perder valiosos datos

A diferencia de la mayoriacutea de las versiones de DOS no es una buena idea apagar la llavede alimentacioacuten de la computadora asiacute como asiacute cuando termine de utilizarla Si reiniciala maacutequina (con el botoacuten de reset) sin antes tomar las debidas precauciones seraacute igual depernicioso Linux tiene una antememoria o cacheacute que mejora el rendimiento del disco Estosignifica que temporalmente guarda en RAM informacioacuten perteneciente al sistema dealmacenamiento permanente12

_____________________________________________

9 N del T He dejado aquiacute sin traducir ni cambiar el nombre del autor de la versioacuten eningleacutes y lo mismo vale para otros nombres como el de la maacutequina etc

10N del T contrasentildea del ingleacutes password

11N del T mensaje del diacutea del ingleacutes Message Of The Day(motd)

Las diferencias entre lo que Linux cree que hay en el disco y lo que efectivamente estaacutealmacenado en el disco se sincronizan cada 30 segundos Si desea apagar o reiniciar lacomputadora necesitaraacute ejecutar alguacuten procedimiento que indique a Linux que debe detenerel sistema de cacheacute y actualizar la informacioacuten en el disco

Si ya ha terminado sus tareas con la computadora pero auacuten estaacute dentro del sistema (yatecleoacute su nombre de usuario y su palabra clave) lo primero que debe hacer es registrarla salida (logout) del sistema Para ello teclee el comando logout Todos los comandosse enviacutean oprimiendo la tecla marcada como |_Enter_| |_Return_| oacute |_Intro_| Hasta queno aprieta |_Intro_| no pasa nada y por lo tanto puede borrar lo que escribioacute yrecomenzar

homelarry$ logout

Welcome to the mousehouse Please have some cheese

mousehouse login

Ahora puede ingresar otro usuario

333 Como apagar la computadora

Si el suyo se trata de un sistema en el cual trabaja un uacutenico usuario (Ud shy)) puededesear apagar la computadora cuando haya finalizado su trabajo con ella13 Para bajar elsistema14 o sea apagarlo ordenadamente deberaacute ingresar a una cuenta especialdenominada root La cuenta del root es la cuenta del administrador del sistema y puedeacceder a todos los archivos que existen en el sistema Si desea apagar la computadoraprimero debe bajar el sistema y para ello deberaacute obtener la palabra clave que utiliza eladministrador del sistema Por favor ingrese Ud Entonces como root

mousehouse login root

Password

Linux version 1355 (rootmousehouse) 1 Sun Jan 7 145626 EST 1996

shutdown now

Why fin del dia de trabajo

URGENT message from the sysadmin

System going down NOW

fin del dia de trabajo

Now you can turn off the power

_____________________________________________

12 La diferencia entre RAM y un disco riacutegido es como la diferencia entre la memoria decorto plazo y la de largo plazo Al quitar la alimentacioacuten de la computadora es como sile dieacuteramos un fortiacutesimo golpe en la cabeza olvidaraacute todo lo que teniacutea en la memoria decorto plazo Pero las cosas guardadas en la memoria de largo plazo el disco riacutegidoestaraacuten bien El disco es miles de veces maacutes lento que la RAM

13 Para evitar el debilitamiento prematuro de ciertos componentes de hardware es mejorque apague la computadora soacutelo cuando ya no la vaya a utilizar por el resto del diacuteaEncender y apagar una vez al diacutea la computadora probablemente es el mejor compromisoentre ahorrar energiacutea y machacar el sistema

14 N del T bajar el sistema del ingleacutes shutdown

El comando shutdown now prepara al sistema para que pueda apagarse o reiniciarse Debeesperar por el mensaje que dice que es seguro apagar o reiniciar el sistema (Cuando elsistema le pregunta Why15 soacutelo le estaacute preguntando una razoacuten para decirle a los otrosusuarios Como no hay otra persona utilizando el sistema cuando Ud lo baja puederesponderle con lo que se le ocurra o con nada)

Un pequentildeo dato para el perezoso como alternativa al enfoque de logoutlogin se puedeutilizar el comando su Mientras estaacute trabajando con su nombre de cuenta habitual (larrya nuestros efectos) escriba su y luego |_Intro_| Se le solicitaraacute la palabra clave deladministrador del sistema y si la ingresa correctamente tendraacute a partir de dicho momentolos privilegios que le corresponden al mismo Ahora con estos privilegios agregadospodraacute bajar el sistema mediante el comando shutdown now

34 Mensajes del nuacutecleo

Cuando se conecta la alimentacioacuten a su computadora aparece una serie de mensajes en lapantalla que describe el hardware conectado al ordenador Estos mensajes son producto dela actividad del nuacutecleo de Linux En esta seccioacuten intentaremos describir y explicar esosmensajes

Naturalmente estos mensajes variacutean de maacutequina a maacutequina Describireacute entonces losmensajes que aparecen en la miacutea El siguiente ejemplo contiene todos los mensajesestaacutendar y algunos especiacuteficos (En general la maacutequina sobre la que voy a realizar ladescripcioacuten estaacute miacutenimamente configurada no veraacute por lo tanto mucha informacioacutenrelacionada con la configuracioacuten de dispositivos)

Se utilizoacute Linux versioacuten 1355 uno de los maacutes recientes al momento de escribir

1 Lo primero que hace Linux es decidir que clase de tarjeta de viacutedeo y pantalla tieneconectado de manera de seleccionar un tamantildeo de letra apropiado (Cuanto maacutes pequentildeo esel tamantildeo maacutes caben en una pantalla a la vez) Linux puede consultarle si desea alguacutentipo de letra en particular o puede que tenga una seleccioacuten ya compilada en suinterior16

Console 16 point font 400 scans Console colour VGA+ 80x25 1 virtualconsole (max 63)

En este ejemplo el duentildeo de la maacutequina decidioacute al momento de compilar que utilizariacuteael tipo de letra estaacutendar tamantildeo grande Ademaacutes notaraacute que la palabra color estaacute malescrita Evidentemente Linus aprendioacute la versioacuten incorrecta de idioma ingleacutes17

_____________________________________________

15 N del T why significa iquestpor queacute

16 Compilada se refiere al proceso mediante el cual un programa de computadora escritopor una persona se traduce a algo que entiende la computadora Si una caracteriacutestica seha compilado en su interior significa que estaacute incluida en el programa

17 N del T colour es la variante ortograacutefica del ingleacutes insular y color lanorteamericana

2 La proacutexima tarea del nuacutecleo es informar acerca de la velocidad de su sistema medidaen BogoMIPS Un MIP equivale a un milloacuten de instrucciones por cada segundo mientrasque un BogoMIP es un bogus MIP18 cuantas veces la computadora puede hacerabsolutamente nada por cada segundo (Como este bucle no hace nada en realidad el nuacutemerocalculado no es tampoco una medida de la velocidad del sistema) Linux utiliza estenuacutemero cuando necesita esperar por alguacuten dispositivo de hardware

Calibrating delay loop ok shy 3328 BogoMIPS

3 El nuacutecleo de Linux tambieacuten nos comenta acerca de la utilizacioacuten de la memoria

Memory 23180k24576k available (544k kernel code 384k reserved 468k data)

Esto significa que la maacutequina tiene 24 megabytes de memoria Parte de esta memoria estaacutereservada por el nuacutecleo El resto puede ser utilizada por los programas Eacuteste es el lugartemporal conocido como RAM que se utiliza soacutelo como almacenamiento de corto plazo Sucomputadora tambieacuten dispone de una memoria permanente denominada disco riacutegido El

contenido del disco riacutegido se mantiene intacto auacuten luego de quitar la alimentacioacuten delordenador

4 A lo largo del proceso de arranque Linux controla distintas partes del hardware y nosmuestra mensajes indicativos de las mismas

This processor honours the WP bit even when in supervisor mode Good

5 Ahora Linux pasa a la configuracioacuten de red Lo que veremos a continuacioacuten estaacute mejorexplicado en The Linux Networking Guide19 y estaacute fuera del alcance de este documento

Swansea University Computer Society NET3033 for Linux 1350

IP Protocols ICMP UDP TCP

6 Linux soporta la FPU la unidad de punto flotante20 Eacutesta es un chip especial (o partede un chip en el caso del procesador 80486DX) que se ocupa de la aritmeacutetica con nuacutemerosno enteros

Algunos de esos chips no estaacuten en buenas condiciones y cuando Linux trata deidentificarlos la maacutequina se cuelga21 La maacutequina deja de funcionar Si esto sucedeUd veraacute en su pantalla lo siguiente

Checking 386387 coupling

Sino el mensaje seraacute

Checking 386387 coupling Ok fpu using exception 16 error reporting

si estaacute utilizando un 486DX Si tiene un 386 con un 387 le apareceraacute

Checking 386387 coupling Ok fpu using irq13 error reporting

_____________________________________________

18 N del T bogus significa espurio (para los argentinos trucho)

19 N del T Disponible en castellano Vea el apeacutendice D

20 N del T unidad de punto flotante del ingleacutes Floating Point Unit

21 N del T se cuelga del ingleacutes crashes

7 Y ahora se controla la instruccioacuten halt

Checking hlt instruction Ok

8 Luego de esta configuracioacuten inicial Linux escribe una liacutenea identificaacutendose a siacutemismo En ella explica cual es la versioacuten del nuacutecleo la del compilador de C de GNU quese utilizoacute para compilarlo y la fecha de dicha compilacioacuten

Linux version 1355 (rootmousehouse) (gcc version 270) 1 Sun Jan 7145626 EST 1996

9 El controlador serie comienza a consultar acerca del hardware instalado Uncontrolador es una parte del nuacutecleo que controla un dispositivo normalmente unperifeacuterico Se hace responsable por los detalles de la comunicacioacuten entre la CPU y eldispositivo Esto permite que la gente que escribe aplicaciones de usuario se puedaconcentrar en la aplicacioacuten pues no tiene que preocuparse por como trabaja exactamentela computadora

Serial driver version 411 with no serial options enabled

tty00 at 0x03f8 (irq = 4) is a 16450

tty01 at 0x02f8 (irq = 3) is a 16450

tty02 at 0x03e8 (irq = 4) is a 16450

Aquiacute vemos que ha encontrado tres puertos serie Un puerto serie es el equivalente delpuerto COM en DOS es el dispositivo que se utiliza normalmente para comunicarse conmodems y ratones

Lo que significan las liacuteneas anteriores es que el puerto serie 0 (COM1) tiene ladireccioacuten 0x03f8

Cuando dicho puerto interrumpe al nuacutecleo usualmente para decir que tiene datos listosutiliza la IRQ 422 Las IRQ son un medio que tienen los perifeacutericos de hablarse con elsoftware Cada puerto serie tambieacuten tiene un chip controlador que usualmente se denomina16450 aunque tambieacuten puede ser el 8250 o el 16550

10 A continuacioacuten viene el puerto paralelo que normalmente se conecta a la impresoraLos puertos paralelos en Linux tienen nombres que comienzan con lp lp son las inicialesde Line Printer23 aunque en los tiempos actuales parece maacutes apropiado usar las inicialesde Laser Printer (Sin embargo Linux se comunica sin problemas con cualquier clase deimpresora conectada al puerto paralelo de matriz de puntos chorro de tinta o laser)

lp0 at 0x03bc (polling)

Este mensaje dice que ha encontrado un puerto paralelo y que usaraacute el controlador dedispositivo estaacutendar

_____________________________________________

22 N del T IRQ Interrupt ReQuest (peticioacuten de interrupcioacuten)

23 N del T Impresora de liacuteneas

11 Linux identifica luego las unidades de disco riacutegido En el sistema que le estoymostrando mousehouse tengo instalados dos unidades de disco riacutegido IDE

hda WDC AC2340 325MB w127KB Cache CHS=10101255

hdb WDC AC2850F 814MB w64KB Cache LBA CHS=8273263

12 El nuacutecleo ahora busca las unidades de disco flexible En este ejemplo la maacutequinatiene dos unidades la A es una unidad de 5 1=4 y la B es una de 3 1=2 Linuxdenomina fd0 a la unidad A y fd1 a la unidad B

Floppy drive(s) fd0 is 144M fd1 is 12M

floppy FDC 0 is a National Semiconductor PC87306

13 El proacuteximo controlador que arranca en mi sistema ejemplo es el controlador SLIPEscribe un mensaje acerca de su configuracioacuten

SLIP version 083shyNET3019shyNEWTTY (dynamic channels max=256) (6 bitencapsulation enabled)

CSLIP code copyright 1989 Regents of the University of California

14 El nuacutecleo explora dentro de los discos riacutegidos que ha encontrado Busca las distintasparticiones que tiene cada uno Una particioacuten es una seccioacuten loacutegica de una unidad que seutiliza para evitar que interfieran entre siacute distintos sistemas operativos coexistentesEn este ejemplo la computadora tiene dos discos (hda y hdb) con cuatro y unaparticiones respectivamente

Partition check

hda hda1 hda2 hda3 hda4

hdb hdb1

15 Finalmente Linux monta la particioacuten raiacutez Eacutesta es la particioacuten del disco en la cualreside el sistema operativo Linux Cuando Linux monta esta particioacuten hace que esteacutedisponible para los usuarios

VFS Mounted root (ext2 filesystem) readonly

Capiacutetulo 4

El shell de Unix

Es muy faacutecil crear archivos en el sistema operativo UNIX Por lo tanto los usuariostienden a crear muchos archivos que utilizan una gran cantidad de espacio Se ha dichoque la uacutenica cosa estaacutendar y comuacuten a todos los sistemas UNIX es el mensajeshydelshydiacutea queles pide a los usuarios que borren los archivos que no necesitan

Guiacutea del administrador de System V2

41 Comandos Unix

Cuando ingresa al sistema Unix se enfrenta con algo maacutes o menos como lo que se muestra acontinuacioacuten

homelarry$

Ese algo se denomina prompt1 Como su nombre sugiere le solicita a Ud que ingrese uncomando Todos los comandos Unix consisten de una secuencia de letras nuacutemeros ycaracteres No son vaacutelidos los espacios dentro del nombre del comando Algunos comandosvaacutelidos son mail cat y CMU_is_Numbershy5 Algunos caracteres no estaacuten permitidosvolveremos a este tema maacutes adelante

Unix ademaacutes hace diferencia entre mayuacutesculas y minuacutesculas2 lo que significa que Cat ycat son comandos distintos

El prompt se muestra como resultado del accionar de un programa especial denominadointeacuterprete de comandos3 El inteacuterprete de comandos o shell acepta los comandos queescribe el usuario y los ejecuta Los comandos pueden formar programas en el lenguaje delinteacuterprete de comandos y a dichos programas se los denomina guiones de shell

_____________________________________________

1 N del T prompt significa solicitud

2 La diferenciacioacuten entre mayuacutesculas y minuacutesculas es una cosa muy personal Algunossistemas operativos como OS2 y Windows NT preservan las diferencias pero no las cuentancomo distintas En la praacutectica habitual con Unix se utiliza raramente la diferenciacioacutenLa situacioacuten de tener un par de comandos Cat y cat diferentes no es comuacuten

3 N del T inteacuterprete de comandos del ingleacutes shell

Los shell en Unix se clasifican en dos grandes grupos los tipo Bourne y los tipo C Losshell tipo Bourne toman su nombre a partir de su inventor Steven Bourne Steven Bourneescribioacute el shell original de Unix denominado sh a partir de entonces la mayoriacutea delos shells tienen un nombre con el sufijo sh para indicar que son extensiones de la ideaoriginal Existen varias implementaciones de este shell que colectivamente llevan elnombre de shells Bourne Tambieacuten son comunes los shells tipo C cuyo original fueimplementado por Bill Joy Tradicionalmente los shell Bourne se han utilizado para los

scripts de shell y por razones de compatibilidad con el sh original mientras que losshells C han sido maacutes comunes en su aplicacioacuten interactiva (Los C tienen ventajas encuanto a sus mejores caracteriacutesticas interactivas aunque son maacutes difiacuteciles deprogramar)

Linux viene con un shell Bourne denominado bash escrito por la organizacioacuten FreeSoftware Foundation4 El nombre bash proviene de Bourne Again SHell uno de los tantosjuegos de palabras en Unix Se trata de un shell Bourne avanzado tiene las capacidadesestaacutendar de programacioacuten que se encuentran en todos los shells Bourne y ademaacutes varias delas caracteriacutesticas interactivas que se encuentran en los shells C bash es el shellpredeterminado cuando uno usa Linux

Apenas ingresa por primera vez el prompt que Ud ve es producto de la accioacuten de bash enotras palabras estaacute Ud corriendo su primer programa Unix el shell bash Mientras esteacuteconectado el shell bash estaraacute permanentemente funcionando

411 Un comando Unix tiacutepico

El primer comando que debe conocer es cat Para utilizarlo escriba cat y luego oprima|_Intro_|

homelarry$ cat

Si tiene ahora el cursor posicionado en una liacutenea nueva entonces lo que ha hecho estaacutebien Existen unas cuantas variantes que podriacutea haber tecleado algunas funcionaraacutenotras no

o Si tuvo alguacuten error de tecleo al escribir cat deberiacutea haber visto algo maacutes o menosasiacute

homelarry$ ct

ct command not found

homelarry$

Por lo tanto el shell le informa que no pudo encontrar un programa denominado ct yle ofrece otro prompt para seguir trabajando Recuerde que Unix hace diferencia entremayuacutesculas y minuacutesculas CAT estaacute mal escrito

o Puede que Ud haya escrito algunos espacios en blanco antes del comando como5

homelarry$ cat

Sin embargo el resultado es correcto y el programa cat corre sin problemas

_____________________________________________

4 N del T La Fundacioacuten para el Software Libre _tal es la traduccioacuten de su nombre_ seocupa de la produccioacuten y distribucioacuten de software que no tiene limitaciones en su uso yocopia enfrentando de esta manera las praacutecticas de las compantildeiacuteas tradicionales dedesarrollo Que el software sea libre no significa que sea barato la libertad incluye lagratuidad pero es mucho maacutes que ello

5 El indica que el usuario escribioacute un espacio

o Tambieacuten puede que haya oprimido un |_Intro_| en una liacutenea en blanco no se preocupe ycontinuacutee pues no tiene ninguacuten efecto

Doy por sentado que Ud ha corrido con eacutexito cat y estaacute esperando que haga algo que lomaraville Pues bien no no es un juego cat es una muy uacutetil utilidad que no parece muyuacutetil a primera vista Escriba cualquier cosa y luego oprima |_Intro_| Lo que veraacute es

homelarry$ cat

Help Im stuck in a Linux program

Help Im stuck in a Linux program

Lo que parece haber hecho cat es devolver un eco de lo escrito Esto es uacutetil a veces talvez no ahora Asiacute que salgamos de este programa y veamos otros con beneficios maacutes obvios

Para finalizar ciertos comandos Unix teclee |_Ctrlshyd_|6 |_Ctrlshyd_| es el caraacutecter endshyofshyfile7 o EOF para abreviar Puede que en ciertos libros de texto aparezca como endshyofshytext8 Nos referiremos a este caraacutecter como EOF Es un caraacutecter de control que informaa los programas Unix que ha cesado el ingreso de datos Cuando cat ve que no teclea maacutesnada termina

Para ver otro ejemplo parecido pruebe el programa sort Como su nombre lo indica sortes un programa de clasificacioacuten Si Ud teclea unas cuantas liacuteneas y luego oprime |_Ctrlshyd_| sort las mostraraacute a la salida de manera ordenada Esta clase de programas sedenominan filtros porque toman texto desde su entrada lo filtran y lo vierten a susalida modificado de alguna manera Tanto cat como sort son filtros inusuales cat esinusual pues lee el texto de entrada y no lo cambia

sort es inusual porque lee todas las liacuteneas de entrada hasta el EOF antes de emitir susalida La mayoriacutea de los filtros trabajan sobre la base de liacutenea por liacutenea leen unaliacutenea de la entrada realizan cierto coacutemputo y escriben una liacutenea diferente de salida

42 Autoayuda

El comando man muestra las paacuteginas de la guiacutea de referencia para un comando dado9 Porejemplo

homelarry$ man cat

cat(1) cat(1)

NAME

cat shy Concatenates or displays files

SYNOPSIS

cat [shybenstuvAET] [shyshynumber] [shyshynumbershynonblank] [shyshysqueezeshyblank]

[shyshyshowshynonprinting] [shyshyshowshyends] [shyshyshowshytabs] [shyshyshowshyall]

[shyshyhelp] [shyshyversion] [file]

DESCRIPTION

This manual page documents the GNU version of cat

________________________________________________

6 Mantenga oprimida la tecla etiquetada |_Ctrl|_y aprete |_d_| luego suelte ambas

7 N del T fin de archivo

8 N del T fin de texto

9 man tambieacuten puede mostrar informacioacuten acerca de las llamadas al sistema subrutinasformatos de archivos etc En la versioacuten original de Unix el comando mostraba lainformacioacuten exactamente igual a la que apareciacutea en la documentacioacuten impresa Por ahoraes probable que Ud soacutelo esteacute interesado en obtener ayuda acerca de los comandos

Hay aproximadamente una paacutegina completa de informacioacuten sobre cat10 Pruebe correr manen este momento No espere entender la paacutegina de manual que se le muestra Las paacuteginas demanual suponen un cierto conocimiento de Unix conocimiento que tal vez Ud no tenga eneste momento

Cuando termine de leer la paacutegina es probable que vea un bloque en video inverso al finalde la paacutegina parecido a shyshymoreshyshy o a Line 1 Se trata del pedido de maacutes(informacioacuten) que pronto le seraacute muy familiar

En lugar de dejar escapar el texto fuera de los liacutemites de la pantalla man se detiene alfinal de cada paacutegina y espera para ver que ha decidido hacer Ud Si desea seguirleyendo oprima |_Barra espaciadora_| y avanzaraacute una paacutegina Si desea terminar con lalectura de la paacutegina del manual oprima |_q_| Regresaraacute entonces al prompt del shellque esperaraacute hasta que Ud escriba otro comando

man provee ademaacutes una funcioacuten de buacutesqueda de palabras clave Por ejemplo digamos que Udestaacute interesado en el tema PostScript el lenguaje de control de impresoras desarrolladopor Adobe Si escribe man shyk ps o man shyk Postscript recibiraacute como resultado unalista de todos los comandos llamadas al sistema y otras partes documentadas de Unix quecontengan la palabra ps (o Postscript) en su nombre o descripcioacuten breve Esto puedellegar a ser muy uacutetil cuando quiere buscar una herramienta para hacer algo pero noconoce su nombre o si existe

43 Almacenaje de la informacioacuten

Los filtros son muy uacutetiles cuando Ud se ha transformado en un usuario experimentadopero tienen un pequentildeo problema Coacutemo almacena Ud la informacioacuten Seguramente iexclno seespera que Ud teclee todas las cosas cada vez que desea utilizar el programa Porsupuesto que no Unix provee archivos y directorios

Un directorio es como una carpeta contiene hojas de papel o archivos Una carpetasuficientemente grande puede contener otras carpetas puede haber directorios dentro dedirectorios En Unix se denomina sistema de archivo a la coleccioacuten de archivos ydirectorios Inicialmente en el sistema de archivo soacutelo existe un directorio denominadoroot11 Dentro de este directorio hay maacutes directorios y dentro de ellos hay archivosy auacuten maacutes directorios12

_____________________________________________

10 N del T El ejemplo se ha mantenido en ingleacutes pues es muy probable que Ud tengainstaladas las paacuteginas de manual en dicho idioma de manera predeterminada Pruebe maacutestarde de instalar el conjunto de paacuteginas de manual que estaacuten disponibles en castellano

11 N del T directorio raiacutez

Cada archivo y cada directorio tiene un nombre Nos referiremos a su nombre corto13 quepuede coincidir con el de otro archivo yo directorio en alguna otra parte del sistema dearchivo y al nombre largo14 que es uacutenico Un nombre corto para un archivo puede serjoe mientras que su nombre completo podriacutea ser homelarryjoe El nombre completo sedenomina usualmente trayectoria15 La trayectoria puede decodificarse como una secuenciade directorios Por ejemplo veremos como se lee homelarryjoe

homelarryjoe

La barra inicial indica el directorio raiacutez

Aquiacute esta el directorio denominado home Estaacute dentro del directorio raiacutez

Este es el directorio larry el cual estaacute dentro de home

joe estaacute dentro de larry Una trayectoria puede referirse tanto a un directorio como a unnombre de archivo asiacute que joe podriacutea ser cualquiera de ellos Todos los items antes delnombre corto deben ser directorios

Una manera sencilla de visualizar todo esto es mediante un diagrama en aacuterbol Para ver eldiagrama de un sistema tiacutepico Linux mire la Figura 41 Debe Ud notar que dichodiagrama no estaacute completo (iexclun sistema Linux completo tiene maacutes de 8000 archivos) y soacutelomuestra algunos de los directorios estaacutendar Por lo tanto puede haber algunosdirectorios del diagrama que no esteacuten en su sistema y de hecho su sistema tendraacutedirectorios que no aparecen en la figura

431 Miremos los directorios con ls

Ahora que ya sabe de la existencia de archivos y directorios debe haber tambieacuten unamanera de manipularlos Por supuesto El comando ls es uno de los maacutes importantes y loque hace es listar los archivos Si prueba a correr el comando ls entonces veraacute

homelarry$ ls

homelarry$

Estaacute bien no se preocupe por no ver nada Unix es intencionalmente callado si no hayarchivos para mostrar no muestra nada (ni siquiera un no hay archivos) Por lo tantola ausencia de salida es la manera de ls de decir que no encontroacute ninguacuten archivo

Pero hace un momento dije que hay maacutes de 8000 archivos por alliacute iquestdoacutende estaacuten Acaba deencontrar el concepto de directorio actual Como puede ver en el prompt su directorioactual es homelarry y alliacute no hay archivos Si desea la lista de archivos de undirectorio maacutes poblado pruebe con el directorio raiacutez

homelarry$ ls

bin etc install mnt root user var

dev home lib proc tmp usr vmlinux

homelarry$

_____________________________________________

12 Puede haber o no un liacutemite a la profundidad a la cual puede llegar el sistema dearchivo (En mi caso nunca la alcanceacute uno faacutecilmente puede tener directorios de 10niveles de profundidad)

13 N del T Nombre relativo del archivo o directorio

14 N del T Nombre completo o absoluto

15 N del T trayectoria del ingleacutes path

___________________________________________________________________________________________Figura 41 Tiacutepico aacuterbol (podado) de directorios Unix

________||bin

|___dev

|

|___etc

|

|___home ________larry

| |

| |___sam

|___lib

|

|___proc

|

|___tmp

|

|___usr________||X11R6

|

|___bin

|

|___emacs

|

|___etc

|

|___g++shyinclude

|

|___include

|

|___lib

|

|___

| local

| ||_bin

| |___emacs

| |

| |___etc

| |

| |___lib

|

|___man

|

|___spool

|

|___src________linux

|

|___tmp

En el comando anterior ls el directorio ( ) es lo que se denomina un paraacutemetroLa primer palabra de un comando es el nombre del comando y cualquier cosa que le sigason sus paraacutemetros Los paraacutemetros generalmente modifican la forma en la que actuacutea unprograma para ls el paraacutemetro le dice de cual directorio desea Ud la lista de archivosAlgunos comandos tienen paraacutemetros especiales denominados opciones o interruptores16 Paraver esto pruebe

homelarry$ ls shyF

bin etc install mnt root user var

dev home lib proc tmp usr vmlinux

homelarry$

_____________________________________________

16 N del T interruptores del ingleacutes switches

El shyF es una opcioacuten Las opciones son clases especiales de paraacutemetros que comienzan conun guioacuten y modifican el funcionamiento del programa Para ls shyF es una opcioacuten que lepermite a Ud ver cuales de las entradas son directorios cuales son archivos especialescuales programas y cuales son archivos normales Cualquiera que termina con una barra esun directorio Trataremos con maacutes detalle las caracteriacutesticas de ls maacutes adelante iexclEs unprograma sorprendentemente complejo

Por ahora hay dos lecciones que se deben aprender Primero debe aprender que es lo quehace ls Pruebe unos cuantos otros directorios de los que se muestran en el aacuterbol de laFigura 41 y fiacutejese en su contenido Naturalmente algunos estaraacuten vaciacuteos y otrostendraacuten muchos archivos dentro Le sugiero que utilice ls con y sin la opcioacuten shyF Por ejemplo ls usrlocal debe aparecer maacutes o menos asiacute

homelarry$ ls usrlocal

archives bin emacs etc ka9q lib tcl

homelarry$

La segunda leccioacuten es maacutes general Muchos comandos Unix son como ls Tienen opciones queen general consisten de un caraacutecter precedido por un guioacuten y tienen paraacutemetros Adiferencia de ls algunos comandos requieren ciertos paraacutemetros yu opciones Paramostrar como se usan los comandos utilizaremos el siguiente formato

ls [shyaRF] [directorio]

En general y desde ahora en adelante utilizareacute plantillas de comandos como la mostradaantes de introducir comandos nuevos para Ud La primer palabra es el comando (en estecaso ls) A continuacioacuten del comando siguen todos los paraacutemetros Los paraacutemetrosopcionales se encerraraacuten entre corchetes ([ y ]) Las metashyvariables estaacuteninclinadas_son palabras que toman el lugar de los paraacutemetros reales (Por ejemplo maacutesarriba puede Ud ver que dice directorio lo cual debe ser reemplazado por el nombre deun directorio real)

Las opciones son un caso especial Estaacuten encerradas entre corchetes pero Ud puedeutilizar una sola de ellas sin necesidad de emplear todas juntas Por ejemplo con lastres opciones enumeradas maacutes arriba para el caso de ls Ud tiene ocho maneras posiblesde correr el comando con o sin cada una de las opciones (Contraste ls shyR con ls shyF)

432 El directorio actual y cd

shy pwd

El uso de los directorios puede ser insoportable si se tiene que teclear la trayectoriacompleta cada vez que se quiere acceso a un directorio En lugar de ello los shell deUnix tienen una caracteriacutestica denominada directorio actual presente o detrabajo Es muy probable que su configuracioacuten de shell muestre dicho directorio como

parte del prompt homelarry Si no lo hace pruebe el comando pwd que proviene de lasigla de las palabras present working directory17 (Algunas veces el prompt muestra elnombre de la maacutequina Esto soacutelo es uacutetil realmente en un entorno de red en el cual hay unagran cantidad de maacutequinas diferentes)

mousehousegtpwd

homelarry

mousehousegt

Como puede Ud ver pwd le dice cuaacutel es su directorio actual18_ se trata de un comandomuy simple La mayoriacutea de los comandos actuacutea de forma predeterminada sobre eldirectorio actual

shy cd [directorio]

Podemos cambiar nuestro directorio actual mediante el comando cd Por ejemplo pruebe

homelarry$ cd home

home$ ls shyF

larry sam shutdown steve user1

home$

Si Ud omite el paraacutemetro opcional directorio se lo retornaraacute a su directorio raiacutezpersonal o directorio original De otro modo cd lo cambiaraacute al directorio especificadoPor ejemplo

home$ cd

homelarry$ cd

$ cd home

home$ cd usr

usr$ cd localbin

usrlocalbin$

Como puede ver cd le permite expresar el directorio de destino con trayectoriasabsolutas o relativas Una trayectoria absoluta comienza con una y especifica todoslo directorios que existen antes del archivo que Ud desea Una trayectoria relativa estaacutereferida a su directorio actual En el ejemplo anterior cuando estaba en usr hice unmovimiento relativo a localbin local es un directorio que existe bajo usr ybin es un directorio bajo local (cd home tambieacuten fue un cambio de directoriorelativo)

Existen dos directorios que se utilizan solamente para trayectorias relativas y El directorio se refiere al directorio actual y es el directorio

anterior son abreviaturas de directorio y existen en todos los directorios aunque nocuadran bien en la metaacutefora de carpeta dentro de carpeta Auacuten el directorio raiacutez tieneun directorio anterior eacutel es su propio directorio anterior

_____________________________________________

17 N del T Directorio de trabajo actual

18 En este libro veraacute todos los teacuterminos en uso directorio de trabajo presentedirectorio actual o directorio de trabajo Prefiero directorio actual aunque a vecesrecurra a las otras formas a causa de razones de estilo

El archivo chaptershy1 viene a ser el archivo chaptershy1 que estaacute en el directorio actualOcasionalmente seraacute necesario que Ud coloque expliacutecitamente el para que ciertoscomandos funcionen aunque esto es raro En la mayoriacutea de los casos daraacute igual ponerchaptershy1 o chaptershy1

El directorio es maacutes uacutetil cuando queremos retroceder

usrlocalbin$ cd

usrlocal$ ls shyF

archives bin emacs etc ka9q lib tcl

usrlocal$ ls shyF src

cweb linux xmris

usrlocal$

En este ejemplo me cambieacute al directorio anterior mediante cd y luego listeacute eldirectorio usrsrc desde usrlocal utilizando el nombre src Debe advertir que sihubiese estado en homelarry ejecutar el comando ls shyF src no me habriacutea servido alpropoacutesito de ver lo que hay en usrsrc

El directorio ~ es un alias para su directorio personal

usrlocal$ ls shyF ~

usrlocal$

Puede ver que auacuten no hay nada en su directorio personal ~ seraacute maacutes uacutetil a medida queaprendamos maacutes acerca de como manipular los archivos

433 Creacioacuten y borrado de directorios

shy mkdir directorio1 [directorio2 directorioN]

En Unix crear directorios es extremadamente simple y puede ser una muy uacutetil herramientade organizacioacuten Para crear un nuevo directorio utilice el comando mkdir Por supuestomkdir viene de make directory19

Con un pequentildeo ejemplo veamos como funciona esto

homelarry$ ls shyF

homelarry$ mkdir reportshy1993

homelarry$ ls shyF

reportshy1993

homelarry$ cd reportshy1993

homelarryreportshy1993$

mkdir puede tomar maacutes de un paraacutemetro a los que interpreta como nombres de directoriosque debe crear Puede especificarlos mediante su nombre relativo o absoluto reportshy1993es un caso de ejemplo con trayectoria relativa

homelarryreportshy1993$ mkdir homelarryreportshy1993chap1 ~reportshy1993chap2

homelarryreportshy1993$ ls shyF

chap1 chap2

homelarryreportshy1993$

_____________________________________________

19 N del T Crear directorio

shy rmdir directorio1 [directorio2 directorioN]

El opuesto de mkdir es rmdir (remove directory20) rmdir trabaja exactamente igual quemkdir Un ejemplo de rmdir es

homelarryreportshy1993$ rmdir chap1 chap3

rmdir chap3 No such file or directory

homelarryreportshy1993$ ls shyF

chap2

homelarryreportshy1993$ cd

homelarry$ rmdir reportshy1993

rmdir reportshy1993 Directory not empty

homelarry$

Como puede apreciar rmdir se niega a borrar un directorio que no existe y tampocopermite eliminar directorios que tengan algo dentro (Recuerde que reportshy1993 tiene un

subdirectorio chap2 dentro de eacutel) Existe un tema interesante para pensar entoncesiquestqueacute pasa si intenta eliminar su directorio actual Averiguumleacutemoslo

homelarry$ cd reportshy1993

homelarryreportshy1993$ ls shyF

chap2

homelarryreportshy1993$ rmdir chap2

homelarryreportshy1993$ rmdir

rmdir Operation not permitted

homelarryreportshy1993$

Otra situacioacuten del mismo estilo es que sucede si intenta eliminar el directorio anterioral directorio actual Bien esto no es un problema nuevo el directorio anterior alactual no estaacute vaciacuteo (existe el actual en eacutel) asiacute que no puede ser borrado

44 Informacioacuten en movimiento

Todos este asunto de los directorios estaacute muy lindo pero no son de ninguna ayuda amenos que Ud tenga alguacuten sitio donde almacenar sus datos Los dioses del Unix vieroneste problema y lo solucionaron haciendo que los usuarios tengan archivos21

_____________________________________________

20 N del T Eliminar directorio

21N del T Tambieacuten denominados ficheros

Aprenderemos maacutes acerca de la creacioacuten y edicioacuten de archivos en los proacuteximos capiacutetulos

Los comandos baacutesicos para manipular archivos en Unix son cp mv y rm Sus nombresprovienen de copy22 move23 y remove24 respectivamente

441 cp como un monje

shy cp [shyi] fuente destino

shy cp [shyi] archivo1 archivo2 archivoN directorioshydeshydestino25

cp es una utilidad muy praacutectica en Unix y ademaacutes muy poderosa Permite que una personapueda copiar maacutes informacioacuten en un segundo que lo que podiacutea copiar un monje del siglo XIVen todo un antildeo

Debe ser muy cuidadoso con cp si no dispone de una cantidad importante de espacio endisco A nadie le hace gracia ver el mensaje Disk full26 cuando estaacute trabajando conarchivos importantes

cp tambieacuten puede sobreescribir archivos existentes sin previo aviso trataremos este temamaacutes adelante

Bien hablaremos primero acerca de la primer liacutenea en la plantilla del comando El primerparaacutemetro de cp es el nombre del archivo que hay que copiar el segundo es el lugar dondese desea depositar la copia Puede obtener una copia con un nombre distinto o una en undirectorio diferente Veamos algunos ejemplos

homelarry$ ls shyF etcpasswd

etcpasswd

homelarry$ cp etcpasswd

homelarry$ ls shyF

passwd

homelarry$ cp passwd frog

homelarry$ ls shyF

frog passwd

homelarry$

El primer comando cp que corriacute tomoacute el archivo etcpasswd que contiene los nombres detodos los usuarios en un sistema Unix y lo copioacute en mi directorio raiacutez cp no borra elarchivo fuente asiacute que no hice nada que pudiera dantildear el sistema O sea que ahoraexisten dos copias del contenido del archivo etcpasswd ambas se denominan passwd perouna estaacute en el directorio etc y la otra en homelarry

_____________________________________________

22 N del T Copiar

23 N del T Mover

24 N del T Quitar borrar

25 cp necesita de dos renglones en su plantilla porque el significado del segundoparaacutemetro depende de la cantidad de paraacutemetros

26 N del T Disco lleno

Luego creamos una tercera copia de etcpasswd cuando tecleamos cp passwd frog ahorahay tres copias etcpasswd homelarrypasswd y homelarryfrog El contenido de esostres archivos es el mismo sus nombres de archivo difieren

cp puede copiar archivos entre directorios si el primer paraacutemetro es un archivo y elsegundo es un directorio En este caso el nombre simple (sin el path) de destinocoincidiraacute con el original para cada archivo

Tambieacuten se puede copiar un archivo y cambiar su nombre de destino en una sola operacioacutencaso que se da cuando ambos paraacutemetros son nombres de archivo Aquiacute reside uno de lospeligros de cp Si tecleara cp etcpasswd etcgroup el comando cp creariacuteanormalmente un archivo nuevo con el contenido ideacutentico al de etcpasswd y con el nombre

etcgroup Por lo tanto si etcgroup ya existiera cp destruiriacutea el contenido delantiguo sin darle la oportunidad de guardarlo (Ni siquiera escribiraacute un mensaje en elcual le advierta que estaacute por destruir un archivo al copiarle otro encima) Echemos unamirada a otro ejemplo de cp

homelarry$ ls shyF

frog passwd

homelarry$ mkdir passwd_version

homelarry$ cp frog passwd passwd_version

homelarry$ ls shyF

frog passwd passwd_version

homelarry$ ls shyF passwd_version

frog passwd

homelarry$

iquestCoacutemo useacute cp en este caso Evidentemente cp puede tomar maacutes de dos paraacutemetros como sepuede apreciar en la segunda liacutenea de plantillas del comando Lo que el comando anteriorrealizoacute es copiar los archivos que aparecen listados (frog y passwd) al directoriopasswd_version De hecho cp puede tomar cualquier nuacutemero de paraacutemetros interpreta losprimeros n shy 1 como los nombres de archivo que debe copiar y el neacutesimoparaacutemetro como elnombre del directorio al cual se deben copiar los anteriores

No puede renombrar archivos cuando copia maacutes de uno a la vez siempre mantienen su nombresimple Esto nos lleva a una pregunta interesante iquestQueacute es lo que pasariacutea si tecleamoscp frog passwd toad donde frog y passwd existen y toad no es un directorioInteacutentelo y lo sabraacute

442 La poda con rm

shy rm [shyi] archivo1 archivo2 archivoN

Ahora que hemos aprendido como crear millones de archivos con cp (y creacuteame muy prontoencontraraacute nuevas maneras de crear maacutes archivos) seriacutea uacutetil aprender la manera deborrarlos De hecho es muy simple el comando que anda necesitando es rm y funcionacomo Ud se lo esperariacutea a cualquier archivo cuyo nombre se pasa como paraacutemetro a rm selo borra Por ejemplo

homelarry$ ls shyF

frog passwd passwd_version

homelarry$ rm frog toad passwd

rm toad No such file or directory

homelarry$ ls shyF

passwd_version

homelarry$

Como puede Ud apreciar rm es extremadamente espartano No soacutelo no pide su confirmacioacutensino que borra cosas auacuten en el caso en que haya errores en la liacutenea de comandos Estobien puede ser peligroso Considere la diferencia entre estos dos comandos

homelarry$ ls shyF

toad frog

homelarry$ ls shyF frog

toad

homelarry$ rm frogtoad

homelarry$

y este otro

homelarry$ rm frog toad

rm frog is a directory

homelarry$ ls shyF

frog

homelarry$

Como puede ver la diferencia en un caracter hace una diferencia importante en la salidadel comando iexclEs vital que Ud controle lo que ha escrito en sus liacuteneas de comando antesde presionar |_Intro_|

443 Seriacutea interesante tener un rastrillo

shy mv [shyi] nombreshyviejo nombreshynuevo

shy mv [shyi] archivo1 archivo2 archivoN nuevoshydirectorio

Por uacuteltimo el otro comando del que debe cuidarse es mv mv se parece un montoacuten a cpexcepto que borra el archivo original despueacutes de copiarlo Se puede entender como lautilizacioacuten conjunta de cp y rm Veamos que podemos hacer

homelarry$ cp etcpasswd

homelarry$ ls shyF

passwd

homelarry$ mv passwd frog

homelarry$ ls shyF

frog

homelarry$ mkdir report

homelarry$ mv frog report

homelarry$ ls shyF

report

homelarry$ ls shyF report

frog

homelarry$

Como puede ver mv renombra un archivo (que es el primer paraacutemetro) si el segundoparaacutemetro es un archivo Si el segundo paraacutemetro es un directorio mv moveraacute el archivoal nuevo directorio manteniendo el mismo nombre simple

Debe Ud ser muy cuidadoso con mv el comando no controla si el archivo ya existe yborraraacute cualquier archivo que hubiera con el nombre de destino Por ejemplo si ya tengoun archivo de nombre frog existente en mi directorio report el comando mv frog reportborraraacute el archivo reportfrog y lo reemplazaraacute con frog

De hecho existe una manera de lograr que tanto rm cp y mv le consulten a Ud antes deeliminar archivos Los tres comandos nombrados aceptan la opcioacuten shyi a tal efecto SiUd utiliza un alias puede hacer que el shell ejecute rm shyi automaacuteticamente cuandoteclee rm Aprenderaacute maacutes de estos temas luego en la Seccioacuten 913 en la paacutegina 92

Capiacutetulo 5

El sistema de ventanas X

Lo mejor de los estaacutendares es que haya tantos para elegir Andrew S Tanenbaum

Este capiacutetulo soacutelo es aplicable para aquellos que usen el sistema de ventanas X Si seencuentra con una pantalla con muacuteltiples ventanas colores o un cursor que soacutelo se muevecon el ratoacuten estaacute usted usando X (Si su pantalla contiene caracteres blancos sobrefondo negro no estaacute usando X Para arrancarlo refieacuterase a la Seccioacuten 51)

51 Ejecucioacuten y salida del sistema de ventanas X

511 Ejecucioacuten de X

Incluso cuando X no arranque de forma automaacutetica durante el ingreso en el sistema esposible arrancarlo desde la liacutenea de comandos del inteacuterprete en modo texto Hay doscomandos que arrancan X bien startx o bien xinit Debe intentar startx primero Si elinteacuterprete de comandos se queja de que ese comando no existe entonces pruebe con xinit aver si arranca X de ese modo Si no funciona ninguno de los comandos anteriores puedeque no tenga X instalado en su sistema refieacuterase a la documentacioacuten local de sudistribucioacuten

Si el comando se ejecuta pero regresa al inteacuterprete en modo texto tras un rato X estaacuteinstalado pero no ha sido configurado todaviacutea En ese caso debe consultar ladocumentacioacuten que acompantildeaba su distribucioacuten en lo referente a como configurar X

512 Saliendo de X

Dependiendo de coacutemo se haya configurado X puede haber dos modos diferentes de salir deX El primero es que su gestor de ventanas controle la ejecucioacuten de X En ese casodeberaacute salir de X usando un menuacute (ver Seccioacuten 548 en la paacutegina 41) Para ver el menuacutebasta apretar un botoacuten del ratoacuten sobre el fondo

La entrada del menuacute que busca debe ser algo asiacute como Exit Window Manager1 o Exit X2Trate de encontrar esa entrada (puede que haya maacutes de un menuacute intente usar diferentesbotones) y eliacutejala

El otro meacutetodo utiliza una ventana xterm especial para controlar X En este casoseguramente existiraacute una ventana cuyo tiacutetulo sea login3 o system xterm4 Para salirde X mueva el cursor a esa ventana y escriba exit5

Si X arrancoacute automaacuteticamente tras su ingreso en el sistema uno de estos meacutetodosprobablemente le sacaraacute de eacutel Basta conectarse de nuevo para regresar a eacutel Si ejecutoacute Xde forma manual al salir volveraacute al interprete de comandos en modo texto (Si quieresalir del sistema bastaraacute con escribir logout )

52 iquestQueacute es el sistema de ventanas X

El Sistema de Ventanas X es un meacutetodo de trabajo graacutefico y distribuido desarrolladoprincipalmente en el Instituto Tecnoloacutegico de Massachusetts Actualmente estaacute a cargo deun consorcio de fabricantes (debidamente llamado El Consorcio X) y es mantenido porellos

El Sistema de Ventanas X (que a partir de ahora abreviaremos como X6 tiene revisionescada pocos antildeos conocidas como lanzamientos La uacuteltima revisioacuten ha sido X11R6 o sextolanzamiento7

El nuacutemero 11 indica la versioacuten oficial pero no ha habido cambios en los uacuteltimos antildeos ytampoco hay planes para cambiarla en un futuro proacuteximo

Al ser cliente y servidores programas diferentes es posible ejecutar cada uno en enmaacutequinas completamente diferentes Ademaacutes de constituir un meacutetodo estaacutendar paraaplicaciones graacuteficas es posible ejecutar un programa en una maacutequina remota (iexclincluso alotro lado del paiacutes si quiere) y que los resultados aparezcan en la estacioacuten de trabajoque tiene enfrente suyo

Un tercer concepto con el que debe familiarizarse es el de gestor de ventanas El gestorde ventanas es un cliente especial que le dice al servidor en que posicioacuten debencolocarse las diferentes ventanas y permite al usuario moverlas El servidor por siacutemismo no interacciona con el usuario Se trata de un medio que conecta el usuario y elcliente

53 iquestQueacute es esto que hay en mi pantalla

Al arrancar X varios programas son ejecutados Primero arranca el servidor Luegogeneralmente arrancan varios clientes Desgraciadamente no hay un estaacutendar comuacuten entrelas diferentes distribuciones Es bastante probable que entre los clientes se encuentreun gestor de ventanas bien fvwm o twm un inteacuterprete de comandos xterm y un relojxclock

_____________________________________________

1 NT En ingleacutes salir del gestor de ventanas

2 NT En ingleacutes salir de X

3 NT En ingleacutes ingreso en el sistema o autenticacioacuten

4 NT En ingleacutes xterm del sistema o terminal X del sistema

5 NT En ingleacutes salir

6 Existen varias formas de referirse al Sistema de Ventanas X Una forma que aunque comuacutenes incorrecta es X Window o Ventanas X

7 NT La palabra inglesa es release Por ello los lanzamientos se diferencianantildeadiendo una R y el nuacutemero correspondiente

531 XClock

shy xclock [shydigital] [shyanalog] [shyupdate segundos] [shyhands color]

Primero explicaremos el maacutes simple xclock funciona exaacutectamente como se puede esperarMarca los segundos minutos y horas en una ventana pequentildea

Ni usar los botones del ratoacuten ni escribir en la ventana xclock produce efecto algunoshyeso es todo lo que hace iquestO quizaacute no En realidad hay varias opciones diferentes quepermiten hacer que el programa se comporte de modos diferentes Asiacute por ejemplo xclockshydigital crea un reloj digital xclock shyupdate 1 hace que el segundero se mueva cadasegundo y xclock shyupdate 5 hace que se mueva cada cinco segundos

Para obtener maacutes informacioacuten sobre las opciones de xclock puede consultar la paacutegina delmanual correspondiente man xclock Si piensa ejecutar varias copias de xclockprobablemente deberiacutea consultar la Seccioacuten 64 (Multitarea) para saber como se ejecutan ala vez que sus otros programas

(Si ejecuta una copia de xclock en primer plano que es la forma usual en la que seejecuta un programa y quiere salir de eacutel basta teclear |_Ctrlshyc_|)

532 XTerm

La ventana que muestra el prompt del inteacuterprete de comandos (podraacute ver algo parecido ahomelarry$) es controlada por un programa llamado xterm xterm es un programaengantildeosamente complicado A primera vista no parece que haga mucho pero realmente hacemuchiacutesimo trabajo xterm emula una terminal de forma que las aplicaciones de modo textode Unix funcionen correctamente Tambieacuten mantiene en memoria informacioacuten de forma que sepueden consultar comandos usados previamente (Para ver como hace uso de esto refieacuterasea la Seccioacuten 563)

Gran parte de este libro estaacute dedicada a aprender como usar el interprete de comandos deUnix que se encuentra dentro de la ventana xterm Para poder escribir en la xtermgeneralmente es necesario mover el cursor (que posiblemente aparece en forma de X o deflecha) al interior de la ventana xterm De todos modos este comportamiento esdependiente del gestor de ventanas

Uno de los modos en los que se puede arrancar un programa bajo X es a traveacutes de unaxterm Al tratarse los programas X de programas Unix estaacutendar pueden ser arrancados atraveacutes de un inteacuterprete de comandos como el de las xterms Para evitar bloquear la xtermejecutando un programa largo desde ella generalmente se prefiere arrancar los programasX en segundo plano Para consultar este tema puede referirse a la Seccioacuten 64

54 Gestores de ventanas

Bajo Linux los gestores de ventanas maacutes comunes son dos El primero llamado twm queviene de Tab Window Manager Es un programa mayor que el segundo fvwm (fvwm viene deF() Virtual Window Manager el autor nunca explicoacute que significaba la f8) Ambosgestores de ventanas son altamente configurables lo cual impide dar instruccionesespeciacuteficas sobre que teclas usar para hacer algo en particular

Si le interesa saber algo sobre la configuracioacuten de twm refieacuterase a la Seccioacuten 921 Laconfiguracioacuten de fvwm se describe en la Seccioacuten 922

541 Cuando se crean nuevas ventanas

Hay tres tipos de cosas que un gestor de ventanas puede hacer cuando se crea una nuevaventana Es posible configurar el gestor de ventanas de manera que aparezca la forma dela ventana permitieacutendole colocarla en la posicioacuten que prefiera en la pantalla Este modose llama colocacioacuten manual Si ve aparecer la forma de la ventana puede moverla con elratoacuten y colocarla presionando el botoacuten izquierdo

_____________________________________________

8 N del T En el Linux Journal No 43 Noviembre 1997 hay una entrevista a RobertNation paacutegs 46shy47 y eacuteste dice que la F estaacute por Feeble (Gracias Joseacute Luis Gurpeguipor la aclaracioacuten)

A veces es posible que el gestor de ventanas las coloque por siacute mismo Se trata de lacolocacioacuten aleatoria

Finalmente a veces la aplicacioacuten pregunta por el lugar preciso en el que el quiere quese situacutee Tambieacuten el gestor de ventanas puede configurarse de forma que siempre situacutee lasventanas de ciertas aplicaciones en lugares fijos (Asiacute por ejemplo se puede especificarque xclock siempre aparezca en la esquina superior derecha de la pantalla)

542 Foco

El gestor de ventanas controla otras cosas importantes Lo que probablemente le interesamaacutes es el foco El foco del servidor determina que ventana recibe los caraacutecteresintroducidos mediante el teclado Generalmente en X el foco es determinado por laposicioacuten del cursor del ratoacuten Si mueve el cursor del ratoacuten dentro de una ventana xterm9esa xterm recibe los caracteres tecleados Se trata de un comportamiento diferente al deotros sistemas de ventanas como Windows de Microsoft OS2 o Macintosh donde debepinchar con el ratoacuten en una ventana para que adquiera el foco

Generalmente bajo X si el cursor del ratoacuten se sale de una ventana se pierde el foco yle resultaraacute imposible escribir en ella

Debe notar sin embargo que es posible configurar tanto twm como fvwm de forma que paracambiar el foco necesite pinchar la ventana correspondiente y pinchar fuera paradesenfocarla de forma que se comporten igual que Windows de Microsoft Una de dos tratede averiguar como funciona su gestor de ventanas probando o consulte la documentacioacutenlocal

543 Moviendo ventanas

Otro aspecto de X que es altamente configurable es el meacutetodo para mover ventanas Yotengo configurados tres meacutetodos para mover ventanas en twm El maacutes obvio es mover elcursor del ratoacuten sobre la barra del tiacutetulo y arrastrar la ventana Desgraciadamente laconfiguracioacuten permite definir el movimiento usando cualquiera de los tres botones10 (Paraarrastrar situacutee el cursor sobre la barra del tiacutetulo y mantenga presionado el botoacuten delratoacuten correspondiente mientras se mueve) Lo maacutes probable es que su configuracioacuten use elbotoacuten izquierdo para mover ventanas

Otra forma de mover ventanas puede ser manteniendo una tecla pulsada mientras mueve elratoacuten Asiacute en mi caso si mantengo pulsada la tecla |_Alt_| y muevo el cursor sobre unaventana puedo arrastrarla usando el botoacuten izquierdo de mi ratoacuten

Por supuesto para ver como funciona en su caso puede probar igual que antes o referirsea la documentacioacuten local Alternativamente si quiere tratar de interpretar los ficherosde configuracioacuten de los gestores de ventanas puede referirse a la Seccioacuten 921 para twmo 922 para fvwm

_____________________________________________

9 iexclPuede ejecutar varias copias de xterm al mismo tiempo

10 Muchos ratones de PCs tienen dos botones uacutenicamente En este caso generalmente esposible emular el botoacuten central presionando ambos botones simultaacuteneamente

544 Profundidad

Dado que las ventanas pueden solaparse en X necesitamos el concepto de profundidad Apesar de que tanto las ventanas como la pantalla son bidimensionales unas ventanaspueden estar delante de otras de forma que cubren total o parcialmente aquella situadadetraacutes

Existen varias operaciones que manejan la profundidad

o Subir o poner una ventana delante Generalmente se hace pinchando con alguno de losbotones en la barra de tiacutetulo de la ventana en cuestioacuten El botoacuten usado depende de laconfiguracioacuten del gestor de ventanas (Es posible que sean varios los botones queproduzcan este efecto)

o Bajar o empujar una ventana hacia atraacutes Generalmente se hace pinchando igualmente enla barra de tiacutetulo pero usando otro botoacuten Tambieacuten es posible configurar el gestor deventanas de forma que pinchar traiga la ventana hacia delante siempre que haya algoencima de ella y la lleve hacia atraacutes si no hay nada delante

o Alzar en ciclo de forma que el gestor de ventanas va alzando las ventanas una a unaen orden

545 Iconizar

Existen otras operaciones que pueden tapar ventanas o hacerlas desaparecer completamenteLa primera es iconizacioacuten Dependiendo del gestor de ventanas que use este procesopuede realizarse de varias formas Con twm muchas personas configuran un gestor deiconos Se trata de una ventana especial que contiene una lista con las demaacutes ventanas enuso en la pantalla Pinchando con el ratoacuten en uno de los nombres (o dependiendo de laconfiguracioacuten en uno de los botones) la ventana desaparece es iconizada La ventana estaacuteauacuten activa pero no puede verse Pinchando otra vez en el gestor de iconos la ventanavuelve a aparecer en la pantalla

Se trata de algo muy uacutetil Se podriacutea por ejemplo tener xterm remotas en diferentesmaacutequinas que use ocasionalmente al mismo tiempo Dado sin embargo que soacutelo las usararamente puede mantenerlas iconizadas mientras trabaja con un pequentildeo grupo El uacutenicoproblema es que resulta faacutecil perder alguna ventana Generalmente eso lleva a crearnuevas ventanas que dupliquen la funcionalidad de las que estaacuten iconizadas

Otros gestores de ventanas crean verdaderos iconos en la parte inferior de la pantalla osimplemente en la ventana raiacutez

546 Variando el tamantildeo

Existen diversos meacutetodos para variar el tamantildeo de las ventanas bajo X De nuevo estodepende de su gestor de ventanas y de coacutemo haya sido configurado El meacutetodo al que estaacutenacostumbrados los usuarios de Windows de Microsoft consiste en pinchar en el borde de laventana y arrastrarlo Si las ventanas que produce su gestor tienen un borde gordo quehace que el cursor del ratoacuten cambie al pasar por encima de eacutel seguramente tambieacuten puedeusar ese meacutetodo

Otra forma es crear un botoacuten de variacioacuten de tamantildeo en la barra del tiacutetulo Es el botoacutenvisible en la parte derecha de las barras de los tiacutetulos de la Figura 53 Para usarlopinche con el botoacuten izquierdo del ratoacuten en eacutel y mantenieacutendolo presionado mueacutevalo fuerade la ventana para variar el tamantildeo Para fijar el nuevo tamantildeo basta soltar el botoacuten delratoacuten

547 Maximizacioacuten

La mayoriacutea de los gestores de ventanas soportan maximizacioacuten En twm por ejemplo puedemaximizar la altura de una ventana su ancho o ambos a la vez Aunque twm llama a esteproceso zooming yo prefiero usar maximizacioacuten Las aplicaciones pueden responder demodo diferente a un cambio de tamantildeo (Por ejemplo xterm no cambia el tamantildeo de letrapero aumenta el espacio de trabajo)

Desgraciadamente no hay un modo estaacutendar de maximizar ventanas

548 Menuacutes

Los gestores de ventanas tambieacuten proporcionan al usuario un sistema de menuacutes pararealizar tareas de forma raacutepida una y otra vez Por ejemplo podriacutea tener una opcioacuten queejecute Emacs de forma automaacutetica o una xterm adicional De ese modo no tendriacutea queejecutar el comando dentro de una xterm iexclesto es especialmente bueno si no hay ningunaxterm ejecutaacutendose en la que pueda escribir para ejecutar un programa nuevo

De forma general se puede acceder a los menuacutes pinchando en la ventana raiacutez que es unaventana inmoacutevil que siempre estaacute debajo de las demaacutes Por defecto esta ventana es decolor gris pero puede tener cualquier aspecto11 Si quiere probar a ver un menuacute pinchey mantenga cualquier botoacuten del ratoacuten sobre la ventana raiacutez Deberiacutea aparecer un menuacutePara seleccionar una opcioacuten mantenga presionado el botoacuten y mueva el ratoacuten hasta marcarla opcioacuten deseada Entonces suelte el botoacuten

55 Atributos X

Hay muchos programas que usan X Algunos como emacs puede ejecutarse tanto en modotexto como en una ventana X que eacutel mismo crea automaacuteticamente Pero en general lamayoriacutea de los programas para X soacutelo funcionan bajo X

551 Geometriacutea

Existe una serie de cosas que son comunes a todos los programas que se ejecutan bajo XEn X el concepto de geometriacutea engloba el lugar y el tamantildeo de la ventana La geometriacutea deuna ventana tiene cuatro componentes a saber

_____________________________________________

11 Un programa divertido que puede probar se llama xfishtank Este programa crea unpequentildeo acuario en el fondo de su pantalla

o La dimensioacuten horizontal generalmente medida en pixels (Un pixel es la unidad maacutespequentildea que puede colorearse y representarse en la pantalla Muchas configuraciones X enPCs basados en un procesador Intel tienen una resolucioacuten de 1024 pixels horizontalmentepor 768 pixels verticalmente) Algunas aplicaciones como xterm o emacs miden su tamantildeoen caracteres (Por ejemplo ochenta caracteres por liacutenea)

o La dimensioacuten vertical tambieacuten medida en pixels generalmente Al igual que antes enalgunos casos se puede medir en liacuteneas

o La distancia horizontal a uno de los bordes de la pantalla Por ejemplo +35 significaa treinta y cinco pixels desde la izquierda Sin embargo shy50 significa que el extremoderecho de la ventana estaacute a cincuenta pixels del borde derecho de la pantallaGeneralmente no es posible lanzar una ventana fuera de la pantalla aunque si se puedemover fuera (La principal excepcioacuten es cuando la ventana es demasiado grande)

o La distancia vertical desde la parte superior o inferior de la pantalla la distanciase mide desde la parte superior si es positiva o desde la inferior si es negativa

Los cuatro componentes se unen formando la cadena de geometriacutea 503x73shy78+0 (Esto marcala geometriacutea de una ventana de 503 pixels de largo 73 pixels de alto situada cerca dela esquina superior derecha de la pantalla) O de otro modo tendremos tamantildeoh x tamantildeovshysituacioacutenh + situacioacutenv

552 Presentacioacuten

Toda aplicacioacuten X tiene asociada una presentacioacuten Eacutesta determina cuaacutel es la pantallacontrolada por el servidor X La presentacioacuten estaacute formada por tres elementos

o El nombre de la maacutequina en la que se ejecuta el servidor En el caso de sistemas Linuxaislados el nombre de la maacutequina que ejecuta el servidor coincide con la que ejecuta losclientes En ese caso se puede omitir el nombre por completo

o El nuacutemero del servidor de dicha maacutequina que debe responder a las peticiones de losclientes Dado que una maacutequina puede estar corriendo diferentes servidores a la vez (esalgo improbable pero posible en maacutequinas Linux) cada uno tiene que tener un nuacutemeropropio

o El nuacutemero del monitor X permite que un servidor controle maacutes de un monitor a la vezPor ejemplo puede que alguien quiera tener maacutes espacio de forma que use dos monitores ala vez Para evitar que el rendimiento de la maacutequina sea muy malo en vez de tener dosservidores hacen que sea el mismo servidor el que controle las dos maacutequinas

Si ponemos estas tres cosas juntas obtendremos maacutequinanuacutemeroshydeshyservidornuacutemeroshydeshypantalla Por ejemplo en mousehouse todas mis aplicaciones tienen la presentacioacutenfijada en 00 lo que significa que la salida aparece en la primera pantalla del primerservidor local Sin embargo si uso una computadora remota tendriacutea que sermousehouse00

Figura 51 Opciones Estaacutendar para Programas X

Nombre Seguido de Ejemplo

shygeometry Geometriacutea de la ventana xterm shygeometry 80x24+0+90

shydisplay A doacutende quiere que el programa enviacutee lasalida

xterm shydisplay lionsden00

shyfg Color primario en primer plano xterm shyfg yellow

shybg Color primario en el segundo plano xterm shybg blue

Por defecto la presentacioacuten se toma de una variable de entorno (ver Seccioacuten 914)llamada DISPLAY12 pero puede ser fijada mediante una opcioacuten desde el inteacuterprete decomandos (ver Figura 52) Para ver cuaacutel es el valor de la variable DISPLAY bastaejecutar echo $DISPLAY

56 Caracteriacutesticas comunes

A pesar de que X es una interfaz graacutefica de usuario se trata de una interfaz muydesequilibrada

Resulta imposible predecir como va a comportarse cualquier elemento del sistema porque sepueden reconfigurar cambiar o incluso sustituir muy faacutecilmente Eso significa que es muydifiacutecil explicar como se han de usar los distintos elementos de la interfaz Una de lasrazones que ya conocemos es la posibilidad de utilizar diferentes gestores de ventanasque a su vez son altamente configurables

Otra explicacioacuten para el desequilibrio de la interfaz es que las aplicaciones X se puedenconstruir mediante conjuntos de chismes13 La distribucioacuten X estaacutendar incluye loswidgets Athena desarrollados en el MIT Las aplicaciones gratuitas suelen hacer uso deeste conjunto Tienen la desventaja de que su aspecto no es particularmente atrayente yresultan algo maacutes difiacuteciles de usar en un programa que los otros

Otro conjunto de widget popular es Motif Motif es un conjunto no gratuito similar a lainterfaz de usuario usada por Windows de Microsoft Muchas aplicaciones comerciales asiacutecomo algunas gratuitas usan el conjunto de widget Motif El popular Browser de World WideWeb netscape por ejemplo usa Motif

Veamos cuales son algunas de las cosas maacutes habituales que puede encontrar

561 Botones

Los botones son generalmente los componentes de la interfaz maacutes faacuteciles de usar Un botoacutense invoca situando el cursor del ratoacuten sobre el botoacuten en cuestioacuten y pinchando (pulsando ysoltando inmediatamente) el botoacuten izquierdo Los botones Athena y Motif sonfuncionalmente equivalentes pero tienen diferencias de apariencia

_____________________________________________

12 NT DISPLAY significa presentacioacuten en ingleacutes

13 NT Se trata de la traduccioacuten de la palabra inglesa widget

562 Barras de menuacute

Una barra de menuacute es una coleccioacuten de comandos accesibles mediante el ratoacuten Cada palabraes la cabecera de una categoriacutea File14 contiene comandos que permiten cargar o grabarficheros Por convencioacuten esta categoriacutea incluye tambieacuten el comando que termina laaplicacioacuten

Para utilizar un comando mueva el cursor del ratoacuten sobre la categoriacutea correspondiente(como por ejemplo File) y apriete el botoacuten izquierdo Sin soltarlo arrastre el ratoacutenhacia abajo para ver los diferentes comandos de esa categoriacutea Para seleccionar unomueva el cursor sobre el mismo y suelte el botoacuten del ratoacuten Algunas barras de menuacute lepermiten pinchar sobre la categoriacutea si este es su caso pinche sobre la categoriacutea paraver el menuacute que se mantendraacute hasta que pinche de nuevo para seleccionar un comando otromenuacute o pinche fuera (indicando que no estaacute interesado en ninguacuten comando en particular)

563 Barras de desplazamiento

Una barra de desplazamiento es un meacutetodo que permite ver soacutelo una parte de un documentomientras que mantiene el resto fuera de la pantalla Por ejemplo en la Figura 54 la

ventana de xterm soacutelo presenta el tercio inferior del texto disponible Es muy faacutecil vercual parte del texto es el que se puede ver en cualquier momento la franja oscura de labarra estaacute situada y tiene una longitud relativa a la porcioacuten de texto que se puede verCuando no hay maacutes que lo que se puede ver toda la barra aparece de color oscuro Si setrata de la mitad seraacute la mitad la que aparezca oscurecida

Puede tener una barra de desplazamiento vertical a la derecha o la izquierda de su textoy una horizontal en la parte superior o inferior dependiendo de la aplicacioacuten de que setrate

Barras de desplazamiento Athena

Las barras de desplazamiento Athena funcionan de forma diferente a las de otros sistemasde ventanas Cada uno de los tres botones del ratoacuten tiene una funcioacuten diferente Paradesplazarse hacia arriba (es decir para que ver el material situado por encima de lo quese puede ver en ese momento) puede pinchar en cualquier lugar de la barra con el botoacutenderecho Para desplazarse hacia abajo puede usar el botoacuten izquierdo de forma anaacuteloga

Tambieacuten puede saltar a cualquier lugar en particular usando el botoacuten central del ratoacuten ypinchando en el lugar de la barra que corresponde a la posicioacuten del texto que leinteresa Esto hace a la ventana presentar el material situado en ese punto deldocumento

_____________________________________________

14 NT Del ingleacutes fichero o archivo

Barras de desplazamiento Motif

Una barra Motif actuacutea de un modo maacutes parecido al acostumbrado en Windows de Microsoft oen un Macintosh La parte derecha de la Figura 54 muestra un ejemplo Debe notar queademaacutes de la barra en siacute misma hay unas flechas tanto en la parte superior como en lainferior Estas flechas se pueden usar para ajuste fino de la pantalla pinchando tantoel botoacuten izquierdo como el central mueve la ventana ligeramente (por ejemplo una liacutenea)el botoacuten derecho no hace nada

El comportamiento asociado a pinchar en la barra de desplazamiento es completamentediferente en las barras Motif del que exhiben las barras Athena El botoacuten derecho notiene efecto Asociado al botoacuten izquierdo la ventana se moveraacute hacia arriba si pinchasobre la posicioacuten actual o hacia abajo en el caso contrario Si pincha sobre la barra enel lugar actual y la arrastra podraacute moverse a cualquier posicioacuten a voluntad Al soltar elbotoacuten se fija cual es la posicioacuten final de la ventana

Pinchando el botoacuten central en cualquier lugar de la barra hace que la ventana se desplacehacia ese lugar de forma inmediata igual que ocurre en barras Athena Sin embargo elpunto elegido se convierte en el centro de la nueva pantalla de datos

Capiacutetulo 6

Trabajando con Unix

A UNIX saleslady Lenore

Enjoys work but she likes the beach more

She found a good way

To combine work and play

She sells C shells by the seashore

Unix es un potente sistema para aquellos que saben coacutemo dominar su poder En estecapiacutetulo intentareacute describir varias maneras de usar el shell de Unix bash maacuteseficientemente

61 Comodines

En el capiacutetulo anterior se ensentildearon los comandos para mantener ficheros cp mv y rm Aveces se querraacute tratar con maacutes de un fichero a la vez en realidad con muchos a la vezPor ejemplo se quiere copiar todos los ficheros que empiecen por data en un directoriollamado backup Se podriacutea hacer esto ejecutando muchos comandos cp o escribiendo cadafichero en una liacutenea de comando Estos dos meacutetodos llevan mucho tiempo incluso setienen muchas posibilidades de cometer errores

Una buena manera de hacer este trabajo es teclear

homelarryreport$ ls shyF

1993shy1 1994shy1 data1 data5

1993shy2 datashynew data2

homelarryreport$ mkdir ~backup

homelarryreport$ cp data ~backup

homelarryreport$ ls shyF ~backup

datashynew data1 data2 data5

homelarryreport$

Como se puede observar el asterisco indica a cp que tome todos los ficheros que empiecenpor data y los copie a backup iquestQueacute cree que cp dw backup puede haber hecho

611 iquestQueacute ocurre realmente

Buena pregunta De hecho hay un par de caracteres especiales interceptados por el shellbash El caraacutecter un asterisco dice cambia esta palabra con todos los ficherosque se ajusten a esta especificacioacuten Asiacute el comando cp data backup como el dearriba cambia a cp datashynew data1 data2 data5 backup antes de ejecutarse

Para ilustrar esto introducireacute un comando nuevo echo echo es un comando extremadamentesimple repite o muestra cualquier paraacutemetro De este modo

homelarry$ echo Hola

Hola

homelarry$ echo Como se encuentra

Como se encuentra

homelarry$ cd report

homelarryreport$ ls shyF

1993shy1 1994shy1 data1 data5

1993shy2 datashynew data2

homelarryreport$ echo 199

1993shy1 1993shy2 1994shy1

homelarryreport$ echo 4

1994shy1

homelarryreport$ echo 2

1993shy2 data2

homelarryreport$

Como se puede ver el shell expande el comodiacuten y pasa todos los ficheros al programa quese va a ejecutar Esto plantea una pregunta interesante iquestqueacute ocurre si no hay ficherosque se ajusten a la especificacioacuten del comodiacuten Pruebe echo rcfrog y bash pasaraacuteliteralmente la especificacioacuten del comodiacuten al programa

Otros shells como tcsh en vez de pasar el comodiacuten literalmente contestaraacuten No matchAquiacute estaacute el mismo comando ejecutado bajo tcsh

mousehousegtecho rcfrog

echo No match

mousehousegt

La uacuteltima pregunta que podriacutea hacerse es iquestqueacute pasa si quisiera mostrar data en vez dela lista de nombres Bien tanto en bash como en tcsh soacutelo se debe incluir la cadenaentre comillas

homelarryreport$ echo data mousehousegtecho data

data Oacute bien data

homelarryreport$ mousehousegt

612 El signo de interrogacioacuten

Ademaacutes del asterisco el shell tambieacuten interpreta un signo de interrogacioacuten como uncaraacutecter especial

Un signo de interrogacioacuten coincidiraacute con un caraacutecter y soacutelo uno Por ejemplo ls etc

mostraraacute todos los ficheros de dos letras en el directorio etc

62 Ganar tiempo con bash

621 Editando la liacutenea de comandos

A veces escribe un comando largo a bash y antes de pulsar |_Intro_| se da cuenta deque ha cometido un error al escribirlo Se puede simplemente borrar todo y volver ateclear correctamente pero iexcles demasiado esfuerzo En cambio se pueden usar las flechaspara moverse borrar ellos caraacutecteres incorrectos y escribir la informacioacutencorrectamente

Hay muchas teclas especiales que ayudan a editar la liacutenea de comandos muchas de ellassimilares a los comandos usados en GNU Emacs Por ejemplo |_Cshyt_| intercambia doscaraacutecteres adyacentes1

Se pueden encontrar muchos de los comandos en el capiacutetulo sobre Emacs Capiacutetulo 8

622 Completamiento de comandos y nombres de fichero

Otra peculiaridad de bash es la ejecucioacuten automaacutetica de las liacuteneas de comando Porejemplo veamos el siguiente ejemplo de un comando cp tiacutepico

homelarry$ ls shyF

estoshyesshyunshyficheroshylargo

homelarry$ cp estoshyesshyunshyficheroshylargo corto

homelarry$ ls shyF

corto estoshyesshyunshyficheroshylargo

homelarry$

Es una gran molestia tener que teclear cada letra de estoshyesshyunshyficheroshylargo cada vezque se quiere acceder a eacutel sucede lo mismo si queremos crear estoshyesshyunshyficheroshylargocopiando en eacutel etcpasswd2 Ahora aprenderemos a escribir el anterior comando cp maacutesraacutepidamente y con menos posibilidad de error

En vez de teclear el nombre del fichero entero se escribe cp es se pulsa y suelta latecla |_Tab_| Por arte de magia el resto del nombre del fichero aparece en la liacutenea decomandos y se puede escribir corto Desgraciadamente bash no pude leer lospensamientos por lo que se debe teclear corto

Cuando se pulsa |_Tab_| bash mira lo que hay escrito y busca un fichero que empiece comoeso Por ejemplo si tecleo usrbinema y luego pulso |_Tab_| bash encontraraacuteusrbinemacs ya que es el uacutenico fichero que empieza por usrbinema en mi sistema Encambio si tecleo usrbinld y pulso |_Tab_| bash me avisaraacute Eso es porque tresficheros usrbinld usrbinldd y usrbinld86 empiezan por usrbinld en misistema

Si se intenta un completamiento y bash avisa se puede pulsar inmediatamente |_Tab_| otravez para conseguir una lista de todos los ficheros que coincidan con el patroacuten De estemodo si no se estaacute seguro del nombre exacto del fichero podemos teclear los primeroscaracteres del nombre y buscarlo en una lista maacutes pequentildea de ficheros

______________________________________________

1 |_Cshyt_|significa mantener pulsada la tecla marcada como Ctrl y apretar la tecla tLuego soltar ambas

2 cp etcpasswd estoshyesshyunshyficheroshylargo

63 La entrada estaacutendar y La salida estaacutendar

Intentemos abordar un problema simple conseguir un listado del directorio usrbin Sihacemos ls usrbin algunos de los nombres de los ficheros saldraacuten por arriba de lapantalla iquestComo se pueden ver todos los ficheros

631 Algunos conceptos de Unix

El sistema operativo Unix facilita mucho a los programas el uso del terminal Cuando unprograma escribe algo en la pantalla estaacute usando algo llamado salida estaacutendar Salidaestaacutendar en ingleacutes standard output o stdout es la manera que tiene el programa deescribirle cosas al usuario El nombre por el que se indica un programa es entradaestaacutendar (stdin) Es posible que un programa se comunique con el usuario sin usar laentrada o salida estaacutendar pero la mayoriacutea de los comandos que se tratan en este librousan stdin y stdout

Por ejemplo el comando ls imprime una lista de los directorios en la salida estaacutendarque estaacute normalmente conectada al terminal Un comando interactivo como el shellbash lee los comandos de la entrada estaacutendar

Un programa tambieacuten puede escribir en el error estaacutendar ya que es muy faacutecil hacer que lasalida estaacutendar apunte a cualquier lugar aparte del terminal El error estaacutendar (stderr)estaacute casi siempre conectado al terminal para que alguna persona pueda leer el mensaje

En esta seccioacuten examinaremos tres modos de enredarse con la entrada y salida estaacutendarredireccionar la salida redireccionar la entrada y las tuberiacuteas

632 Redireccionar la salida

Un aspecto muy importante de Unix es la posibilidad de redireccionar la salida Estopermite que en vez de ver los resultados de un comando los salvemos en un fichero o losenviemos directamente a una impresora Por ejemplo para redireccionar la salida delcomando ls usrbin se coloca un signo gt al final de la liacutenea y se indica elfichero donde dejar la salida

homelarry$ ls

homelarry$ ls shyF usrbin gt listado

homelarry$ ls

listado

homelarry$

Como se puede ver en vez de escribir los nombres de todos los ficheros el comando creaun fichero totalmente nuevo en el directorio actual Echemos un vistazo a este ficherousando el comando cat

Si se recuerda cat era un comando bastante inuacutetil que copiaba lo que se escribiacutea(entrada estaacutendar) al terminal (salida estaacutendar) cat tambieacuten imprime un fichero en lasalida estaacutendar si se indica el fichero como paraacutemetro

homelarry$ cat listado

homelarry$

La salida exacta del comando ls usrbin aparece en el contenido de listado Por ahoratodo bien sin embargo no resuelve el problema original3

A pesar de todo cat hace algunas cosas interesantes cuando se redirecciona su salidaiquestQueacute hace el comando cat listado gt fichero Normalmente el gt fichero dice coge todala salida del comando y ponla en fichero La salida del comando cat listado es elfichero listado Asiacute hemos inventado un nuevo (y no tan eficiente) meacutetodo de copiarficheros

iquestQueacute ocurre con el comando cat gt zorro cat lee cada liacutenea escrita en el terminal(entrada estaacutendar) y la imprime de vuelta (salida estaacutendar) hasta que lee |_Ctrlshyd_| Eneste caso la salida estaacutendar se ha redireccionado al fichero zorro Ahora cat sirve comoun editor rudimentario

homelarry$ cat gt zorro

El rapido zorro marron salta sobre el descuidado perro

pulsa Ctrlshyd

Ahora se ha creado el fichero zorro que contiene la frase El rapido zorro marron saltasobre el descuidado perro Un uacuteltimo uso del versaacutetil comando cat es concatenarficheros cat imprimiraacute cada fichero dado como paraacutemetro uno despues de otro El comandocat listado zorro imprimiraacute el listado del directorio usrbin y luego la tonta fraseAsiacute el comando cat listado zorro gt listyzorro crearaacute un nuevo fichero conteniendo loscontenidos de listado y zorro

633 Redireccionar la entrada

Asiacute como cuando se redirecciona la salida estaacutendar es posible redireccionar la entradaEn lugar de que un programa lea su entrada desde el teclado la leeraacute desde un ficheroComo redireccionar la entrada estaacute relacionado con redireccionar la salida parecenatural que lt sea el caraacutecter para redireccionar la entrada Eacuteste tambieacuten se usadespueacutes del comando que se desee ejecutar

Esto es generalmente uacutetil si se tiene un fichero de datos y un comando que espera susdatos desde la entrada estaacutendar Muchos comandos permiten especificar un fichero sobre elcual operar asiacute que en las actividades diarias el lt no se usa tanto como otrasteacutecnicas

634 Las tuberiacuteas

Muchos comandos Unix producen gran cantidad de informacioacuten Por ejemplo es normal que uncomando como ls usrbin produzca maacutes salida que la que se puede ver en pantalla Paraque se pueda ver toda la informacioacuten de un comando como ls usrbin es necesario usarotro comando Unix llamado more4 more pararaacute cada vez que la pantalla se llene deinformacioacuten Por ejemplo more lt etcrc mostraraacute el fichero etcrc como lo hariacutea catetcrc excepto que more permite leerlo more tambieacuten admite el comando more etcrc y esa es la forma normal de invocarlo

_____________________________________________

3 Para lectores impacientes el comando que se debe usar es more Sin embargo hay quehablar un poco sobre algo maacutes antes de llegar ahiacute

4 Se llama more porque ese es el indicador que originalmente mostraba shyshymoreshyshy Envarias versiones de Linux el comando more es identico a un comando maacutes avanzado que hacetodo lo que more puede hacer y maacutes auacuten Como demostracioacuten de que los programadores deordenadores son malos coacutemicos llamaron a este nuevo programa less

Sin embargo eso no ayuda al problema de que ls usrbin muestre maacutes informacioacuten de laque se pueda ver more lt ls usrbin no funciona iexclla redireccioacuten de entrada soacutelofunciona con ficheros no comandos Se podriacutea hacer esto

homelarry$ ls usrbin gt tempshyls

homelarry$ more tempshyls

homelarry$ rm tempshyls

Pero Unix propone una forma maacutes limpia de hacerlo Se puede usar el comando ls usrbin_ more El caraacutecter _ es una tuberiacutea Como una tuberiacutea de agua una tuberiacutea Unixcontrola el flujo En vez de agua se controla el flujo de informacioacuten

Los filtros son programas muy uacutetiles para usarse en conjuncioacuten con las tuberiacuteas Unfiltro es un programa que lee la entrada estaacutendar la cambia de alguna manera y la sacapor la salida estaacutendar

more es un filtro lee los datos que coge de la entrada estaacutendar y los muestra por lasalida estaacutendar pantalla a pantalla permitiendo leer el fichero more no es un granfiltro porque su salida no se puede enviar a otro programa

Otros filtros incluyen los programas cat sort head y tail Por ejemplo si se quiereleer soacutelo las primeras diez liacuteneas de la salida de ls se puede usar ls usrbin _ head

64 Multitarea

641 Usando el control de trabajos

Control de trabajos se refiere a la habilidad de poner procesos (esencialmente otrapalabra para programas) en background (segundo plano) y ponerlos de vuelta en foreground(primer plano)

Esto es como decir que se quiere ser capaz de ejecutar algo mientras se hacen otrascosas pero que esteacuten ahiacute otra vez cuando se les quiera decir algo o pararlos En Unixla principal herramienta para el control de procesos es el shell seguiraacute la pista de losprocesos por usted si se aprende como hablar su lenguaje

Las dos palabras maacutes importantes en ese lenguaje son fg para primer plano y bg parasegundo plano Para entender como funcionan use el comando yes en el indicador delsistema

homelarry$ yes

Esto produce el maravilloso efecto de desplazar una larga columna de yes por la parteizquierda de la pantalla tan raacutepido que no se pueden seguir5 Para pararlo se podriacuteapulsar |_Ctrlshyc_| y matarlo pero esta vez Ud oprimiraacute |_Ctrlshyz_| Parece habersedetenido pero habraacute un mensaje antes del indicador de sistema maacutes o menos parecido aeste

[1]+ Stopped yes

_____________________________________________

5 Hay buenas razones para que este extrantildeo comando exista Ciertos comandos esperan unaconfirmacioacuten un si ([y]es en ingleacutes) a una pregunta El comando yes permite alprogramador automatizar la respuesta a esas preguntas

Significa que el trabajo yes se ha suspendido en el segundo plano Se puede hacer quesiga ejecutaacutendose tecleando fg en el indicador de sistema que lo pondraacute en primer planootra vez Si se desea se pueden hacer otras cosas antes mientras estaacute suspendidoPruebe unos cuantos ls o algo antes de ponerlo en primer plano nuevamente

Una vez que ha vuelto al primer plano las yes empezaraacuten a salir otra vez tan raacutepidocomo antes

No hay que preocuparse de que si mientras ha estado suspendido ha almacenado maacutes yespara enviarlas a la pantalla cuando un trabajo se suspende el programa entero no seejecuta hasta que se lo vuelva de vuelta a la vida (Ahora pulse |_Ctrlshyc_| para matarlode veras)

Pongamos aparte el mensaje que obtuvimos del shell

[1]+ Stopped yes

El nuacutemero entre corchetes es el nuacutemero de trabajo de este proceso y se usaraacute cuando senecesite referenciarlo especiacuteficamente (Naturalmente desde el momento que tengamos enejecucioacuten muacuteltiples trabajos se necesita un modo de acceder a cada uno) El +siguiente indica que eacutese es el trabajo actual esto es el proceso maacutes reciente que seha movido del primer plano al segundo

Si se tecleara fg se pondriacutea el trabajo con el + en primer plano otra vez (Maacutessobre esto despueacutes cuando se discuta la ejecucioacuten de muacuteltiples trabajos a la vez) Lapalabra Stopped significa que el trabajo estaacute parado El trabajo no estaacute muerto peroactualmente no se ejecuta Linux lo ha guardado en un estado especial de suspendidolisto para saltar a la accioacuten cuando alguien lo solicite Finalmente el yes es el nombredel trabajo que se ha detenido

Antes de seguir adelante matemos este trabajo y lo arrancamos otra vez de formadiferente El comando se llama kill y se usa del siguiente modo

homelarry$ kill 1

[1]+ Stopped yes

homelarry$

Ese mensaje sobre el proceso que indica parado otra vez induce a error Para saber siauacuten estaacute vivo (eso es tanto en ejecucioacuten como congelado en un estado suspendido) tecleejobs

homelarry$ jobs

[1]+ Terminated yes

homelarry$

Ahora ya lo sabe iexclel trabajo ha terminado (Es posible que el comando jobs no muestrenada lo que simplemente significa que no hay trabajos ejecutaacutendose en segundo plano Sise acaba de matar un trabajo y al teclear jobs no muestra nada se tiene la seguridad deque el comando kill se ha ejecutado correctamente Normalmente indicaraacute que el trabajo haterminado)

Ahora ejecute yes de nuevo de esta forma

homelarry$ yes gt devnull

Si lee la seccioacuten sobre la redireccioacuten de entrada y salida sabraacute que se estaacute enviando lasalida de yes a un fichero especial llamado devnull devnull es un agujero negro quecome cualquier salida que se le enviacutee (se puede imaginar ese torrente de yes saliendo pordetraacutes del ordenador y perforando un agujero en la pared si eso le hace feliz)

Despueacutes de teclear esto no se recuperaraacute el indicador de sistema pero tampoco saldraacuteesa columna de yes Sin embargo la salida se estaacute enviando a devnull el trabajo auacuten seejecuta en primer plano Como siempre se puede suspender pulsando |_Ctrlshyz_| Haacutegaloahora para volver al indicador del sistema

homelarry$ yes gt devnull

[yes se ejecuta y solamente se ha pulsado Ctrlshyz]

[1]+ Stopped yes gtdevnull

homelarry$

Hmm iquesthay alguna forma de ponerlo en ejecucioacuten en segundo plano mientras deja elindicador del sistema para trabajar de forma interactiva El comando para hacer eso esbg

homelarry$ bg

[1]+ yes gtdevnull amp

homelarry$

Ahora deberaacute tener confianza en miacute sobre esto despueacutes de teclear bg el trabajo yes gtdevnull habraacute continuado con su ejecucioacuten otra vez pero esta vez en segundo plano Dehecho si hace alguna cosa en el prompt como ls u otros se daraacute cuenta que su maacutequinase ha ralentizado un poco (iexclgenerar y descargar continuamente una cadena preparada deyes lleva algo de tiempo al fin y al cabo) Aparte de esto no hay ninguacuten otro efectoSe puede hacer lo que se desee en el indicador del sistema y yes continuaraacute felizmenteenviando su salida al agujero negro

Ahora hay dos formas diferentes de matarlo con el comando kill que ya se explicoacute oponiendo el trabajo en primer plano de nuevo e interrumpirlo con una interrupcioacuten|_Ctrlshyc_| Probemos la segunda forma soacutelo para entender la relacioacuten entre fg y bg unpoco mejor

homelarry$ fg

yes gtdevnull

[ahora esta en primer plano Imagine que pulso Ctrlshyc para terminarlo]

homelarry$

Bueno se acaboacute Ahora ejecute unos cuantos trabajos simultaacuteneamente como estos

homelarry$ yes gt devnull amp

[1] 1024

homelarry$ yes _ sort gt devnull amp

[2] 1026

homelarry$ yes _ uniq gt devnull

[y aqui pulse Ctrlshyz para suspenderlo por favor]

[3]+ Stopped yes _ uniq gtdevnull

homelarry$

La primera cosa que le debe llamar la atencioacuten de estos comandos es la terminacioacuten amp alfinal de los dos primeros Poner un amp despueacutes del comando indica al shell que losejecute en segundo plano desde el principio (Es una forma de evitarse tener que ejecutarel programa pulsar |_Ctrlshyz_| y luego teclear bg ) Asiacute estos dos comandos hanempezado a ejecutarse en segundo plano El tercero estaacute suspendido e inactivo en estemomento Se puede dar cuenta de que la maacutequina se ha vuelto maacutes lenta ya que los que seestaacuten ejecutando requieren un poco de tiempo de CPU

Cada uno indica su nuacutemero de trabajo Los dos primeros tambieacuten muestran sus nuacutemeros deidentificacioacuten de proceso o PID despueacutes del nuacutemero de trabajo Los PIDs normalmente noson algo que se necesite conocer pero a veces viene bien

Matemos el segundo ya que creo que estaacute ralentizando su maacutequina Se puede teclear kill2 pero eso seriacutea demasiado faacutecil Por el contrario haga esto

homelarry$ fg 2

yes _ sort gtdevnull

[pulse Ctrlshyc para matarlo]

homelarry$

Como esto demuestra fg toma paraacutemetros empezando con De hecho se podriacutea teclearsoacutelo esto

homelarry$ 2

yes _ sort gtdevnull

[pulse Ctrlshyc para matarlo]

homelarry$

Esto funciona por que el shell automaacuteticamente interpreta un nuacutemero de trabajo como unapeticioacuten para poner ese trabajo en primer plano Se puede indicar los nuacutemeros de trabajocon otros nuacutemeros precedidos por un Ahora teclee jobs para ver cuaacuteles trabajosquedan en ejecucioacuten

homelarry$ jobs

[1]shy Running yes gtdevnull amp

[3]+ Stopped yes _ uniq gtdevnull

homelarry$

El shy indica que ese trabajo nuacutemero 1 es segundo en la lista para ser puesto en elprimer plano si soacutelo se teclea fg sin dar paraacutemetros El + indica que el trabajoespecificado es el primero en la lista un fg sin paraacutemetros pondraacute al trabajo nuacutemero 3en el primer plano Sin embargo se puede acceder a eacutel llamaacutendolo si se desea mediante

homelarry$ fg 1

yes gtdevnull

[ahora pulse Ctrlshyz para suspenderlo]

[1]+ Stopped yes gtdevnull

homelarry$

Al cambiar al trabajo nuacutemero 1 y luego suspenderlo han cambiado las prioridades de todoslos trabajos de usuario Esto se puede ver con el comando jobs

homelarry$ jobs

[1]+ Stopped yes gtdevnull

[3]shy Stopped yes _ uniq gtdevnull

homelarry$

Ahora los dos estaacuten parados (porque los dos se han suspendido con |_Ctrlshyz_|) y elnuacutemero 1 es el siguiente en la lista a entrar en el primer plano por defecto Esto es asiacuteporque se le puso en el primer plano manualmente y luego fue suspendido El + siemprese refiere al trabajo maacutes reciente que ha sido suspendido del primer plano Se puedecontinuar con su ejecucioacuten otra vez

homelarry$ bg

[1]+ yes gtdevnull amp

homelarry$ jobs

[1]shy Running yes gtdevnull

[3]+ Stopped yes _ uniq gtdevnull

homelarry$

Fiacutejese que ahora estaacute en ejecucioacuten y el otro trabajo se ha movido en la lista y tiene el+ Ahora mateacutemoslos para que el sistema no esteacute permanentemente ralentizado porprocesos que no hacen nada

homelarry$ kill 1 3

[3] Terminated yes _ uniq gtdevnull

homelarry$ jobs

[1]+ Terminated yes gtdevnull

homelarry$

Apareceraacuten varios mensajes sobre la terminacioacuten de los trabajos nada mueretranquilamente al parecer La figura 61 de la paacutegina 59 muestra un breve resumen de loque se debe saber acerca del control de trabajos

642 Teoriacutea del control de trabajos

Es importante entender que el control de procesos lo hace el shell No hay ninguacutenprograma en el sistema llamado fg por eso fg bg amp jobs y kill son internos alshell6 (A veces kill es un programa independiente en el shell bash usado por Linuxpertenece al shell) Esto es una forma loacutegica de hacerlo ya que cada usuario quiere supropio espacio de control de trabajos y cada usuario ya tiene su propio shell es maacutesfaacutecil que el shell siga la pista de los trabajos usuario Por otro lado cada nuacutemero detrabajo de usuario soacutelo tiene significado para ese usuario mi trabajo nuacutemero [1] y sutrabajo nuacutemero [1] son probablemente dos procesos totalmente diferentes De hecho si seestaacute conectado maacutes de una vez cada uno de los shells tendraacute datos uacutenicos sobre elcontrol de trabajos asiacute como tambieacuten un usuario puede tener dos trabajos diferentes conel mismo nuacutemero ejecutaacutendose en dos shells diferentes

_____________________________________________

6 N del T En el original pone shellshybuiltins eso es que se compilan dentro delshell

La manera segura de referenciarlos es usar el nuacutemero IDentificador de Proceso (PID)Estos nuacutemeros abarcan todo el sistema cada proceso tiene su propio (y uacutenico) nuacutemero Dosusuarios diferentes pueden referenciar un proceso por su PID y saber que estaacuten hablandosobre el mismo proceso (iexclasumiendo que estaacuten conectados en la misma maacutequina)

Echeacutemosle un vistazo a un comando maacutes para entender que son los PIDs El comando ps listatodos los procesos en ejecucioacuten incluyendo el shell Prueacutebelo Tiene tambieacuten unascuantas opciones de las cuales las maacutes importantes (para mucha gente) son a u yx La opcioacuten a lista los procesos pertenecientes a alguacuten usuario no soacutelo los suyos

propios La x lista los procesos que no tienen un terminal asociado a ellos7Finalmente la u da informacioacuten adicional sobre los procesos que es frecuentementeuacutetil

Para hacerse una idea de lo que realmente estaacute haciendo el sistema se ponen todosjuntos ps shyaux Se pueden ver los procesos que usan maacutes memoria mirando la columnaMEM y maacutes CPU mirando a la columna CPU (La columna TIME lista la cantidad total detiempo de CPU usado)

Otra nota raacutepida sobre los PIDs kill aparte de tomar opciones de la forma no_trabajotoma opciones de los PIDs en crudo Esto es si pone un yes gt devnull en segundoplano se ejecuta ps y se busca el yes Luego se teclea kill PID 8

Si empieza a programar en C con su sistema Linux pronto aprenderaacute que el control detrabajos del shell es soacutelo una versioacuten interactiva de las llamadas a las funciones fork yexecl Esto es demasiado complejo para explicarlo aquiacute pero seriacutea uacutetil recordarlodespueacutes cuando se esteacute programando y se quieran ejecutar muacuteltiples procesos desde unsimple programa

65 Consolas virtuales como estar en varios lugares a la vez

Linux soporta consolas virtuales Son una manera de hacer que su simple maacutequina aparezcacomo muacuteltiples terminales todos conectados al mismo nuacutecleo Linux Por fortuna usar lasconsolas virtuales es una de las cosas maacutes simples en Linux hay hot keys9 para cambiarentre las consolas raacutepidamente Para probarlo hay que conectarse al sistema pulsar latecla |_Alt_| izquierda y pulsar |_F2_| (esto es la tecla de funcioacuten nuacutemero 2)10 11

_____________________________________________

7 Esto soacutelo tiene sentido para ciertos programas que no tienen que hablar con el usuarioa traveacutes del teclado

8 En general es maacutes faacutecil matar el nuacutemero del trabajo en vez de usar PIDs

9 NT No he creido apropiado traducir este teacutermino ya que muchos usuarios saben a loque se refiere De todas formas para el que no lo sepa esto es una simple combinacioacutende teclas que hace un cierto trabajo

Se encontraraacute con otro indicador para conectarse No se alarme ahora estaacute en la consolavirtual (VC) nuacutemero 2 Coneacutectese y haga algunas cosas unos cuantos ls o lo que sea paraconfirmar que es un shell real Ahora puede volver a la VC nuacutemero 1 pulsando el |_Alt_|izquierdo y |_F1_| O se puede mover a una tercera VC de la forma obvia (|_AltshyF3_|)

Generalmente los sistemas Linux vienen con cuatro VC activadas por defecto Esto se puedeincrementar a ocho estos temas se cubriraacuten en The Linux System Administrators GuideEllo implica editar uno o dos ficheros en el directorio etc Sin embargo cuatro debenser suficientes para la mayoriacutea de las personas

Una vez las haya usado las VC probablemente se convertiraacuten en una herramientaindispensable para tener varias cosas ejecutaacutendose a la vez Por ejemplo yo normalmenteejecuto Emacs en la VC 1 (y hago la mayor parte de mi trabajo ahiacute) mientras tengo unprograma de comunicaciones en la VC 3 (asiacute puede coger o dejar ficheros via modemmientras trabajo o ejecutar programas en maacutequinas remotas) y mantengo un shell en la VC2 soacutelo en caso de que tenga que ejecutar algo sin involucrar a la VC 1

_____________________________________________

10 Hay que asegurarse de que esto se hace desde consolas en modo texto si se estaacuteejecutando X Window u otra aplicacioacuten graacutefica probablemente no funcionaraacute sin embargo

corre el rumor de que pronto se podraacute cambiar entre las consolas virtuales en X Window deLinux

11 N del T De hecho al momento de la traduccioacuten la combinacioacuten es |_CtrlshyAltshyteclashydeshyfuncioacuten_|

Figura 61 Resumen de comandos y teclas usados para el control de trabajos

Comando Explicacioacuten

fg nordm_trabajo Este es un comando del shell que devuelve un trabajo alprimer plano Para saber cuaacutel es eacuteste por defecto se tecleajobs y se busca el que tiene el +

Paraacutemetros nuacutemero de trabajo opcional El trabajo pordefecto se identifica con el +

amp Cuando se antildeade un amp al final de la liacutenea de comandosindica al comando que se ejecute en segundo planoautomaacuteticamente Este trabajo estaacute entonces sujeto a todoslos meacutetodos usuales para el control de trabajos aquiacutedetallados

bg nordm_trabajo Este es un comando del shell que manda a un trabajosuspendido ejecutarse en segundo plano Para saber cual eseacuteste por defecto se teclea jobs y se busca el que tieneel +

Paraacutemetros nuacutemero de trabajo opcional El trabajo pordefecto se identifica con el +

kill nordm_trabajo PID Este es un comando del shell que obliga a un trabajo ensegundo plano ya sea suspendido o en ejecucioacuten a terminarSe debe siempre especificar el nuacutemero de trabajo o PID y sise estaacuten usando nuacutemeros de trabajo no hay que olvidar ponerel

Paraacutemetros El nuacutemero de trabajo (a continuacioacuten del ) o elPID (no es necesario el ) Se puede especificar maacutes de unproceso o trabajo en una liacutenea

jobs Este comando del shell lista informacioacuten sobre los trabajosque estaacuten en ese momento en ejecucioacuten o suspendidos A vecestambieacuten dice cuaacuteles son los que acaban de salir o hanterminado

|_Ctrlshyc_| Este es el caraacutecter geneacuterico de interrupcioacuten Normalmentesi se pulsa mientras un programa se estaacute ejecutando enprimer plano mataraacute al programa (puede que haya que hacerlovarias veces) Sin embargo no todos los programasresponderaacuten a este meacutetodo de terminacioacuten

|_Ctrlshyz_| Esta combinacioacuten de teclas normalmente suspende un programapuede que algunos programas lo ignoren Una vez suspendidoel trabajo se puede reiniciar en el segundo plano o se puedematar

Capiacutetulo 7

Pequentildeos programas potentes

better pout cry

better watchout

lpr why

santa claus ltnorth pole gttown

cat etcpasswd gtlist

ncheck list

ncheck list

cat list _ grep naughty gtnogiftlist

cat list _ grep nice gtgiftlist

santa claus ltnorth pole gt town

who _ grep sleeping

who _ grep awake

who _ egrep bad_good

for (goodness sake) shy

be good

71 El poder de Unix

El poder de Unix1 se esconde en pequentildeos comandos que no parecen ser muy uacutetiles cuando seutilizan por separado pero combinados con otros (directa o indirectamente) proporcionanun entorno mucho maacutes potente y flexible que la mayoriacutea de los otros sistemas operativosLos comandos de los que hablaremos en este capiacutetulo son entre otros sort grep morecat wc spell diff head y tail

Veremos lo que cada una de las utilidades hace por separado y luego daremos algunosejemplos de como utilizarlos conjuntamente2

_____________________________________________

1 N del T El cookie de apertura de este capiacutetulo es la traduccioacuten a comandos Unix deuna cancioacuten de navidad

Santa Claus is coming to town (escrita por H Gillespie J F Coots)

2 Noacutetese que los resuacutemenes de los comandos en este capiacutetulo no son extensos Para masinformacioacuten vea la paacutegina del manual correspondiente con el comando man

72 Trabajando con ficheros

Junto a comandos como cd mv y rm que ya se vieron en el Capiacutetulo 4 hay otros comandosque trabajan con ficheros pero no con los datos contenidos en ellos Estos son touchchmod du y df

Ninguno de ellos se preocupa por lo que contiene el fichero simplemente modificanalgunas de las informaciones que Unix guarda acerca del fichero

Estos comandos manipulan

o Los registros de tiempo Todo fichero tiene tres fechas asociadas a eacutel3 Las tresfechas son las siguientes creacioacuten del fichero uacuteltima modificacioacuten (cuando se produjoel uacuteltimo cambio en el fichero) y uacuteltimo acceso (cuando se produjo la uacuteltima lectura delfichero)

o El duentildeo Cada fichero en Unix pertenece a un uacutenico propietario

o El grupo Cada fichero tiene tambieacuten asociados un grupo de usuarios El grupo maacutes usualpara los ficheros de usuario se denomina users que es al cual por lo generalpertenecen todos los usuarios con cuenta en el sistema

o Los permisos Cada fichero tiene ciertos permisos (tambieacuten llamados privilegios)asociados a eacutel que indican a Unix quieacuten puede acceder a ese fichero cambiarlo o en elcaso de ser un programa ejecutarlo Cada uno de estos permisos puede ser establecido porseparado para el duentildeo el grupo y el resto de usuarios

shy touch fichero1 fichero2 ficheroN

touch actualiza los registros de fecha y hora con la fecha y hora actual de los ficherosindicados en la linea de comandos Si el fichero no existe touch lo crearaacute Tambieacuten esposible especificar la fecha y hora a registrar en la informacioacuten de losficheros_consulte la paacutegina del manual (comando man) para maacutes informacioacuten sobre touch

shy chmod [shyRfv] modo fichero1 fichero2 ficheroN

El comando que se utiliza para modificar los permisos de un fichero es el chmod4 Antesde

meternos en como utilizar este comando veamos primero que permisos hay en Unix Cadafichero tiene asociados un grupo de permisos Estos permisos le indican al sistemaoperativo quien puede leer escribir o ejecutar como programa el fichero (Acontinuacioacuten se explica como puede un usuario hacer estas cosas Un programa ejecutadopor un usuario puede hacer las mismas cosas que las que le esteacuten permitidas al propiousuario esto puede suponer un problema de seguridad si se desconoce lo que hace cadaprograma en particular)

_____________________________________________

3 Los antiguos sistemas de ficheros de Linux soacutelo almacenaban una fecha ya que derivabande Minix Si se utiliza alguno de estos sistemas de ficheros parte de la informacioacuten noestaraacute disponible y las operaciones que se realicen sobre ellas seraacuten inuacutetiles

4 N del T Abreviatura de change mode cambiar modo

Unix reconoce tres tipos diferentes de individuos primero el propietario del fichero (yla persona que puede utilizar el comando chmod sobre ese fichero) Segundo el grupoEl grupo de la mayoriacutea de los ficheros normales de un usuario del sistema seraacute users(Para ver el grupo de un fichero en particular utilizar ls shyl fichero ) Por uacuteltimoestaacute el resto que no son ni propietarios ni pertenecen al grupo denominados otros5

De esta forma por ejemplo un fichero puede tener permisos de lectura y escritura parael propietario permiso de lectura para el grupo y ninguacuten tipo de permisos para otros Opor alguna razoacuten un fichero puede tener permisos de lecturaescritura para el grupo yotros pero iexclninguacuten privilegio para el propietario

Veamos algunos ejemplos de como cambiar permisos utilizando chmod Primero creamos unfichero utilizando cat emacs o cualquier otro programa Por defecto son posibles lasoperaciones de lectura y de escritura sobre el fichero (Los permisos dados a otrosusuarios dependen de coacutemo esteacuten establecidas las variables del sistema y de la cuenta delusuario) Podemos asegurarnos de que tenemos permiso de lectura utilizando el comandocat a continuacioacuten eliminamos el privilegio de lectura para nosotros mismos utilizandochmod ushyr fichero 6 Ahora si intentamos leer el fichero obtendremos el mensaje deerror Permission denied Devolvemos el privilegio de lectura utilizando chmod u+rfichero

Los permisos de directorio utilizan las tres mismas ideas anteriores leer escribir yejecutar pero con ligeras variaciones El privilegio de lectura permite al usuario (o algrupo o a otros) leer el directorio listar los nombres de los ficheros El permiso deescritura permite antildeadir o borrar ficheros El permiso de ejecucioacuten permite al usuarioacceder a ficheros en el directorio o a cualquier subdirectorio (Si un usuario no tienepermisos de ejecucioacuten para un directorio entonces no puede siquiera hacer un cd almismo)

Para utilizar chmod reemplazar el modo por el usuario grupo otro o todos (all) y laoperacioacuten a realizar (Es decir utilizar un signo maacutes + para antildeadir privilegios y unmenos shy para quitarlos

Un signo igual = indica los mismos permisos para los usuarios involucrados en el modo)Los permisos posibles son lectura (read) escritura (write) y ejecucioacuten (execute)

La opcioacuten shyR al utilizar chmod cambiaraacute los permisos de un directorio de todos losficheros contenidos en eacutel y de forma recursiva los permisos del aacuterbol de subdirectoriosa partir de eacutel La opcioacuten shyf fuerza a que chmod intente cambiar los permisos incluso siel usuario no es el duentildeo del fichero (Si se utiliza el paraacutemetro f al ejecutar chmodno se mostraraacute un mensaje de error en caso de que no pueda cambiar los permisos delfichero) por uacuteltimo la opcioacuten v hace que la ejecucioacuten del chmod informe de todo loque hace

_____________________________________________

5 N del T En ingles owner (con u de user) group and othersrespectivamente

6 N del T El paraacutemetro ushyr indica user minus read es decir usuario menos lectura

73 Estadiacutesticas del sistema

Los comandos de esta seccioacuten son de utilidad a la hora de mostrar las estadiacutesticas delsistema operativo o de una parte de eacutel

shy du [shyabs] [trayectoria1 trayectoria2 trayectoriaN]

El comando du7 contabilizaraacute el espacio de disco ocupado por un subdirectorio y todos sussubdirectorios El uso de este comando sin utilizar paraacutemetros devolveraacute una lista decuanto disco consume cada subdirectorio del directorio actual y al final del informecuanto disco utiliza el directorio (y todos sus subdirectorios) Si se le pasa uno o maacutesparaacutemetros devolveraacute la cantidad de espacio utilizado por esos ficheros o directorios enlugar de la del directorio actual

La opcioacuten a mostraraacute ademaacutes del espacio de los directorios el de los ficherosUtilizando b como opcioacuten presentaraacute el total en bytes en lugar de kilobytes (1kilobyte = 1024 caracteres)8

Finalmente el paraacutemetro s informaraacute soacutelo acerca de los directorios expliciacutetos en lalinea de comando y no de sus subdirectorios

shy df

El comando df9 resume la cantidad de espacio utilizada en el disco Para cada sistema deficheros (recuerde que sistemas de ficheros diferentes son o bien unidades fiacutesicas oparticiones diferentes) muestra el espacio total de disco la cantidad utilizada lacantidad disponible y la capacidad total del sistema de ficheros que se utiliza

Un caso extrantildeo que puede darse es la posibilidad de tener una capacidad superior al100 o que la cantidad utilizada maacutes la disponible no sea igual a la total Esto esdebido a que Unix reserva parte del espacio de cada sistema de ficheros para eldirectorio raiacutez De esta forma aunque alguacuten usuario accidentalmente sature el disco elsistema todaviacutea tendraacute un poco de espacio para seguir operativo

Este comando no ofrece opciones que puedan ser de utilidad al usuario

shy uptime

El comando uptime10 informa sobre el tiempo en el que el sistema ha estado activo esdecir el tiempo transcurrido desde que Unix arrancoacute por uacuteltima vez

Este comando tambieacuten devuelve la hora actual y el promedio de carga que soporta elsistema El promedio de carga es el nuacutemero medio de procesos esperando a ejecutar en undeterminado periodo de tiempo uptime muestra el promedio de carga del uacuteltimo minuto y delos cinco y diez uacuteltimos minutos Si este promedio de carga se aproxima a cero indica queel sistema ha estado relativamente desocupado por el contrario si el promedio es cercanoal uno indica que el sistema ha estado casi completamente utilizado pero en ninguacutenmomento sobrecargado Los promedios de carga altos son el resultado de la ejecucioacutensimultaacutenea de varios programas

Extraordinariamente uptime es uno de los pocos comandos de Unix que iexclno tienen opciones

_____________________________________________

7 N del T Abreviatura de disk usage utilizacioacuten del disco

8 Un byte es el equivalente de una letra en un documento de texto

9 N del T Abreviatura de disk filling espacio disponible en el disco

10 N del T Tiempo en estado activo

shy who

El comando who muestra los usuarios activos en ese momento en el sistema y cuando haniniciado su respectiva sesioacuten Si le damos los paraacutemetros am i (es decir who am i) nos devuelve la informacioacuten relativa a nosotros mismos11

shy w [shyf] [nombre_usuario]

El programa w devuelve los usuarios actuales del sistema y que estaacuten haciendo(Baacutesicamente combina la funcionalidad de uptime y who La cabecera del informe quepresenta w es exactamente la misma que uptime siendo la informacioacuten de cada una de lasliacuteneas la siguiente el nombre del usuario hora de inicio de la sesioacuten (y cuanto tiempoha estado ocioso) JCPU es la cantidad total de tiempo de CPU utilizada por ese usuariomientras que PCPU es la cantidad total de tiempo utilizada por sus tareas actuales

Si al comando se le pasa la opcioacuten f mostraraacute los sistemas remotos desde los que losusuarios acceden si los hay Puede indicarse un nombre de usuario como paraacutemetro paramostrar soacutelo informacioacuten relativa a eacutel

74 iquestQueacute hay en un fichero

Principalmente hay dos comandos en Unix para listar ficheros cat y more Sobre ambos yase habloacute en el Capiacutetulo 6

shy cat [shynA] [fichero1 fichero2 ficheroN]

cat no es un comando de uso amigable no espera a que el usuario acabe de leer elfichero y se utiliza generalmente en contextos de tuberiacuteas Aunque pueden utilizarsealgunas opciones muy uacutetiles del comando por ejemplo n numera todas las liacuteneas delfichero y A mostraraacute los caraacutecteres de control como caraacutecteres normales en lugar dehacer (posiblemente) cosas extrantildeas en la pantalla

(Recuerde que para ver las opciones maacutes curiosas y quizaacute menos uacutetiles utilice elcomando man man cat Si no se especifican ficheros en la liacutenea de comandos cataceptaraacute la entrada desde stdin12

_____________________________________________

11 N del T literalmente es como preguntar al sistema iquestquieacuten soy yo

shy more [shyl] [+nuacutemero_liacutenea] [fichero1 fichero2 ficheroN]

more es maacutes uacutetil y ademaacutes es el comando recomendado para ver ficheros de texto ASCII Lauacutenica opcioacuten interesante es l que indica al comando que no se desea interpretar elcaraacutecter |_CtrlshyL_| como caraacutecter de nueva paacutegina El comando comenzaraacute en la liacuteneanuacutemero_liacutenea especificada

Al ser more un comando interactivo hemos resumido a continuacioacuten las oacuterdenes maacutescomunes

|_Barrashyespaciadora_| Pasar a la siguiente pantalla de texto

|_d_| Pasar 11 liacuteneas de pantalla o aproximadamente la mitad de una pantallanormal 25 liacuteneas

|__|Busca una expresioacuten regular La construccioacuten de una expresioacuten regularpuede ser muy complicada por lo que es recomendable teclear simplemente eltexto a buscar Por ejemplo sapo |_Intro_| buscaraacute la primera ocurrencia desapo en el fichero a partir de la posicioacuten actual

La misma tecla seguida por un |_Intro_| buscaraacute la siguiente ocurrencia de lauacuteltima expresioacuten buscada

|_n_| Buscaraacute la proacutexima aparicioacuten de la expresioacuten regular especificada

|__||_n_| Pasar al siguiente fichero en caso de que se especifique maacutes deun fichero en la liacutenea de comandos

|__||_p| Pasar al fichero anterior

|_q_| Terminar more

shy head [shyliacuteneas] [fichero1 fichero2 ficheroN]

head mostraraacute las primeras diez liacuteneas de los ficheros especificados o las primeras diezliacuteneas de la stdin si no se especifica ninguacuten fichero en la liacutenea de comandos Cualquieropcioacuten numeacuterica se tomaraacute como el nuacutemero de liacuteneas a mostrar por ejemplo head shy15 ranamostraraacute las primeras quince liacuteneas del fichero rana

shy tail [shyliacuteneas] [fichero1 fichero2 ficheroN]

Como head tail mostraraacute solo una parte del fichero en este caso el final del ficherolas uacuteltimas diez liacuteneas del fichero o que provengan de la stdin tail tambieacuten acepta laopcioacuten de especificar el nuacutemero de liacuteneas como en el caso anterior

_____________________________________________

12 N del T standard input entrada estaacutendar generalmente entrada de datos porteclado

shy file [fichero1 fichero2 ficheroN]

El comando file intenta identificar que tipo de formato tiene un fichero en particularDebido a que no todos los ficheros tienen extensioacuten o otras formas de identificarlosfaacutecilmente este comando realiza algunas comprobaciones rudimentarias para intentarcomprender exactamente que contiene el fichero

Hay que tener cuidado ya que es bastante posible que file realice una identificacioacutenincorrecta

75 Comandos de edicioacuten

Esta seccioacuten trata de los comandos que alteran un fichero realizando sobre el ficherooperaciones concretas o mostrando estadiacutesticas del mismo

shy grep [shynvwx] [shynuacutemero] expresioacuten [fichero1 fichero2 ficheroN ]

Uno de los comandos maacutes uacutetiles de Unix es el grep13 utilizado para buscar expresiones enun fichero de texto La forma maacutes sencilla de usarlo es

homelarry$ cat animales

Los animales son unas criaturas muy interesantes Uno de mis animalesfavoritos es el tigre una temible bestia con grandes colmillos

Tambien me gusta el leonshyshyshy realmente increible

homelarry$ grep igre animales

el tigre una temible bestia con grandes colmillos

homelarry$

Una de los problemas de esta forma de usarlo es que simplemente muestra las liacuteneas quecontienen la palabra a buscar no aporta informacioacuten acerca de donde buscar en elfichero es decir el nuacutemero de liacutenea Pero dependiendo de lo que se pretenda puede serhasta maacutes que suficiente por ejemplo si se buscan los errores de la salida de unprograma se puede probar aout _ grep error donde aout es el nombre del programa

Cuando es necesario conocer donde estaacuten las palabras a buscar es decir el nuacutemero deliacutenea hay que utilizar la opcioacuten n Si lo que se desea es ver todas las liacuteneas dondeno se encuentra la expresioacuten especificada entonces utilice la opcioacuten v

Otra posibilidad que ofrece el grep es la buacutesqueda de partes de una palabra como en elejemplo anterior que igre se equiparoacute con tigre Para buscar soacutelo palabras completashay que pasarle al grep la opcioacuten w y para liacuteneas completas la opcioacuten es x

Si no se especifica ninguacuten fichero (por ejemplo grep igre ) grep examinaraacute la stdin

_____________________________________________

13 N del T Abreviatura de generalized regular expression parser analizador general deexpresiones regulares

shy wc [shyclw] [fichero1 fichero2 ficheroN ]

El comando wc14 simplemente cuenta el nuacutemero de palabras liacuteneas y caracteres en losficheros pasados como paraacutemetros Si no se especifica ninguacuten fichero operaraacute sobre lastdin Los tres paraacutemetros clw indican el elemento a contar caracteres liacuteneas yw para palabras

Por ejemplo wc shycw contaraacute el nuacutemero de caracteres y palabras pero no el nuacutemero deliacuteneas Si no se indica ninguacuten paraacutemetro wc cuenta todo palabras liacuteneas y caracteres

Se puede utilizar wc para saber el nuacutemero de ficheros de un directorio ls _ wc shyw Sise desea saber el nuacutemero de ficheros que acaban en c entonces ejecute ls c _ wc shyw

shy spell [fichero1 fichero2 ficheroN]

spell es el corrector ortograacutefico maacutes sencillo de Unix generalmente para ingleacutesamericano15

spell es un filtro igual que la mayoriacutea de los comandos que hemos comentado antes quetoma el fichero de texto ASCII y devuelve todas las palabras que considera erroacuteneasspell opera sobre los ficheros especificados y si no se incluye ninguno entoncesutiliza la stdin

Tambieacuten es posible que esteacute disponible en su maacutequina ispell que es un correctorortograacutefico un poco maacutes sofisticado ispell ofrece diversos vocabularios y un menuacute maacutesmanejable en caso de ejecutarlo con un fichero en la liacutenea de comandos Tambieacuten puedeejecutarse como un filtro si no se especifica ninguacuten fichero

La forma de trabajar con ispell es bastante obvia pero si necesita maacutes ayuda consulte lapaacutegina del manual correspondiente man ispell

shy cmp fichero1 [fichero2]

cmp compara dos ficheros El primero debe ser obligatoriamente pasado como paraacutemetromientras que el segundo puede ser pasado como un segundo paraacutemetro o leiacutedo desde laentrada estaacutendar cmp es muy sencillo y simplemente dice donde se diferencian los dosficheros

shy diff fichero1 fichero2

Uno de los comandos estaacutendar maacutes complejos de Unix es el diff La versioacuten GNU de difftiene hasta iexclveinte opciones en la liacutenea de comandos Es una versioacuten mucho maacutes potenteque cmp y muestra cuales son las diferencias en lugar de decir simplemente donde estaacute laprimera

Ya que una buena parte de las opciones del diff estaacuten maacutes allaacute del alcance de estemanual simplemente hablaremos del funcionamiento baacutesico Brevemente diff toma dosparaacutemetros y muestra las diferencias entre ellos liacutenea a liacutenea Por ejemplo

homelarry$ cat rana

Los animales son una criaturas muy interesantes Uno de mis animalesfavoritos es el tigre una temible bestia con grandes colmillos

Tambien me gusta el leonshyshyshy realmente increible

homelarry$ cp rana sapo

homelarry$ diff rana sapo

homelarry$ cat perro

Los animales son una criaturas muy nteresantes Uno de mis animales favoritoses

el tigre una temible bestia con grandes colmillos

Tambien me gusta el leonshyshyshy realmente increible

homelarry$ diff rana perro

1c12

lt Los animales son una criaturas muy interesantes Uno de mis animalesfavoritos es

shyshyshyshy

gt Los animales son una criaturas muy nteresantes Uno de mis animalesfavoritos es

gt

3c4

lt Tambien me gusta el leonshyshyshy realmente increible

shyshyshyshy

gt Tambien me gusta el leonshyshyshy realmente increible

homelarry$

_____________________________________________

14 N del T Abreviatura de word count contar palabras

15 Aunque hay versiones del corrector para diversas lenguas europeas la copia que puedeencontrarse en su maacutequina Linux es con toda probabilidad para ingleacutes americano

Como puede observarse diff no devuelve nada cuando los dos ficheros son iguales Perocuando hemos comparado dos ficheros diferentes se muestra una cabecera de seccioacuten1c12 indicando que ha comparando la liacutenea 1 del fichero de la izquierda rana con lasliacuteneas 1shy2 de perro y las diferencias que ha encontrado Luego ha comparado la liacutenea 3 derana con la liacutenea 4 de perro

Aunque pueda parecer extrantildeo que compare diferentes nuacutemeros de liacutenea es bastanteeficiente ya que es posible que pueda haber alguacuten retorno de liacutenea de maacutes en alguno delos ficheros

shy gzip [shyv] [fichero1 fichero2 ficheroN]

shy gunzip [shyv] [fichero1 fichero2 ficheroN]

shy zcat [fichero1 fichero2 ficheroN]

Estos tres programas se utilizan para comprimir y descomprimir datos gzip o GNU Zip esun programa que lee de los ficheros originales y devuelve ficheros maacutes pequentildeos borralos ficheros especificados en la liacutenea de comandos y los reemplaza con ficheros quetienen el mismo nombre pero con gz antildeadido a su nombre

shy tr cadena1 cadena2

El comando de traduccioacuten de caracteres opera sobre la entrada estaacutendar no acepta unnombre de fichero como paraacutemetro Reemplaza todas las ocurrencias de cadena1 en laentrada con la cadena2 En comparacioacuten con llamadas tan sencillas como tr rana sapo tr puede aceptar comandos maacutes complejos Por ejemplo hay una forma raacutepida de convertirlos caracteres en minuacutescula por otros en mayuacutescula

homelarry$ tr shylower] [upper]

Esta es una frase RARA

ESTA ES UNA FRASE RARA

tr es relativamente complejo y se usa normalmente en pequentildeos programas shell comofiltro

Capiacutetulo 8

Editando archivos con Emacs

FUNNY SOMETHING OR OTHER

81 iquestQueacute es Emacs

Para obtener algo en una computadora necesita una forma de introducir texto en losarchivos y una manera de cambiar el texto que ya estaacute en los archivos Un editor es unprograma para este tipo de tareas emacs es uno de los editores maacutes populares en parteporque es muy faacutecil para un principiante hacer trabajos con eacutel (El editor de Unixclaacutesico el vi se trata en el Apeacutendice A)

Para aprender emacs tiene que encontrar un archivo de texto (letras nuacutemeros etc)coacutepielo a su directorio de usuario 1 (no queremos modificar el archivo original si eacutestecontiene informacioacuten importante) y luego llame a Emacs con el archivo

homelarry$ emacs LEAME

(Por supuesto si decide copiar etcrc etcinittab o cualquier otro archivosustituya ese nombre de archivo por LEAME Por ejemplo si cp etcrc ~rc entoncesemacs rc)

Llamar a Emacs puede tener efectos diferentes dependiendo en doacutende lo haga Desde unaconsola que muestra soacutelo caracteres de texto Emacs se apoderaraacute de toda la consola Si lollama desde X Emacs abriraacute su propia ventana Asumireacute que lo estaacute haciendo desde unaconsola de texto pero todo sucede de la misma manera en la versioacuten de X loacutegicamentesimplemente sustituya la palabra ventana en los lugares en donde lea pantallaiexclAdemaacutes recuerde que debe mover el puntero del ratoacuten a la ventana de Emacs paraescribir

Su pantalla (o ventana si estaacute usando X) deberiacutea parecerse a la Figura 81 La mayorparte de la pantalla contiene su documento de texto pero las dos uacuteltimas liacuteneas sonespecialmente interesantes si estaacute tratando de aprender Emacs La penuacuteltima liacutenea (la quetiene una cadena larga de guiones) se denomina liacutenea de modo (mode line en ingleacutes)

_____________________________________________

1 Por ejemplo cp usrsrclinuxLEAME LEAME

En mi liacutenea de modo ve Top Deberiacutea decir All y puede haber otras pequentildeasdiferencias

(A muchas personas les aparece la hora actual en la liacutenea de modo) La liacuteneainmediatamente inferior a la liacutenea de modo se denomina minibuffer o a veces el aacuterea deeco Emacs usa el minibuffer para enviar mensajes al usuario y ocasionalmente cuando esnecesario para leer informacioacuten que introduce el usuario De hecho ahora mismo Emacs leestaacute diciendo Para obtener informacioacuten acerca del Proyecto GNU y sus objetivos teclee

Cshyh Cshyp (soacutelo que en ingleacutes) Ignoacuterelo por ahora no vamos a usar mucho el minibufferpor un tiempo

Antes de realizar cualquier cambio en el texto del archivo necesita aprender coacutemomoverse El cursor deberaacute estar al principio del archivo en la esquina superiorizquierda de la pantalla

Para avanzar presione |_Cshyf_| (reteniendo la tecla |_Control_| mientras presiona fpara forward (avanzar) Avanzaraacute un caraacutecter cada vez y si retiene ambas teclas larepeticioacuten automaacutetica de teclas de su sistema deberaacute surtir efecto en medio segundoaproximadamente Notaraacute como cuando llega al fin de la liacutenea el cursor automaacuteticamentese mueve a la proacutexima liacutenea |_Cshyb_| (para backward (retroceder) tiene elcomportamiento opuesto Y ya que estamos en ello |_Cshyn_| y ||_Cshyp_|| le llevan a lasliacuteneas siguiente y anterior respectivamente 2

Usar las teclas de control es comuacutenmente la manera maacutes raacutepida de moverse cuando estaacuteeditando

El objetivo de Emacs es mantener sus manos sobre las teclas alfashynumeacutericas del tecladodonde se realiza la mayoriacutea del trabajo Sin embargo si quiere las teclas de movimientodeberaacuten funcionar tambieacuten

De hecho cuando usa X deberiacutea ser capaz de ubicar el puntero del ratoacuten y hacer clickcon el botoacuten izquierdo para mover el cursor donde quiera Sin embargo esto es muy lentoiexcltiene que mover la mano hasta el ratoacuten La mayoriacutea de la gente que usa Emacs usaprincipalmente el teclado para moverse por el texto

_____________________________________________

2 En caso de que auacuten no lo haya notado muchos de los comandos de movimiento de emacsconsisten en combinar |_Control_| con una uacutenica letra mnemoteacutecnica

Use ||_Cshyp_|| y |_Cshyb_| para ir a la esquina superior izquierda Ahora mantenga |_Cshyb_|un poco maacutes

Deberiacutea oiacuter un sonido molesto de campana y ver el mensaje Beginning of buffer(Principio del buffer) que aparece en el minibuffer En este punto se puede preguntariquestPero queacute es un buffer Cuando Emacs trabaja sobre un archivo no trabaja realmentesobre el archivo en siacute En vez de eso copia los contenidos del archivo en un aacuterea detrabajo especial de Emacs llamada buffer donde puede modificar el contenido Cuando haacabado de trabajar debe decirle a Emacs que guarde los buffers en otras palabras queescriba el contenido de los buffers en el archivo correspondiente

Hasta que haga esto el archivo permanece sin cambiar y el contenido de los buffersexiste uacutenicamente dentro de Emacs

Con esto en mente prepaacuterese a insertar su primer caraacutecter en el buffer Hasta ahoratodo lo que hemos hecho ha sido no destructivo este es un gran momento Puede escogercualquier caraacutecter que quiera pero si quiere hacer esto con estilo yo sugiero usar unabonita y soacutelida X mayuacutescula

Mientras lo teclea eche un vistazo al principio de la liacutenea de modo al pie de lapantalla Cuando cambia los buffer de modo que sus contenidos no sean iguales que los delarchivo sobre el disco Emacs muestra dos asteriscos a principios de la liacutenea de modopara hacerle saber que el buffer ha sido modificado

shyshyshy Emacs algun_archivotxt (Fundamental)shyshyTopshyshyshyshyshyshyshyshyshyshyshyshyshyshyshyshyshyshyshyshyshyshyshyshy

Estos dos asteriscos se muestran tan pronto como modifica el buffer y permanecenvisibles hasta que guarde el buffer Puede guardar los buffer muchas veces durante unasesioacuten de edicioacuten el comando para hacerlo es simplemente |_Cshyx_Cshys_| (presione|_Control_| y pulse x y s mientras la mantiene apretada iexclprobablemente ya se loimaginoacute) Es deliberadamente faacutecil de escribir porque lo mejor es salvar sus buffers alprincipio y frecuentemente

Ahora voy a enumerar maacutes comandos ademaacutes de los que ya ha aprendido y los puedepracticar del modo que prefiera Yo sugiero familiarizarse con ellos antes de proseguir

Cshyf Avanza un caraacutecter

Cshyb Retrocede un caraacutecter

Cshyn Va a la proacutexima liacutenea

Cshyp Va a la liacutenea anterior

Cshya Va al comienzo de la liacutenea

Cshye Va al final de la liacutenea

Cshyv Va a la proacutexima paacuteginapantalla de texto

Cshyl Redibuja la pantalla con la liacutenea actual en el centro

Cshyd Borra este caraacutecter (practica este)

Cshyk Borra el texto desde aquiacute hasta el fin de liacutenea

Cshyx Cshys Salva el buffer en su archivo correspondiente

|_Retroceso_| Borra el caraacutecter anterior (el uacuteltimo que escribiste)

82 Comenzar raacutepidamente en X

Si estaacute interesado en editar unos archivos raacutepidamente un usuario de X no tiene que irmucho maacutes allaacute de los menuacutes en la parte superior de la pantalla Estos menuacutes no estaacutendisponibles en el modo texto

Cuando ejecute por primera vez Emacs habraacute cuatro menuacutes en la parte superior de lapantalla Buffers File Edit y Help Para usar un menuacute simplemente mueva el punterodel ratoacuten sobre el nombre (como File haga click y retenga el botoacuten izquierdo) Entoncesmueva el puntero a la accioacuten que quiere y libere el botoacuten del ratoacuten Si cambia de idearetire el puntero del ratoacuten del menuacute y libere el botoacuten

El menuacute Buffers enumera los diferentes archivos que han sido editados en esta instanciade Emacs

El menuacute Files muestra un grupo de comandos para cargar y guardar archivos muchos deellos se describiraacuten maacutes adelante El menuacute Edit muestra algunos comandos para editar unbuffer y el menuacute Help deberiacutea dar la documentacioacuten en liacutenea

Notaraacute que las equivalencias del teclado se enumeran junto a las opciones del menuacutePuesto que a largo plazo eacutestas seraacuten maacutes raacutepidas podriacutea quererlas aprender Tambieacutenpara bien o para mal la mayoriacutea de la funcionalidad de Emacs estaacute uacutenicamente disponiblemediante el teclado asiacute que puede que le interese leer el resto de este capiacutetulo

83 Editando varios archivos al mismo tiempo

Emacs puede trabajar sobre maacutes de un de archivo a la vez De hecho el uacutenico liacutemite sobrecuantos buffers puede contener Emacs es la cantidad real de memoria disponible en lamaacutequina El comando para traer un nuevo archivo a un buffer de Emacs es |_Cshyx_Cshyf_|Cuando lo teclee se le pediraacute un nombre de archivo en el minibuffer

Find file (Buscar archivo)~

La sintaxis aquiacute es la misma que la usada para especificar archivos desde la liacutenea decomandos las barras representan subdirectorios ~ es su directorio de usuario Tambieacutenconsigue terminacioacuten automaacutetica de nombre de archivo significa que si ha escritosuficiente de un nombre de archivo en la liacutenea de comandos para identificar el archivosingularmente puede simplemente presionar |_Tab_| para completarlo (o para ver lasterminaciones posibles si hay maacutes de una) ||_Espacio_|| tambieacuten tiene un papel en laterminacioacuten automaacutetica de nombres de ficheros en el minibuffer parecido a |_Tab_| perodejareacute que experimente para que averiguumle coacutemo difieren las dos Una vez que tiene elnombre completo en el minibuffer presione |_Intro_| y Emacs crearaacute un buffer mostrandoel archivo En Emacs este proceso es conocido como encontrar un archivo Siga adelante ybusque ahora alguacuten otro archivo de texto sin importancia y traacuteigalo a Emacs (haga estodesde nuestro buffer original algun_archivotxt) Ahora tiene un nuevo buffer Supondreacuteque se llama otro_archivotxt ya que no puedo ver su liacutenea de modo

Su buffer original parece haber desaparecido (probablemente) se pregunta doacutende fue Estaacutetodaviacutea dentro de Emacs y puede volver a eacutel con |_Cshyx_b_| Cuando teclee esto veraacute queen el minibuffer le pide el nombre un buffer al que cambiar y nombra uno por defecto Elbuffer por defecto lo consigue soacutelo con presionar |_Intro_| en la liacutenea de comandos sinescribir un nombre de buffer El buffer por defecto al que cambiar es siempre el maacutesrecientemente usado para que cuando esteacute haciendo mucho trabajo entre dos buffers |_Cshyx_b_| tenga por defecto el otro buffer (salvaacutendole de tener que escribir el nombre delbuffer) Incluso si el buffer por defecto es el que quiere deberiacutea probar a teclear sunombre de todos modos

Note que consigue el mismo tipo de terminacioacuten automaacutetica que obtuvo al buscar unarchivo al pulsar |_Tab_| completa todo lo que puede del nombre de un buffer y asiacutesucesivamente Cada vez que se le pida algo en el minibuffer es una buena idea ver siEmacs hace terminacioacuten automaacutetica

Aprovechando la terminacioacuten automaacutetica cuando se le ofrezca ahorraraacute teclear muchoEmacs comuacutenmente hace la terminacioacuten automaacutetica cuando elige un elemento de alguna listapredefinida

Todo lo que ha aprendido para moverse y editar texto en el primer buffer se aplica a losnuevos Siga adelante y cambie alguacuten texto en el nuevo buffer pero no lo guarde (esdecir no teclee |_Cshyx_Cshys_|)

Deacutejeme asumir que quiere desechar los cambios sin guardarlos en el archivo El comandopara esto es Cshyx k que mata (kill) el buffer Tecleacuteelo ahora Primero se le preguntaraacutequeacute buffer matar pero por defecto es el buffer actual y casi siempre es el que sequiere matar simplemente presione |_Intro_| Entonces le preguntaraacute si realmente quierematar el buffer Emacs siempre controla antes de matar un buffer que tiene cambios sinsalvar Simplemente escriba yes (siacute) y presione |_Intro_| si quiere matarlo

Siga adelante y practique cargar archivos modificarlos guardarlos y matar sus buffersPor supuesto cercioacuterese de no modificar ninguacuten archivo de sistema importante de unaforma que cause problemas 3 pero trate de tener por lo menos cinco buffers abiertos almismo tiempo para que se pueda dar el gusto de moverse entre ellos

84 Terminando una sesioacuten de edicioacuten

Cuando haya hecho su trabajo en Emacs aseguacuterese de que se guarden todos los buffers quedeben guardarse y salga de Emacs con |_Cshyx_Cshyc_|

A veces |_Cshyx_Cshyc_| le haraacute una pregunta o dos en el minibuffer antes de dejarle salirno se alarme simplemente conteste en las maneras obvias Si piensa que podriacutea volver aEmacs luego no use |_Cshyx_Cshyc_| use |_Cshyz_| que suspenderaacute Emacs Puede volver luegocon el comando fg del shell

Esto es maacutes eficiente que detener a Emacs y comenzar varias veces especialmente si tieneque editar los mismos archivos nuevamente

Bajo X presionar |_Cshyz_| reduciraacute a icono la ventana Mire la seccioacuten sobre minimizar enel Capitulo 5 Esto le da dos formas de minimizar Emacs la manera normal que ofrece elgestor de ventanas y |_Cshyz_| Recuerde cuando minimice un simple fg no traeraacute laventana anterior tendraacute que usar el gestor de ventanas

_____________________________________________

3 De cualquier manera si no es el usuario root de la maacutequina no deberiacutea ser capaz dedantildear el sistema pero tenga cuidado igualmente

85 La tecla Meta

Ha aprendido ya sobre una tecla modificadora en Emacs la tecla |_Control_| Hay unasegunda llamada la tecla Meta que se usa casi tan frecuentemente Sin embargo no todoslos teclados tienen su tecla Meta en el mismo lugar y algunos ni siquiera la tienen Loprimero que necesita hacer es encontrar doacutende se encuentra su tecla Meta Es probable quelas teclas |_Alt_| de su teclado sean tambieacuten teclas Meta si usa un PC IBM o alguacuten otroteclado que tenga una tecla |_Alt_|

La forma de probar esto es mantener presionada una tecla que crea que puede ser una teclaMeta y teclear x Si ve que un pequentildeo prompt aparece en el minibuffer (como esto |_Mshyx_|) entonces la ha encontrado Para librarse del prompt y regresar al buffer de Emacsteclee ||_Cshyg_||

Si no consigue un prompt entonces todaviacutea queda una solucioacuten Puede usar la tecla||_Escape_|| como una tecla Meta Pero en vez de mantenerla pulsada mientras teclea laproacutexima letra tiene que pulsarla y soltarla raacutepidamente y entonces teclee la letraEste meacutetodo funcionaraacute tenga o no una tecla Meta verdadera tambieacuten es la manera maacutessegura para hacerlo Intente ahora pulsar ligeramente ||_Escape_|| y entonces teclee xDeberiacutea conseguir otra vez ese pequentildeo prompt

Simplemente use ||_Cshyg_|| para salir ||_Cshyg_|| es la manera general en Emacs para salirde alguacuten lugar donde no quiere estar Los fastidiosos y comunes pitidos son para hacerlesaber que ha interrumpido algo pero estaacute bien porque es lo que queriacutea hacer cuandotecleoacute ||_Cshyg_||4

La notacioacuten |_Mshyx_| es anaacuteloga a |_Cshyx_| (ponga cualquier caraacutecter en el lugar de lax) Si ha encontrado una verdadera tecla Meta use eacutesta de otra manera simplemente usela tecla ||_Escape_|| Yo escribireacute simplemente |_Mshyx_| y ud tendraacute que usar su propiatecla Meta

86 Cortar pegar destruir y tirar

Emacs como cualquier buen editor le permite cortar y pegar bloques de texto A fin dehacer esto necesita una forma de definir el comienzo y fin del bloque En Emacs se haceesto estableciendo dos ubicaciones en el buffer conocidas como marca y puntero Paracolocar la marca vaya al lugar donde quiere que comience el bloque y teclee |_CshySPC_|(SPC significa ||_Espacio_|| por supuesto)

Deberiacutea ver el mensaje Mark set (Marca establecida) que aparece en el minibuffer5Ahora la marca ha sido establecida en ese lugar No habraacute ninguacuten indicador especialdestacando este hecho pero Ud sabe doacutende la ha puesto y eso es lo que importa

iquestY queacute hay del puntero Bien resulta que ha colocado un puntero cada vez que ha movidoel cursor porque puntero simplemente se refiere a su ubicacioacuten actual en el buffer Enteacuterminos formales el puntero es el punto donde se insertaraacute el texto si escribe algo Alcolocar la marca y luego moverse al final del bloque ha definido un bloque de textoEste bloque es conocido como la regioacuten La regioacuten siempre significa el aacuterea entre lamarca y el puntero

El soacutelo hecho de definir la regioacuten no la deja disponible para pegar Tiene que decirle aEmacs que lo copie para poder ser capaz de pegarlo Para copiar la regioacuten aseguacuterese deque la marca y el puntero estaacuten correctamente establecidos y teclee |_Mshyw_| Ahora hasido grabada por Emacs Para pegarlo en alguna otra parte simplemente vaya alliacute y teclee||Cshyy_|| Esto es conocido como tirar el texto en el buffer

______________________________________________

4 Ocasionalmente un Cshyg no es suficiente para persuadir a emacs que realmente quiereinterrumpir lo que hace Simplemente insista y normalmente Emacs volveraacute a un modo maacutescuerdo

5 Sobre algunos terminales |_CshySPC_| no funciona Para estas maacutequinas debe usar |_Cshy_|

Si quiere mover el texto de la regioacuten a alguna otra parte teclee |_Cshyw_| en vez de |_Mshyw_| Esto mataraacute la regioacuten todo el texto dentro de ella desapareceraacute De hecho se haguardado del mismo modo que si hubiera usado |_Mshyw_| Puede tirar de nuevo con ||_Cshyy_||como siempre El lugar donde emacs guarda todo este texto es conocido como el ciacuterculo demuerte Algunos editores lo llaman el porta papeles o el buffer de pegado

Existe otra manera para cortar y pegar cuando usa |_Cshyk_| para matar hasta el final deuna liacutenea el texto matado se guarda en el ciacuterculo de muerte Si mata maacutes de una liacuteneaseguida se guardaraacuten todas juntas en el ciacuterculo de muerte para que la proacutexima tiradapegue todas las liacuteneas al mismo tiempo Por ello casi siempre es maacutes raacutepido usarrepetidas veces |_Cshyk_| para matar alguacuten texto que establecer la marca y el puntero yusar |_Cshyw_| Sin embargo de una u otra manera funcionaraacute Es realmente una cuestioacuten depreferencia personal coacutemo lo hace

87 Buscar y reemplazar

Hay varias maneras para buscar texto en Emacs Muchas son maacutes bien complejas y no merecela pena tratarlas aquiacute La maacutes faacutecil y la maacutes entretenida es usar isearch

Isearch se refiere a incremental search (buacutesqueda incremental) Supongamos que quierebuscar la cadena taacutebano en el siguiente buffer

Yo estaba temeroso que nos quedaacuteramos sin gasolina cuando mi taacutecito pasajero

exclamoacute ``Auch un aguijoacuten Hay un taacutebano aquiacute dentro

Deberiacutea moverse al comienzo del buffer o por lo menos a alguacuten punto que sabe que estaacuteantes de la primera aparicioacuten de la palabra taacutebano y teclear |_Cshys_| Eso le pondraacuteen el modo de buacutesqueda isearch Ahora comience a escribir la palabra que estaacute buscandotaacutebano Pero tan pronto como escribe la t ve que Emacs ha saltado a la primeraaparicioacuten de t en el buffer Si la cita de arriba es todo el contenido del buffer

entonces la primera t es de la palabra temeroso Ahora escriba la aacute de taacutebano yEmacs saltaraacute sobre taacutecito que contiene la primer ocurrencia de taacute Y finalmenteb consigue taacutebano sin haber tenido que escribir la palabra entera

Lo que hace en una isearch es definir una cadena para buscarla Cada vez que agrega uncaraacutecter al final de la cadena el nuacutemero de posibles cadenas se reduce hasta que hayaescrito lo suficiente para definir la cadena singularmente Una vez que ha encontrado lapalabra puede salir de la buacutesqueda con |_Intro_| o cualquiera de los comandos normalesde movimiento Si piensa que la cadena que buscas esta atraacutes en el buffer entoncesdeberiacutea usar |_Cshyr_| que hace isearch hacia atraacutes

Si encuentra una palabra pero no es la que buscaba entonces presione |_Cshys_| nuevamentemientras todaviacutea esteacute en la buacutesqueda Esto le moveraacute hasta la proacutexima palabracoincidente cada vez que lo haga Si no existe una proacutexima palabra diraacute que la buacutesquedafracasoacute pero si presiona |_Cshys_| nuevamente en este punto la buacutesqueda volveraacute acomenzar desde el principio del buffer Se puede decir lo opuesto de |_Cshyr_| comienza alfinal del buffer

Intente introducir un buffer de texto en ingleacutes y haga un isearch para la cadena thePrimero teclee todos los the que quiera y luego use |_Cshys_| para ir a todas lasapariciones Note que tambieacuten apareceraacuten palabras como them dado que tambieacuten contienela subcadena the Para buscar un uacutenico the deberaacute agregar un espacio al final de lacadena de buacutesqueda Puede agregar nuevos caracteres a la cadena en cualquier punto de labuacutesqueda despueacutes tiene que presionar |_Cshys_| repetidamente para encontrar las proacuteximaspalabras coincidentes Puede usar tambieacuten la |_Retroceso_| o ||_Supr_|| para quitarcaracteres de la cadena en cualquier punto de la buacutesqueda y presionando |_Intro_| salede la buacutesqueda dejaacutendole en la uacuteltima coincidencia

Emacs tambieacuten permite reemplazar todas las apariciones de una cadena con alguna nuevacadena esto es conocido como queryshyreplace (preguntarshyreemplazar) Para invocarloteclee queryshyreplace y |_Intro_|

Como se hace terminacioacuten automaacutetica sobre el nombre del comando una vez que has escritoqueryshyre puede simplemente presionar |_Tab_| para terminarlo Digamos que deseareemplazar todas las ocurrencias de taacutebano por mosca En el prompt Query replace (preguntarshyreemplazar) escriba taacutebano y presione |_Intro_| Entonces apareceraacute elprompt nuevamente y deberaacute introducir mosca Entonces Emacs recorreraacute el bufferparando a cada aparicioacuten de la palabra taacutebano y preguntando si quiere reemplazarlaSimplemente presione en cada instancia y o n por Yes o No hasta que termineSi no entiende esto mientras lo lee prueacutebelo

88 iquestQueacute es lo que ocurre realmente

Realmente todas estas teclas ligadas que ha aprendido son los atajos a funciones deEmacs Por ejemplo ||_Cshyp_|| es una manera abreviada de decirle a Emacs que ejecute lafuncioacuten interna previousshyline (liacutenea_previa) Sin embargo todas estas funciones internaspueden ser llamadas por el nombre usando |_Mshyx_| Si olvida que previousshyline estaacuteligado a ||Cshyp_|| puede escribir simplemente |_Mshyx_| previousshyline |_Intro_| y semoveraacute una liacutenea hacia arriba Pruebe esto ahora para que comprenda como |_Mshyx_|previousshyline y ||_Cshyp_ || son realmente la misma cosa

El disentildeador de Emacs comenzoacute desde la base hacia arriba primero definioacute un lotecompleto de funciones internas y entonces les asocioacute o ligoacute ciertas teclas a las maacutescomuacutenmente usadas A veces es maacutes faacutecil llamar a una funcioacuten expliacutecitamente con |_Mshyx_|que recordar a queacute tecla estaacute ligada

La funcioacuten queryshyreplace por ejemplo estaacute ligada a ||_Mshy_|| en algunas versiones deEmacs Pero iquestquieacuten puede recordar tan rara combinacioacuten A menos que use queryshyreplace muyfrecuentemente es maacutes faacutecil simplemente llamarla con |_Mshyx_|

La mayoriacutea de las teclas que pulsa son letras cuya funcioacuten es ser insertadas en el textodel buffer Cada una de esas teclas estaacute ligada a la funcioacuten selfshyinsertshycommand que no

hace nada maacutes que insertar la letra en el buffer Las combinaciones que usan la tecla|_Control_| con una letra generalmente estaacuten ligadas a funciones que hacen otras cosascomo mover el cursor Por ejemplo |_Cshyv_| estaacute ligada a una funcioacuten llamada scrollshyup(avanzar paacutegina) que mueve el buffer una pantalla hacia arriba (lo que quiere decir quesu posicioacuten en el buffer se mueve hacia abajo por supuesto)

Si alguna vez quisiera realmente insertar un caraacutecter de Control en el buffer entoncesiquestcoacutemo lo hariacutea Despueacutes de todo los caracteres de Control son caracteres ASCII aunquerara vez usados y puede querer tenerlos en un archivo Hay una manera para_impedir_quelos caracteres de Control sean interpretados como comandos por Emacs La tecla ||_Cshyq_||6estaacute ligada a una funcioacuten especial llamada quotedshyinsert (insertar lo citado) Todo loque quotedshyinsert hace es leer la proacutexima tecla e insertarla literalmente en el buffersin tratar de interpretarla como un comando Asiacute es coacutemo puede poner los caracteres deControl en sus archivos usando Emacs iexclNaturalmente la manera de insertar un Cshyq espresionar ||Cshyq_|| dos veces

Emacs tambieacuten tiene muchas funciones que no estaacuten ligadas a ninguna tecla Por ejemplosi escribe un mensaje largo y no quiere tener que presionar |_Intro_| al final de cadaliacutenea Puede hacer que emacs lo haga por Ud (de hecho puede hacer que Emacs hagacualquier cosa por Ud) el comando para hacerlo se llama autoshyfillshymode (modo de autollenado pero no estaacute ligado a ninguna tecla por defecto A fin de invocar este comandodebe escribir Mshyx autoshyfillshymode

Mshyx es la tecla usada para llamar a funciones por el nombre Podriacutea usarlo para llamara funciones como nextshyline y previousshyline pero eso seriacutea muy ineficaz ya que esasfunciones estaacuten ligadas a |_Cshyn_| y ||_Cshyp_||

A propoacutesito si mira su liacutenea de modo despueacutes de invocar autoshyfillshymode notaraacute que lapalabra Fill se ha agregado al lado derecho Mientras esteacute alliacute Emacs llenaraacute(rellenaraacute) el texto automaacuteticamente Puede desactivarlo escribiendo Mshyx autoshyfillshymodenuevamente es un comando de palanca

La incomodidad de escribir largos nombres de funcioacuten en el minibuffer disminuye porqueEmacs hace terminacioacuten automaacutetica en los nombres de funciones de la misma manera que lohace en los nombres de archivo Por lo tanto rara vez deberiacutea encontrarse escribiendo elnombre entero de la funcioacuten letra a letra Si no estaacute totalmente seguro de si puede o nousar la terminacioacuten automaacutetica simplemente presione |_Tab_| No puede hacer dantildeo lopeor que puede suceder es que consiga un caraacutecter Tab y si es afortunado resultaraacute quepuede usar la terminacioacuten automaacutetica

89 Pidiendo ayuda a Emacs

Emacs tiene extensas facilidades de ayuda tan extensas de hecho que soacutelo podemoscomentarlas un poco aquiacute A las facilidades de ayuda maacutes baacutesicas se accede tecleando |_Cshyh_| y luego una uacutenica letra Por ejemplo |_Cshyh_k_| muestra la ayuda sobre una tecla (lepide que presiones una tecla y entonces le dice lo que esa tecla hace) |_Cshyh_t_| abreun breve manual sobre Emacs Maacutes importante auacuten |_Cshyh_Cshyh_Cshyh_| le da ayuda sobre laayuda para decirle que estaacute disponible una vez que ha tecleado |_Cshyh_| por primera vezSi sabe el nombre de una funcioacuten de Emacs (saveshybuffer (grabar el buffer) por ejemplo)pero no puede recordar cuaacutel es la combinacioacuten de teclas a la que estaacute ligada use |_Cshyh_w_| para whereshyis (doacutende estaacute) y escriba el nombre de la funcioacuten O si quiereconocer queacute hace una funcioacuten con detalle use |_Cshyh_f_| que preguntaraacute por un nombre defuncioacuten

______________________________________________

6 Llamamos a Cshyq una tecla aunque se produce manteniendo presionada la tecla Controlypresionando q porque es un uacutenico caraacutecter ASCII

Recuerde que como Emacs hace terminacioacuten automaacutetica del nombre de la funcioacuten realmenteno tiene que estar seguro de coacutemo se llama para pedir ayuda sobre ella Si piensa quepuedes adivinar la palabra con la que podriacutea comenzar teclee eacutesa y presione |_Tab_ |paraver si se completa Si no vuelva atraacutes e intente otra cosa Lo mismo ocurre con losnombres de archivo auacuten cuando no pueda recordar del todo como nombroacute cierto archivo alque no ha accedido en tres meses puede probar y usar la terminacioacuten automaacutetica paraaveriguar si estaacute en lo cierto Usa la terminacioacuten automaacutetica como una forma depreguntar y no soacutelo como una manera de teclear menos

Hay otros caracteres que puede pulsar despueacutes de |_Cshyh_| y con cada uno consigue ayudade una manera diferente Los que usaraacute maacutes frecuentemente son |_Cshyh_k_| |_Cshyh_w_| y|_Cshyh_f_| Una vez que esteacute maacutes familiarizado con Emacs otra para probar es |_Cshyh_a_|que le pregunta por una cadena y le comenta todas las funciones que tienen esa cadenacomo parte de su nombre (la a seriacutea para apropos [a propoacutesito] o about[acerca])

Otra fuente de informacioacuten es el lector de documentacioacuten Info Info es demasiado complejopara tratarlo aquiacute pero si estaacute interesado en explorarlo por si mismo teclee |_Cshyh_i_|y lea el paacuterrafo en la parte superior de la pantalla Le diraacute coacutemo conseguir maacutes ayuda

810 Especializando buffers Modos

Los buffers de Emacs tienen modos asociados7 La razoacuten para esto es que sus necesidadescuando escribe un mensaje de correo son muy diferentes de sus necesidades cuando porejemplo escribe un programa Mejor que tratar de crear un editor que satisfaga cadanecesidad particular en todo momento (que seriacutea imposible) el disentildeador de Emacs8 eligioacutehacer que Emacs se comporte de manera diferente dependiendo de queacute hace Ud en cadabuffer individual Asiacute los buffers tienen modos cada uno disentildeado para alguna actividadespeciacutefica Los aspectos principales que distinguen un modo de otros son lascombinaciones de teclas pero tambieacuten pueden existir otras diferencias

El modo maacutes baacutesico es el modo Fundamental que realmente no tiene ninguacuten comandoespecial

De hecho esto es todo lo que Emacs dice sobre el Modo Fundamental

Modo Fundamental

Modo mayor no especializado para nada en particular Los otros modos mayoresson definidos por comparacioacuten con este

Obtuve asiacute esa informacioacuten Teclee |_Cshyx_b_| que es switchshytoshybuffer (cambiar albuffer) e introduje foo cuando se me preguntoacute por un nombre de buffer al que cambiarComo no habiacutea anteriormente ninguacuten buffer llamado foo Emacs creoacute uno y me cambio a eacutelEstaba en el modo fundamental por defecto pero si no lo hubiese estado podriacutea habertecleado Mshyx fundamentalshymode para que estuviese Todos los nombres de modo tienen uncomando llamado ltnombreshydeshymodogtshymode que pone el buffer actual en ese modo Entoncespara averiguar maacutes sobre este modo mayor tecleeacute |_Cshyh_m_| que consigue ayuda sobre elmodo mayor actual del buffer en que estaacute

_____________________________________________

7 para colmo de males hay Modos Mayores y Modos Menores pero en este momento nonecesita conocer nada acerca de esto

8 Richard Stallman a veces tambieacuten conocido como rms porque es su login

Hay un modo ligeramente maacutes uacutetil llamado textshymode (modo texto que tiene los comandosespeciales |_MshyS_| para centrar paacuterrafo y |_Mshys_| que invoca centrar liacutenea |_MshyS_| apropoacutesito significa exactamente lo que piensa mantenga pulsadas la |_Meta__|y la tecla|_Shift_| y presiona S

Pero no me tome la palabra en esto cree un nuevo buffer poacutengalo en modo texto y teclee|_Cshyh_m_| Puede que no entienda todo lo que Emacs le diga cuando lo haga pero deberiacuteaser capaz de conseguir sacar alguna informacioacuten uacutetil de ello

Esto es una introduccioacuten a algunos de los modos maacutes comuacutenmente usados Si los usaaseguacuterese de que teclea en cada uno |_Cshyh_m_| alguna vez para averiguar maacutes sobre cadamodo

811 Modos de programacioacuten

8111 Modo C

Si usa Emacs para programar en el lenguaje C puede conseguir que eacutel le haga toda laindentacioacuten automaacuteticamente Los archivos cuyos nombres terminan en c o h se abriraacutenautomaacuteticamente en el modo C Esto significa que ciertos comandos especiales de edicioacutenuacutetiles para escribir programas en C estaacuten disponibles En el modo C |_Tab_| estaacute ligadoa cshyindentshycommand (indentar comandos C) Esto significa que presionando la tecla |_Tab_|no inserta realmente un caraacutecter de Tabulacioacuten En cambio si presiona |_Tab_| encualquier parte de una liacutenea Emacs automaacuteticamente indenta esta liacutenea correctamente parasu ubicacioacuten en el programa Esto implica que Emacs sabe algo sobre la sintaxis de C(aunque nada sobre semaacutentica (iexclno puede asegurar que su programa no tenga errores)

Para hacer esto asuma que las liacuteneas anteriores estaacuten indentadas correctamente Estosignifica que si en la liacutenea anterior falta un pareacutentesis un punto y coma llaves ocualquier otra cosa Emacs indentaraacute la liacutenea actual de una manera peculiar inesperadaCuando vea que hace esto sabraacute que debe buscar un error de puntuacioacuten en la liacuteneaanterior

Puede usar esta caracteriacutestica para verificar que ha puntuado correctamente susprogramas

en vez de leer el programa entero_buscado_problemas simplemente comience a indentar lasliacuteneas desde arriba hasta abajo con |_Tab_| y cuando alguna se indenta de forma raraverifique las liacuteneas inmediatamente anteriores En otras palabras iexcldeje a Emacs hacer eltrabajo por Ud

8112 Modo Scheme

Este es un modo mayor que no le serviraacute de nada a menos que tenga un compilador o uninterprete para el lenguaje de programacioacuten Scheme en su sistema Tener uno no es tannormal como digamos un compilador de C pero se estaacute haciendo cada vez maacutes comuacuten asiacuteque lo trataremos tambieacuten

Mucho de lo que es cierto para el modo Scheme es tambieacuten cierto para el modo Lisp siprefiere escribir en Lisp

Bien para complicar las cosas Emacs viene con dos modos Scheme diferentes porque lagente no podiacutea decidir coacutemo queriacutean que funcionara El que estoy describiendo se llamacmuscheme y luego en la seccioacuten personalizando a Emacs hablareacute de coacutemo puede haber dosmodos Scheme diferentes y queacute hacer acerca de ello Por ahora no se preocupe si lascosas en su Emacs no coinciden con las que yo digo aquiacute Un editor personalizablesignifica un editor impredecible iexcly no hay vuelta de hoja

Puede ejecutar un proceso Scheme interactivo en Emacs con el comando Mshyx runshyscheme Estocrea un buffer llamado scheme que tiene el prompt habitual de Scheme Puede teclearexpresiones de Scheme en el prompt presionar |_Intro_| y Scheme las evaluaraacute y mostraraacutela respuesta Asiacute a fin de interactuar con el proceso de Scheme podraacute simplementeescribir todas sus aplicaciones y definiciones de funcioacuten en el prompt Es posible quehaya escrito previamente coacutedigo fuente Scheme en un alguacuten archivo y seriacutea maacutes faacutecilhacer su trabajo en el archivo y enviar las definiciones al buffer de proceso Schemeseguacuten sea necesario

Si el archivo fuente termina en ss o scm automaacuteticamente se abriraacute en el modo Schemecuando lo encuentre con |_Cshyx_Cshyf_| Si por alguna razoacuten no surge en el modo Schemepuede hacerlo a mano con Mshyx schemeshymode Este modo scheme no es lo mismo que el bufferque ejecuta el proceso Scheme maacutes bien el que el buffer de coacutedigo fuente esteacute en modoscheme significa que tiene comandos especiales para comunicar con el buffer de proceso

Si estaacute dentro de la definicioacuten de una funcioacuten en el buffer de coacutedigo fuente Scheme yteclea |_Cshyc_Cshye_| entonces esa definicioacuten seraacute enviada al buffer de procesoexactamente como si lo hubiera tecleado Ud mismo |_Cshyc_Mshye_| enviacutea la definicioacuten yentonces le lleva al buffer de proceso para hacer algo de trabajo interactivo |_Cshyc_Cshyl_| carga un archivo de coacutedigo Scheme (eacuteste funciona desde el buffer de proceso o elbuffer de coacutedigo fuente) Y como otros modos de lenguajes de programacioacuten al presionar|_Tab_| en cualquier lugar de una liacutenea de coacutedigo se indentaraacute correctamente esa liacutenea

Si estaacute en el prompt del buffer de proceso puede usar ||_Mshyp_|| y |_Mshyn_| para moverseentre sus comandos anteriores (tambieacuten conocido como la historia de entrada) Asiacute que siestaacute depurando la funcioacuten rotar y ya lo ha aplicado a los argumentos en el buffer deproceso como

gt(rotar (a b c d e))

entonces puede recuperar ese comando anterior tecleando ||_Mshyp_||en el prompt Aquiacute nodeberiacutea ser necesario volver a escribir expresiones largas en el prompt de Schemehabituacuteese a usar la historia de entrada y ahorraraacute mucho tiempo

Emacs conoce bastantes lenguajes de programacioacuten C C++ Lisp y Scheme son simplementealgunos Generalmente sabe coacutemo indentarlos de forma intuitiva

8113 Modo de correo

Tambieacuten puede editar y enviar correo en Emacs Para entrar en un buffer de correo teclee|_Cshyx_m_| Necesita llenar los campos To (A) y Subjet (Asunto) y entonces use |_Cshyn_| para ir por debajo de la liacutenea de separacioacuten al cuerpo del mensaje (que estaacute vaciacuteocuando comienza por primera vez) No cambie o borre la liacutenea de separacioacuten o sino Emacsno seraacute capaz de enviar su correo use esa liacutenea para distinguir el encabezamiento delcorreo que le dice doacutende enviar el correo de los contenidos del mensaje

Puede escribir lo que quiera por debajo de la liacutenea de separacioacuten Cuando esteacute listo paraenviar el mensaje simplemente teclee |_Cshyc_Cshyc_| y Emacs lo enviaraacute y haraacute que elbuffer de correo desaparezca

812 Como ser maacutes eficiente auacuten

Los usuarios experimentados de Emacs son fanaacuteticos de la eficiencia ltDe hechofrecuentemente acaban derrochando mucho tiempo buscando formas para ser maacutes eficientesNo quiero que le suceda esto aunque hay algunas cosas faacuteciles con las que puede llegar aser un mejor usuario de Emacs A veces los usuarios experimentados hacen que los novatos

se sientan tontos por no saber todos estos trucos por alguna razoacuten la gente llega ahacerse religiosas sobre el uso correcto de Emacs Allaacute vamos

Cuando se mueve de un lado a otro usa los medios maacutes raacutepidos disponibles Ud sabe que|_Cshyf_| es forwardshychar (un caraacutecter hacia adelante) iquestsuponiacutea que |_Mshyf_| es forwardshyword(una palabra hacia delante) |_Cshyb_| es backwardshychar (un caraacutecter hacia atraacutes) iquestSuponequeacute hace |_Mshyb_| Sin embargo esto no es todo puede avanzar una frase cada vez con |_Mshye_ | siempre que escriba sus frases de modo que haya siempre dos espacios despueacutes delpunto final (de otra manera Emacs no puede distinguir donde termina una frase y comienzala siguiente) |_Mshya_| es backwardshysentence (una frase atraacutes)

Si ve que usa repetidamente |_Cshyf_| para llegar al final de la liacutenea averguumleacutencese yaseguacuterese de usar |_Cshye_| en su lugar y |_Cshya_| para ir al principio de la liacutenea Si usamuchos |_Cshyn_| para bajar pantallas de texto averguumleacutencese mucho y usa |_Cshyv_| siempreSi usa repetidamente ||_Cshyp_|| para avanzar pantallas no se atreva a ensentildear la cara yuse |_Mshyv_| en su lugar

Si se estaacute acercando al final de una liacutenea y se da cuenta de que hay una palabra maltecleada o de que se ha olvidado alguna en alguacuten lugar anterior de la liacutenea no use la|_Retroceso_| o ||_Supr_|| para volver a ese punto Eso requeririacutea volver a escribirporciones enteras de texto perfecto En vez de eso use combinaciones de |_Mshyb_| |_Cshyb_| y |_Cshyf_| para moverse a la ubicacioacuten precisa del error arreacuteglelo y entonces use|_Cshye_| para moverse al fin de la liacutenea nuevamente

Cuando tiene que escribir un nombre de archivo nunca teclee el nombre completoSolamente escriba lo suficiente para identificarlo singularmente y deje que Emacstermine el trabajo presionando |_Tab_| o ||_Espacio_|| iquestPor queacute teclear de maacutes cuandopuede derrochar ciclos de CPU en su lugar

Si escribe alguacuten tipo de texto simple y de alguacuten modo su autoshyllenando (autoshyfilling)loha fastidiado use |_|Mshyq_|| que es rellenado de paacuterrafo en los modos de texto comunesEsto ajustaraacute el paacuterrafo en el que estaacute como si hubiese sido llenado liacutenea a liacuteneapero sin tener que liarse hacieacutendolo a mano ||_Mshyq_|| trabajaraacute desde dentro delpaacuterrafo o desde su comienzo o final

A veces es uacutetil usar |_Cshyx_u_| (undo [deshacer]) que trataraacute de deshacer el (los)uacuteltimo(s) cambio(s) que hizo Emacs decidiraacute cuanto deshacer habitualmente decide muyinteligentemente

Llamaacutendolo repetidamente desharaacute maacutes y maacutes hasta que Emacs no pueda recordar queacute cambiosse hicieron

813 Personalizando Emacs

Emacs es tan grande y tan complejo que de hecho tiene iexclsu propio lenguaje deprogramacioacuten No bromeo para personalizar Emacs ajustaacutendolo a sus necesidades tieneque escribir programas en este lenguaje Se llama Emacs Lisp y es un dialecto de Lispasiacute que si tiene experiencia previa en Lisp le pareceraacute bastante amistoso Si no no sepreocupe no voy a profundizar mucho porque definitivamente se aprende mejorpracticando Para aprender realmente a programar Emacs deberaacute consultar las paacuteginas deinformacioacuten de Emacs Lisp y leer mucho coacutedigo fuente de Emacs Lisp

La mayor parte de la funcionalidad de Emacs estaacute definida en archivos de coacutedigo de EmacsLisp9 La mayoriacutea de estos archivos se distribuyen con Emacs y colectivamente sonconocidos como la Biblioteca de Emacs Lisp La ubicacioacuten de esta biblioteca depende decoacutemo se instaloacute Emacs en su sistema son ubicaciones comunes usrlibemacslispusrlibemacs1919lisp etc

El 1919 es el nuacutemero de versioacuten de Emacs y podriacutea ser diferente en su sistema

No necesita hurgar por su sistema de archivos buscando la biblioteca de lisp porqueEmacs tiene la informacioacuten almacenada internamente en una variable llamada loadshypath(trayectoria de carga) Para averiguar el valor de esta variable es necesario evaluarlaesto es hacer que el inteacuterprete de lisp de Emacs consiga su valor Hay un modo especialpara evaluar las expresiones de Lisp en Emacs llamado modo lisp interactivo (lispshyinteractionshymode) Comuacutenmente hay un buffer llamado scratch que estaacute ya en estemodo Si no lo puede encontrar cree un nuevo buffer con cualquier nombre y escriba Mshyxlispshyinteractionshymode dentro de eacutel

Ahora tiene un espacio de trabajo para interactuar con el inteacuterprete Lisp de EmacsTeclee esto

loadshypath

y entonces presione ||_Cshyj_|| al finalizar En el modo Lisp interactivo ||_Cshyj_|| estaacuteligado a evalshyprintshylastshysexp (evaluarshyimprimirshyuacuteltimashysexp) Una sexp es una sshyexpresion lo que significa un grupo balanceado de pareacutentesis incluido el caso de queno haya ninguno Bueno esto es simplificarlo un poco pero iraacute entendiendo que son seguacutenprograme con Emacs Lisp De cualquier manera al evaluar loadshypath deberiacutea conseguir algocomo esto

loadshypath ||_Cshyj_||

(usrlibemacssiteshylispvmshy535 homekfogelelithp

usrlibemacssiteshylisp usrlibemacs1919lisp)

Por supuesto no tendraacute el mismo aspecto en cada sistema puesto que es dependiente decoacutemo se instaloacute Emacs El ejemplo de arriba viene de mi PC 386 que funciona con LinuxComo indica lo anterior loadshypath es una lista de cadenas Cada cadena nombra undirectorio que podriacutea contener archivos de Emacs Lisp Cuando Emacs necesita cargar unarchivo de coacutedigo Lisp va buscaacutendolo en cada uno de estos directorios en orden Si undirectorio se nombra pero no existe en el sistema de archivos Emacs simplemente loignora

_____________________________________________

9 A veces llamados no oficialmente Elisp

Cuando Emacs arranca automaacuteticamente trata de cargar el archivo emacs desde sudirectorio de usuario Por lo tanto si quiere hacer personalizaciones en Emacs deberaacuteponerlas en emacs La personalizacioacuten maacutes comuacuten son las teclas ligadas asiacute que aquiacuteestaacute coacutemo hacerlo

(globalshysetshykey Cshycl gotoshyline)

globalshysetshykey (fijar teclas globalmente) es una funcioacuten de dos argumentos la tecla a laque ha de ser ligada y la funcioacuten a la que ligarla La palabra global significa queesta tecla ligada tendraacute efecto en todos los modos mayores (hay otra funcioacuten localshysetshykey (fijar teclas localmente) que liga una tecla en un uacutenico buffer) Arriba he ligado|_Cshyc_l_| a la funcioacuten gotoshyline (ir a tal liacutenea)

La tecla se describe usando una cadena La sintaxis especial Cshyltcaraacutectergt significamantener pulsada la tecla |_Control_| mientras se presiona ltcaraacutectergt Asiacute mismo Mshyltcaraacutectergt indica la tecla |_Meta_|

Todo eso estaacute muy bien iquestpero coacutemo supe que el nombre de la funcioacuten era gotoshylinePuedo saber que quiero ligar |_Cshyc_l_| a alguna funcioacuten que pregunta por un nuacutemero deliacutenea y mueve el cursor a esa liacutenea pero iquestcoacutemo hice para averiguar el nombre de esafuncioacuten

Aquiacute es donde intervienen las facilidades de ayuda de Emacs Una vez que ha decidido queacutetipo de funcioacuten busca puede usar Emacs para rastrear su nombre exacto He aquiacute unamanera raacutepida y sucia para hacerlo puesto que Emacs completa los nombres de funcioacutensimplemente escriba |_Cshyh_f_| (que es describeshyfunction (describir funcioacuten) recueacuterdelo)y entonces presione |_Tab_| sin escribir nada maacutes Esto pide a Emacs que complete lacadena vaciacutea _en otras palabras iexclla terminacioacuten automaacutetica se corresponderaacute con cada unade las funciones Puede tardar un momento en construir la lista de funciones ya queEmacs tiene muchas funciones internas pero mostraraacute todo lo que entre en la pantallacuando esteacute listo

En este momento presione ||_Cshyg_|| para abandonar la funcioacuten describir funcioacuten Habraacute unbuffer llamado Completions que contiene la lista de terminaciones automaacuteticas queacaba de generar

Cambie a este buffer Ahora puede usar |_Cshys_| isearch para buscar las funcionesprobables Por ejemplo es una suposicioacuten segura que una funcioacuten que pregunta por unnuacutemero de liacutenea y entonces va a esa liacutenea contendraacute la cadena line (liacutenea) en sunombre Por lo tanto simplemente comience buscando la cadena line y acabaraacuteencontrando lo que busca

Si quiere otro meacutetodo puede usar |_Cshyh_a_| commandshyapropos para mostrar todas lasfunciones cuyos nombres se ajustan a la cadena dada La salida de commandshyapropos es unpoco maacutes difiacutecil de clasificar que simplemente buscar una lista de terminacioacutenautomaacutetica en mi opinioacuten pero puede encontrar que tiene distintas sensaciones Pruebeambos meacutetodos y a ver que opina

Siempre existe la posibilidad de que Emacs no tenga ninguna funcioacuten predefinida parahacer lo que estaacute buscando En esta situacioacuten tiene que escribir la funcioacuten Ud mismoNo voy a hablar de coacutemo hacer eso deberiacutea buscar en la biblioteca de Emacs Lisp ejemplosde definiciones de funcioacuten y leer las paginas Info sobre Emacs Lisp Si resulta queconoce a un guruacute local de Emacs preguacutentele coacutemo hacerlo Definir sus propias funcionesde Emacs no es un gran asunto para darle una idea yo he escrito 131 de ellas durantemaacutes o menos el uacuteltimo antildeo Requiere un poco de praacutectica pero la curva de aprendizaje noes empinada

Otra cosa que la gente hace a menudo en su emacs es asignar a ciertas variables losvalores preferidos Por ejemplo ponga esto en su emacs y entonces inicie un nuevoEmacs

(setq inhibitshystartupshymessage t)

Emacs verifica el valor de la variable inhibitshystartupshymessage (bloquear mensaje dearranque) para decidir si muestra la informacioacuten sobre la versioacuten y la falta de garantiacuteacuando arranca La expresioacuten de Lisp de arriba usa el comando setq para asignar a esavariable el valor `t que es un valor especial de Lisp que significa true (verdadero)Lo contrario de `t es `nil (nada o nulo) que es el valor false (falso) designado enEmacs Lisp He aquiacute dos cosas que estaacuten en mi |_emacs_| que podriacutea encontrar uacutetiles

(setq caseshyfoldshysearch nil) causa la insensibilidad a mayuacutesculas yminuacutesculas para la buacutesqueda

Hacer indentar los programas C de la manera que me gusta

(setq cshyindentshylevel 2)

La primera expresioacuten hace que las buacutesquedas (incluyendo isearch) sean insensibles amayuacutesculas y minuacutesculas esto es la buacutesqueda encontraraacute versiones de un mismo caraacutectersea mayuacutescula o minuacutescula aunque la cadena de buacutesqueda contenga uacutenicamente la versioacuten enminuacutescula La segunda expresioacuten establece que la indentacioacuten por defecto para lassentencias en lenguaje C sea un poco menor de lo normal esto es solamente unapreferencia personal encuentro que esto hace el coacutedigo C maacutes legible

El caraacutecter de comentario en Lisp es Emacs ignora cualquier cosa que siga a uno deeacutestos a menos que aparezca dentro de una cadena literal como esta

estas dos liacuteneas son ignoradas por el inteacuterprete de Lisp pero la

sshyexpression que le sigue se evaluaraacute totalmente

(setq algunashycadenashyliteral Una pausa torpe sin ninguacuten propoacutesito)

Es una buena idea comentar sus cambios en los archivos Lisp porque seis meses despueacutes nose acordaraacute en queacute estaba pensando cuando los modificoacute Si el comentario aparece soacutelo enuna liacutenea preceacutedalo con dos punto y coma Esto ayuda a Emacs a indentar los archivosLisp correctamente

Puede encontrar informacioacuten sobre las variables internas de Emacs de las mismas formasque con las funciones Use |_Cshyh_v_| describeshyvariable para hacer una lista determinacioacuten automaacutetica o use |_Cshyh_Cshya_| apropos Apropos difiere de |_Cshyh_a_|commandshyapropos en que muestra variables y funciones en vez de solamente funciones

La extensioacuten por defecto para los archivos de Emacs Lisp es el como en cshymodeel Sinembargo para hacer que el coacutedigo Lisp se ejecute maacutes raacutepido Emacs permite que sea byteshycompiled (compilado a un formato interno) y estos archivos de coacutedigo Lisp compiladoterminan en elc en vez de el La excepcioacuten a esto es su archivo emacs que no necesitala extensioacuten el porque Emacs sabe buscarlo para arrancar

Para cargar un archivo de coacutedigo Lisp interactivamente use el comando Mshyx loadshyfile(cargar archivo) Le preguntaraacute por el nombre del archivo Para cargar archivos Lispdesde dentro de otros archivos Lisp haga esto

(load cshymode)fuerza a Emacs a cargar el contenido de cshymodeel o elc

Emacs antildeadiraacute la extensioacuten elc al nombre del archivo e intentaraacute encontrarlo en alguacutenlugar del loadshypath Si falla lo intenta con la extensioacuten el si falla esto usa lacadena literal tal y como es pasada a load Puede compilar (byteshycompile) un archivo conel comando Mshyx byteshycompileshyfile pero si modifica el archivo a menudo probablemente nomerezca la pena Sin embargo no deberiacutea compilar de esa manera su emacs ni siquieradarle la extensioacuten el

Despueacutes de que emacs se ha cargado Emacs busca un archivo llamado defaultel paracargarlo

Comuacutenmente se ubica en un directorio en la trayectoria de carga (loadshypath) llamado siteshylisp o localshyelisp o algo parecido (ver el ejemplo loadshypath que di hace un rato) Lagente que mantiene Emacs en un sistema multiusuario usa defaultel para hacer cambios queafectaraacuten los Emacs de todos puesto que todos los Emacs lo cargan despueacutes de los emacspersonales defaultel no deberiacutea ser compilado ya que tiende a ser modificadofrecuentemente

Si el emacs de una persona contiene alguacuten error Emacs no intentaraacute cargar defaultelsino que simplemente se detendraacute destellando un mensaje diciendo Error in init file(Error en el archivo de inicio) o algo similar Si ve este mensaje probablemente algovaya mal con su emacs

Hay un tipo maacutes de expresioacuten que a menudo va en un emacs La libreria de Emacs Lisp aveces ofrece muacuteltiples paquetes para hacer lo mismo de diferentes formas Esto significaque tiene que especificar cuaacutel quiere usar (o tendraacute el paquete por defecto que no essiempre el mejor para todos los propoacutesitos) Un aacuterea donde esto sucede es en lascaracteriacutesticas de interaccioacuten del Scheme de Emacs Hay dos interfaces diferentes deScheme distribuidos con Emacs (al menos en la versioacuten 19) xscheme y cmuscheme

promptgt ls usrlibemacs1919lispscheme

usrlibemacs1919lispcmuschemeel

usrlibemacs1919lispcmuschemeelc

usrlibemacs1919lispschemeel

usrlibemacs1919lispschemeelc

usrlibemacs1919lispxschemeel

usrlibemacs1919lispxschemeelc

Resulta que el interfaz ofrecido por cmuscheme me gusta mucho maacutes que el que ofrecexscheme pero el que Emacs usaraacute por defecto es xscheme iquestCoacutemo puedo hacer que Emacsactuacutee de acuerdo con mi preferencia Puse esto en mi emacs

note coacutemo la expresioacuten puede quebrarse en dos liacuteneas Lisp

ignora los espacios en blanco generalmente

(autoload runshyscheme cmuscheme

Corre un Scheme inferior de la forma que me gusta t)

La funcioacuten autoload (auto carga) toma el nombre de una funcioacuten (citada con porrazones que tienen que ver con coacutemo funciona Lisp) y le dice a Emacs que esta funcioacutenestaacute definida en un determinado archivo El archivo es el segundo argumento una cadena(sin la extensioacuten el o elc) indicando el nombre del archivo a buscar en la trayectoriade carga loadshypath

Los argumentos restantes son opcionales pero necesarios en este caso el tercerargumento es una cadena de documentacioacuten para la funcioacuten de modo que si llama adescribeshyfunction (describirshyfuncioacuten) consigue alguna informacioacuten uacutetil El cuartoargumento le dice a Emacs que esta funcioacuten autocargable puede ser llamadainteractivamente (esto es usando |_Mshyx_|) Esto es muy importante en este caso porqueuno deberiacutea poder teclear Mshyx runshyscheme para comenzar un proceso de scheme que seejecuta bajo Emacs

Ahora que runshyscheme ha sido definido como una funcioacuten autocargable iquestqueacute sucede cuandotecleo Mshyx runshyscheme Emacs mira la funcioacuten runshyscheme ve que estaacute establecida paraser autocargable y carga el archivo nombrado por la autocarga (en este caso cmuscheme)El archivo compilado cmuschemeelc existe asiacute que Emacs lo cargaraacute Ese archivo debedefinir la funcioacuten runshyscheme o habraacute un error de autocarga Por suerte define runshyscheme asiacute que todo va sin tropiezos y consigo mi interfaz preferida de Scheme10

Una autocarga es como una promesa a Emacs de que cuando llegue el momento puedeencontrar la funcioacuten especificada en el archivo en el que le dice que mire A cambioconsigue alguacuten control sobre lo que se carga Tambieacuten la autocarga ayuda a reducir eltamantildeo de Emacs en la memoria al no cargar ciertas caracteriacutesticas hasta que se pidan

Muchos comandos no estaacuten definidos realmente como funciones cuando Emacs se inicia Maacutesbien estaacuten simplemente preparados para autocargarse desde cierto archivo Si nuncainvoca el comando nunca se carga Este ahorro de espacio es vital para el funcionamientode Emacs si cargara todos los archivos disponibles en la biblioteca Lisp Emacs tomariacuteaveinte minutos simplemente para arrancar y una vez hecho podriacutea ocupar la mayor partede la memoria disponible en su maacutequina No se preocupe no tiene que establecer todasestas autocargas en su emacs ya se tomaron en cuenta cuando Emacs se desarrolloacute

814 Averiguando maacutes

No le he contado todo lo que se puede saber sobre Emacs De hecho no creo haberlecontado siquiera un 1 de lo que se puede saber sobre Emacs Aunque sabe suficiente paraproseguir todaviacutea hay montones de comodidades y trucos que ahorran tiempo que deberiacuteaaveriguar La mejor forma de hacerlo es esperar hasta que vea que necesita algo y buscarentonces una funcioacuten que lo haga

La importancia de estar coacutemodo con las facilidades de ayuda en liacutenea de Emacs no puedeenfatizarse lo suficiente Por ejemplo suponga que quiere poder insertar los contenidosde alguacuten archivo en un buffer que ya estaacute trabajando sobre un archivo diferente para queel buffer contenga a ambos Si intuyese que hay un comando llamado insertshyfile (insertararchivo) tendriacutea razoacuten Para verificar su acertada suposicioacuten teclee Cshyh f En elprompt del minibuffer introduzca el nombre de una funcioacuten sobre la que quiera ayudaPuesto que sabe que hay terminacioacuten automaacutetica en los nombres de funciones_y_puedesuponer que el comando que busca comienza con insert escriba insert y presiona|_Tab_| Esto le muestra todos los nombres de funcioacuten que comienzan con insert einsertshyfile es uno de ellos

De este modo completa el nombre de funcioacuten y lee sobre como trabaja y entonces usa Mshyxinsertshyfile_Si se estaacute preguntando si tambieacuten estaacute ligado a una tecla escribe Cshyh winsertshyfile |_Intro_| y averiacuteguumlelo Cuanto maacutes sepa de las facilidades de ayuda deEmacs maacutes faacutecilmente podraacute hacer preguntas a Emacs acerca de siacute mismo La capacidad dehacerlo combinada con un espiacuteritu de exploracioacuten y un deseo de aprender nuevas formas dehacer las cosas puede acabar por ahorrarle mucho tecleado

_____________________________________________

10 A propoacutesito cmuscheme era la interfaz de la que hablaba antes en la seccioacuten sobre eltrabajo con Scheme asiacute que si quiere usar algo de este manual necesita asegurarse deque ejecuta cmuscheme

Para pedir una copia del manual de usuario de Emacs (Emacs users manual) yo el manualde Programacioacuten en Emacs Lisp (Emacs Lisp Programming manual) debe escribir a

Free Software Foundation

675 Mass Ave

Cambridge MA 02139

USA

Ambos manuales se distribuyen electroacutenicamente con Emacs en una forma legible usando ellector de documentacioacuten Info (Cshyh i) pero puede encontrar maacutes faacutecil tratar con freewareque con las versiones en liacutenea Ademaacutes sus precios son bastantes razonables y el dinerova a una buena causa iexclsoftware gratuito de calidad En alguacuten momento deberiacutea teclear

Cshyh Cshyc para leer las condiciones de copyright de Emacs Es maacutes interesante de lo quepuede pensar y le ayudaraacute a aclarar el concepto de software libre Si cree que eltermino free software simplemente significa que el programa no cuesta nada por favoriexcllea el copyright en cuanto tenga tiempo

Capiacutetulo 9

iexclTengo que ser yo mismo

Si Dios hubiera sabido que necesitariacuteamos previsioacuten nos la habriacutea dado

91 Personalizacioacuten del bash

Una de las cosas que distinguen la filosofiacutea de Unix es que los disentildeadores de sistemasno intentaron predecir cada necesidad que los usuarios podriacutean tener en lugar de esointentaron hacer faacutecil para cada usuario individual la configuracioacuten del entorno a susnecesidades particulares Esto se consigue principalmente a traveacutes de ficheros deconfiguracioacuten Tambieacuten son conocidos como ficheros de inicio ficheros rc (por runcontrol control de arranque) o incluso ficheros punto (dot files) porque losnombres de los ficheros siempre empiezan con Recordemos que los ficheros queempiezan por no se visualizan normalmente con ls

Los ficheros de configuracioacuten maacutes importantes son los usados por el shell El shell pordefecto de Linux es el bash y eacuteste es el shell que cubre este capiacutetulo Antes de empezara explicar coacutemo personalizar el bash tenemos que saber cuales son los archivos que mira

911 Arranque del shell

Hay diferentes modos de funcionamiento del bash Puede funcionar como shell de ingresoque es el modo en que arranca cuando se ingresa por primera vez El shell de ingresodeberiacutea ser el primer shell que vea

Otro modo en que puede funcionar bash es como shell interactivo Este es un shell quepresenta un prompt a un humano y espera una entrada de datos Un shell de ingreso tambieacutenes un shell interactivo Una manera de conseguir un shell interactivo sin ingresar en elsistema es por ejemplo un shell dentro de xterm Cualquier shell que sea creado porotro medio distinto del ingreso registrado en el sistema es un shell de noshyingreso

Finalmente hay shells no interactivos Estos shells se usan para ejecutar un archivo decomandos muy parecidos a los ficheros de procesamiento por lotes del MSshyDOS losarchivos que acaban en BAT Estas macros de shell funcionan como minishyprogramas Aunqueson usualmente mucho maacutes lentos que un programa normal compilado suele ser ciertotambieacuten que son mucho maacutes faacuteciles de escribir Dependiendo del tipo de shell se usaraacutendistintos tipos de archivo al arrancarlo

Tipo de Shell Accioacuten

Ingreso interactivo Se lee y ejecuta el archivo bash_profile

Interactivo Se lee y ejecuta el archivo bashrc

No_interactivo Se lee y ejecuta la macro de shell

912 Ficheros de arranque

Como muchos usuarios quieren tener mayormente el mismo entorno sin importar que tipo deshell interactivo acaben teniendo y sea o no un shell de ingreso empezaremos nuestraconfiguracioacuten poniendo un comando muy simple en nuestro archivo bash_profile source~bashrc El comando source ordena al shell que interprete el argumento como una macrode shell Lo que significa para nosotros es que cada vez que bash_profile se ejecutatambieacuten se ejecuta bashrc Ahora soacutelo antildeadiremos comandos a nuestro archivo bashrc Sialguna vez queremos que se ejecute un comando uacutenicamente cuando hemos hecho un ingresoregistrado lo antildeadiremos a nuestro bash_profile

913 Creando alias

iquestCuales son algunas de las cosas que interesariacutea personalizar Esto es algo que creo queel 90 de los usuarios de Bash han puesto en su bashrc

alias ll=ls shyl

Este comando define un alias de shell llamado ll que expande el comando normal de shellls shyl cuando se invoca por el usuario De modo que asumiendo que Bash ha leiacutedo estecomando del fichero bashrc podemos teclear ll para conseguir el efecto de ls__shyl_ consolo la mitad de pulsaciones Lo que ocurre es que cuando tecleamos ll y pulsamos|_Intro_| Bash lo intercepta lo reemplaza por ls shyl y ejecuta eacuteste en su lugar Nohay ninguacuten programa llamado ll en el sistema pero el shell automaacuteticamente traduce elalias a un programa vaacutelido

Hay algunos alias de ejemplo en la figura 913 Puede ponerlos en su propio bashrc Unoespecialmente interesante es el primero Con eacutel cada vez que alguien teclea ls automaticamente tiene una opcioacuten shyF antildeadida (El alias no intenta expandirse a siacute mismootra vez) Este es un modo muy comuacuten de antildeadir opciones que se usan constantemente alllamar a un programa

Noacutetese los comentarios con el caracter en la figura 913 Cada vez que aparece un el shell ignora el resto de la liacutenea

Quizaacute haya notado unas cuantas cosas sueltas sobre los ejemplos Primero me he dejadolas comillas en algunos de los alias como pu Estrictamente hablando las comillas no sonnecesarias cuando soacutelo se tiene una palabra a la derecha del signo igual

Figura 91 Algunos alias de ejemplo para bash

Alias Comentario

alias ls=ls shyF

alias ll=ls shyl

alias la=ls shya

alias ro=rm ~ rm ~

alias rd=rmdir

alias md=mkdir

alias pu=pushd

muestra los caracteres al final del listado

ls especial

este borra las copias de seguridad creadas por Emacs

ahorra teclas

pushd popd y dirs no estan incluidos en este

alias po=popd

alias ds=dirs

manualshyshyshyquiza quiera echarles un vistazo

en la pagina man de Bash

alias to=telnet csoberlinedu

alias ta=telnet altairmcsanlgov

alias tg=telnet wombatgnuaimitedu

alias tko=tpalk koldcsoberlinedu

alias tjo=talk jimbcsoberlinedu

alias mroe=more

alias moer=more

alias email=emacs shyf rmail

alias ed2=emacs shyd floss0 shyfg grey95shybg grey50

estos solo son atajos de teclado

correcion ortografica

mi lector de correo

asi llamo a Emacs

Pero no hace dantildeo poner comillas asiacute que no me dejeacuteis crearos malos haacutebitos Ciertamentehabraacute que usarlas si se va a crear un alias de un comando con opciones yo argumentos

alias rf=refrobnicate shyverbose shyprolix shywordy shyo fooout

Ademaacutes el uacuteltimo alias tiene alguacuten entrecomillado gracioso

alias ed2=emacs shyd floss0 shyfg grey95 shybg grey50

Como es faacutecil suponer he querido pasar entrecomillados dentro de las opciones asiacute quetengo que anteponerles una contrabarra para que bash no crea que ya ha llegado al finaldel alias

Finalmente he creado dos alias de dos errores de escritura comunes mroe y moerapuntando al comando que pretendiacutea escribir more Los alias no interfieren con el pasode argumentos a un programa Lo siguiente funciona bien

homelarry$ mroe hurdtxt

De hecho saber como crear sus propios alias es probablemente por lo menos la mitad delas personalizaciones que haraacute jamaacutes Experimente un poco descubra cuaacuteles son loscomandos largos que teclea frecuentemente y cree alias para ellos De esta manera leresultaraacute maacutes confortable trabajar con el prompt del shell

914 Variables de entorno

Otra cosa que uno hace frecuentemente en bashrc es definir variables de entorno Y gtqueacuteson las variables de entorno Vamos a mirarlo desde otra direccioacuten Supongamos que estaacuteleyendo la documentacioacuten del programa fruggle y se encuentra con una de estasexpresiones

Fruggle normalmente busca su fichero de configuracioacuten frugglerc en el directorio raiacutezdel usuario Sin embargo si la variable de entorno FRUGGLEPATH indica un nombre dearchivo diferente miraraacute ahiacute en su lugar

Cada programa se ejecuta en un entorno y ese entorno es definido por el shell que llamoacuteal programa1 Se puede decir que el entorno existe dentro del shell Los programadorestienen una rutina especial para interrogar al entorno y el programa fruggle usa esarutina Comprueba el valor de la variable de entorno FRUGGLEPATH Si esa variable no estaacutedefinida sencillamente usaraacute el archivo frugglerc del directorio raiacutez Si estaacutedefinida usaraacute el valor de esa variable (que debe ser el nombre de un archivo quefruggle pueda usar) en lugar del archivo por defecto frugglerc Asiacute es como se puedecambiar el entorno en bash

homelarry$ export PGPPATH=homelarrysecretspgp

Hay que pensar en el comando export con este significado Por favor exporta estavariable fuera del entorno donde estareacute llamando programas de modo que su valor seavisible para ellos Realmente hay razones para llamarlo export como se veraacute despueacutes

Esta variable en particular es usada por el infame programa de encriptacioacuten medianteclave puacuteblica de Phil Zimmerman pgp Por defecto pgp usa el directorio raiacutez como lugarpara encontrar determinados archivos que necesita (que contienen claves de encriptacioacuten)y tambieacuten un lugar para guardar archivos temporales que crea mientras estaacute en marcha Aldarle este valor a la variable PGPPATH le he dicho que use el directoriohomelarrysecretspgp en lugar de homelarry

He tenido que leer el manual de pgp para encontrar el nombre exacto de la variable y loque hace pero es bastante estaacutendar el uso del nombre del programa en mayuacutesculas seguidodel sufijo PATH Tambieacuten es uacutetil saber como preguntar al entorno

homelarry$ echo $PGPPATH

homelarrypgp

homelarry$

Noacutetese el $ se precede la variable de entorno con un signo de doacutelar para extraer elvalor de la variable Si lo hubiera escrito sin el signo de doacutelar echo simplementehabriacutea mostrado su(s) argumento(s)

homelarry$ echo PGPPATH

PGPPATH

homelarry$

El $ se usa para evaluar variables de entorno pero soacutelo lo hace dentro del contextodel shell o sea cuando el shell estaacute interpretando iquestCuando estaacute el shellinterpretando Bueno cuando se escriben comandos en el prompt o cuando bash estaacuteleyendo comandos de un archivo como bashrc se puede decir que estaacute interpretando loscomandos

_____________________________________________

1 Ahora se puede comprobar porqueacute los shells son tan importantes ltNo hay que andarpasando un entorno completo a mano cada vez que se llame a un programa

Figura 92 Algunas variables de entorno importantes

Nombre Contenido Ejemplo

HOME Directorio principal del usuario homelarry

TERM Tipo de terminal del usuario xterm vt100 o console

SHELL Path del shell del usuario binbash

USER Nombre de ingreso larry

PATH Lista de buacutesqueda de programas binusrbinusrlocalbinusrbinX11

Hay otro comando muy uacutetil para preguntar al entorno env env ensentildearaacute un listado detodas las variables de entorno Es posible especialmente si se usa X que la lista sesalga de la pantalla

Si esto ocurre hay que canalizar env a traveacutes de more env _ more

Unas cuantas de estas variables pueden ser muy uacutetiles asiacute que las comentaremos Mire laFigura 914 Estas cuatro variables estaacuten definidas automaacuteticamente cuando se ingresa enel sistema no se definen en bashrc o bash_login

Vamos a echar un vistazo maacutes de cerca a la variable TERM Para comprenderla vamos amirar hacia atraacutes en la historia del Unix El sistema operativo necesita conocer ciertosdatos sobre su consola para poder realizar funciones baacutesicas como escribir un caraacutecteren la pantalla mover el cursor a la liacutenea siguiente etc En los primeros diacuteas de losordenadores los fabricantes estaban continuamente antildeadiendo nuevas caracteriacutesticas a susterminales primero el viacutedeo inverso luego quizaacutes juegos de caracteres europeoseventualmente incluso primitivas funciones de dibujo (hay que recordar que eacutestos eran lostiempos anteriores a los sistemas de ventanas y el ratoacuten) Pero todas estas funcionesrepresentaban un problema para los programadores iquestCoacutemo iban a saber lo que un terminalpodiacutea soportar y lo que no Y iquestcoacutemo podiacutean emplear nuevas caracteriacutesticas sin convertirlos viejos terminales en inservibles

En Unix la respuesta a estas cuestiones fue etctermcap etctermcap es una lista detodos los terminales que un sistema conoce y como controlan el cursor Si unadministrador de sistema consigue un terminal nuevo todo lo que tiene que hacer esantildeadir una entrada para ese terminal en etctermcap en lugar de recompilar todo el UnixA veces es incluso maacutes simple Al pasar el tiempo el vt100 de Digital EquipmentCorporation se convirtioacute en un pseudoshyestaacutendar y muchos nuevos terminales fueronconstruidos para que pudieran emularlo o comportarse como si fueran un vt100

Bajo Linux el valor de TERM es a veces console un cloacutenico de vtshy100 con algunascaracteriacutesticas antildeadidas

Otra variable PATH es tambieacuten crucial para el funcionamiento correcto del shell Aquiacuteestaacute la miacutea

homelarry$ env _ grep ^PATH

PATH=homelarrybinbinusrbinusrlocalbinusrbinX11usrTeXbin

homelarry$

El PATH es una lista separada por el caraacutecter dos puntos de los directorios dondeel shell buscaraacute el nombre del programa a ejecutar Cuando yo tecleo ls y pulso|_Intro_| por ejemplo Bash primero busca en homelarrybin un directorio que he hechopara guardar los programas que escribo Pero yo no he escrito ls (de hecho iexclcreo que seescribioacute antes de que yo naciera) Como no lo encuentra en homelarrybin Bash miradespueacutes en bin iexcly ahiacute hay una coincidencia binls existe y es ejecutable de modo queBash deja de buscar un programa llamado ls y lo arranca Podriacutea haber habidoperfectamente otro ls esperando en el directorio usrbin pero bash nunca lo ejecutaraacutesi no lo pido especificando una ruta de directorios expliacutecita

homelarry$ usrbinls

La variable PATH existe para no tener que teclear rutas de directorio completas para cadacomando Cuando se escribe un comando Bash lo busca en los directorios nombrados en elPATH en orden y si lo encuentra lo ejecuta Si no lo encuentra devuelve un descorteacutesmensaje de error

homelarry$ clubly

clubly command not found

Notar que en mi PATH no existe el directorio actual Si estuviera tendriacutea esteaspecto

homelarry$ echo $PATH

homelarrybinbinusrbinusrlocalbinusrbinX11usrTeXbin

homelarry$

Esto es asunto de debate en los ciacuterculos de Unix (de los cuales ahora es miembro leguste o no) El problema es que tener el directorio actual en el path puede ser unagujero en la seguridad Supongamos que entramos en un directorio en el que alguien hadejado un Caballo de Troya llamado ls y hacemos un ls como es natural despueacutes deentrar en un directorio nuevo Como el directorio actual viene primero en nuestroPATH el shell encontraraacute esta versioacuten de ls y la ejecutaraacute Sea cual sea el dantildeo quehayan puesto en ese programa lo acabamos de activar (y puede ser un montoacuten de dantildeo)Quien fuera no necesita permisos de root para hacerlo soacutelo hace falta permisos deescritura en el directorio donde se encuentra el falso ls Incluso podriacutea ser su propiodirectorio home si sabe que vamos a estar husmeando por ahiacute en alguacuten momento

En su propio sistema es muy improbable que las personas se esteacuten dejando trampas unas aotras Pero en un gran sistema multiusuario (como muchos ordenadores de universidades)hay un montoacuten de programadores hostiles con los que nunca se ha encontrado Que quieratentar a la suerte o no teniendo en el path depende de la situacioacuten no voy a serdogmaacutetico en ninguacuten sentido soacutelo quiero informar de los riesgos impliacutecitos2 Lossistemas multiusuario son verdaderas comunidades donde la gente puede hacerles cosas alos demaacutes en todo tipo de maneras nunca vistas

El modo en que he dejado mi PATH incluye la mayoriacutea de lo que se ha aprendido hasta ahorasobre variables de entorno Esto es lo que hay actualmente en mi bashrc

export PATH=$shyPATH$shyHOMEbinbinusrbinusrlocalbinusrbinX11usrTeXbin

_____________________________________________

2 Recueacuterdese que siempre se puede ejecutar un programa en el directorio actual siendoexpliacutecito pej foo

Me aprovecho de que la variable HOME se activa antes de que Bash lea el fichero bashrcusando su valor en la construccioacuten del PATH Las llaves () son un nivel antildeadido decita delimitan el tamantildeo de lo que va a evaluar $ de modo que el shell no se confundapor culpa del texto inmediatamente posterior (bin en este caso) Aquiacute hay otro ejemplodel efecto que tienen

homelarry$ echo $shyHOMEfoo

homelarryfoo

homelarry$

Sin las llaves no connseguiriacutea nada porque no hay ninguna variable de entorno llamadaHOMEfoo

homelarry$ echo $HOMEfoo

homelarry$

Quisiera aclarar una cosa en este path el significado de $PATH Lo que hace es incluirel valor de cualquier variable PATH previamente activada en mi nuevo PATH iquestDoacutende sehabraacute activado la variable anterior El archivo etcprofile sirve como una especie debash_profile global comuacuten a todos los usuarios Tener un archivo centralizado como estehace maacutes sencillo para el administrador del sistema antildeadir un directorio nuevo al PATH detodo el mundo sin que cada uno tenga que hacerlo individualmente Si se incluye el pathantiguo en el nuevo no se perderaacuten ninguno de los directorios que el sistema ya hayapreparado

Tambieacuten se puede controlar como aparece el prompt Esto se consigue mediante la variablede entorno PS1 Personalmente quiero un prompt que me indique el path del directorioactual asiacute es como lo hago en mi bashrc

export PS1=$PWD$

Como se puede ver en realidad se usan dos variables La que se activa es PS1 y toma elvalor de PWD que puede ser interpretada como Print Working Directory (imprime eldirectorio de trabajo) o Path to Working Directory(trayectoria al directorio detrabajo) Pero la evaluacioacuten de PWD tiene lugar entre apoacutestrofos agudos Estos apoacutestrofossirven para evaluar la expresioacuten en su interior la cual a su vez evaluacutea la variable PWDSi soacutelo hubieacuteramos hecho export PS1=$PWD nuestro prompt nos habriacutea mostradoconstantemente el path del directorio de trabajo en el momento en que PS1 fue activadaen lugar de actualizarse constantemente mientras cambiamos de directorios Bueno es unpoco confuso y no muy importante en realidad Soacutelo hay que tener en cuenta que senecesita esa clase de apoacutestrofos si se quiere mostrar el directorio actual en el prompt

Quizaacute se prefiera export PS1=$PWDgt o incluso el nombre del sistema

export PS1=`hostname`gt

Diseccionemos este ejemplo un poco maacutes Aquiacute se usa un nuevo tipo de literal elapoacutestrofo grave Esta clase de literal no protege nada de hecho hostname no apareceen ninguna parte del prompt cuando intentamos arrancarlo Lo que sucede realmente es quese evaluacutea el comando dentro de los apoacutestrofos graves y el resultado se guarda en lugardel nombre del comando entrecomillado

Probemos con echo `ls` o wc `ls` A medida que se consiga maacutes experiencia usando elshell esta teacutecnica se hace maacutes y maacutes potente

Hay mucho maacutes por comentar de como se configura el fichero bashrc y aquiacute no haybastante espacio para hacerlo Se puede aprender maacutes leyendo la paacutegina man de bash opreguntando a usuarios experimentados Aquiacute hay un bashrc completo para poderestudiarlo es razonablemente estaacutendar aunque el path es un poco largo

Algunas cosas al azar

ulimit shyc unlimited

export history_control=ignoredups

export PS1=$PWDgt

umask 022

paths especiacuteficos de aplicaciones

export MANPATH=usrlocalmanusrman

export INFOPATH=usrlocalinfo

export PGPPATH=$shyHOMEpgp

PATH principal

homepath=$shyHOME~bin

stdpath=binusrbinusrlocalbinusrucbetcusretcusrgames

pubpath=usrpublicbinusrgnusoftbinusrlocalcontribsbin

softpath=usrbinX11usrlocalbinX11usrTeXbin

export PATH=$shyhomepath$shystdpath$shypubpath$shysoftpath

Teacutecnicamente las llaves no eran necesarias porque los dos puntos son

delimitadores vaacutelidos pero las llaves son una buena costumbre

y no hacen dantildeo

alias

alias ls=ls shyCF

alias fg1=fg 1

alias fg2=fg 2

alias tba=talk sussmanternmcsanlgov

alias tko=talk koldcsoberlinedu

alias tji=talk jimbtotorobioindianaedu

alias mroe=more

alias moer=more

alias email=emacs shyf vm

alias pu=pushd

alias po=popd

alias b=~b

alias ds=dirs

alias ro=rm ~ rm ~

alias rd=rmdir

alias ll=ls shyl

alias la=ls shya

alias rr=rm shyr

alias md=mkdir

alias ed2=emacs shyd floss0 shyfg grey95 shybg grey50

function gco

shy

gcc shyo $1 $1c shyg

92 Los ficheros de inicio de X Window

Mucha gente prefiere trabajar dentro de un entorno graacutefico y para las maacutequinas bajo Unixeso suele significar usar X Si se estaacute acostumbrado al Macintosh o al Microsoft Windowspuede costar un poco acostumbrarse al sistema X Window especialmente al modo en que seconfigura

Con Macintosh o Microsoft Windows se personaliza el entorno desde dentro si se quierecambiar el fondo por ejemplo se pulsa con el ratoacuten sobre el nuevo color en alguacutenprograma graacutefico especial de configuracioacuten En X las opciones por defecto del sistema secontrolan mediante ficheros de texto que se editan directamente en otras palabras seescribe el nombre del color en un fichero para cambiar el color del fondo

No se puede negar que este meacutetodo no es tan llano como el de algunos sistemas de ventanascomerciales Creo que esta tendencia a permanecer basado en texto incluso en un entornograacutefico tiene mucho que ver con el hecho de que X fueacute creado por un puntildeado deprogramadores que simplemente no estaban tratando de escribir un software que pudieranusar sus abuelos Esta tendencia puede cambiar en futuras versiones de X (por lo menosasiacute lo espero3) pero por ahora hay que aprender como entenderse con unos cuantosficheros de texto maacutes Por lo menos nos da un control muy flexible y preciso de nuestraconfiguracioacuten

Aquiacute estaacuten los ficheros maacutes importantes para configurar X

xinitrc Un script arrancado por X cuando se inicia

twmrc Leido por el gestor de X Window twm

fvwmrc Leido por el gestor de X Window fvwm

Todos estos ficheros deberiacutean estar en el directorio $HOME si es que existen

xinitrc es una macro de shell muy simple que se ejecuta cuando invocamos a X Puedehacer cualquiera de las cosas que pueden hacer otras macros de shell pero por supuestosu uso principal es arrancar varios programas de X y establecer paraacutemetros del sistema deventanas El uacuteltimo comando en xinitrc es usualmente el nombre de un gestor de ventanasa ejecutar por ejemplo usrbinX11twm

iquestQueacute tipo de cosas nos gustariacutea poner en xinitrc Quizaacute algunas llamadas al programaxsetroot para hacer que la ventana de fondo (escritorio) y el ratoacuten tengan el aspectoque deseamos Llamadas a xmodmap que informa al servidor4 de como interpretar lassentildeales del teclado

_____________________________________________

3 N del T Yo tambieacuten shy)

4 El servidor soacutelo se refiere al proceso principal en la maacutequina con el que todos losdemaacutes programas de X tienen que comunicar para usar la pantalla Estos otros programas seconocen como clientes y todo el paquete se llama sistema clienteshyservidor

O cualquier otro programa que se quiera iniciar cada vez que se arranque X (por ejemploxclock) Aquiacute estaacute una parte de mi xinitrc el suyo seguramente seraacute distinto asiacute quehay que tomaacuterselo soacutelo como ejemplo

binsh

La primera liacutenea le dice al sistema operativo que shell usar para

interpretar esta macro La macro en siacute misma debe estar marcada como

ejecutable se puede hacer con chmod +x ~xinitrc

xmodmap es un programa que informa al servidor X de como interpretar las

sentildeales del teclado Es definitivamente aconsejable aprender como

funciona Se puede probar con man xmodmap xmodmap shyhelp

xmodmap shygrammar y otras opciones

No garantizo que las expresiones abajo escritas signifiquen nada en tu

sistema (ni siquiera garantizo que signifiquen algo en el miacuteo)

xmodmap shye clear Lock

xmodmap shye keycode 176 = Control_R

xmodmap shye add control = Control_R

xmodmap shye clear Mod2

xmodmap shye add Mod1 = Alt_L Alt_R

xset es un programa para establecer otros paraacutemetros del servidor X

xset m 3 2 amp paraacutemetros del ratoacuten

xset s 600 5 amp preferencias del salvapantallas

xset s noblank amp lo mismo

xset fp+ homelarryxfonts para cxterm

Para aprender maacutes xset shyhelp

Ordena al servidor X que sobreponga fishcursor sobre fishmask y use

el patroacuten resultante como cursor del ratoacuten

xsetroot shycursor homelablarryxfishcursor homelablarryxfishmask amp

Un placentero patroacuten y color de fondo

xsetroot shybitmap homelablarryxpyramidxbm shybg tan

para hacer xrdb aquiacute Y que hay del fichero Xdefaults

Hay que mirar man xsetroot o xsetroot shyhelp para maacutes

informacioacuten sobre el programa usado arriba

Un programa cliente el imponente reloj circular de color de Jim Blandy

usrlocalbincircles amp

Quizaacute os gustariacutea tener un reloj en la pantalla a todas horas

usrbinX11xclock shydigital amp

Permite a programas cliente de X ejecutaacutendose en occscsoberlinedu

mostrarse a siacute mismos aquiacute y lo mismo para jujumcsanlgov

xhost occscsoberlinedu

xhost jujumcsanlgov

Se puede simplemente decirle al servidor X que permita usar aquiacute

a clientes que esteacuten ejecutaacutendose en cualquier otra maacutequina

pero esto es un agujero en la seguridad shyshy ltestos clientes pueden ser

usados por cualquier otro que puede vigilar lo que se teclea cuando se

entra una contrasentildea o algo asiacute

Si se quiere hacerlo de todos modos se puede usar un + para indicar

cualquier nombre de host posible en lugar de un nombre especiacutefico

asiacute

xhost +

Y finalmente arrancar el gestor de ventanas

usrbinX11twm

Alguna gente prefiere otros gestores de ventanas Yo uso twm pero fvwm se

distribuye tambieacuten muchas veces con Linux

usrbinX11fvwm

Noacutetese que algunos comandos son iniciados en segundo plano (pej los que van seguidosde amp) mientras que otros no lo son La distincioacuten estaacute en que algunos programas seiniciaraacuten cuando arranquemos X y seguiraacuten en marcha hasta que salgamos Los otros seejecutan una vez y se cierran inmediatamente xsetroot es uno de eacutestos soacutelo establece laventana principal o el cursor a lo que sea y luego se cierra

Una vez que el gestor de ventanas ha arrancado leeraacute su propio fichero de inicio quecontrola cosas como la composicioacuten de los menuacutes en queacute posiciones se presentan lasventanas cuando se abren control de iconos y otros asuntos terriblemente importantesSi se usa twm el fichero es twmrc en nuestro directorio home Si se usa fvwm elfichero es fvwmrc etc Explicaremos soacutelo estos dos ya que son los gestores de ventanasque maacutes frecuentemente se encontraraacuten con Linux

921 Configuracioacuten de twm

twmrc no es una macro de shell_estaacute escrito en un lenguaje especialmente hecho para twmiexclcreacutealo o no5 Principalmente a la gente en su twmrc le gusta jugar con los estilos dela ventana (colores y demaacutes) y hacer interesantes menuacutes asiacute que ahiacute va un twmrc deejemplo

Indica colores para varias partes de una ventanas Tiene un gran impacto

en la sensacioacuten que transmite el entorno

Color

shy

BorderColor OrangeRed

BorderTileForeground Black

BorderTileBackground Black

TitleForeground black

TitleBackground gold

MenuForeground black

MenuBackground LightGrey

MenuTitleForeground LightGrey

MenuTitleBackground LightSlateGrey

MenuShadowColor black

IconForeground DimGray

IconBackground Gold

IconBorderColor OrangeRed

IconManagerForeground black

IconManagerBackground honeydew

Espero que no tengas un sistema monocromo pero si lo tienes

Monochrome

shy

BorderColor black

BorderTileForeground black

BorderTileBackground white

TitleForeground black

TitleBackground white

He creado beifangbmp con el programa bitmap Aquiacute le digo a twm

que lo use como el patroacuten por defecto para destacar las barras de

tiacutetulo de las ventanas

Pixmaps

shy

TitleHighlight homelarryxbeifangbmp

No os preocupeacuteis por estas cosas son soacutelo para usuarios avanzados shy)

BorderWidth 2

TitleFont shyadobeshynew century schoolbookshyboldshyrshynormalshyshy14shy140shy75shy75shypshy87shyiso8859shy1

MenuFont 6x13

IconFont lucidasansshyitalicshy14

ResizeFont fixed

Zoom 50

RandomPlacement

Estos programas no tendraacuten una barra de tiacutetulo por defecto

NoTitle

shy

stamp

xload

xclock

xlogo

xbiff

xeyes

oclock

xoid

AutoRaise significa que una ventana aparece al frente cuando el ratoacuten

entra en ella Lo encuentro desconcertante asiacute que lo he desactivado

Como puedes ver he heredado mi twmrc de otra gente a quien tampoco le

gustaba Autoraise

AutoRaise

shy

nothing No me gusta autoshyraise Ni a mi A mi tampoco

Aquiacute es donde se define la funcioacuten de los botones del mouse

Noacutetese el patroacuten Un botoacuten del ratoacuten pulsado en la ventana

principal si no se estaacute pulsando ninguna tecla modificadora siempre

hace aparecer un menuacute Otras posiciones usualmente producen

modificaciones de la ventana en alguacuten modo y las teclas modificadoras

se usan junto con los botones del ratoacuten para acceder a las funciones

maacutes avanzadas de manipulacioacuten de ventanas

No hay porqueacute seguir este patroacuten en twmrc shyshy el coacutemo

establecer el entorno es un asunto totalmente personal

Button = KEYS CONTEXT FUNCTION

shyshyshyshyshyshyshyshyshyshyshyshyshyshyshyshyshyshyshyshyshyshyshyshyshyshyshyshyshyshyshyshyshyshy

Button1 = root fmenu main

Button1 = title fraise

Button1 = frame fraise

Button1 = icon ficonify

Button1 = m window ficonify

Button2 = root fmenu stuff

Button2 = icon fmove

Button2 = m window fmove

Button2 = title fmove

Button2 = frame fmove

Button2 = s frame fzoom

Button2 = s window fzoom

Button3 = root fmenu x

Button3 = title flower

Button3 = frame flower

Button3 = icon fraiselower

Puedes escribir tus propias funciones esta se usa en el menuacute

windowops cerca del final de este fichero

Function raiseshynshyfocus

shy

fraise

ffocus

Muy bien abajo estaacuten los menuacutes a los que me referiacutea en la

seccioacuten de los botones del ratoacuten Noacutetese que muchas de estas

entradas de menuacute llaman a submenuacutes a su vez Se pueden tener tantos

niveles como se quiera pero no se pueden tener menuacutes recursivos Ya

lo he probado

menu main

shy

Vanilla ftitle

Emacs fmenu emacs

Logins fmenu logins

Xlock fmenu xlock

Misc fmenu misc

Esto me permite llamar a emacs desde varias maacutequinas diferentes Ver

la seccioacuten sobre ficheros rhosts para maacutes informacioacuten sobre

como funciona

menu emacs

shy

Emacs ftitle

here usrbinemacs amp

fnop

phylo rsh phylo emacs shyd floss0 amp

geta rsh geta emacs shyd floss0 amp

darwin rsh darwin emacs shyd floss0 amp

ninja rsh ninja emacs shyd floss0 amp

indy rsh indy emacs shyd floss0 amp

oberlin rsh csoberlinedu emacs shyd flosslifeuiucedu0 amp

gnu rsh gateshy1gnuaimitedu emacs shyd flosslifeuiucedu0 amp

Esto me permite llamar a xterms desde varias maacutequinas diferentes Ver

la seccioacuten sobre ficheros rhosts para maacutes informacioacuten sobre

como funciona

menu logins

shy

Logins ftitle

here usrbinX11xterm shyls shyT `hostname` shyn `hostname` amp

phylo rsh phylo xterm shyls shydisplay floss0 shyT phylo amp

geta rsh geta xterm shyls shydisplay floss0 shyT geta amp

darwin rsh darwin xterm shyls shydisplay floss0 shyT darwin amp

ninja rsh ninja xterm shyls shydisplay floss0 shyT ninja amp

indy rsh indy xterm shyls shydisplay floss0 shyT indy amp

El salvapantallas xlock llamado con varias opciones (cada una de

ellas da una bonita imagen)

menu xlock

shy

Hop xlock shymode hop amp

Qix xlock shymode qix amp

Flame xlock shymode flame amp

Worm xlock shymode worm amp

Swarm xlock shymode swarm amp

Hop NL xlock shymode hop shynolock amp

Qix NL xlock shymode qix shynolock amp

Flame NL xlock shymode flame shynolock amp

Worm NL xlock shymode worm shynolock amp

Swarm NL xlock shymode swarm shynolock amp

Programas de todo tipo que uso ocasionalmente

menu misc

shy

Xload usrbinX11xload amp

XV usrbinX11xv amp

Bitmap usrbinX11bitmap amp

Tetris usrbinX11xtetris amp

Hextris usrbinX11xhextris amp

XRoach usrbinX11xroach amp

Analog Clock usrbinX11xclock shyanalog amp

Digital Clock usrbinX11xclock shydigital amp

Esto es para lo que uso el botoacuten central del ratoacuten

menu stuff

shy

Chores ftitle

Sync binsync

Who who _ xmessage shyfile shy shycolumns 80 shylines 24 amp

Xhost + usrbinX11xhost + amp

Rootclear homelarrybinrootclear amp

Funciones de X que a veces conviene usar

menu x

shy

X Stuff ftitle

Xhost + xhost + amp

Refresh frefresh

Source twmrc ftwmrc

(De)Iconify ficonify

Move Window fmove

Resize Window fresize

Destroy Window fdestroy

Window Ops fmenu windowops

fnop

Kill twm fquit

Este es un submenuacute del de arriba

menu windowops

shy

Window Ops ftitle

Show Icon Mgr fshowiconmgr

Hide Icon Mgr fhideiconmgr

Refresh frefresh

Refresh Window fwinrefresh

twm version fversion

Focus on Root funfocus

Source twmrc ftwmrc

Cut File fcutfile

(De)Iconify ficonify

DeIconify fdeiconify

Move Window fmove

ForceMove Window fforcemove

Resize Window fresize

Raise Window fraise

Lower Window flower

Raise or Lower fraiselower

Focus on Window ffocus

RaiseshynshyFocus ffunction raiseshynshyfocus

Destroy Window fdestroy

Kill twm fquit

_____________________________________________

5 Eacuteste es uno de los problemas de los ficheros de configuracioacuten normalmente usan supropio lenguaje de comandos Esto significa que los usuarios se vuelven muy buenos a lahora de aprender lenguajes nuevos raacutepidamente Supongo que habriacutea estado bien que losprimeros programadores de Unix se hubieran puesto de acuerdo en alguacuten estaacutendar de ficherode inicio pero para ser justo es difiacutecil de predecir que tipo de informacionesnecesitaraacuten los programas

iexclGuau Creedme este no es el twmrc maacutes largo que he llegado a ver Es probable que convuestra versioacuten de X vinieran algunos ejemplos de archivos twmrc bastante decentes Sepueden buscar dentro del directorio usrlibX11twm o en usrX11libX11twm

Un defecto de programa que hay que vigilar en los ficheros twmrc es no olvidarse deponer el amp despueacutes de un comando en un menuacute Si se nota que X se cuelga cuando se usanciertos comandos lo maacutes probable es que eacutesta sea la causa Hay que salir de X con|_Ctrl_|shy|_Alt_|shy|_Retroceso_| editar twmrc y probar otra vez

922 Configuracioacuten de fvwm

Si se usa fvwm el directorio usrlibX11fvwm (o usrX11libX11fvwm) tiene algunosejemplos de ficheros de configuracioacuten

[Compantildeeros No seacute nada sobre fvwm aunque supongo que sacareacute algo en claro de losficheros de ejemplo igual que el lector shy) Ademaacutes dado el pequentildeo pero decentesystemtwmrc en el directorio arriba mencionado me pregunto si vale la pena que de estelargo ejemplo con mi propio twmrc De momento estaacute aquiacute pero no seacute si lo dejaremos onoshyKarl]

93 Otros ficheros de inicio

Otros ficheros de inicio dignos de mencioacuten son

emacs Leiacutedo por el editor de texto Emacs cuando arranca

netrc Da los nombres y contrasentildeas por defecto para ftp

rhosts Hace una cuenta accesible remotamente

forward Para redireccioacuten automaacutetica del correo

931 El fichero de configuracioacuten de Emacs

Si se usa emacs como editor principal entonces el fichero emacs es muy importante Sediscute con extensioacuten en el Capiacutetulo 8

932 Configuracioacuten por defecto del FTP

El fichero netrc permite tener ciertas configuraciones por defecto cada vez que searranca ftp Aquiacute hay un pequentildeo netrc de ejemplo

machine flosslifeuiucedu login larry password fishSticks

machine darwinlifeuiucedu login larry password fishSticks

machine getalifeuiucedu login larry password fishSticks

machine phylolifeuiucedu login larry password fishSticks

machine ninjalifeuiucedu login larry password fishSticks

machine indylifeuiucedu login larry password fishSticks

machine clonemcsanlgov login fogel password doorm

machine ospreymcsanlgov login fogel password doorm

machine ternmcsanlgov login fogel password doorm

machine altairmcsanlgov login fogel password doorm

machine dalekmcsanlgov login fogel password doorm

machine jujumcsanlgov login fogel password doorm

machine sunsiteuncedu login anonymous password larrycsoberlinedu

Cada liacutenea de netrc especifica un nombre de maacutequina un nombre de cuenta de acceso ausar por defecto con esa maacutequina y una contrasentildea Esto es muy uacutetil si se usa ftpcontinuamente y se estaacute harto de teclear el nombre de acceso y la contrasentildea en cada unoEl programa de ftp intentaraacute acceder automaacuteticamente usando los datos del fichero netrcsi se hace ftp a una de las maacutequinas listadas alliacute

Se puede obligar a ftp a ignorar el fichero netrc y no intentar acceder de maneraautomaacutetica arrancaacutendolo con la opcioacuten shyn ftp shyn

Hay que asegurarse de que el fichero netrc soacutelo es legible por el usuario Se puede usarel programa chmod para establecer los permisos de lectura Si otra gente puede leerlosignifica que pueden encontrar su contrasentildea de acceso a varios otros ordenadores Estoes un agujero en la seguridad tan grande como uno pueda tenerlo Como recomendacioacuten paraser cuidadoso ftp y otros programas que miran el fichero netrc no funcionaraacuten si lospermisos de lectura del fichero son incorrectos

Hay mucho maacutes sobre el fichero netrc de lo que se ha explicado aquiacute Cuando se tenga unaoportunidad hay que probar man netrc o man ftp

933 Permitiendo un acceso remoto sencillo a su cuenta

Si tiene un fichero rhosts en su directorio $HOME le permitiraacute usar programas en estamaacutequina de forma remota Por ejemplo se puede estar registrado en la maacutequinacsoberlinedu pero con un rhosts correctamente configurado en flosslifeuiucedu sepuede usar un programa en floss y presentar el resultado en cs sin tener que registrarseo teclear una contrasentildea frente a floss

El archivo rhosts se ve maacutes o menos asiacute

frobnozzcsknowledgeedu jsmith

aphroditeclassicshahvaahdedu wphilps

frobbohoolacom trixie

El formato es muy directo un nombre de maacutequina seguido de un nombre de usuarioSupongamos que este ejemplo es en realidad mi archivo rhosts en flosslifeuiuceduEsto significariacutea que puedo usar programas en floss y ver el resultado en cualquiera delas maacutequinas listadas siempre y cuando yo esteacute tambieacuten registrado como el usuariocorrespondiente a cada maacutequina cuando intento ejecutar el programa

El mecanismo exacto con el que uno usa un programa remoto es normalmente el programa rshSignifica remote shell(shell remoto) y lo que hace es iniciar un shell en la maacutequinaremota y ejecutar el comando especificado Por ejemplo

frobbo$ whoami

trixie

frobbo$ rsh flosslifeuiucedu ls ~

footxt mbox urlps snaxtxt

frobbo$ rsh flosslifeuiucedu more ~snaxtxt

[snaxtxt aparece pagina a pagina aqui]

El usuario trixie en flosslifeuiucedu que teniacutea el fichero rhosts de ejemplomostrado antes permite expliacutecitamente a trixie en frobbohoolacom usar programascomo si fuera trixie de floss

No hay porqueacute tener el mismo nombre de usuario en todas las maacutequinas para que rhostsfuncione Se puede usar la opcioacuten shyl con rsh para especificar a la maacutequina remota cualnombre de usuario se quiere usar para registrarse Si ese nombre existe en la maacutequinaremota y tiene un fichero rhosts con el nombre de la maacutequina local y el nombre deusuario correspondiente entonces la orden incluida con rsh se ejecutaraacute

frobbo$ whoami

trixie

frobbo$ rsh shyl larry flosslifeuiucedu ls ~

[Inserta aqui un listado de mi directorio en floss]

Esto funcionaraacute si el usuario larry en flosslifeuiucedu tiene un fichero rhostsque permite a trixie de frobbohooplacom usar programas en su cuenta Si son o no lamisma persona es irrelevante la uacutenica cosa importante son los nombres de usuario losnombres de las maacutequinas y la fila referente a floss en el rhosts de Larry Noacutetese queel fichero rhosts de Trixie en frobbo no importa soacutelo cuenta el de la maacutequina remota

Hay otras combinaciones que se pueden poner en un fichero rhosts por ejemplo se puededejar en blanco el nombre de usuario detraacutes del nombre de una maacutequina remota parapermitir a cualquier usuario de esa maacutequina que ejecute programas en la maacutequina localEsto es por supuesto un riesgo en la seguridad alguien podriacutea ejecutar remotamente unprograma que borre mis archivos por el simple hecho de tener una cuenta en ciertamaacutequina Si se va a hacer cosas como esta entonces hay que asegurarse de que el ficherorhosts es legible soacutelo por el usuario implicado y por nadie maacutes

934 Redireccioacuten de correo

Tambieacuten se puede tener un fichero forward el cual no es un fichero de configuracioacutenestrictamente hablando Si contiene direcciones de eshymail entonces todo el correo quellegue al usuario se redirigiraacute a esas direcciones Esto es uacutetil cuando se tienen cuentasen varios sistemas pero se quiere leer el correo desde un solo sitio

Hay una gran cantidad de otros ficheros de configuracioacuten posibles La cantidad exactavariaraacute de sistema a sistema y depende de los programas instalados Una manera de sabermaacutes es mirar todos los archivos en el directorio $HOME que empiecen por No es seguroque todos sean ficheros de configuracioacuten pero seguro que la mayoriacutea siacute lo es

94 Veamos algunos ejemplos

El ejemplo definitivo que puedo dar es mostrar un sistema Linux en funcionamiento Asiacuteque si teneacuteis acceso a Internet estaacuteis invitados a hacer telnet a flosslifeuiuceduRegistraacuteos como guest contrasentildea explorer y husmead por dentro Muchos de losarchivos de ejemplo se pueden encontrar en homekfogel pero tambieacuten hay otrosdirectorios de usuarios Sois libres de copiar cualquier cosa que se pueda leer Porfavor tened cuidado floss no es un sitio terriblemente seguro y ciertamente se puedeconseguir acceso como root si uno lo intenta lo suficiente Prefiero creer en laconfianza maacutes que en la vigilancia constante para mantener la seguridad

Capiacutetulo 10

Hablando con los demaacutes

Una nocioacuten fundamental de Usenet es que es una cooperativa

Cuando ya van para diez los antildeos que llevo en Usenet discrepo con loanterior La nocioacuten fundamental de Usenet es el insulto airado

Chuq Von Rospach

Los modernos sistemas operativos tipo Unix son muy buenos a la hora de hablar con otrasmaacutequinas y funcionar en red Dos maacutequinas Unix diferentes pueden intercambiar informacioacutende muchas muchas maneras distintas Este capiacutetulo va a intentar contar coacutemo se puedesacar provecho de esta gran facilidad para la comunicacioacuten

Trataremos de cubrir el correo electroacutenico las noticias de Usenet y diversas utilidadesbaacutesicas de comunicaciones de Unix

101 Correo electroacutenico

Una de las facilidades maacutes populares que ofrece Unix de forma estaacutendar es el correoelectroacutenico

Con eacutel evitamos el habitual folloacuten de buscar un sobre una hoja de papel un laacutepiz unsello y un servicio postal A cambio debemos enfrentarnos al folloacuten de pelear con elordenador

1011 Enviar correo

Todo lo que hay que hacer es teclear mail nombre y escribir el mensaje

Por ejemplo supongamos que queremos enviar correo a un usuario que se llama sam

homelarry$ mail sam

Subject Documentacion del usuario

Solo estoy probando el sistema de correo

[Ctrlshyd]

homelarry$

homelarry$

El programa mail es muy simple Como cat acepta texto de la entrada estaacutendar liacutenea aliacutenea hasta que recibe un caraacutecter de finshydeshytexto como uacutenico caraacutecter en una liacutenea|_Ctrlshyd_| Asiacute para enviar nuestro mensaje tuvimos que pulsar |_Intro_| y despueacutes|_Ctrlshyd_| Usar mail es la manera maacutes raacutepida de mandar correo y es bastante uacutetil cuandose usa con redireccioacuten de entrada yo salida Por ejemplo si quisieacuteramos enviar porcorreo electroacutenico el fichero report1 a Sam podriacuteamos escribir mail sam lt report1 o incluso sort report1 _ mail sam

Sin embargo la desventaja de usar mail para enviar correo es su primitiviacutesimo editoriexclNo se puede cambiar ni una liacutenea una vez se ha pulsado |_Intro_| Asiacute que yo recomiendomandar correo (cuando no se use redireccioacuten) con el modo mail del Emacs El tema se trataen la Seccioacuten 810

1012 Leer el correo

shy mail [nombre]

El programa mail ofrece una forma algo liosa de leer el correo Si se teclea mail sinparaacutemetros apareceraacute lo siguiente

homelarry$ mail

No mail for larry

homelarry$

No mail for larry significa No hay correo para larry

Me voy a enviar correo a miacute mismo para poder utilizar el lector

homelarry$ mail larry

Subject Sapos

Y ranas

EOT

homelarry$ echo culebras _ mail larry

homelarry$ mail

Mail version 55 6190 Type for help

usrspoolmaillarry 2 messages 2 new

gtN 1 larry Tue Aug 30 1811 10211 Sapos

N 2 larry Tue Aug 30 1812 9191

amp

El siacutembolo peticioacuten de oacuterdenes del programa mail es un et a la inglesa (amp) Acepta unpar de oacuterdenes sencillas y muestra una breve pantalla de ayuda si se pulsa seguidode |_Intro_| Las oacuterdenes baacutesicas de mail son

t listashydeshymensajes Mostrar los mensajes en la pantalla

d listashydeshymensajes Borrar los mensajes

s listashydeshymensajes fichero Guardar los mensajes en fichero

r listashydeshymensajes Responder a los mensajes_esto es comenzar a escribir unnuevo mensaje dirigido a quien fuera que envioacute los mensajes referidos

q Salir y guardar los mensajes que no hayan sido borrados en un ficherollamado mbox en el directorio raiacutez del usuario

iquestQueacute es una listashydeshymensajes Consiste en una lista de nuacutemeros separados por espacios oincluso un rango de los mismos como 2shy4 (lo que es equivalente a 2 3 4) Asiacute mismo sepuede introducir el nombre del remitente de este modo la orden t sam mostraraacute todos losmensajes provenientes de Sam Si se omite la listashydeshymensajes se supone que la orden serefiere al uacuteltimo mensaje mostrado

Leer el correo con el programa mail presenta varios inconvenientes El primero es que siun mensaje es maacutes largo que la pantalla iexclel programa mail no se detiene Habraacute queguardar el mensaje en un fichero y usar more sobre eacutel despueacutes El segundo es que noofrece una buena interfaz para manejar el correo antiguo cuando se quiere guardar elcorreo para leerlo maacutes tarde

Emacs tambieacuten permite leer el correo con rmail pero este libro no lo cubreAdicionalmente la mayoriacutea de los sistemas Linux vienen con algunos lectores de correoadicionales ademaacutes de mail como elm o pine

102 Noticias maacutes que de sobra

103 Localizar a la gente

El programa finger permite obtener informacioacuten de otros usuarios del sistema y de todo elmundo Sin duda el programa finger recibioacute este nombre por los anuncios de la ATampT queexhortaban a la gente a salir y tocar a alguien Dado que el Unix tiene sus oriacutegenes enla ATampT probablemente eso le hiciera gracia al autor

shy finger [shyslpm] [usuario][maquina]

Los paraacutemetros opcionales de finger pueden resultar algo liosos La verdad es que no estan difiacutecil Se puede solicitar informacioacuten de un usuario local (sam) informacioacuten deotra maacutequina (lionsden) informacioacuten sobre un usuario remoto (samlionsden) osimplemente informacioacuten sobre la maacutequina local (nada)

Otra caracteriacutestica es que si se pide informacioacuten sobre un usuario y no hay ninguacuten nombrede cuenta que coincida exactamente con el dado trataraacute de emparejar el nombre real conlo que se haya especificado Eso significa que si ejecutamos finger Greenfield noscontestaraacute que existe la cuenta sam de Sam Greenfield

homelarry$ finger sam

Login sam Name Sam Greenfield

Directory homesam Shell bintcsh

Last login Sun Dec 25 1447 (EST) on tty2

No Plan

homelarry$ finger greenfiegaussrutgersedu

[gaussrutgersedu]

Login name greenfie In real life Greenfie

Directory gaussu1greenfie Shell bintcsh

On since Dec 25 151941 on ttyp0 from tiptopshyslipshy6439

13 minutes Idle Time

No unread mail

Project Debes estar bromeando de que proyecto me hablas

No Plan

homelarry$ finger

Login Name Tty Idle Login Time Office Office Phone

larry Larry Greenfield 1 351 Dec 25 1250

larry Larry Greenfield p0 Dec 25 1251

homelarry$

La opcioacuten shys hace que finger utilice siempre la forma abreviada (la que se obtienenormalmente cuando se hace finger a una maacutequina) y la opcioacuten shyl hace que use siemprela forma larga incluso al hacer finger a una maacutequina La opcioacuten shyp hace que finger nomuestre los ficheros forward plan ni project y la shym hace que cuando se hapedido informacioacuten sobre un usuario soacutelo de informacioacuten de un nombre de cuenta que nointente emparejar el nombre que se le da con un nombre real

1031 Planes y proyectos

Pero iquestqueacute es eso de plan y project Son ficheros que existen en el directorio raiacutez deun usuario y que se muestran cuando se le hace finger Cada uno puede crear sus propiosficheros plan y project la uacutenica restriccioacuten es que soacutelo se muestra la primera liacuteneadel fichero project Ademaacutes todo el mundo debe tener permisos de buacutesqueda (la x deejecucioacuten) del directorio raiacutez del usuario en cuestioacuten (chmod a+x ~) y debe serposible para todo el mundo leer los ficheros plan y project (chmod a+r ~plan~project )

104 Uso remoto de sistemas

shy telnet sistemashyremoto

La forma maacutes habitual de usar un sistema Unix remoto es con telnet telnet es normalmenteun programa muy sencillo de usar

homelarry$ telnet lionsden

Trying 12823641

Connected to lionsden

Escape character is ^]

lionsden login

Como puede verse despues de teclear telnet se nos presenta un mensaje de acceso alsistema remoto Podemos introducir cualquier nombre de usuario (iexclsiempre que conozcamosla contrasentildea) y despueacutes usar el sistema remoto casi como si estuvieacuteramos sentados alliacute

La manera normal de salir de telnet es hacer logout en el sistema remoto Otra forma estecleando la secuencia de escape que (como en el ejemplo de arriba) es habitualmente||_Ctrlshy]_||

Esto nos presenta un nuevo siacutembolo del peticioacuten de oacuterdenes telnetgt Entonces podemosteclear quit y |_Intro_| y la conexioacuten con el otro sistema seraacute cerrada y el programatelnet finalizaraacute (Si cambiaacuteramos de idea simplemente pulsando |_Intro_| volveriacuteamos alsistema remoto)

Si se estaacuten usando las X se puede crear un nuevo xterm para el otro sistema al queestamos saltando Con la orden xterm shytitle lionsden shye telnet lionsden amp crearemosuna nueva ventana xterm que automaacuteticamente ejecute telnet (Si eso se hace confrecuencia probablemente seraacute deseable crear un alias o un programa de shell que lo hagaautomaacuteticamente)

105 Intercambio de ficheros

shy ftp sistemashyremoto

La manera usual de intercambiar ficheros entre sistemas Unix es ftp acroacutenimo queproviene de file transfer protocol (protocolo de transferencia de ficheros) Trasejecutar la orden ftp se nos pediraacute que nos identifiquemos de forma muy parecida a contelnet Despueacutes de hacerlo aparece un siacutembolo de peticioacuten de oacuterdenes especial el siacutemboloftp

La orden cd funciona de la manera habitual pero en el sistema remoto cambia dedirectorio en el otro sistema De la misma forma la orden ls lista los ficheros en elsistema remoto

Las dos oacuterdenes maacutes importantes son get y put get transfiere un fichero del sistemaremoto al local y put lleva un fichero del sistema local al remoto Ambas oacuterdenes tienenefecto en el directorio local en el que se haya arrancado ftp y en el directorio remotoen el que se esteacute en ese momento (que se puede haber cambiado con la orden cd )

Un problema habitual con ftp es la distincioacuten entre ficheros de texto y binarios ftp esun protocolo muy antiguo y antes teniacutea ventajas suponer que los ficheros que setransferiacutean eran de texto El comportamiento por omisioacuten de algunas versiones de ftp eseacutese lo que significa que los programas que se enviacuteen o reciban se corromperaacuten Porseguridad conviene usar la orden binary antes de empezar a transferir ficheros

Para salir de ftp se usa la orden bye

106 Viajando por la telarantildea

La Telarantildea Mundial (World Wide Web) o WWW es un uso muy popular de la InternetConsiste en un conjunto de paacuteginas cada una con su propia URL_Localizador Uniforme deRecursos asociado

Los URLs son simpaacuteticas secuencias de caracteres de la forma lthttpwwwrutgersedugtLas paacuteginas estaacuten por lo general escritas en HTML (Lenguaje de Composicioacuten deHipertexto) El HTML permite al autor de un documento enlazar ciertas palabras frases oimaacutegenes con otros documentos que se hallen en cualquier lugar de la telarantildea Cuando unusuario lee un documento puede moverse raacutepidamente a otro picando en una palabra clave oen un botoacuten y se le mostraraacute el otro documento en cuestioacuten que posiblemente esteacute a milesde kiloacutemetros del primero

shy netscape [url]

El navegador maacutes popular de Linux es netscape se trata de un navegador comercial quevende (y regala) Netscape Communications Corporation netscape soacutelo funciona con las X

netscape trata de ser tan faacutecil de usar como sea posible y utiliza el conjunto de widgetsMotif para lograr una apariencia muy a lo Microsoft Windows El conocimiento baacutesico parapoder usar netscape es que las palabras azules subrayadas son enlaces asiacute como muchas delas imaacutegenes (Se puede averiguar cuales imaacutegenes son enlaces picando en ellas) Picandoen esas palabras con el botoacuten izquierdo del ratoacuten aparece una nueva paacutegina

Linux soporta muchos navegadores maacutes incluyendo el navegador original lynx lynx es unnavegador orientado a texto_no muestra ninguna imagen que es con lo que actualmente serelaciona al Web pero funciona sin las X

shy lynx [url]

Es un poco maacutes complicado aprender a usar lynx pero normalmente se le coge el trucodespueacutes de jugar un rato con las flechas del cursor Las flechas hacia arriba y haciaabajo nos mueven entre los enlaces de una paacutegina La flecha hacia la derecha sigue elenlace seleccionado (resaltado) La flecha hacia la izquierda vuelve a la paacuteginaanterior Para salir de lynx se debe pulsar |_q_| lynx tiene muchas oacuterdenes maacutesconsuacuteltese la paacutegina del manual

Capiacutetulo 11

Comandos divertidos

Bueno la mayoriacutea de la gente que tiene que ver con los comandos de UNIX expuestos eneste capiacutetulo no estaraacuten de acuerdo con este tiacutetulo iexclQue diablos Se me ha ensentildeado queel interfaz del Linux es muy estaacutendar y ahora tenemos un grupo de comandos cada unotrabajando de una manera completamente diferente Nunca recordareacute todas esas opciones iquestydice que son divertidos

Siacute Vd ha visto un ejemplo del humor de los hackers1 Ademaacutes miacuterelo desde el ladopositivo no hay comandos del MSshyDOS equivalentes a eacutestos Si los necesita tiene queadquirirlos por separado y nunca sabraacute como seraacute su interfaz Aquiacute hay un uacutetil (yeconoacutemico) valor antildeadido iexcliexclasiacute que disfruacutetelo

El conjunto de comandos explicados en este capiacutetulo cubre find que permite al usuariobuscar grupos de ficheros especificados dentro del aacuterbol de directorios tar uacutetil paraempaquetar alguacuten archivo para ser enviado o soacutelo salvado dd el multicopista de bajonivel y sort el cual siacute clasifica ficheros Una uacuteltima condicioacuten estos comandosno estaacuten bajo ninguacuten concepto estandarizados y si bien podriacuteamos encontrar un nuacutecleo deopciones comunes en todos los sistemas IX las versiones (de GNU) que se explican maacutesabajo y Vd puede encontrar en su sistema Linux usualmente poseen muchas maacutescapacidades Por tanto si Vd planea usar otros sistemas operativos UNIX por favor noolvide comprobar la paacutegina del manual del sistema en cuestioacuten para aprender las quizaacutes notan pequentildeas diferencias

111 find el buscador de ficheros

1111 Generalidades

Entre los diversos comandos vistos hasta aquiacute habiacutea algunos que permitiacutean al usuariobajar recursivamente el aacuterbol del directorio para llevar a cabo alguna accioacuten losejemplos canoacutenicos son ls shyR y rm shyR Bien find es el comando recursivo Cada vezque piense Bueno tengo que hacer tal cosa con todos esos ficheros en mi propiaparticioacuten hariacutea mejor en pensar en usar find En cierto sentido el hecho que findencuentre ficheros es solo un efecto secundario su ocupacioacuten real es evaluar

_____________________________________________

1 NT La palabra Hacker en este contexto se refiere a una persona con profundosconocimientos de informaacutetica

La estructura baacutesica del comando es como sigue

shy find ruta [ ] expresioacuten [ ]

Esto es al menos en la versioacuten de GNU otras versiones no permiten especificar maacutes queuna ruta y ademaacutes es muy infrecuente la necesidad de hacer tal cosa La explicacioacutenburda de la sintaxis del comando es bastante simple Vd indica desde doacutende quiereempezar la buacutesqueda (la parte de la ruta con el find de GNU puede omitir esto y seraacute

tomado por defecto el directorio en uso ) y que clase de buacutesqueda quiere realizar (laparte de la expresioacuten)

El comportamiento estaacutendar del comando es un poco engantildeoso por lo que maacutes vale tenerloen cuenta Supongamos que en su directorio principal de usuario existe un directoriollamado basura el cual contiene un fichero foobar Vd felizmente escribe find shynamefoobar (lo que como puede adivinar busca ficheros llamados foobar) y obtiene nadamaacutes que otra vez el prompt El problema reside en el hecho de que find es por defecto uncomando silencioso soacutelo devuelve 0 si la buacutesqueda fue completada (con o sin haberencontrado algo) o un valor distinto de cero si hubiera habido alguacuten problema Esto noocurre con la versioacuten que Vd puede encontrar en el Linux pero de todas maneras es uacutetilrecordarlo

1112 Expresiones

La parte de la expresioacuten puede ser dividida en cuatro grupos diferentes de palabrasclave opciones tests acciones y operadores Cada uno de ellos puede devolver un valorverdaderofalso junto con un efecto secundario La diferencia entre los grupos semuestra a continuacioacuten

opciones afecta a la funcioacuten general de find maacutes que al procesamiento de un solofichero Un ejemplo es shyfollow el cual instruye a find para seguir enlaces simboacutelicosen vez de soacutelo presentar el nodoshyi Siempre devuelven verdadero

tests son verdaderos tests (por ejemplo shyempty comprueba si el fichero estaacute vaciacuteo) ypuede devolver verdadero o falso

acciones tienen tambieacuten un efecto secundario sobre el nombre del fichero consideradoPueden asimismo devolver verdadero o falso

operadores no devuelven realmente un valor (convencionalmente pueden ser consideradoscomo verdaderos) y se usan para construir expresiones sinteacuteticas Un ejemplo es shyor el cual hace la OR loacutegica de las dos subexpresiones a su lado Note que cuando seyuxtaponen expresiones estaacute involucrada una shyand

Debe advertir que find depende del inteacuterprete de comandos para tener la liacutenea de comandosanalizada sintaacutecticamente esto significa que todas las palabras clave deben serintroducidas entre espacios en blanco y ademaacutes que hay un montoacuten de caracteres bonitosque deberaacuten precederse de escape si no seriacutean destrozados por el propio inteacuterprete decomandos Cada viacutea de escape (barra invertida simples y dobles comillas) estaacute bien enlos ejemplos las palabras clave de un solo caraacutecter se sentildealizaraacuten en general mediantecon una barra invertida porque es la manera maacutes simple (al menos en mi opinioacuten iexclY soyyo quien estaacute escribiendo estas notas)

1113 Opciones

Aquiacute estaacute la lista de todas las opciones conocidas de la versioacuten GNU de find Recuerdeque siempre devuelven verdadero

shydaystart mide el tiempo transcurrido no desde hace 24 horas si no desde la uacuteltimamedianoche

Un auteacutentico hacker probablemente no entenderaacute la utilidad de tal opcioacuten pero untrabajador que programa de ocho a cinco si lo apreciaraacute

shydepth procesa el contenido de cada directorio antes que el directorio en si A decirverdad no conozco muchos usos de esto aparte de una emulacioacuten del comando rm shyF (por

supuesto Vd no puede borrar un directorio antes de que todos sus ficheros sean borradostambieacuten

shyfollow respeta (es decir sigue) los enlaces simboacutelicos Implica la opcioacuten shynoleaf ver abajo

shynoleaf desactiva una optimizacioacuten que dice Un directorio contiene dos subdirectoriosmenos que su cuenta de enlaces riacutegidos2 Si el mundo fuera perfecto todos losdirectorios seriacutean referenciados por cada uno de sus subdirectorios (a causa de la opcioacuten) como dentro de siacute mismo y por su nombre real desde su directorio padre

Esto significa que cada directorio debe ser referenciado al menos dos veces (una por siacutemismo otra por su directorio padre) y cualquier referencia adicional es porsubdirectorios En la praacutectica sin embargo los enlaces simboacutelicos y los sistemas defichero distribuidos3 pueden alterar esto Esta opcioacuten hace que find funcione ligeramentemaacutes despacio pero debe dar los resultados esperados

shymaxdepth niveles shymindepth niveles donde niveles es un entero no negativo Indicanrespectivamente que a lo sumo o que al menos niveles de directorios deberiacutean explorarseUn par de ejemplos son obligados shymaxdepth 0 indica que el comando deberiacutea realizarsesoacutelo sobre los argumentos de la liacutenea de comandos es decir sin bajar recursivamente elaacuterbol de directorios shymindepth 1 inhibe el procesamiento del comando para losargumentos en la liacutenea de comandos pero se consideran todos los otros ficheros debajo

shyversion imprime la versioacuten en uso del programa

shyxdev el cual es un nombre engantildeoso instruye a find para no cruzarse de dispositivo4es decir no cambiarse de sistema de ficheros Es muy uacutetil cuando se tiene que buscaralgo en el sistema de ficheros raiacutez en muchas maacutequinas es una particioacuten algo pequentildeapero sino iexclun find buscariacutea en la estructura entera Podemos asiacute evitar lossistemas de archivo que no son promisorios

_____________________________________________

2 NT hard link count

3 Los sistemas de fichero distribuidos permiten a los ficheros mostrarse como si fueranlocales a una maacutequina cuando realmente estaacuten situados en alguacuten otro lugar

4 NT to cross device

1114 Test

Los dos primeros test son muy simples de comprender shyfalse siempre devuelve falsomientras que shytrue siempre devuelve verdadero Otros test que no necesitan laespecificacioacuten de un valor son shyempty el cual devuelve verdadero si el fichero estaacutevaciacuteo y el par shynouser shynogroup los cuales devuelven verdadero en el caso queninguna entrada en etcpasswd o etcgroup cuadre con el identificador de usuariogrupodel propietario del fichero Veamos un problema comuacuten en los sistemas multiusuario seborra un usuario pero los ficheros pertenecientes a eacutel permanecen en la parte maacutesextrantildea de los sistemas de ficheros y debido a las leyes de Murphy ocupan mucho espacio

El par de test que hemos visto en uacuteltimo lugar nos permitiraacute encontrar esos archivos Porsupuesto es posible buscar un usuario o grupo especiacutefico Los test son shyuid nn y shygidnn Desafortunadamente no es posible dar directamente el nombre del usuario sino quees necesario usar el identificador numeacuterico nn

Ademaacutes estaacute permitido usar las formas +nn que significa un valor estrictamente maacutesgrande que nn y shynn que significa un valor estrictamente maacutes pequentildeo que nn Estoes bastante estuacutepido en el caso de identificadores de usuario5 pero se volveraacute praacutecticocon otros test

Otra opcioacuten uacutetil es shytype c la cual devuelve verdadero si el fichero es del tipoespecial de caraacutecter Los mnemoacutenicos para las posibles selecciones son las mismas letrasque se encuentran en ls entonces tenemos bloque cuando el fichero es uno especial debloque directorio pipes para tuberiacuteas designadas6 link para enlaces simboacutelicos ysocketssockets7 Los ficheros regulares se indican con file

Un test relacionado es shyxtype que es similar a shytype excepto en el caso de enlacessimboacutelicos

Si se ha proporcionado la opcioacuten shyfollow se examina el enlace en lugar del ficheroal que se apunta El test shyfstype type no tiene nada que ver en este caso lo que seexamina es el tipo del sistema de ficheros Creo que la informacioacuten se consigue delfichero etcmtab el uacutenico que presenta los sistemas de ficheros montados estoy seguroque los tipos nfs tmp msdos y ext2 estaacuten entre los reconocidos

Los test shyinum nn y shylinks nn examinan si el fichero tiene nuacutemero de nodoshyi nn onn enlaces mientras que shysizenn es verdadero si el fichero tiene nn bloques de 512bytes asignados (Bueno no precisamente para ficheros disgregados los bloques noasignados tambieacuten se cuentan)

Como hoy en diacutea el resultado de ls shys no siempre se mide en trozos de 512 bytes (Linuxpor ejemplo usa 1 kbyte como la unidad) es posible adicionar a nn el caracter b elcual significa contar en bytes o k contar en kilobytes

Los bits de permiso son examinados a traveacutes del test shyperm mode Si el modo no estaacuteantecedido por un signo entonces los bits de permiso del fichero deben cuadrarexactamente con ellos

Un shy al principio significa que todos los bits de permiso deben ser puestos a uno perono hace suposiciones sobre los otros un + al principio se satisface soacutelo si cualquierade los bits estaacute a uno

_____________________________________________

5 NT UIDs

6 NT named pipes

7 NT enchufe

iexclUps Olvideacute decir que el modo se escribe en octal o simboacutelicamente como se usa enchmod El proacuteximo grupo de test estaacute relacionado con el tiempo que hace que se hautilizado un fichero por uacuteltima vez Esto viene bien cuando un usuario ha llenado suespacio ya que usualmente hay muchos ficheros que no usaba desde hace antildeos y cuyosignificado ha olvidado El problema es localizarlos y find es la uacutenica esperanza a lavista shyatime nn es verdadero si la uacuteltima vez que se accedioacute al fichero fue hace nndiacuteas shyctime nn si el estado del fichero fue cambiado por uacuteltima vez hace nn diacuteas porejemplo con un chmod y shymtime nn si el fichero fue modificado por uacuteltima vez hace nndiacuteas Algunas veces Vd necesita una marca de tiempo 8 maacutes precisa el test shynewerarchivo se satisface si el fichero considerado ha sido modificado maacutes tarde que elarchivo Por lo tanto Vd soacutelo tiene que usar touch con la fecha deseada y ya estaacute Elfind de GNU antildeade los test shyanewer y shycnewer los cuales se comportan de una manerasimilar y los test shyamin shycmin y shymmin que cuentan el tiempo en minutos en vezde periacuteodos de 24 horas

Por uacuteltimo pero no menos importante el test que yo uso maacutes a menudo shyname patroacuten esverdadero si el nombre del fichero concuerda exactamente con patroacuten el cual es maacutes omenos el uacutenico que se usariacutea en un ls estaacutendar (iquestPor queacute maacutes o menos Porque porsupuesto Vd tiene que recordar que todos los paraacutemetros son procesados por elinteacuterprete de comandos y esos encantadores metacaracteres sufren una expansioacuten Asiacute untest como shyname foo no devolveraacute lo que Vd desea y Vd deberiacutea escribir cualquierade los dos shyname foo o shyname foo Este es probablemente uno de los maacutes comuneserrores cometidos por usuarios descuidados asiacute que escriacutebalo en letras GRANDES en supantalla Otro problema es que como con ls no se reconocen los puntos al principio delnombre del archivo Para hacer frente a esto puede usar el test shypath patroacuten el cualno se preocupa acerca de los puntos y barras inclinadas cuando compara la ruta delfichero considerado con patroacuten

1115 Acciones

Hemos dicho que las acciones son aquellas que realmente hacen algo Bueno shyprune maacutesbien no hace nada es decir al descender el aacuterbol de directorios (a menos que se leagregue shydepth ) Se la encuentra usualmente junto con shyfstype para elegir entrevarios sistemas de ficheros a aquellos que deberiacutean examinarse

Las otras acciones pueden ser divididas en dos amplias categoriacuteas Acciones que imprimenalgo La maacutes obvia de estas y en realidad la accioacuten por defecto de find es shyprintque imprime el nombre del(os) fichero(s) que concuerde(n) con las otras condiciones en laliacutenea de comandos y devuelve verdadero Una variante sencilla de shyprint es shyfprintarchivo en la cual se usa archivo en vez de la salida estaacutendar otra es shyls listael fichero en uso en el mismo formato que ls shydils shyprintfformato se comporta maacuteso menos como la funcioacuten de C printf() para que se pueda especificar que formato deberiacuteatener la salida y shyfprintf archivo formato hace lo mismo pero escribieacutendolo enarchivo Estas acciones tambieacuten devuelven verdadero

_____________________________________________

8 NT timestamp

Acciones que ejecutan algo Su sintaxis es un poco extrantildea y su uso estaacute muy extendidopor lo que por favor consideacuterelas

shyexec comando ejecuta el comando y la accioacuten devuelve verdadero si el estadoretornado por el comando es 0 lo que significa que la ejecucioacuten fue correcta La razoacutenpara el es bastante loacutegica find no sabe donde termina el comando y el truco deponer la accioacuten ejecutable al final del comando no es aplicable Bueno la mejor manerapara sentildealar el final del comando es usar el caracter que usa el inteacuterprete de comandospara este fin que es pero por supuesto un punto y coma solo en la liacutenea decomandos seriacutea comido por el inteacuterprete de comandos y nunca llegariacutea a find asiacute quetienen que ser precedidos de escape La segunda cosa a recordar es como especificar elnombre del fichero en uso dentro del comando ya que probablemente Vd hizo todo elesfuerzo al construir la expresioacuten para hacer algo y no soacutelo para ver la hora Esto sehace por medio de la cadena de caracteres Algunas versiones antiguas de findrequieren que coloque las llaves entre espacios en blanco (no muy praacutectico si Vdnecesita por ejemplo la ruta entera y no soacutelo el nombre del fichero) pero con el findde GNU podriacutea ser cualquier lugar de la cadena de caracteres que compone el comando iquestYno deberiacutea estar precedido de escape o entrecomillado seguramente se estaraacutepreguntando Asombrosamente yo nunca tuve que hacer esto ni bajo tcsh ni bajo bash (shno considera shy y como caraacutecteres especiales asiacute que no es ni mucho menos un problema)Mi idea es que los inteacuterpretes de comandos saben que shy no es una opcioacuten que tengasentido por tanto no intentan expandirlas afortunadamente para find que puede obtenerlaintacta shyok comando se comporta como shyexec con la diferencia que para cadafichero seleccionado se pregunta al usuario que confirme el comando si la respuestaempieza por y o Y se ejecuta de otra manera no y la accioacuten devuelve falso

1116 Operadores

Hay una cierta cantidad de operadores aquiacute hay una lista en orden de prioridaddecreciente

( expr )

Fuerza el orden de prioridad Los pareacutentesis deben por supuesto estar entrecomillas ya que tambieacuten son muy significativos para el inteacuterprete decomandos

expr

shynot expr

Cambia el verdadero valor de la expresioacuten esto es si expr es verdadera sevuelve falsa El signo de exclamacioacuten no tiene que ser precedido de escapeporque estaacute seguido por un espacio en blanco

expr1 expr2

expr1 shya expr2

expr1 shyand expr2

Todas corresponden con la operacioacuten loacutegica AND El caso maacutes comuacuten es elprimero en el cual estaacute impliacutecita expr2 no se evaluacutea si expr1 es falsa

expr1 shyo expr2

expr1 shyor expr2

corresponden a la operacioacuten loacutegica OR expr2 no es evaluada si expr1 esverdadera

expr1 expr2

es la declaracioacuten de lista ambas expr1 y expr2 se evaluacutean (junto con todoslos efectos secundarios iexclpor supuesto) y el valor final de la expresioacuten esel de expr2

1117 Ejemplos

Siacute find tiene demasiadas opciones lo se Pero hay un montoacuten de casos preparados quevalen la pena recordar porque son usados muy a menudo Veamos algunos de ellos

$ find shyname foo shyprint

encuentra todos los nombres de fichero que empiezan con foo Si la cadena de caracteresestaacute incluida en el nombre probablemente tiene maacutes sentido escribir algo como fooen vez de foo

$ find usrinclude shyxtype f shyexec grep foobar

devnull shy

Es un grep ejecutado recursivamente que empieza del directorio usrinclude En estecaso estamos interesados tanto en ficheros regulares como en enlaces simboacutelicos queapuntan a ficheros regulares por tanto el test shyxtype Muchas veces es maacutes simpleevitar especificarlo especialmente si estamos bastante seguros cuales ficheros binariosno contienen la cadena de caracteres deseada

(iquestY por queacute el devnull en el comando Es un truco para forzar al grep a escribir elfichero del nombre donde se ha encontrado un emparejamiento El comando grep se aplica acada fichero con una invocacioacuten diferente y por tanto no cree que sea necesario mostrara la salida el nombre del fichero Pero ahora hay dos ficheros esto es iexclel activo ydevnull Otra posibilidad podriacutea ser redirigir la salida9 del comando a xargs y dejarlellevar a cabo el grep Yo lo intenteacute e hice pedazos completamente mi sistema de ficheros(junto con estas notas que estoy intentando recuperar a mano shy( )

$ find shyatime +1 shyfstype ext2 shyname core

shyexec rm shy

Es un trabajo claacutesico para la tabla de tareas preplaneadas Borra todos los ficherosllamados core en el sistema de ficheros del tipo ext2 al cual no se ha accedido en lasuacuteltimas 24 horas Es posible que alguien quiera usar los ficheros de imagen de memoria10para realizar un volcado post mortem pero nadie podriacutea recordar lo que estuvo haciendodespueacutes de 24 horas

$ find home shyxdev shysize +500k shyls gt piggies

_____________________________________________

9 NT to pipe

10 NT core file

Es uacutetil para ver quieacuten tiene esos archivos que atascan el sistema de ficheros Note eluso de shyxdev como soacutelo estamos interesados en un sistema de ficheros no es necesariodescender otro sistema de ficheros montado bajo home

1118 Una uacuteltima palabra

Tenga en mente que find es un comando que consume mucho tiempo ya que tiene que accedera cada uno de los nodosshyi del sistema para realizar su operacioacuten Por lo tanto es sabiocombinar cuantas operaciones sean posibles en una uacutenica invocacioacuten de find especialmenteen las tareas de mantenimiento interno que usualmente se administran mediante un

trabajo de la tabla de tareas planificadas Un ejemplo informativo es el siguientesupongamos que queremos borrar los ficheros que acaban en BAK y cambiar la proteccioacuten detodos los directorios a 771 y todos los ficheros que acaban en sh a 755 Y quizaacutestengamos montado el sistema de ficheros NFS en un enlace telefoacutenico y no queramosexaminar los ficheros ahiacute (iquestPor queacute escribir tres comandos diferentes La manera maacutesefectiva para realizar la tarea es eacutesta

$ find ( shyfstype nfs shyprune ) shyo

( shytype d shya shyexec chmod 771 shy ) shyo

( shyname BAK shya shyexec binrm shy ) shyo

( shyname sh shya shyexec chmod 755 shy )

Parece feo (iexcly con mucho abuso de barras invertidas) pero miraacutendolo fijamente revelaque la loacutegica subyacente es bastante sencilla Recuerde lo que se hace es una evaluacioacutenverdaderofalso el comando introducido es soacutelo un efecto secundario Pero esto significaque se ejecuta soacutelo si find puede evaluar la parte ejecutable de la expresioacuten esto essoacutelo si la parte izquierda de la subexpresioacuten se evaluacutea como verdadera Asiacute si porejemplo el fichero considerado en el momento es un directorio entonces el primerejecutable se evaluacutea y el permiso del nodoshyi se cambia a 771 de otra manera olvida todoy pasa a la siguiente subexpresioacuten Probablemente es maacutes faacutecil verlo en la praacutectica queescribirlo pero despueacutes de un momento llegaraacute a ser una cosa natural para Vd

112 tar el archivador en cinta

1121 Introduccioacuten

1122 Opciones principales

1123 Modificadores

1124 Ejemplos

113 dd el duplicador de datos

La leyenda dice que allaacute lejos en las nieblas del tiempo cuando el primer UNIX fuecreado sus desarrolladores necesitaron un comando de bajo nivel para copiar datos entredispositivos Como teniacutean prisa decidieron tomar prestada la sintaxis usada en lasmaacutequinas IBMshy360 y desarrollar maacutes tarde un interfaz consistente con la de los otroscomandos El tiempo pasoacute y todos se acostumbraron tanto con la manera extrantildea de usar ddque ya ha quedado asiacute No se si es verdad pero es una bonita historia para contar

1131 Opciones

A decir verdad dd no es totalmente distinto de los otros comandos de UNIX es enrealidad un filtro esto es lee por defecto de la entrada estaacutendar y escribe en lasalida estaacutendar Por tanto si Vd escribe soacutelo dd la terminal se queda quietaesperando una entrada y un |_CtrlshyC_| es la uacutenica cosa con sentido a teclear (paracortarlo)

La sintaxis del comando es como sigue

shy dd [if=archivo_entrada] [of=archivo_salida] [ibs=cant_bytes] [obs=cant_bytes]

[bs=cant_bytes] [cbs=cant_bytes] [skip=cant_bloques]

[seek=cant_bloques] [count=cant_bloques] [conv=ascii ebcdic ibm block

unblock lcase ucase swab noerror notrunc sync]

Todas las opciones son de la forma opcioacuten=valor No se permite ninguacuten espacio ni antes nidespueacutes del signo de igual esto soliacutea ser molesto porque el inteacuterprete de comandos noexpandiacutea un nombre de fichero en esta situacioacuten pero la versioacuten de bash presente enLinux es bastante inteligente asiacute que Vd no tiene que preocuparse por eso Es tambieacutenimportante recordar que todos los valores numerables (cant_bytes y cant_bloques citadosarriba) pueden ser seguidos por un multiplicador

Las opciones posibles son b para bloque el cual multiplica por 512 k para kilobytes(1024) w para palabra (2) y xm que multiplica por m

El significado de las opciones se explica a continuacioacuten

if=archivo_entrada y of=archivo_salida instruye a dd a respectivamente leerde archivo_entrada y escribir a archivo_salida En el uacuteltimo caso el ficherode salida es truncado al valor dado por seek o si la palabra clave noestaacute presente a 0 (esto es borrado) antes de realizar la operacioacuten Miretambieacuten la opcioacuten notrunc

ibs=nn y obs=nn especifican cuantos bytes deben ser leiacutedos o escritos a lavez Creo que por defecto es 1 bloque esto es 512 bytes pero no estoy muyseguro de ello desde luego funciona de esa manera con ficheros planos11Estos paraacutemetros son muy importantes cuando se usa dispositivos especialescomo entrada o salida por ejemplo leer de la red deberiacutea establecer ibs a10 kbyte mientras que una disquetera 12 de 35de alta densidad tiene comotamantildeo natural de bloque 18 kbyte Fallar al establecer estos valores podriacutearepercutir no soacutelo a largo plazo al llevar a cabo el comando sino inclusiveen errores de expiracioacuten de plazo asiacute que tenga cuidado

bs=nn tanto lee y escribe nn bytes a la vez Este no hace caso a las palabrasclave ibs y obs

cbs=nn establece el buffer de conversioacuten a nn bytes Este buffer se usacuando se traduce de ASCII a EBCDIC o desde un dispositivo no ablocado a unoablocado13 Por ejemplo los ficheros creados bajo VMS tienen a menudo untamantildeo de bloque de 512 asiacute que se tiene que poner cbs a 1b cuando se leeuna cinta externa de VMS iexclEspero que Vd no tenga que entretenerse en estascosas

skip=nbl y seek=nbl le dicen al programa que omita nbl bloquesrespectivamente al final de la entrada y al principio de la salida Porsupuesto el uacuteltimo caso tiene sentido si se da la conversioacuten notrunc (verabajo) Cada tamantildeo de bloque es el valor de ibs (obs) Cuidado si noestablece el ibs y escribe skip=1b Vd estaacute realmente omitiendo 512x512bytes esto es 256KB No es precisamente lo que Vd queriacutea iquestno

count=nbl pretende copiar soacutelo nbl bloques de la entrada cada uno de lostamantildeos dados por ibs Esta opcioacuten junto con la previa se vuelve uacutetil sipor ejemplo Vd tiene un fichero corrupto y quiere recuperar cuanto seaposible de eacutel Vd debe omitir la parte ilegible y copiar lo que resta

conv=conversioacuten[conversioacuten ] transforma el fichero de la manera que seespecifica en sus argumentos Transformaciones posibles son ascii queconvierte de EBCDIC a ASCII ebcdic y ibm las cuales realizan unaconversioacuten inversa (iexclsiacute no existe una uacutenica conversioacuten de EBCDIC a ASCII Laprimera es la estaacutendar pero la segunda funciona mejor cuando se imprimenficheros en una impresora IBM) block la cual rellena registros terminadosen nueva liacutenea del tamantildeo de cbs reemplazando los cambios de liacutenea conespacios finales unblock que realiza lo contrario (elimina espaciosfinales y los reemplaza con cambios de liacutenea) lcase y ucase paraconvertir a minuacutesculas y mayuacutesculas respectivamente swab que intercambiacada par de bytes de entrada (por ejemplo para usar un fichero que contieneenteros de tipo short escritos en una maacutequina 680x0 en una maacutequina basada enIntel se necesita dicha conversioacuten) noerror para continuar procesando auacutendespueacutes de encontrar errores sync que rellena los bloques de entrada deltamantildeo de ibs con caracteres NUL finales

_____________________________________________

11 NT plain files

12 NT floppy

13 N del T ablocado se refiere a la caracteriacutestica de agrupamiento en bloques de losdatos en el dispositivo

1132 Ejemplos

El ejemplo canoacutenico es con el uacutenico que Vd probablemente ha chocado hasta ahora cuandointentoacute crear el primer disco de Linux como escribir a un disco sin un sistema deficheros MSshyDOS La solucioacuten es simple

$ dd if=diskimg of=devfd0 obs=18k count=80

Decidiacute no usar ibs porque no se cual es el mejor tamantildeo de bloque para un disco duropero en este caso no habriacutea hecho ninguacuten perjuicio si en vez de obs usara sencillamenteel bs inclusive podriacutea haber sido un poquito maacutes raacutepido Observe la explicacioacuten delnuacutemero de sectores a escribir (18 kbyte es lo que ocupa un sector asiacute que count sepone a 80) y el uso del nombre de bajo nivel del dispositivo de la disquetera

Otra aplicacioacuten uacutetil de dd estaacute relacionada con la copia de seguridad de la redSupongamos que estamos en una maacutequina alfa y que en la maacutequina beta estaacute la unidad decinta devrst0 con un fichero tar que estamos interesados en obtener Tenemos los mismosprivilegios en ambas maacutequinas pero no hay espacio en beta para volcar 14 el fichero tarEn este caso podriacuteamos escribir

$ rsh beta dd if=devrst0 ibs=8k obs=20k _ tar xvBf shy

para hacer en un solo paso la operacioacuten completa En este caso hemos usado lasfacilidades de rsh para realizar la lectura de la cinta Los tamantildeos de entrada y salidaestaacuten establecidos a los valores por defecto por estas operaciones esto es 8 kbyte parala lectura de la cinta y 20 kbyte para la escritura en ethernet desde el punto de vistade la otra cara del tar hay el mismo flujo de bytes el cual podriacutea ser obtenido de la

cinta excepto el hecho de que llega de una manera bastante erraacutetica y la opcioacuten B esnecesaria

iexclAh Casi lo olvidaba No creo para nada que dd sea un acroacutenimo de data duplicatorpero al menos es una manera divertida de recordar su significado

114 sort el clasificador de datos

1141 Introduccioacuten

1142 Opciones

1143 Ejemplos

_____________________________________________

14 NT dump

Capiacutetulo 12

Errores equivocaciones bugs y otras molestias

Unix nunca fue disentildeado para evitar que la gente hiciera cosas estuacutepidas porque esapoliacutetica les habriacutea evitado tambieacuten hacer cosas inteligentes

Doug Gwyn

121 Evitando errores

Muchos usuarios hablan de su frustracioacuten con el sistema operativo Unix en alguna ocasioacutena menudo a causa de lo que ellos mismos han hecho Una caracteriacutestica del sistemaoperativo Unix que muchos usuarios adoran cuando estaacuten trabajando bien y odian despueacutesde una sesioacuten hasta bien avanzada la noche es que muy pocas oacuterdenes piden confirmacioacutenCuando un usuario estaacute despierto y funcionando raramente piensa sobre ello y esto esuna ventaja ya que le permite trabajar maacutes eficientemente

De todos modos hay algunas desventajas rm y mv no piden nunca confirmacioacuten y estoconduce frecuentemente a problemas Por eso veamos una pequentildea lista que puede ayudarlea evitar el desastre total

o iexclTenga copias de seguridad Esto va dirigido especialmente a sistemas de un solousuario iexcltodos los administradores de sistema deben realizar copias de seguridad de susistema regularmente Una vez a la semana es suficiente para salvar muchos ficheros Paramaacutes informacioacuten consulte The Linux System Administrators Guide

o Los usuarios individuales deben tener sus propias copias de seguridad si es posibleSi usa maacutes de una maacutequina regularmente intente mantener copias actualizadas de todos susficheros en cada una de las maacutequinas Si tiene acceso a una unidad de disquetes puedehacer copias de seguridad en disquetes de su material criacutetico En el peor de los casosmantenga copias adicionales del material maacutes importante que haya en su cuenta en undirectorio separado

o Piense sobre las oacuterdenes especialmente las destructivas como mv rm y cp antes deactuar Debe ser tambieacuten cuidadoso con las redirecciones (gt) sobreescribiraacuten susficheros cuando no esteacute prestando atencioacuten Incluso el maacutes inofensivo de los comandospuede convertirse en siniestro

homelarryreport$ cp reportshy1992 reportshy1993 backups

puede convertirse faacutecilmente en desastre

homelarryreport$ cp reportshy1992 reportshy1993

o El autor tambieacuten recomienda a partir de su propia experiencia personal no hacerlimpieza de ficheros a altas horas de la madrugada iquestQue su estructura de directoriosparece un poco desordenada a la 132am Deacutejelo estar un poco de desorden nunca ha dantildeadoun ordenador

o Siacutegale la pista a su directorio actual A veces el prompt que estaacute usando no muestraen que directorio estaacute usted trabajando y el peligro acecha iexclEs triste leer un mensajeen compunixadmin1 sobre un usuario root que estaba en en vez de en tmp Por ejemplo

mousehousegt pwd

etc

mousehousegt ls tmp

passwd

mousehousegt rm passwd

La anterior serie de comandos podriacutea hacer muy infeliz al usuario al ver como eliminaronel fichero de contrasentildeas de su sistema iexclSin eacutel la gente no puede acceder

122 Queacute hacer cuando algo va mal

123 No es fallo tuyo

Por desgracia para los programadores del mundo no todos los problemas son a causa deerrores del usuario Unix y Linux son sistemas complicados y todas las versionesconocidas tienen errores de programacioacuten (bugs2) Algunas veces esos errores sondifiacuteciles de encontrar y soacutelo aparecen bajo ciertas circunstancias

Ante todo iquestqueacute es un error Un ejemplo de error es si le pide al ordenador que calcule5+3 y contesta 7 Aunque este es un ejemplo trivial de que puede ir mal la mayoriacuteade los errores en programas de computadoras se relacionan con la aritmeacutetica en algunaforma extremadamente extrantildea

_____________________________________________

1 Un foro de discusioacuten internacional en Usenet que trata sobre la administracioacuten decomputadoras Unix

2 Bug (polilla fam bicho) Se denomina asiacute a los errores que aparecen en un programaCuenta la leyenda que cuando los ordenadores eran unos monstruos llenos de vaacutelvulas queocupaban habitaciones enteras un teacutecnico que trataba de resolver un error en el Mark IIde Harvard detectoacute que la causa era una polilla de verdad que se habiacutea colado entre lasvaacutelvulas y provocaba pequentildeos cortocircuitos al revolotear de un lado a otro

1231 Cuando hay un error

Si la computadora da una respuesta erroacutenea (iexclcompruebe que la respuesta es erroacutenea) o sebloquea eso es un error Si cualquier programa se bloquea o da un mensaje de error delsistema operativo eso es un error

Si un comando no finaliza nunca su ejecucioacuten puede ser un error pero debe asegurarse deque no le ha pedido que esteacute durante mucho tiempo haciendo lo que usted queriacutea quehiciera Pida ayuda si no sabe lo que haciacutea el comando

Algunos mensajes le alertaraacuten de la existencia de errores Algunos mensajes no sonerrores Revise la seccioacuten 34 y el resto de la documentacioacuten para estar seguro de que noson mensajes informativos normales Por ejemplo mensajes como disk full (disco lleno)o lp0 on fire (lp0 ardiendo) no son problemas de software sino algo incorrecto en suhardware no hay suficiente espacio libre en el disco o la impresora estaacute mal

Si no puede encontrar informacioacuten sobre un programa es un error en la documentacioacuten ydeberiacutea ponerse en contacto con el autor de dicho programa y ofrecerse para escribirlausted mismo Si algo estaacute incorrecto en la documentacioacuten existente3 es un error en esemanual Si algo aparece incompleto o poco claro en el manual eso es un error

Si no puede vencer al gnuchess al ajedrez es un fallo de disentildeo en el algoritmo deajedrez que usted usa pero no necesariamente un error en su cerebro

1232 Notificando un error

Cuando esteacute seguro de haber encontrado un error es importante asegurarse de que suinformacioacuten llega al lugar adecuado Intente encontrar que programa causa el error si nopuede encontrarlo tal vez pueda pedir ayuda en composlinuxhelp o compunixmisc Unavez encuentre el programa intente leer la paacutegina del manual para ver quien lo escribioacute

El meacutetodo preferido para enviar notificaciones de errores en el mundo Linux es viacutea correoelectroacutenico Si no tiene acceso al correo electroacutenico puede ponerse en contacto con lapersona que le suministroacute Linux eventualmente encontraraacute alguien que o bien tienecorreo electroacutenico o vende Linux comercialmente y por tanto quiere eliminar el mayornuacutemero de errores posibles Recuerde en todo caso que nadie estaacute obligado a corregirninguacuten error a menos que tenga un contrato

Cuando enviacutee una notificacioacuten de error incluya toda la informacioacuten que se le ocurraEsto incluye

o Una descripcioacuten de lo que usted piensa que es incorrecto Por ejemplo Obtengo 5cuando calculo 2+2 o Dice segmentation violation shyshy core dumped Es importante decirexactamente que esteacute sucediendo para que el responsable del mantenimiento pueda corregirsu error

o Incluya cualquier variable de entorno relevante

o La versioacuten de su nuacutecleo (mire en el fichero procversion) y sus bibliotecas de sistema(mire en el directorio lib si no puede descifrarlo enviacutee un listado de lib)

o iquestCoacutemo ejecutoacute el programa en cuestioacuten o si era un error del nuacutecleo iquestqueacute estabahaciendo en ese momento

o Toda la informacioacuten complementaria Por ejemplo el comando w puede no mostrar elproceso actual para ciertos usuarios No diga simplemente w no funciona para ciertousuario El error podriacutea ocurrir debido a que el nombre del usuario tiene ochocaracteres de longitud o cuando estaacute accediendo a traveacutes de la red En su lugar diga wno muestra el proceso actual para el usuario greenfie cuando accede a traveacutes de la red

o Y recuerde sea amable La mayoriacutea de la gente trabaja en el software libre por elgusto de hacerlo y porque tienen un gran corazoacuten No los amargue la comunidad Linux hadesilusionado ya a demasiados desarrolladores y auacuten es pronto en la vida del Linux

_____________________________________________

3 iexclEspecialmente en eacutesta

Apeacutendice A

Introduccioacuten a vi

vi (pronunciado vi ai en ingleacutes o uve i) es en realidad el uacutenico editor que se puedeencontrar en praacutecticamente cualquier instalacioacuten de Unix Este editor fue escritooriginalmente en la Universidad de California en Berkeley y se puede encontrar versionesen casi cualquier edicioacuten de Unix incluido Linux Al principio cuesta un pocoacostumbrarse a eacutel pero tiene muchas caracteriacutesticas muy potentes En generalrecomendamos que un nuevo usuario aprenda Emacs que generalmente es maacutes faacutecil de usarSin embargo la gente que usa maacutes de una plataforma o que encuentra que no le gustaEmacs puede estar interesada en aprender vi

Es necesaria una breve resentildea histoacuterica de vi para comprender coacutemo la tecla |_k_| puedesignificar mover el cursor arriba una liacutenea y porqueacute hay tres diferentes modos de uso Sino le apetece aprender a usar el editor los dos tutoriales le llevaraacuten de ser un crudoprincipiante hasta tener el suficiente conocimiento del grupo de comandos que usted puedellegar a usar El capiacutetulo tambieacuten incluye una guiacutea de comandos que sirve de uacutetilreferencia para tenerla cerca del terminal

Incluso si vi no se convierte en su editor de texto normal el conocimiento de su uso noseraacute desperdiciado Es casi seguro que el sistema de Unix que use tendraacute alguna variantedel editor vi

Puede ser necesario usar vi mientras instala otro editor como Emacs Muchas herramientasde Unix aplicaciones y juegos usan un subconjunto del grupo de comandos de vi

A1 Una raacutepida historia de Vi

Los editores de texto en la antiguumledad funcionaban en modo de una liacutenea y se usabantiacutepicamente desde terminales no inteligentes de impresioacuten Un editor tiacutepico que operabaen este modo es Ed El editor es potente y eficiente y usa una cantidad muy pequentildea derecursos del sistema y funcionaba con las pantallas de aquel entonces vi ofrece alusuario una alternativa visual con un grupo de comandos notablemente amplio comparado coned

vi como lo conocemos hoy comenzoacute como el editor de liacutenea ex De hecho ex se ve como unmodo especial de edicioacuten en vi aunque ahora lo contrario es verdad El componente visualde ex puede ser iniciado desde la liacutenea de comando usando el comando vi o desde dentrode ex

El editor exvi fue desarrollado en la universidad de California en Berkeley por WilliamJoy Originalmente se suministraba como una utilidad no soportada hasta su inclusioacutenoficial en la distribucioacuten del Unix ATampT System V Se ha ido haciendo cada vez maacutespopular incluso con la competencia de los modernos editores de pantalla completa

Debido a la popularidad de vi existen muchas variantes cloacutenicas y se pueden encontrarvarias versiones para la mayoriacutea de los sistemas operativos No es el propoacutesito de estecapiacutetulo el incluir todos los comandos disponibles bajo vi o sus variantes Muchos cloneshan aumentado y modificado el comportamiento original de vi La mayoriacutea de los clones nosoportan todos los comandos originales de vi

Si tiene un buen conocimiento de trabajo con ed entonces vi presenta una curva deaprendizaje maacutes suave Aunque usted no tenga ninguna intencioacuten de usar vi como su editorregular el conocimiento baacutesico de vi solamente puede serle una ventaja

A2 Raacutepido tutorial de Ed

El propoacutesito de esta guiacutea es que usted empiece a usar ed ed estaacute disentildeado para ser faacutecilde usar y requiere poco entrenamiento para comenzar La mejor manera de aprender espracticando asiacute que siga las instrucciones y pruebe el editor antes de descontar susventajas praacutecticas

A21 Crear un fichero

ed soacutelo puede editar un fichero a la vez Siga el siguiente ejemplo para crear su primerfichero de texto usando ed

homelarry$ ed

a

Este es mi primer fichero de texto usando Ed

Esto es divertido de verdad

w primerotxt

q

homelarry$

Ahora puede verificar el contenido del fichero usando la utilidad de concatenacioacuten deUnix

homelarry$ cat primerotxt

El ejemplo anterior ha mostrado un nuacutemero de puntos importantes Cuando invoca ed como enel ejemplo tendraacute un fichero vaciacuteo La tecla |_a_| se usa para antildeadir texto al ficheroPara finalizar la sesioacuten de entrada de texto se usa un punto |__| en la primera columnadel texto Para salvar el texto a un fichero la tecla |_w_| se usa en combinacioacuten con elnombre del fichero y finalmente la tecla |_q_| se usa para salir del editor

La observacioacuten maacutes importante es que hay dos modos de operacioacuten Al principio el editorestaacute en modo de comandos Un comando se define por caracteres para asegurarse de cualesson las intenciones del usuario ed usa un modo de texto y un modo de comando

A22 Editar un fichero existente

Para antildeadir una liacutenea de texto a un fichero existente siga el siguiente ejemplo

homelarry$ ed primerotxt

a

Esta es una nueva linea de texto

w

q

Si comprueba el fichero con cat veraacute que hay una nueva liacutenea insertada entre las dosliacuteneas originales iquestCoacutemo supo ed doacutende poner la nueva liacutenea de texto

Cuando ed lee el fichero se acuerda de cual es la liacutenea actual El comando |_a_| antildeadiraacuteel texto despueacutes de la liacutenea actual ed tambieacuten puede poner el texto antes de la liacuteneaactual con la tecla |_i_| El efecto seraacute la insercioacuten del texto antes de la liacuteneaactual

Ahora es faacutecil ver que ed opera en el texto liacutenea por liacutenea Todos los comandos se puedenaplicar a una liacutenea elegida

Para antildeadir una liacutenea de texto al final de un fichero

homelarry$ ed primerotxt

$a

La ultima linea de texto

w

q

El modificador de comandos ||_$_|| le dice a ed que antildeada la liacutenea despueacutes de la uacuteltimaliacutenea Para antildeadir la liacutenea despues de la primera liacutenea el modificador seriacutea |_1_| Ahoratenemos la posibilidad de seleccionar la liacutenea para antildeadir una liacutenea de texto despueacutes delnuacutemero de liacutenea o insertar una liacutenea antes del nuacutemero de liacutenea

iquestCoacutemo sabemos lo que hay en la liacutenea actual El comando |_p_| muestra el contenido de laliacutenea actual Si quiere hacer que la liacutenea actual sea la liacutenea 2 y a la vez quiere verel contenido de esa liacutenea entonces haga lo siguiente

homelarry$ ed primerotxt

2p

q

A23 Nuacutemeros de liacutenea en detalle

Ha visto coacutemo mostrar el contenido de la liacutenea actual usando el comando |_p_| Tambieacutensabemos que hay modificadores del nuacutemero de liacutenea para los comandos Para ver el texto dela segunda liacutenea

2p

Hay algunos modificadores especiales que se refieren a posiciones que pueden cambiardurante el tiempo que edita un fichero El ||_$_||es la uacuteltima liacutenea del texto Para verla uacuteltima liacutenea

$p

El nuacutemero de liacutenea actual usa un siacutembolo de modificador especial ___|_| Para mostrar laliacutenea actual usando un modificador

p

Esto puede parecer innecesario aunque es muy uacutetil en el contexto de los grupos denuacutemeros de liacutenea

Para mostrar el contenido del texto desde la liacutenea 1 a la liacutenea 2 se le debe pasar elalcance

12p

El primer nuacutemero se refiere a la liacutenea de comienzo y el segundo se refiere a la uacuteltimaliacutenea La liacutenea actual seraacute por consiguiente el segundo nuacutemero del grupo de liacuteneas

Si quiere mostrar el contenido del fichero desde el comienzo hasta la liacutenea actual

1p

Para mostrar el contenido desde la liacutenea actual hasta el final del fichero

$p

Todo lo que queda es mostrar el contenido de todo el fichero y esto queda como unejercicio para usted

iquestCoacutemo puede borrar las dos primeras liacuteneas del fichero

12d

El comando |_d_| borra el texto liacutenea por liacutenea Si usted quisiera borrar el contenidocompleto lo hariacutea con

1$d

Si usted ha hecho muchos cambios y no quiere salvar los contenidos del fichero lo mejores salir del editor sin escribir el fichero antes

La mayoriacutea de los usuarios no usan ed como el principal editor Los editores maacutes modernosofrecen una pantalla completa de edicioacuten y grupos de comandos maacutes flexibles ed ofreceuna buena introduccioacuten a vi y ayuda a explicar coacutemo se originaron los comandos de vi

A3 Raacutepido tutorial de Vi

El propoacutesito de este tutorial es que comience a usar el editor vi Este tutorial asumeque no tiene ninguna experiencia con vi asiacute que le mostraremos los diez comandos maacutesbaacutesicos de vi Estos comandos fundamentales son suficientes para realizar la mayoriacutea desus necesidades de edicioacuten y puede expandir su vocabulario de vi cuanto necesite Serecomienda que tenga un ordenador para practicar seguacuten avanza con el tutorial

A31 Ejecutar vi

Para ejecutar vi simplemente tiene que teclear las letras vi seguidas del nombre defichero que desea crear Veraacute una pantalla con una columna de tildes (~) en el ladoizquierdo vi estaacute ahora en modo de comando Cualquier cosa que teclee seraacute interpretadocomo un comando no como texto que usted desea escribir Para introducir texto tiene queteclear un comando Los dos comandos de entrada baacutesicos son los siguientes

i insertar texto a la izquierda del cursor

a antildeadir texto a la derecha del cursor

Dado que estaacute al comienzo de un fichero vaciacuteo no importa cual de estos usar Escriba unode ellos y despueacutes teclee el siguiente texto (un poema de Augustus DeMorgan encontradoen The Unix Programming Environment por BW Kernighan y R Pike)

Las pulgas grandes tienen pequentildeas pulgasltIntrogt

sobre sus espaldas para que les muerdanltIntrogt

Y las pulgas pequentildeas tienen pulgas maacutes pequentildeasltIntrogt

y asiacute hasta el infinitoltIntrogt

Y las pulgas grandes a su vezltIntrogt

tienen pulgas maacutes grandes sobre las que estarltIntrogt

Mientras que estas de nuevo tienen otras maacutes grandes aunltIntrogt

y maacutes grandes aun y asiacuteltIntrogt

ltEscgt

Fiacutejese que tiene que pulsar la tecla |_Esc_| para finalizar la insercioacuten y volver al modode comando

A32 Comandos de movimiento del cursor

h mueve el cursor un espacio a la izquierda

j mueve el cursor un espacio abajo

k mueve el cursor un espacio arriba

l mueve el cursor un espacio a la derecha

Estos comandos se pueden repetir manteniendo la tecla pulsada Intente mover el cursorpor el texto ahora Si intenta un movimiento imposible por ejemplo pulsar la tecla|_k_| cuando el cursor estaacute en la liacutenea superior la pantalla parpadearaacute momentaacuteneamenteo el terminal sonaraacute No se preocupe no muerde y su fichero no saldraacute dantildeado

A33 Borrar texto

x borra el caraacutecter que hay en el cursor

dd borra la liacutenea donde estaacute el cursor

Mueva el cursor a la primera liacutenea y poacutengalo de modo que esteacute bajo la n Pulse la letra|_x_| y la n desapareceraacute Ahora pulse la letra |_i_| para cambiarse al modo deinsercioacuten y vuelva a teclear la n Pulse |_Esc_| cuando haya terminado

A34 Salvar un fichero

w salvar (escribir al disco)

q salir

Aseguacuterese de que estaacute en modo de comando pulsando la tecla |_Esc_| Ahora pulse w Estosalvaraacute su trabajo escribieacutendolo a un fichero de disco

El comando para salir de vi es |_q_| Si quiere combinar el salvar y salir escriba wqTambieacuten hay una abreviacioacuten para wq _ ZZ Dado que gran parte del trabajo deprogramacioacuten consiste en ejecutar un programa encontrar alguacuten problema y llamar elprograma en el editor para hacer alguacuten pequentildeo cambio y luego volver a salir del editorpara ejecutar el programa otra vez ZZ seraacute un comando que usaraacute a menudo (En realidadZZ no es un sinoacutenimo exacto de wq _ si no ha hecho ninguacuten cambio al fichero que estaacuteeditando desde la ultima vez que lo salvo ZZ simplemente saldraacute del editor mientras quewq salvaraacute (redundantemente) el fichero antes de salir)

Si usted se lo ha cargado todo sin esperanzas y simplemente quiere volver a empezarlotodo puede teclear q (recuerde pulsar la tecla |_Esc_| primero) Si omite el vi nole permitiraacute salir sin salvar

A35 iquestQueacute viene a continuacioacuten

Los diez comandos que acaba de aprender deberiacutean ser suficientes para su trabajo Sinembargo solamente ha rozado la superficie del editor vi Hay comandos para copiarmaterial de un lugar del fichero a otro para mover material de un lugar a otro paramover material de un fichero a otro para ajustar el editor a sus gustos personales etcCon todo hay unos 150 comandos

A4 Tutorial avanzado de Vi

La ventaja y la potencia de vi estaacute en la habilidad de usarlo con eacutexito con soacutelo saberunos pocos comandos La mayoriacutea de los usuarios de vi se sienten un poco incoacutemodos alprincipio sin embargo despueacutes de alguacuten tiempo se encuentran aacutevidos de mayor conocimientode los comandos disponibles

El siguiente tutorial asume que el usuario ha completado el tutorial raacutepido (arriba) ypor lo tanto se siente a gusto con vi Este tutorial expone algunas de lascaracteriacutesticas maacutes poderosas de exvi desde copiar texto hasta la definicioacuten de macrosHay una seccioacuten sobre ex y los paraacutemetros para ajustar el editor a su gusto Estetutorial describe los comandos en vez de llevarle grupo por grupo

Se recomienda que usted disponga de alguacuten tiempo para probar los comandos en alguacuten textode ejemplo que se pueda permitir destruir

Este tutorial no expone todos los comandos de vi aunque se cubren los maacutes comuacutenmenteusados y auacuten otros adicionales Aunque usted elija usar otro editor de texto se esperaque apreciaraacute vi y lo que ofrece a quienes deciden usarlo

A41 Movimiento

La funcionalidad maacutes baacutesica de un editor es el mover el cursor por el texto Aquiacute estaacutenlos comandos de movimiento

h mueve el cursor un espacio a la izquierda

j mueve el cursor una liacutenea hacia abajo

k mueve el cursor una liacutenea hacia arriba

l mueve el cursor un espacio a la derecha

Algunas implementaciones tambieacuten permiten el uso de las teclas de cursor para mover elcursor

w mueve al principio de la siguiente palabra

e mueve al final de la siguiente palabra

E mueve al final de la siguiente palabra antes de un espacio

b mueve al principio de la palabra anterior

0 mueve al principio de la liacutenea actual

^ mueve a la primera palabra de la liacutenea actual

$ mueve al final de la liacutenea

ltCRgt mueve al principio de la siguiente liacutenea

shy mueve al principio de la liacutenea anterior

G mueve al final del fichero

1G mueve al principio del fichero

nG mueve a la liacutenea n

ltCntlgt G muestra el nuacutemero de liacutenea actual

va al pareacutentesis correspondiente

H mueve a la liacutenea superior en pantalla

M mueve a la liacutenea de en medio de la pantalla

L mueve al final de la pantalla

n_ mueve el cursor a la columna n

El texto se desplaza automaacuteticamente cuando el cursor alcanza la parte superior oinferior de la pantalla Tambieacuten hay comandos que permiten controlar el desplazamientodel texto

ltCntlgt f desplaza una pantalla hacia delante

ltCntlgt b desplaza una pantalla hacia atraacutes

ltCntlgt d desplaza media pantalla hacia abajo

ltCntlgt u desplaza media pantalla hacia arriba

Los comandos anteriores controlan el movimiento del cursor Algunos de los comandos usanun modificador de comandos en la forma de un nuacutemero que precede al comando Estacaracteriacutestica normalmente repite el comando ese nuacutemero de veces

Para mover el cursor ocho posiciones a la izquierda

8l mueve el cursor 8 posiciones a la izquierda

Si desea introducir un nuacutemero de espacios delante de un texto podriacutea usar el modificadorde comandos con el comando insertar Introduzca el nuacutemero de repeticiones (n) y despueacutes|_i_| seguido por el espacio y luego pulse la tecla |_Esc_|

ni inserta alguacuten texto y lo repite n veces

Los comandos que tratan con liacuteneas usan el modificador para referirse al nuacutemero de liacuteneaEl |_G_| es un buen ejemplo

1G mueve el cursor a la primera liacutenea

vi tiene un voluminoso grupo de comandos que se puede usar para mover el cursor por eltexto

vi tambieacuten puede posicionar el cursor en una liacutenea desde la liacutenea de comandos

vi +10 mi_ficherotex

Este comando abre el fichero llamado mi_ficherotex y pone el cursor 10 liacuteneas maacutes abajodel comienzo del fichero

Pruebe los comandos de esta seccioacuten Muy poca gente los recuerda todos en una solasesioacuten La mayor parte de los usuarios solamente utiliza una parte de estos comandos

Ahora se puede mover pero iquestcoacutemo modificar el texto

A42 Modificacioacuten del texto

El propoacutesito es cambiar el contenido del fichero y vi ofrece un amplio conjunto decomandos para ayudarnos en este proceso

Esta seccioacuten se concentra en antildeadir texto cambiar el texto existente y borrar texto Alfinal de esta seccioacuten usted tendraacute el conocimiento para crear cualquier fichero de textoque desee Las secciones restantes se concentran en comandos maacutes especializados yconvenientes

Cuando usted teclea nuevo texto puede introducir varias liacuteneas usando la tecla |_Intro_|Si hay que corregir un error tipograacutefico mientras introduce texto puede usar la tecla|_Retroceso_| para mover el cursor sobre el texto Las varias implementaciones de vi secomportan de manera diferente Algunas simplemente mueven el cursor hacia atraacutes y eltexto sigue vieacutendose y es aceptado Otras borran el texto cuando pulsa la tecla deborrado Otras versiones incluso permiten usar las teclas de cursores para mover elcursor mientras se estaacute en modo de entrada de texto Este modo de funcionamiento no es elnormal de vi Si el texto es visible y usa la tecla |_Esc_| mientras estaacute en la liacutenea enla que pulsoacute |_Retroceso_| entonces el texto que hay despueacutes del cursor se borraraacute Useel editor para acostumbrarse a este comportamiento

a Antildeadir texto a partir de la posicioacuten actual del cursor

A Antildeadir al final de la liacutenea

i Insertar texto a la izquierda del cursor

I Insertar texto a la izquierda del primer caracter que no sea espacio en laliacutenea actual

o Abrir una nueva liacutenea y antildeade texto debajo de la liacutenea actual

O Abrir una nueva liacutenea y antildeade texto encima de la liacutenea actual

vi tiene un pequentildeo grupo de comandos para borrar texto que se pueden mejorar con el usode modificadores

x Borrar el caraacutecter que estaacute debajo del cursor

dw Borrar desde la posicioacuten actual al final de la palabra

dd Borrar la liacutenea actual

D Borrar desde la posicioacuten actual al final de la liacutenea

Los modificadores se pueden usar para aumentar la potencia de los comandos Lossiguientes ejemplos son un subgrupo de las posibilidades

nx Borrar n caracteres desde el que estaacute bajo el cursor

ndd Borrar n liacuteneas

dnw Borrar n palabras (igual que ndw)

dG Borrar desde la posicioacuten actual hasta el final del fichero

d1G Borrar desde la posicioacuten actual hasta el principio del fichero

d$ Borrar desde la posicioacuten actual al final de la liacutenea (Esto es igual queD)

dn$ Borrar desde la liacutenea actual al final de la eneacutesima liacutenea

La lista de comandos anterior muestra que la operacioacuten de borrado puede ser muy uacutetilEsto se hace patente cuando se aplica en combinacioacuten con los comandos de movimiento decursor Hay que hacer notar que el comando |_D_| ignora los modificadores que se leapliquen

En ocasiones usted puede necesitar deshacer los cambios al texto Los siguientes comandosrecuperan el texto que habiacutea antes de hacer cambios

u Deshacer el uacuteltimo comando

U Deshacer todos los cambios ocurridos en la liacutenea actual

e Editar otra vez Recupera el estado del fichero desde la uacuteltima vez quese salvoacute

vi no soacutelo le permite deshacer cambios tambieacuten puede dar la vuelta al comandodeshacer Por ejemplo si usamos el comando |_5dd_| para borrar 5 liacuteneas se puedenrecuperar usando el comando |_u_| Si usted usa |_u_| una vez maacutes las 5 liacuteneasdesapareceraacuten de nuevo

vi ofrece comandos que permiten que se hagan cambios al texto sin tener que borrar yvolver a escribir

rc Reemplaza del caracter bajo el cursor con la letra c Se Mueve el cursoral modificador de repeticioacuten por ejemplo 2rc

R Sobreescribe el texto con el nuevo texto

cw Cambia el texto de la palabra actual

c$ Cambia el texto desde la posicioacuten actual al final de la liacutenea

cnw Cambia las siguientes n palabras (Igual que ncw)

cn$ Hacer cambios hasta el final de la eneacutesima liacutenea

C Hacer cambios hasta el final de la liacutenea actual

cc Hacer cambios en la liacutenea actual

s Sustituye el texto que escriba por el caracter actual

ns Sustituye el texto que escriba por los siguientes n caracteres

Las series de comandos de cambio que permiten que se introduzca un grupo de caracteres seterminan con la tecla |_Esc_|

El comando |_cw_| empieza en la posicioacuten actual en la palabra y termina al final de lapalabra

Cuando use un comando de cambio que especifica la distancia sobre la que se aplicaraacute elcambio vi pondraacute un $ en la uacuteltima posicioacuten de caraacutecter El nuevo texto puede sobrepasaro no llegar a la longitud original de texto

A43 Copiar y mover bloques de texto

El movimiento de texto supone la combinacioacuten de un nuacutemero de comandos para conseguir elpropoacutesito final Esta seccioacuten introduce los buffers1 con y sin nombre junto a loscomandos que cortan y pegan el texto

La copia de texto se realiza en tres pasos principales

1 Copia del texto a un buffer

2 Movimiento del cursor al lugar de destino

3 Pegar (poner) el texto en el buffer de edicioacuten

El buffer de edicioacuten no es sino el propio fichero en el que usted estaacute trabajando

Para Copiar texto al buffer sin nombre use el comando |_y_|

yy Mueve una copia de la liacutenea actual al buffer sin nombre

Y Mueve una copia de la liacutenea actual al buffer sin nombre

nyy Mueve las siguientes n lineas al buffer sin nombre

nY Mueve las siguientes n liacuteneas al buffer sin nombre

yw Mueve una palabra al buffer sin nombre

ynw Mueve n palabras al buffer sin nombre

nyw Mueve n palabras al buffer sin nombre

y$ Mueve el texto desde la posicioacuten actual al final de la liacutenea al buffer sinnombre

_____________________________________________

1 N del T buffer es una palabra inglesa que se refiere a un espacio reservado enmemoria para guardar alguna informacioacuten temporalmente En este caso se usan buffers paraalmacenar una copia temporal del texto que usted desea copiar o mover

El buffer sin nombre es un buffer temporal que puede ser faacutecilmente afectado por otroscomandos comunes Hay ocasiones en las cuales necesitamos mantener el contenido de unbuffer durante un periacuteodo maacutes extenso de tiempo En este caso se usariacutea un buffer connombre vi tiene 26 buffers con nombre Los buffers usan las letras del alfabeto como elnombre de identificacioacuten Para distinguir un comando de un buffer con nombre vi usa elcaraacutecter |__| Cuando use un buffer con nombre de letra minuacutescula los contenidos sesobre escriben mientras que el uso del nombre en letra mayuacutescula antildeade el nuevo texto alcontenido actual

ayy Mueve la liacutenea actual al buffer con nombre a

aY Mueve la liacutenea actual al buffer con nombre a

byw Mueve la palabra actual al buffer con nombre b

Byw Antildeade la palabra actual al contenido del buffer b

by3w Mueve las siguientes 3 palabras al buffer b

Use el comando |_p_| para pegar el contenido del buffer al buffer de edicioacuten

p Pegar del buffer sin nombre a la DERECHA del cursor

P Pegar del buffer sin nombre a la IZQUIERDA del cursor

nP Pegar n copias del buffer sin nombre a la IZQUIERDA del cursor

aP Pegar del buffer con nombre a a la DERECHA del cursor

b3P Pegar 3 copias del buffer con nombre b a la IZQUIERDA del cursor

Cuando use vi dentro de un xterm tiene otra opcioacuten para copiar texto Marque el bloque detexto que desea copiar arrastrando el cursor del ratoacuten sobre el texto Si mantienepulsado el botoacuten izquierdo del ratoacuten y arrastra el ratoacuten desde el comienzo al finalinvertiraacute el viacutedeo del texto Esta operacioacuten automaacuteticamente coloca el texto en un bufferreservado para el servidor de X Window

Para pegar el texto pulse el botoacuten de enmedio Acueacuterdese de poner vi en modo deinsercioacuten dado que la entrada de texto se podriacutea interpretar como comandos y el resultadoseriacutea cuando menos desagradable Usando la misma teacutecnica se puede copiar una sola palabrahaciendo doble click con el botoacuten izquierdo del ratoacuten sobre la palabra Solamente secopiaraacute esa uacutenica palabra Para pegarla se usa el mismo procedimiento que anteriormenteLos contenidos del buffer soacutelo cambian cuando se marca otro bloque de texto

Para mover un bloque de texto son necesarios tres pasos

1 Borrar el texto para ponerlo en un buffer con o sin nombre

2 Mover el cursor a la posicioacuten de destino

3 Pegar el buffer

El proceso es el mismo que el de copia con un solo cambio en el primer paso para borrarCuando

se usa el comando |_dd_| la liacutenea se borra y se coloca en el buffer sin nombre Luegopuede poner el

contenido del mismo modo que lo hizo cuando copioacute el texto en la posicioacuten deseada

add Borrar la liacutenea y ponerla en el buffer con nombre a

a4dd Borrar cuatro liacuteneas y ponerlas en el buffer con nombre a

dw Borrar una palabra y ponerla en el buffer sin nombre

Vea la seccioacuten sobre el modificado de texto para ver maacutes ejemplos de borrado de texto

En el caso de que el sistema falle el contenido de todos los buffers se pierde exceptoel contenido de los buffers de edicioacuten que se puede recuperar (ver comandos Uacutetiles)

A44 Buacutesqueda y cambio de texto

vi dispone de varios comandos para buacutesqueda Usted puede buscar desde un solo caraacutecterhasta una expressioacuten completa

Los dos comandos principales de buacutesqueda basados en caracteres son |_f_| y |_t_|

fc Encuentra el siguiente caracter c Se mueve a la derecha del siguiente

Fc Encuentra el siguiente caracter c Se mueve a la izquierda del anterior

tc Se mueve a la DERECHA al caracter anterior al siguiente c

Tc Se mueve a la IZQUIERDA al caraacutecter que sigue al c anterior vi(En algunasesto es lo mismo que Fc)

Repite el uacuteltimo comando fFtT

Igual que () pero cambiando la direccioacuten del comando original

Si el caracter que usted buscaba no se encuentra vi emitiraacute un pitido o le daraacute otrotipo de sentildeal (tal vez un parpadeo de toda la pantalla)

vi le permite buscar una cadena de texto en el buffer de edicioacuten

tira Busca hacia la derecha y abajo la siguiente instancia de tira

tira Busca hacia la izquierda y arriba la siguiente instancia de tira

n Repite el uacuteltimo comando o

N Repite el uacuteltimo comando o en la direccioacuten opuesta

Cuando use los comandos ||_||or |__| la uacuteltima liacutenea en la parte baja de la pantallase vaciaraacute

Introduzca en esa liacutenea la tira de caracteres que desea buscar y pulse |_Intro_|

La tira en el comando ||_||or |__|puede ser una expresioacuten regular Una expresioacutenregular puede ser una descripcioacuten de un conjunto de tiras La descripcioacuten se construyeusando texto entremezclado con caracteres especiales Los caracteres especiales de unaexpresioacuten regular son [ ] ^ $

Vale por cualquier caraacutecter excepto el caraacutecter de nueva liacutenea

Tecla de escape para cualquier caracter especial

Vale por 0 o maacutes instancias del caracter anterior

[ ] Busca exactamente uno de los caracteres incluiacutedos entre los corchetes

^ El caracter que sigue a ^ debe estar al principio de la liacutenea

$ El caracter que precede a $ se busca al final de la liacutenea

[^] Busca cualquier cosa que no se encuentre despues de ^ dentro de loscorchetes

[shy] Busca un rango de caracteres

El uacutenico modo de acostumbrarse a usar las expresiones regulares es usaacutendolas Acontinuacioacuten mostramos varios ejemplos de uso

cch Coincide con coche cacho cochera etc

cpe Coincide con cpe cper etc

stop Coincide con stp stop stoop etc

carn Coincide con cartoacuten carrilloacuten carmen etc

xyz Coincide con xyz al final de la liacutenea

^Los Encuentra cualquier liacutenea que empiece con Los

abcdef$ Encuentra cualquier liacutenea que termine con abcdef

^Solo$ Coincide con cualquier liacutenea que soacutelo tenga la palabra Solo

p[aiue]so Coincide con paso piso puso peso

Ver[DshyF] Coincide con VerD VerE VerF

Ver[^1shy9] Coincide con Ver siempre que a continuacioacuten NO haya un nuacutemero

the[ir][re] Coincide con their therr there theie

[AshyZashyz][AshyZashyz] Coincide con cualquier palabra

vi usa el modo de comandos de ex para llevar a cabo buacutesquedas y sustituciones Todos loscomandos que empiezan con dos puntos son comandos en modo ex

Los comandos de buacutesqueda y sustitucioacuten permiten que se usen expresiones regulares sobreun rango de liacuteneas y sustituir la tira de caracteres que se busca El usuario puede pedirconfirmacioacuten antes de que se realice la sustitucioacuten Merece la pena hacer una revisioacuten dela representacioacuten de los nuacutemeros de liacutenea en el tutorial de ed

ltprimgtltultgtsltbuscagtltsustgtg Comando general

1$slosLosg Buscar el fichero entero y sustituir los por Los

stheTheg siginifica el fichero entero (igual que arriba)

5s^g Borra el contenido de la liacutenea actual hasta la quinta

slosLosgc Sustituye los con Los preguntando antes de hacer laoperacioacuten

s^g Borra los primeros cuatro caraacutecteres de cada liacutenea

El comando de buacutesqueda es muy potente cuando se combina con las expresiones regulares Sino se incluye la directiva |_g_| entonces el cambio soacutelo se aplica a la primera instanciaque se encuentre en cada liacutenea

En ocasiones usted quiere usar los caracteres de buacutesqueda en los caracteres desustitucioacuten Se puede reescribir todo el comando en la liacutenea pero vi permite que loscaracteres de sustitucioacuten incluyan algunos caracteres especiales

15sayudaampndog Sustituye ayuda por ayudando en las cinco primeras liacuteneas

s ampampg Duplica el nuacutemero de espacios entre palabras

El uso de la tira de caracteres completa_para buacutesqueda_tiene sus liacutemites y por lo tantovi usa los pareacutentesis en secuencia de escape ||_(_|| y ||_)_||para seleccionar el rangode la sustitucioacuten El uso de un diacutegito en secuencia de escape |_1_| identifica el rangoen el orden de la definicioacuten y la sustitucioacuten se puede hacer

s^()1g Borra todo despues de e incluyendo los dos puntos

s()()21g Da la vuelta a las palabras a los dos lados de losdos puntos

vi ofrece comandos muy potentes que muchos editores de texto modernos no tienen o nopueden ofrecer El coste de esta potencia suele ser tambieacuten el principal argumento encontra de vi Los comandos pueden ser difiacuteciles de aprender y leer Sin embargo lamayoriacutea de las cosas buenas suelen ser un poco extrantildeas al principio Con un poco depraacutectica y tiempo los comandos de vi se convertiraacuten en una segunda naturaleza para Ud

Apeacutendice B

The GNU General Public License

GNU GENERAL PUBLIC LICENSE

Version 2 June 1991

Copyright Oc 1989 1991 Free Software Foundation Inc 675 Mass Ave Cambridge MA 02139USA

Everyone is permitted to copy and distribute verbatim copies of this license documentbut changing it is not allowed

Preamble

The licenses for most software are designed to take away your freedom to share and changeit By contrast the GNU General Public License is intended to guarantee your freedom toshare and change free software to make sure the software is free for all its users ThisGeneral Public License applies to most of the Free Software Foundations software and toany other program whose authors commit to using it (Some other Free Software Foundationsoftware is covered by the GNU Library General Public License instead) You can apply itto your programs too

When we speak of free software we are referring to freedom not price Our GeneralPublic Licenses are designed to make sure that you have the freedom to distribute copiesof free software (and charge for this service if you wish) that you receive source codeor can get it if you want it that you can change the software or use pieces of it in newfree programs and that you know you can do these things

To protect your rights we need to make restrictions that forbid anyone to deny you theserights or to ask you to surrender the rights These restrictions translate to certainresponsibilities for you if you distribute copies of the software or if you modify it

For example if you distribute copies of such a program whether gratis or for a fee youmust give the recipients all the rights that you have You must make sure that they tooreceive or can get the source code And you must show them these terms so they know theirrights

We protect your rights with two steps (1) copyright the software and (2) offer you thislicense which gives you legal permission to copy distribute andor modify the software

Also for each authors protection and ours we want to make certain that everyoneunderstands that there is no warranty for this free software If the software is modifiedby someone else and passed on we want its recipients to know that what they have is notthe original so that any problems introduced by others will not reflect on the originalauthors reputations

Finally any free program is threatened constantly by software patents We wish to avoidthe danger that redistributors of a free program will individually obtain patentlicenses in effect making the program proprietary To prevent this we have made itclear that any patent must be licensed for everyones free use or not licensed at all

The precise terms and conditions for copying distribution and modification follow

Terms and Conditions

0 This License applies to any program or other work which contains a notice placed bythe copyright holder saying it may be distributed under the terms of this General PublicLicense

The Program below refers to any such program or work and a work based on theProgram means either the Program or any derivative work under copyright law that is tosay a work containing the Program or a portion of it either verbatim or withmodifications andor translated into another language (Hereinafter translation isincluded without limitation in the term modification) Each licensee is addressed asyou

Activities other than copying distribution and modification are not covered by thisLicense they are outside its scope The act of running the Program is not restrictedand the output from the Program is covered only if its contents constitute a work basedon the Program (independent of having been made by running the Program) Whether that istrue depends on what the Program does

1 You may copy and distribute verbatim copies of the Programs source code as youreceive it in any medium provided that you conspicuously and appropriately publish oneach copy an appropriate copyright notice and disclaimer of warranty keep intact all thenotices that refer to this License and to the absence of any warranty and give any otherrecipients of the Program a copy of this License along with the Program

You may charge a fee for the physical act of transferring a copy and you may at youroption offer warranty protection in exchange for a fee

2 You may modify your copy or copies of the Program or any portion of it thus forming awork based on the Program and copy and distribute such modifications or work under theterms of Section 1 above provided that you also meet all of these conditions

a You must cause the modified files to carry prominent notices stating that you changedthe files and the date of any change

b You must cause any work that you distribute or publish that in whole or in partcontains or is derived from the Program or any part thereof to be licensed as a whole atno charge to all third parties under the terms of this License

c If the modified program normally reads commands interactively when run you must causeit when started running for such interactive use in the most ordinary way to print ordisplay an announcement including an appropriate copyright notice and a notice that thereis no warranty (or else saying that you provide a warranty) and that users mayredistribute the program under these conditions and telling the user how to view a copyof this License (Exception if the Program itself is interactive but does not normallyprint such an announcement your work based on the Program is not required to print anannouncement)

These requirements apply to the modified work as a whole If identifiable sections ofthat work are not derived from the Program and can be reasonably considered independentand separate works in themselves then this License and its terms do not apply to thosesections when you distribute them as separate works But when you distribute the samesections as part of a whole which is a work based on the Program the distribution of thewhole must be on the terms of this License whose permissions for other licensees extendto the entire whole and thus to each and every part regardless of who wrote it

Thus it is not the intent of this section to claim rights or contest your rights to workwritten entirely by you rather the intent is to exercise the right to control thedistribution of derivative or collective works based on the Program

In addition mere aggregation of another work not based on the Program with the Program(or with a work based on the Program) on a volume of a storage or distribution mediumdoes not bring the other work under the scope of this License

3 You may copy and distribute the Program (or a work based on it under Section 2) inobject code or executable form under the terms of Sections 1 and 2 above provided thatyou also do one of the following

a Accompany it with the complete corresponding machineshyreadable source code which mustbe distributed under the terms of Sections 1 and 2 above on a medium customarily used forsoftware interchange or b Accompany it with a written offer valid for at least threeyears to give any third party for a charge no more than your cost of physicallyperforming source distribution a complete machineshyreadable copy of the correspondingsource code to be distributed under the terms of Sections 1 and 2 above on a mediumcustomarily used for software interchange or

c Accompany it with the information you received as to the offer to distributecorresponding source code (This alternative is allowed only for noncommercialdistribution and only if you received the program in object code or executable form withsuch an offer in accord with Subsection b above)

The source code for a work means the preferred form of the work for making modificationsto it For an executable work complete source code means all the source code for allmodules it contains plus any associated interface definition files plus the scriptsused to control compilation and installation of the executable However as a specialexception the source code distributed need not include anything that is normallydistributed (in either source or binary form) with the major components (compilerkernel and so on) of the operating system on which the executable runs unless thatcomponent itself accompanies the executable

If distribution of executable or object code is made by offering access to copy from adesignated place then offering equivalent access to copy the source code from the sameplace counts as distribution of the source code even though third parties are notcompelled to copy the source along with the object code

4 You may not copy modify sublicense or distribute the Program except as expresslyprovided under this License Any attempt otherwise to copy modify sublicense ordistribute the Program is void and will automatically terminate your rights under thisLicense However parties who have received copies or rights from you under thisLicense will not have their licenses terminated so long as such parties remain in fullcompliance

5 You are not required to accept this License since you have not signed it Howevernothing else grants you permission to modify or distribute the Program or its derivativeworks These actions are prohibited by law if you do not accept this License Thereforeby modifying or distributing the Program (or any work based on the Program) you indicateyour acceptance of this License to do so and all its terms and conditions for copyingdistributing or modifying the Program or works based on it

6 Each time you redistribute the Program (or any work based on the Program) therecipient automatically receives a license from the original licensor to copy distributeor modify the Program subject to these terms and conditions You may not impose anyfurther restrictions on the recipients exercise of the rights granted herein You arenot responsible for enforcing compliance by third parties to this License

7 If as a consequence of a court judgment or allegation of patent infringement or forany other reason (not limited to patent issues) conditions are imposed on you (whetherby court order agreement or otherwise) that contradict the conditions of this Licensethey do not excuse you from the conditions of this License If you cannot distribute soas to satisfy simultaneously your obligations under this License and any other pertinentobligations then as a consequence you may not distribute the Program at all Forexample if a patent license would not permit royaltyshyfree redistribution of the Programby all those who receive copies directly or indirectly through you then the only way youcould satisfy both it and this License would be to refrain entirely from distribution ofthe Program

If any portion of this section is held invalid or unenforceable under any particularcircumstance the balance of the section is intended to apply and the section as a wholeis intended to apply in other circumstances

It is not the purpose of this section to induce you to infringe any patents or otherproperty right claims or to contest validity of any such claims this section has thesole purpose of protecting the integrity of the free software distribution system whichis implemented by public license practices Many people have made generous contributionsto the wide range of software distributed through that system in reliance on consistentapplication of that system it is up to the authordonor to decide if he or she iswilling to distribute software through any other system and a licensee cannot impose thatchoice

This section is intended to make thoroughly clear what is believed to be a consequence ofthe rest of this License

8 If the distribution andor use of the Program is restricted in certain countrieseither by patents or by copyrighted interfaces the original copyright holder who placesthe Program under this License may add an explicit geographical distribution limitationexcluding those countries so that distribution is permitted only in or among countriesnot thus excluded In such case this License incorporates the limitation as if writtenin the body of this License

9 The Free Software Foundation may publish revised andor new versions of the GeneralPublic License from time to time Such new versions will be similar in spirit to thepresent version but may differ in detail to address new problems or concerns

Each version is given a distinguishing version number If the Program specifies a versionnumber of this License which applies to it and any later version you have the optionof following the terms and conditions either of that version or of any later versionpublished by the Free Software Foundation If the Program does not specify a versionnumber of this License you may choose any version ever published by the Free SoftwareFoundation

10 If you wish to incorporate parts of the Program into other free programs whosedistribution conditions are different write to the author to ask for permission Forsoftware which is copyrighted by the Free Software Foundation write to the Free SoftwareFoundation we sometimes make exceptions for this Our decision will be guided by the two

goals of preserving the free status of all derivatives of our free software and ofpromoting the sharing and reuse of software generally

NO WARRANTY

11 BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE THERE IS NO WARRANTY FOR THE PROGRAMTO THE EXTENT PERMITTED BY APPLICABLE LAW EXCEPT WHEN OTHERWISE STATED IN WRITING THECOPYRIGHT HOLDERS ANDOR OTHER PARTIES PROVIDE THE PROGRAM AS IS WITHOUT WARRANTY OFANY KIND EITHER EXPRESSED OR IMPLIED INCLUDING BUT NOT LIMITED TO THE IMPLIEDWARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE THE ENTIRE RISK AS TOTHE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU SHOULD THE PROGRAM PROVEDEFECTIVE YOU ASSUME THE COST OF ALL NECESSARY SERVICING REPAIR OR CORRECTION

12 IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING WILL ANYCOPYRIGHT HOLDER OR ANY OTHER PARTY WHO MAY MODIFY ANDOR REDISTRIBUTE THE PROGRAM ASPERMITTED ABOVE BE LIABLE TO YOU FOR DAMAGES INCLUDING ANY GENERAL SPECIAL INCIDENTALOR CONSEQUENTIAL DAMAGES ARISING OUT OF THE USE OR INABILITY TO USE THE PROGRAM(INCLUDING BUT NOT LIMITED TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSESSUSTAINED BY YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHERPROGRAMS) EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF SUCHDAMAGES

How to Apply These Terms to Your New Programs

If you develop a new program and you want it to be of the greatest possible use to thepublic the best way to achieve this is to make it free software which everyone canredistribute and change under these terms

To do so attach the following notices to the program It is safest to attach them to thestart of each source file to most effectively convey the exclusion of warranty and eachfile should have at least the copyright line and a pointer to where the full notice isfound

one line to give the programs name and an idea of what it does

Copyright Oc 19yy name of author

This program is free software you can redistribute it andor modify it under the termsof the GNU General Public License as published by the Free Software Foundation eitherversion 2 of the License or (at your option) any later version

This program is distributed in the hope that it will be useful but WITHOUT ANY WARRANTYwithout even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSESee the GNU General Public License for more details

You should have received a copy of the GNU General Public License along with thisprogram if not write to the Free Software Foundation Inc 675 Mass Ave Cambridge MA02139

Also add information on how to contact you by electronic and paper mail

If the program is interactive make it output a short notice like this when it starts inan interactive mode

Gnomovision version 69 Copyright Oc 19yy name of author

Gnomovision comes with ABSOLUTELY NO WARRANTY for details type `show w

This is free software and you are welcome to redistribute it under certain conditionstype show c for details

The hypothetical commands show w and show c should show the appropriate parts of theGeneral Public License Of course the commands you use may be called something otherthan show w and show c they could even be mouseshyclicks or menu items whatever suitsyour program

You should also get your employer (if you work as a programmer) or your school if anyto sign a copyright disclaimer for the program if necessary Here is a sample alterthe names

Yoyodyne Inc hereby disclaims all copyright interest in the program `Gnomovision(which makes passes at compilers) written by James Hacker

signature of Ty Coon 1 April 1989

Ty Coon President of Vice

This General Public License does not permit incorporating your program into proprietaryprograms If your program is a subroutine library you may consider it more useful topermit linking proprietary applications with the library If this is what you want to douse the GNU Library General Public License instead of this License

Apeacutendice C

The GNU Library General Public

License

GNU LIBRARY GENERAL PUBLIC LICENSE

Version 2 June 1991

Copyright Oc 1991 Free Software Foundation Inc 675 Mass Ave Cambridge MA 02139 USAEveryone is permitted to copy and distribute verbatim copies of this license documentbut

changing it is not allowed [This is the first released version of the library GPL It isnumbered 2 because it goes with version 2 of the ordinary GPL]

Preamble

The licenses for most software are designed to take away your freedom to share and changeit By contrast the GNU General Public Licenses are intended to guarantee your freedomto share and change free softwareshyto make sure the software is free for all its users

This license the Library General Public License applies to some specially designatedFree Software Foundation software and to any other libraries whose authors decide to useit You can use it for your libraries too

When we speak of free software we are referring to freedom not price Our GeneralPublic Licenses are designed to make sure that you have the freedom to distribute copiesof free software (and charge for this service if you wish) that you receive source codeor can get it if you want it that you can change the software or use pieces of it in newfree programs and that you know you can do these things

To protect your rights we need to make restrictions that forbid anyone to deny you theserights or to ask you to surrender the rights These restrictions translate to certainresponsibilities for you if you distribute copies of the library or if you modify it

For example if you distribute copies of the library whether gratis or for a fee youmust give the recipients all the rights that we gave you You must make sure that theytoo receive or can get the source code If you link a program with the library you mustprovide complete object files to the recipients so that they can relink them with thelibrary after making changes to the library and recompiling it And you must show themthese terms so they know their rights

Our method of protecting your rights has two steps (1) copyright the library and (2)offer you this license which gives you legal permission to copy distribute andor modifythe library

Also for each distributors protection we want to make certain that everyoneunderstands that there is no warranty for this free library If the library is modifiedby someone else and passed on we want its recipients to know that what they have is notthe original version so that any problems introduced by others will not reflect on theoriginal authors reputations

Finally any free program is threatened constantly by software patents We wish to avoidthe danger that companies distributing free software will individually obtain patentlicenses thus in effect transforming the program into proprietary software To preventthis we have made it clear that any patent must be licensed for everyones free use ornot licensed at all

Most GNU software including some libraries is covered by the ordinary GNU GeneralPublic License which was designed for utility programs This license the GNU LibraryGeneral Public License applies to certain designated libraries This license is quitedifferent from the ordinary one be sure to read it in full and dont assume thatanything in it is the same as in the ordinary license

The reason we have a separate public license for some libraries is that they blur thedistinction we usually make between modifying or adding to a program and simply using itLinking a program with a library without changing the library is in some sense simplyusing the library and is analogous to running a utility program or application programHowever in a textual and legal sense the linked executable is a combined work aderivative of the original library and the ordinary General Public License treats it assuch

Because of this blurred distinction using the ordinary General Public License forlibraries did not effectively promote software sharing because most developers did notuse the libraries We concluded that weaker conditions might promote sharing better

However unrestricted linking of nonshyfree programs would deprive the users of thoseprograms of all benefit from the free status of the libraries themselves This LibraryGeneral Public License is intended to permit developers of nonshyfree programs to use freelibraries while preserving your freedom as a user of such programs to change the freelibraries that are incorporated in them (We have not seen how to achieve this as regardschanges in header files but we have achieved it as regards changes in the actualfunctions of the Library) The hope is that this will lead to faster development of freelibraries

The precise terms and conditions for copying distribution and modification follow Payclose attention to the difference between a work based on the library and a work thatuses the library

The former contains code derived from the library while the latter only works togetherwith the library

Note that it is possible for a library to be covered by the ordinary General PublicLicense rather than by this special one

Terms and Conditions for Copying Distribution and Modification

0 This License Agreement applies to any software library which contains a notice placedby the copyright holder or other authorized party saying it may be distributed under theterms of this Library General Public License (also called this License) Each licenseeis addressed as you

A library means a collection of software functions andor data prepared so as to beconveniently linked with application programs (which use some of those functions anddata) to form executables

The Library below refers to any such software library or work which has beendistributed under these terms A work based on the Library means either the Library orany derivative work under copyright law that is to say a work containing the Library ora portion of it either verbatim or with modifications andor translatedstraightforwardly into another language

(Hereinafter translation is included without limitation in the term modification)

Source code for a work means the preferred form of the work for making modifications toit For a library complete source code means all the source code for all modules itcontains plus any associated interface definition files plus the scripts used tocontrol compilation and installation of the library

Activities other than copying distribution and modification are not covered by thisLicense they are outside its scope The act of running a program using the Library isnot restricted and output from such a program is covered only if its contents constitutea work based on the Library (independent of the use of the Library in a tool for writingit) Whether that is true depends on what the Library does and what the program that usesthe Library does

1 You may copy and distribute verbatim copies of the Librarys complete source code asyou receive it in any medium provided that you conspicuously and appropriately publishon each copy an appropriate copyright notice and disclaimer of warranty keep intact allthe notices that refer to this License and to the absence of any warranty and distributea copy of this License along with the Library

You may charge a fee for the physical act of transferring a copy and you may at youroption offer warranty protection in exchange for a fee

2 You may modify your copy or copies of the Library or any portion of it thus forming awork based on the Library and copy and distribute such modifications or work under theterms of Section 1 above provided that you also meet all of these conditions

a The modified work must itself be a software library

b You must cause the files modified to carry prominent notices stating that you changedthe files and the date of any change

c You must cause the whole of the work to be licensed at no charge to all third partiesunder the terms of this License

d If a facility in the modified Library refers to a function or a table of data to besupplied by an application program that uses the facility other than as an argumentpassed when the facility is invoked then you must make a good faith effort to ensurethat in the event an application does not supply such function or table the facilitystill operates and performs whatever part of its purpose remains meaningful

(For example a function in a library to compute square roots has a purpose that isentirely wellshydefined independent of the application Therefore Subsection 2d requiresthat any applicationshysupplied function or table used by this function must be optionalif the application does not supply it the square root function must still compute squareroots)

These requirements apply to the modified work as a whole If identifiable sections ofthat work are not derived from the Library and can be reasonably considered independentand separate works in themselves then this License and its terms do not apply to thosesections when you distribute them as separate works But when you distribute the same

sections as part of a whole which is a work based on the Library the distribution of thewhole must be on the terms of this License whose permissions for other licensees extendto the entire whole and thus to each and every part regardless of who wrote it

Thus it is not the intent of this section to claim rights or contest your rights to workwritten entirely by you rather the intent is to exercise the right to control thedistribution of derivative or collective works based on the Library

In addition mere aggregation of another work not based on the Library with the Library(or with a work based on the Library) on a volume of a storage or distribution mediumdoes not bring the other work under the scope of this License

3 You may opt to apply the terms of the ordinary GNU General Public License instead ofthis License to a given copy of the Library To do this you must alter all the noticesthat refer to this License so that they refer to the ordinary GNU General PublicLicense version 2 instead of to this License (If a newer version than version 2 of theordinary GNU General Public License has appeared then you can specify that versioninstead if you wish) Do not make any other change in these notices

Once this change is made in a given copy it is irreversible for that copy so theordinary GNU General Public License applies to all subsequent copies and derivative worksmade from that copy

This option is useful when you wish to copy part of the code of the Library into aprogram that is not a library

4 You may copy and distribute the Library (or a portion or derivative of it underSection 2) in object code or executable form under the terms of Sections 1 and 2 aboveprovided that you accompany it with the complete corresponding machineshyreadable sourcecode which must be distributed under the terms of Sections 1 and 2 above on a mediumcustomarily used for software interchange

If distribution of object code is made by offering access to copy from a designatedplace then offering equivalent access to copy the source code from the same placesatisfies the requirement to distribute the source code even though third parties arenot compelled to copy the source along with the object code

5 A program that contains no derivative of any portion of the Library but is designedto work with the Library by being compiled or linked with it is called a work that usesthe Library

Such a work in isolation is not a derivative work of the Library and therefore fallsoutside the scope of this License

However linking a work that uses the Library with the Library creates an executablethat is a derivative of the Library (because it contains portions of the Library) ratherthan a work that uses the library The executable is therefore covered by this LicenseSection 6 states terms for distribution of such executables

When a work that uses the Library uses material from a header file that is part of theLibrary the object code for the work may be a derivative work of the Library even thoughthe source code is not Whether this is true is especially significant if the work can belinked without the Library or if the work is itself a library The threshold for this tobe true is not precisely defined by law

If such an object file uses only numerical parameters data structure layouts andaccessors and small macros and small inline functions (ten lines or less in length)

then the use of the object file is unrestricted regardless of whether it is legally aderivative work (Executables containing this object code plus portions of the Librarywill still fall under Section 6)

Otherwise if the work is a derivative of the Library you may distribute the object codefor the work under the terms of Section 6 Any executables containing that work also fallunder Section 6 whether or not they are linked directly with the Library itself

6 As an exception to the Sections above you may also compile or link a work that usesthe Library with the Library to produce a work containing portions of the Library anddistribute that work under terms of your choice provided that the terms permitmodification of the work for the customers own use and reverse engineering for debuggingsuch modifications

You must give prominent notice with each copy of the work that the Library is used in itand that the Library and its use are covered by this License You must supply a copy ofthis License If the work during execution displays copyright notices you must includethe copyright notice for the Library among them as well as a reference directing theuser to the copy of this License Also you must do one of these things

a Accompany the work with the complete corresponding machineshyreadable source code forthe Library including whatever changes were used in the work (which must be distributedunder Sections 1 and 2 above) and if the work is an executable linked with the Librarywith the complete machineshyreadable work that uses the Library as object code andorsource code so that the user can modify the Library and then relink to produce amodified executable containing the modified Library (It is understood that the user whochanges the contents of definitions files in the Library will not necessarily be able torecompile the application to use the modified definitions)

b Accompany the work with a written offer valid for at least three years to give thesame user the materials specified in Subsection 6a above for a charge no more than thecost of performing this distribution

c If distribution of the work is made by offering access to copy from a designatedplace offer equivalent access to copy the above specified materials from the same place

d Verify that the user has already received a copy of these materials or that you havealready sent this user a copy

For an executable the required form of the work that uses the Library must include anydata and utility programs needed for reproducing the executable from it However as aspecial exception the source code distributed need not include anything that is normallydistributed (in either source or binary form) with the major components (compilerkernel and so on) of the operating system on which the executable runs unless thatcomponent itself accompanies the executable

It may happen that this requirement contradicts the license restrictions of otherproprietary libraries that do not normally accompany the operating system Such acontradiction means you cannot use both them and the Library together in an executablethat you distribute

7 You may place library facilities that are a work based on the Library sideshybyshyside ina single library together with other library facilities not covered by this License anddistribute such a combined library provided that the separate distribution of the workbased on the Library and of the other library facilities is otherwise permitted andprovided that you do these two things

a Accompany the combined library with a copy of the same work based on the Libraryuncombined with any other library facilities This must be distributed under the terms ofthe Sections above

b Give prominent notice with the combined library of the fact that part of it is a workbased on the Library and explaining where to find the accompanying uncombined form ofthe same work

8 You may not copy modify sublicense link with or distribute the Library except asexpressly provided under this License Any attempt otherwise to copy modify sublicenselink with or distribute the Library is void and will automatically terminate yourrights under this License

However parties who have received copies or rights from you under this License willnot have their licenses terminated so long as such parties remain in full compliance

9 You are not required to accept this License since you have not signed it Howevernothing else grants you permission to modify or distribute the Library or its derivativeworks These actions are prohibited by law if you do not accept this License Thereforeby modifying or distributing the Library (or any work based on the Library) you indicateyour acceptance of this License to do so and all its terms and conditions for copyingdistributing or modifying the Library or works based on it

10 Each time you redistribute the Library (or any work based on the Library) therecipient automatically receives a license from the original licensor to copydistribute link with or modify the Library subject to these terms and conditions Youmay not impose any further restrictions on the recipients exercise of the rights grantedherein You are not responsible for enforcing compliance by third parties to thisLicense

11 If as a consequence of a court judgment or allegation of patent infringement or forany other reason (not limited to patent issues) conditions are imposed on you (whetherby court order agreement or otherwise) that contradict the conditions of this Licensethey do not excuse you from the conditions of this License If you cannot distribute soas to satisfy simultaneously your obligations under this License and any other pertinentobligations then as a consequence you may not distribute the Library at all Forexample if a patent license would not permit royaltyshyfree redistribution of the Libraryby all those who receive copies directly or indirectly through you then the only way youcould satisfy both it and this License would be to refrain entirely from distribution ofthe Library

If any portion of this section is held invalid or unenforceable under any particularcircumstance the balance of the section is intended to apply and the section as a wholeis intended to apply in other circumstances

It is not the purpose of this section to induce you to infringe any patents or otherproperty right claims or to contest validity of any such claims this section has thesole purpose of protecting the integrity of the free software distribution system whichis implemented by public license practices Many people have made generous contributionsto the wide range of software distributed through that system in reliance on consistentapplication of that system it is up to the authordonor to decide if he or she iswilling to distribute software through any other system and a licensee cannot impose thatchoice

This section is intended to make thoroughly clear what is believed to be a consequence ofthe rest of this License

12 If the distribution andor use of the Library is restricted in certain countrieseither by patents or by copyrighted interfaces the original copyright holder who placesthe Library under this License may add an explicit geographical distribution limitationexcluding those countries so that distribution is permitted only in or among countriesnot thus excluded In such case this License incorporates the limitation as if writtenin the body of this License

13 The Free Software Foundation may publish revised andor new versions of the LibraryGeneral Public License from time to time Such new versions will be similar in spirit tothe present version but may differ in detail to address new problems or concerns

Each version is given a distinguishing version number If the Library specifies a versionnumber of this License which applies to it and any later version you have the option offollowing the terms and conditions either of that version or of any later versionpublished by the Free Software Foundation If the Library does not specify a licenseversion number you may choose any version ever published by the Free SoftwareFoundation

14 If you wish to incorporate parts of the Library into other free programs whosedistribution conditions are incompatible with these write to the author to ask forpermission For software which is copyrighted by the Free Software Foundation write tothe Free Software Foundation we sometimes make exceptions for this Our decision will beguided by the two goals of preserving the free status of all derivatives of our freesoftware and of promoting the sharing and reuse of software generally

NO WARRANTY

11 BECAUSE THE LIBRARY IS LICENSED FREE OF CHARGE THERE IS NO WARRANTY FOR THE LIBRARYTO THE EXTENT PERMITTED BY APPLICABLE LAW EXCEPT WHEN OTHERWISE STATED IN WRITING THECOPYRIGHT HOLDERS ANDOR OTHER PARTIES PROVIDE THE LIBRARY AS IS WITHOUT WARRANTY OFANY KIND EITHER EXPRESSED OR IMPLIED INCLUDING BUT NOT LIMITED TO THE IMPLIEDWARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE THE ENTIRE RISK AS TOTHE QUALITY AND PERFORMANCE OF THE LIBRARY IS WITH YOU SHOULD THE LIBRARY PROVEDEFECTIVE YOU ASSUME THE COST OF ALL NECESSARY SERVICING REPAIR OR CORRECTION

12 IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING WILL ANYCOPYRIGHT HOLDER OR ANY OTHER PARTY WHO MAY MODIFY ANDOR REDISTRIBUTE THE LIBRARY ASPERMITTED ABOVE BE LIABLE TO YOU FOR DAMAGES INCLUDING ANY GENERAL SPECIAL INCIDENTALOR CONSEQUENTIAL DAMAGES ARISING OUT OF THE USE OR INABILITY TO USE THE LIBRARY(INCLUDING BUT NOT LIMITED TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSESSUSTAINED BY YOU OR THIRD PARTIES OR A FAILURE OF THE LIBRARY TO OPERATE WITH ANY OTHERSOFTWARE) EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF SUCHDAMAGES

How to Apply These Terms to Your New Libraries

If you develop a new library and you want it to be of the greatest possible use to thepublic we recommend making it free software that everyone can redistribute and changeYou can do so by permitting redistribution under these terms (or alternatively underthe terms of the ordinary General Public License)

To apply these terms attach the following notices to the library It is safest to attachthem to the start of each source file to most effectively convey the exclusion ofwarranty and each file should have at least the copyright line and a pointer to wherethe full notice is found

one line to give the librarys name and a brief idea of what it does

Copyright (C) year name of author

This library is free software you can redistribute it andor modify it under the termsof the GNU Library General Public License as published by the Free Software Foundationeither version 2 of the License or (at your option) any later version

This library is distributed in the hope that it will be useful but WITHOUT ANY WARRANTYwithout even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSESee the GNU Library General Public License for more details

You should have received a copy of the GNU Library General Public License along with thislibrary if not write to the Free Software Foundation Inc 675 Mass Ave Cambridge MA02139 USA

Also add information on how to contact you by electronic and paper mail

You should also get your employer (if you work as a programmer) or your school if anyto sign a copyright disclaimer for the library if necessary Here is a sample alterthe names

Yoyodyne Inc hereby disclaims all copyright interest in the library `Frob (a libraryfor tweaking knobs) written by James Random Hacker

signature of Ty Coon 1 April 1990

Ty Coon President of Vice

Thats all there is to it

Apeacutendice D

iquestQueacute es LuCAS

El proyecto LuCAS (Linux en CAStellano) comenzoacute como tantas otras cosas ligadas a Linuxen un bar tomando cervezas (reales no virtuales) Era allaacute por marzo de 1995 y ya sehabiacutea comentado en las aacutereas de FidoNet la necesidad de disponer de textos en castellanosobre Linux Fue en aquel bar el bar Ekin de Algorta (Bizkaia) donde nos reuniacuteamos losusuarios de FidoNet todos los domingos donde surgioacute la idea de pasar a la accioacuten Trasdiscutirlo un poco decidimos comenzar por traducir algo que fuese uacutetil para aquellos quecomenzaban a dar sus primeros pasos en linux y creiacutemos que el Installation amp GettingStarted de Matt Welsh era el documento maacutes adecuado Como era mucho trabajo para unasola persona y habiacutea mucha gente que se habiacutea mostrado dispuesta a colaborar habiacutea quehacerlo bien y el trabajo de traducir un libro como eacuteste requeriacutea una labor decoordinacioacuten que inmediatamente asumimos Ramoacuten Gutieacuterrez y yo Alfonso Belloso Yo mehice cargo de coordinar a los traductores para que no hiciesen trabajo repetido y Ramoacutense encargaba de juntar los trabajos y generar el documento final Pedimos permiso alpropio Matt Welsh y asiacute echamos a andar

Hubo que esperar un largo tiempo a tener una primera versioacuten presentable del libro perose consiguioacute Fundamentalmente el hecho de que era una experiencia nueva y ladiversidad de gente que colaboroacute hizo que este primer paso durase casi un antildeo peromerecioacute la pena esperar Hay que decir que a pesar de que todo este movimiento surgioacute deFidoNet y que desde alliacute se sigue muy de cerca al poco de comenzar a trabajar en ellofue cuando conseguiacute mi primera cuenta de Internet y comprobeacute que la forma maacutes praacutecticade coordinarnos era a traveacutes de La Red ya que por Fidonet las comunicaciones se haciacuteandemasiado largas en el tiempo y no siempre eran seguras (para contactar con alguacutencolaborador a veces se podiacutea tardar 2 semanas o no saber nada de eacutel jamaacutes) Y con ellocomenzamos a disponer de maacutes herramientas primero un servidor de ftp luego una lista decorreo un servidor de Web y asiacute hasta hoy Bueno pues una vez terminado este primerlibro nos quedoacute el gusanillo de hacer maacutes y visto que yo acabeacute un poco cansado vinoJuan Joseacute Amor me tomoacute el relevo y comenzamos a traducir la Network AdministratorGuide de Olaf Kirch Esta vez y con la infraestructura ya montada tardamos unos pocosmeses en tener la primera versioacuten

Y despueacutes de eacuteste ya se estaacuten haciendo maacutes Ya esta terminada la traduccioacuten de la LinuxUser Guide (en su fase alfa) y hay alguacuten proyecto maacutes en marcha No quiero dejar demencionar otros proyectos que trabajan en paralelo a eacuteste LuCAS en siacute se ha idodedicando maacutes a la labor de traduccioacuten de textos tipo libro maacutes concretamente a los delLDP y creaciones propias si bien en su origen se ideoacute para traducir cualquier tipo dedocumento e incluso para crear documentos directamente en castellano El SLUG (SpanishLinux User Group) ya existiacutea cuando surgioacute LuCAS o acababa de aparecer Al amparo deLuCAS surgioacute el INSFLUG que se centra en la traduccioacutencreacioacuten de FAQs HOWTOs ydocumentos maacutes pequentildeos Y probablemente existan maacutes grupos haciendo tareas similarespero que ahora no conozco ni soy capaz de recordar

Para contactar con los coordinadores del grupo LuCAS puede hacerlo con Alfonso Belloso

Martiacutenez ltalfonbipv02biehuesgt o en ltalfoniiesesgt y con Juan Joseacute Amor Iglesiasltjjamorlsfiupmesgt

Apeacutendice E

iquestQueacute es INSFLUG

El INSFLUG nacioacute allaacute por marzo del 96 siendo su seno materno el aacuterea echomail deFidoNet R34LINUX Surge ante el entusiasmo de los que empezaacutebamos por aquel entonces aadentrarnos en el mundo del Linux maravillados por como un SO tan potente dedistribucioacuten libre podiacutea haberse hecho realidad gracias al buen hacer generosidad eincreiacuteble colaboracioacuten entre tantas personas dispersas por el globo

Nos sentimos auacuten maacutes maravillados al observar la increiacuteble participacioacuten de la gente quefrecuentaba el aacuterea modeacutelica en FidoNet y por la inestimable ayuda que alliacute seprestaba eso fue (haciendo un poco de psicoacutelogo) lo que produjo la formacioacuten delINSFLUG un inmenso y sincero agradecimiento ademaacutes de enormes ganas de corresponder pornuestra parte aportando nuestro granito de arena a la comunidad Linux en forma detraducciones de Howtos y FAQs documentos que generalmente no superan la decena depaacuteginas y con cuya traduccioacuten ademaacutes de aportar el novel o no tan novel profundiza enel tema del que trate el Howto a medida que lo traduce redundando en beneficio para eacutelmismo shy)

El INSFLUG se centra en la traduccioacuten de Howtos y FAQs (Frecuently Asked Questions algoasiacute como Preguntas de Uso Frecuente PUFs)

Para la traduccioacuten no necesitas maacutes que un editor de texto (En Linux hay muchos) normaly el paquete linuxdocshysgml con el que empleando un lenguaje muy sencillo similar alHTML una vez escrito un soacutelo fuente se podraacuten obtener a partir de eacutel el documento enformatos dvi ps txt lyx rtf info html etc

Cuentas ademaacutes con una guiacutea traducida del uso del linuxdocshysgml en la que se antildeadendetalles de configuracioacuten para el castellano ademaacutes de la facilidad que supone eltraducir editando el fuente original en ingleacutes ya que los coacutedigos etc ya estaacuten noobstante es un lenguaje sencilliacutesimo ademaacutes de ser el formato oficial de todos losHowtos

El INSFLUG colabora estrechamente con LuCAS es maacutes hay varias personas que colaborancon ambos grupos El grupo LuCAS se dedica mayormente a las guiacuteas (guides) los librosmaacutes extensos del LDP o (Linux Documentation Project)

El coordinador de INSFLUG es Francisco J Montilla (email ltpacopepeinamecomgt ircpukka FiDO 234540222) Si desea maacutes informacioacuten puede consultar su paacutegina en WWW enlthttpwwwinsflugnovaesgt y su espacio de FTP en ltftpftpinsflugnovaesgt

Page 2: G.L.U.P.€€Guía€de€Linux€Para€el€Usuariomural.uv.es/~jalto/LINUX.pdf3 En€el€principio€11 3.1€La€computadora€despierta 3.2€Linux€despierta 3.3€La€actuación€del€usuario

Se garantiza el permiso para realizar y distribuir copias literales de este manualsiempre que se preserven la nota de derechos de autor y este permiso en todas las copias

Se garantiza el permiso para copiar y distribuir versiones modificadas de este manualbajo las condiciones de las copias literales siempre que las secciones en las cuales sereimprime La Licencia Puacuteblica General GNU La Licencia Puacuteblica General de BibliotecaGNU y otras en las cuales haya partes claramente marcadas bajo un derecho de autorseparado se reproduzcan bajo las mismas condiciones que ellas estipulan y se logre queel trabajo derivado resultante en su totalidad se distribuya bajo los teacuterminos de unanotificacioacuten de permiso ideacutentica a esta misma

Se garantiza el permiso de copiar y distribuir traducciones de este manual a otrosidiomas bajo las condiciones dadas para versiones modificadas La Licencia PuacuteblicaGeneral GNU y La Licencia Puacuteblica General de Biblioteca GNU pueden incluirse a traveacutesde una traduccioacuten aprobada por la Free Software Foundation en lugar de los originales eningleacutes

A su opcioacuten Ud puede distribuir copias literales o modificadas de este documento bajolos teacuterminos de la La Licencia Puacuteblica General GNU excepto las secciones marcadasclaramente bajo otros derechos de autor

Con distintos objetivos pueden garantizarse ciertas excepciones a esas reglas Escriba aLarry Greenfield a la direccioacuten dada maacutes arriba o utilice correo electroacutenico aleg+andrewcmuedu y consulte Se solicita (pero no se requiere) que Ud notifique alautor cuando se imprima a gran escala o se comercialice este documento Las regaliacuteas ydonaciones seraacuten aceptadas y sustentaraacuten las siguientes ediciones

Estas son algunas de las convenciones tipograacuteficas que se utilizan en este libro

negrita Se utiliza para iniciar nuevos conceptos AVISOS y palabras reservadas delenguajes

itaacutelica Se utiliza para enfatizar el texto

inclinada Se usa para marcar metashyvariables en el texto especialmente enrepresentaciones de la liacutenea de comandos Por ejemplo ls shyl foo donde foo se coloca enla posicioacuten donde iriacutea un nombre de archivo como por ejemplo bincp

monoespaciada Se usa para representar la interaccioacuten en la pantalla

Tambieacuten se usa para los ejemplos de coacutedigo fuente sea que se trate de coacutedigo Cguiones de shell o lo que sea y para mostrar archivos en general como por ejemploarchivos de configuracioacuten Cuando razones de claridad adicional lo exijan estos ejemplosse enmarcaraacuten en cuadros finos

|_Tecla_| Representa la tecla que debe oprimir En general lo veraacute utilizado de lasiguiente manera

Oprima |_Intro_| para continuar

3 El diamante en el margen como los diamantes negros en las montantildeas de ski marcan loslugares de peligro o precaucioacuten Debe leer cuidadosamente los paacuterrafos marcados deeste modo

Esta X en el margen indica la existencia de instrucciones especialmente destinadas a losusuarios del X Window System

Agradecimientos

El autor quiere agradecer a las siguientes personas por su invaluable ayuda tanto conLinux en siacute como con la escritura de The Linux Users Guide

Linus Torvalds por proveer el material acerca del cual se escribe este libro

Karl Fogel me ha proporcionado una enorme ayuda con la escritura de mi documentacioacuten deLinux y ademaacutes escribioacute la mayor parte del Capiacutetulo 8 y el Capiacutetulo 9 Cualquierreconocimiento hacia su labor seraacute insuficiente

Maurizio Codogno escribioacute gran parte del Capiacutetulo 11

David Channon escribioacute el apeacutendice sobre el vi (Apeacutendice A)

Yggdrasil Computing Inc por su generoso (y voluntario) sosteacuten para este manual

Red Hat Software por su (maacutes reciente y tambieacuten voluntario) sosteacuten

El programa fortune por proveerme algunas de las preciosas citas con las cuales comenzarcada capiacutetulo Auacuten cuando a nadie maacutes le gusten a miacute me encantan

Iacutendice General

1 Introduccioacuten 1

11 iquestQuieacuten debe leer este libro

111 iquestQueacute debe hacer antes de leer este libro

12 iquestCoacutemo evitar leer este libro

13 iquestCoacutemo leer este libro

14 Documentacioacuten de Linux

141 Otros libros de Linux

142 COMOs

143 iquestQueacute es el Proyecto de Documentacioacuten de Linux

15 Sistemas operativos

2 A propoacutesito iquestqueacute es Unix 7

21 La historia de Unix

22 La historia de Linux

221 Linux aquiacute y ahora

222 Unas pocas preguntas y respuestas

223 Software comercial en Linux

3 En el principio 11

31 La computadora despierta

32 Linux despierta

33 La actuacioacuten del usuario

331 El ingreso

332 Al abandonar la computadora

333 Como apagar la computadora

34 Mensajes del nuacutecleo

4 El shell de Unix 21

41 Comandos Unix

411 Un comando Unix tiacutepico

42 Autoayuda

43 Almacenaje de la informacioacuten

431 Miremos los directorios con ls

432 El directorio actual y cd

433 Creacioacuten y borrado de directorios

44 Informacioacuten en movimiento

441 cp como un monje

442 La poda con rm

443 Seriacutea interesante tener un rastrillo

5 El sistema de ventanas X 35

51 Ejecucioacuten y salida del sistema de ventanas X

511 Ejecucioacuten de X

512 Saliendo de X

52 iquestQueacute es el sistema de ventanas X

53 iquestQueacute es esto que hay en mi pantalla

531 XClock

532 XTerm

54 Gestores de ventanas

541 Cuando se crean nuevas ventanas

542 Foco

543 Moviendo ventanas

544 Profundidad

545 Iconizar

546 Variando el tamantildeo

547 Maximizacioacuten

548 Menuacutes

55 Atributos X

551 Geometriacutea

552 Presentacioacuten

56 Caracteriacutesticas comunes

561 Botones

562 Barras de menuacute

563 Barras de desplazamiento

6 Trabajando con Unix 47

61 Comodines

611 iquestQueacute ocurre realmente

612 El signo de interrogacioacuten

62 Ganar tiempo con bash

621 Editando la liacutenea de comandos

622 Completamiento de comandos y nombres de fichero

63 La entrada estaacutendar y La salida estaacutendar

631 Algunos conceptos de Unix

632 Redireccionar la salida

633 Redireccionar la entrada

634 Las tuberiacuteas

64 Multitarea

641 Usando el control de trabajos

642 Teoriacutea del control de trabajos

65 Consolas virtuales como estar en varios lugares a la vez

7 Pequentildeos programas potentes 61

71 El poder de Unix

72 Trabajando con ficheros

73 Estadiacutesticas del sistema

74 iquestQueacute hay en un fichero

75 Comandos de edicioacuten

8 Editando archivos con Emacs 71

81 iquestQueacute es Emacs

82 Comenzar raacutepidamente en X

83 Editando varios archivos al mismo tiempo

84 Terminando una sesioacuten de edicioacuten

85 La tecla Meta

86 Cortar pegar destruir y tirar

87 Buscar y reemplazar

88 iquestQueacute es lo que ocurre realmente

89 Pidiendo ayuda a Emacs

810 Especializando buffers Modos

811 Modos de programacioacuten

8111 Modo C

8112 Modo Scheme

8113 Modo de correo

812 Como ser maacutes eficiente auacuten

813 Personalizando Emacs

814 Averiguando maacutes

9 Tengo que ser yo mismo 91

91 Personalizacioacuten del bash

911 Arranque del shell

912 Ficheros de arranque

913 Creando alias

914 Variables de entorno

92 Los ficheros de inicio de X Window

921 Configuracioacuten de twm

922 Configuracioacuten de fvwm

93 Otros ficheros de inicio

931 El fichero de configuracioacuten de Emacs

932 Configuracioacuten por defecto del FTP

933 Permitiendo un acceso remoto sencillo a su cuenta

934 Redireccioacuten de correo

94 Veamos algunos ejemplos

10 Hablando con los demaacutes 111

101 Correo electroacutenico

1011 Enviar correo

1012 Leer el correo

102 Noticias maacutes que de sobra

103 Localizar a la gente

1031 Planes y proyectos

104 Uso remoto de sistemas

105 Intercambio de ficheros

106 Viajando por la telarantildea

11 Comandos divertidos 117

111 find el buscador de ficheros

1111 Generalidades

1112 Expresiones

1113 Opciones

1114 Test

1115 Acciones

1116 Operadores

1117 Ejemplos

1118 Una uacuteltima palabra

112 tar el archivador en cinta

1121 Introduccioacuten

1122 Opciones principales

1123 Modificadores

1124 Ejemplos

113 dd el duplicador de datos

1131 Opciones

1132 Ejemplos

114 sort el clasificador de datos

1141 Introduccioacuten

1142 Opciones

1143 Ejemplos

12 Errores equivocaciones bugs y otras molestias 129

121 Evitando errores

122 Queacute hacer cuando algo va mal

123 No es fallo tuyo

1231 Cuando hay un error

1232 Notificando un error

A Introduccioacuten a vi 133

A1 Una raacutepida historia de Vi

A2 Raacutepido tutorial de Ed

A21 Crear un fichero

A22 Editar un fichero existente

A23 Nuacutemeros de liacutenea en detalle

A3 Raacutepido tutorial de Vi

A31 Ejecutar vi

A32 Comandos de movimiento del cursor

A33 Borrar texto

A34 Salvar un fichero

A35 iquestQueacute viene a continuacioacuten

A4 Tutorial avanzado de Vi

A41 Movimiento

A42 Modificacioacuten del texto

A43 Copiar y mover bloques de texto

A44 Buacutesqueda y cambio de texto

B The GNU General Public License 147

C The GNU Library General Public License 155

D iquestQueacute es LuCAS 165

E iquestQueacute es INSFLUG 167

Bibliografiacutea

[1] Almesberger Werner LILO Generic Boot Loader for Linux Disponibleelectroacutenicamente tsxshy11mitedu 3 de Julio de 1993

[2] Bach Maurice J The Design of the UNIX Operating System Englewood Cliffs NewJersey PrenticeshyHall Inc 1986

[3] Lamport Leslie LATEX A Document Preparation System Reading MassachusettsAddisonshyWesley Publishing Company 1986

[4] Stallman Richard M GNU Emacs Manual octava edicioacuten Cambridge Massachusetts FreeSoftware Foundation 1993

Capiacutetulo 1

Introduccioacuten

How much does it cost to entice a dopeshysmoking Unix system guru to Dayton

Brian Boyle Unix Worlds First Annual Salary Survey

11 iquestQuieacuten debe leer este libro

iquestEs Ud la persona que debe leer este libro Permiacutetame responder a esta preguntahacieacutendole estas otras iquestAcaba de obtener Linux de alguna fuente lo instaloacute y ahoraquiere saber que puede hacer O iquestes un usuario de computadoras que nunca ha utilizadoUnix y estaacute considerando usar Linux pero quiere saber lo que puede hacer con eacutel

Si tiene este libro la respuesta a esas preguntas probablemente es siacute Cualquiera quetiene Linux (el clon gratuito de Unix escrito por Linus Torvalds) en su PC pero no sabeque hacer despueacutes de la instalacioacuten debe leer este libro Aquiacute encontraraacute explicacionessobre la mayoriacutea de los comandos baacutesicos de Unix e incluso de algunos avanzados Tambieacutentrataremos acerca del potente editor GNU Emacs y de muchas otras aplicaciones importantesen Unix

111 iquestQueacute debe hacer antes de leer este libro

Este libro supone que Ud tiene acceso a un sistema Unix (iexclPara aprender a nadar hay quemojarse) Maacutes importante auacuten el sistema Unix antes mencionado debe ser una PC INTELcorriendo Linux

Este requerimiento no es estrictamente necesario pero cuando las versiones de Unixdifieran en su comportamiento nos ocuparemos de las respuestas que exhiba Linux y no delas otras variantes de Unix

Linux estaacute disponible de distintas maneras llamadas distribuciones Espero que hayaencontrado una distribucioacuten completa como por ejemplo la MCCshyInterim y que la tengainstalada Existen diferencias entre las distintas distribuciones de Linux pero lamayoriacutea de ellas son insignificantes

Ocasionalmente veraacute que en este libro las cosas se ven un poquito distintas a lo que veen su computadora Si le sucede esto es probable que esteacute utilizando una versioacutendistinta de la miacutea estoy interesado en recibir informes de tales casos

Si Ud es el superusuario (el ocupado del mantenimiento el instalador) del sistemadeberaacute crearse una cuenta de usuario normal para Ud mismo Consulte por favor losmanuales de instalacioacuten para obtener la informacioacuten necesaria Si no es el superusuariodeberaacute solicitarle a quien lo sea que le cree una cuenta

Ahora deberaacute tener tiempo y paciencia El aprendizaje de Linux no es faacutecil _la mayoriacutea delas personas encuentran que es maacutes faacutecil aprender el sistema operativo del Macintosh Unavez que aprende Linux las cosas se vuelven mucho maacutes faacuteciles Unix es un sistema muypoderoso y con eacutel es muy faacutecil realizar tareas complejas

Ademaacutes este libro supone que Ud estaacute moderadamente familiarizado con algunos teacuterminoscomputacionales Aunque este requerimiento no es necesario hace maacutes faacutecil la lecturaDebe conocer teacuterminos como `programa o `ejecucioacuten Si no los maneja necesitaraacute de laayuda de alguien maacutes avezado durante su aprendizaje de Unix

12 iquestCoacutemo evitar leer este libro

La mejor manera de aprender el uso de casi cualquier programa de computadora esponieacutendose a trabajar sobre la computadora La mayoriacutea de las personas encuentran de pocobeneficio la lectura de un libro si no utilizan a la vez el programa Por lo tanto lamejor manera de aprender Unix y Linux es utilizaacutendolos Utilice Linux para todo lo quepueda Experimente No tenga miedo es posible que haga algunos liacuteos pero siempre puedevolver a instalar todo Mantenga actualizadas las copias de seguridad y iexcldivieacutertase

Unix no es un sistema operativo tan intuitivamente obvio como algunos otros Por lotanto es probable que deba leer al menos los capiacutetulos 4 5 y el 6 antes de empezar aexperimentar

La manera nuacutemero uno para evitar la lectura de este libro es que utilice la documentacioacutendisponible en liacutenea en Linux Para ello debe aprender a utilizar el comando man sudescripcioacuten estaacute en la Seccioacuten 42

13 iquestCoacutemo leer este libro

La manera sugerida para aprender Unix es leer un poquito luego jugar un poquito Jueguehasta que se sienta coacutemodo con los conceptos y luego puede saltar entre los temas que secubren en el libro Encontraraacute una variedad de temas algunos de los cuales seraacuten de suintereacutes Luego de un tiempo se sentiraacute lo suficientemente confiado como para utilizarcomandos sin saber exactamente que es lo que deberiacutean hacer Esta es una buena sentildeal

Lo que mucha gente asocia con Unix es el shell de Unix se trata de un programa especialque interpreta comandos En la praacutectica eacutesta es una manera conveniente de ver las cosaspero debe saber que Unix es realmente mucho maacutes que el shell o mucho menos _dependiendode como lo mire Este libro le diraacute como utilizar el shell los programas que usualmentevienen con Unix y algunos programas que no son muy comunes (pero que Linux casi siempretrae)

El capiacutetulo actual es un metashycapiacutetulo se discute acerca del libro y de comoaplicarlo para poder hacer nuestro trabajo Los otros capiacutetulos contienen

Capiacutetulo 2 trata del origen y destino de Unix y Linux Tambieacuten se habla de laFree Software Foundation y el proyecto GNU

Capiacutetulo 3 habla de como arrancar y detener su computadora y de lo quesucede durante esas operaciones Gran parte de esto tiene que ver con temasque no es necesario conocer para utilizar Linux pero auacuten asiacute son uacutetiles einteresantes

Capiacutetulo 4 introduce el shell de Unix Es con este programa con el cual laspersonas realizan su trabajo y corren los programas que necesitan Trata delos programas y comandos baacutesicos que necesitaraacute conocer para utilizar Unix

Capiacutetulo 5 cubre el sistema de ventana X2 X es la cara graacutefica principal deUnix e incluso algunas distribuciones lo configuran como opcioacutenpredeterminada

Capiacutetulo 6 analiza algunas de las caracteriacutesticas maacutes avanzadas del shell deUnix El aprendizaje de las teacutecnicas tratadas en este capiacutetulo le ayudaraacute aser maacutes eficiente

Capiacutetulo 7 tiene breves descripciones de muchos de los comandos Unix Cuantomaacutes herramientas sabe utilizar un usuario maacutes raacutepidamente puede concluir sutrabajo

Capiacutetulo 8 describe el editor de textos Emacs Se trata de un programa muyextenso que integra varias de las herramientas de Unix bajo una uacutenicainterfaz

Capiacutetulo 9 trata acerca de las distintas maneras que hay de personalizar unsistema Unix para satisfacer sus gustos personales

Capiacutetulo 10 investiga los medios por los cuales un usuario Unix puedecomunicarse con otras maacutequinas alrededor del mundo incluyendo el correoelectroacutenico y la Red de Alcance Mundial3

Capiacutetulo 11 describe algunos de los comandos con maacutes opciones y maacutes difiacutecilesde utilizar

Capiacutetulo 12 muestra formas sencillas de evitar errores en Unix y Linux

14 Documentacioacuten de Linux

Este libro Guiacutea de Linux Para el Usuario estaacute pensado para el principiante en UnixAfortunadamente el Linux Documentation Project (Proyecto de Documentacioacuten de Linux)tambieacuten estaacute escribiendo libros para los usuarios maacutes experimentados4

_____________________________________________

2 N del T X Window System

3 N del T tambieacuten conocida como WWW o World Wide Web

4 N del T El proyecto LuCAS estaacute ocupaacutendose de traducir parte de la documentacioacuten deLinux al castellano Para obtener informacioacuten actualizada de las traducciones vea elapeacutendice D

141 Otros libros de Linux

Los otros libros incluyen Installation and Getting Started 5 que es una guiacutea paraobtener e instalar Linux The Linux System Administrators Guide trata como organizar ymantener un sistema Linux y The Linux Kernel Hackers Guide que explica como modificarLinux The Linux Network Administrator Guide6 muestra como instalar configurar yutilizar una conexioacuten de red

142 COMOs

Ademaacutes de los libros el Proyecto de Documentacioacuten de Linux7 ha realizado una serie depequentildeos documentos que describen como configurar alguacuten aspecto particular de Linux Porejemplo el SCSIshyCOMO describe algunas de las complicaciones que aparecen al utilizarSCSI (que es una manera estaacutendar de comunicarse con ciertos dispositivos) y Linux

Estos COMOs estaacuten disponibles en varios formatos en un libro como The Linux Bible o DrLinux en el foro de discusioacuten composlinuxanswers o en varios lugares de la WWW Elsitio central de la informacioacuten acerca de Linux es httpwwwlinuxorg

143 iquestQueacute es el Proyecto de Documentacioacuten de Linux

Como casi todo lo asociado con Linux el Proyecto de Documentacioacuten de Linux consiste enun conjunto de gente que trabaja alrededor del mundo Originalmente organizado por LarsWirzenius el Proyecto estaacute coordinado en la actualidad por Matt Welsh con la ayuda deMichael K Johnson

Se espera que el Proyecto de Documentacioacuten de Linux provea los libros que satisfagantodas las necesidades de documentacioacuten de Linux en alguacuten momento Por favor diacuteganos sihemos tenido eacutexito o queacute es lo que debemos mejorar Puede contactar al autor enleg+andrewcmuedu a Matt Welsh en mdwcscornelledu8

15 Sistemas operativos

El propoacutesito principal de un sistema operativo es dar el soporte que necesitan losprogramas que hacen un trabajo de intereacutes para el usuario Por ejemplo Ud puede estarutilizando un editor si quiere crear un documento Ese editor no puede realizar sutrabajo sin la ayuda del sistema operativo _necesitaraacute esta ayuda para interactuar con laterminal los archivos y el resto de la computadora

Si todo lo que hace el sistema operativo es dar soporte a las aplicaciones que Ud deseautilizar iquestpor queacute se necesita todo un libro soacutelo para hablar del sistema operativoExiste un montoacuten de actividades de mantenimiento de rutina (ademaacutes de los programas queutilizaraacute principalmente) que Ud tambieacuten necesitaraacute realizar En el caso de Linux elsistema operativo contiene ademaacutes un montoacuten de minishyaplicaciones para ayudarle arealizar de manera maacutes eficiente su trabajo El conocimiento del sistema operativo leseraacute de ayuda si su trabajo no se centra en alguna aplicacioacuten monoliacutetica

_____________________________________________

5 N del T Disponible en castellano como Linux Instalacioacuten y Primeros Pasos Vea elapeacutendice D

6 N del T Disponible en castellano como Guiacutea de Administracioacuten de Redes con Linux Veael apeacutendice D

7 N del T El grupo INSFLUG ha traducido varios de los documentos HOWTO acuntildeando elteacutermino COMO Vea el apeacutendice E

8 N del T y al coordinador de esta traduccioacuten Ceacutesar Ballardini en cballardsantafecomar

Los sistemas operativos (SO para abreviar) pueden ser simples y miacutenimos como DOS ograndes y complejos como OS2 o VMS Unix trata de estar en un punto medio A la vez queproporciona maacutes recursos y hace maacutes que los primitivos SO no trata de hacer todo Unixse disentildeoacute originalmente como una simplificacioacuten de un sistema operativo que se denominoacuteMultics

La filosofiacutea original de disentildeo de Unix fue la de distribuir la funcionalidad en pequentildeaspartes los programas9 De esta forma el usuario puede obtener nueva funcionalidad ynuevas caracteriacutesticas de una manera relativamente sencilla mediante las diferentescombinaciones de pequentildeas partes (programas) Ademaacutes en el caso de que aparezcan nuevasutilidades (y de hecho aparecen) puede Ud integrarlas en su espacio de trabajo Cuandoescribo este documento por ejemplo utilizo activamente los siguientes programas fvwmpara manejar mis ventanas emacs para editar el texto LATEX para darle forma xdvipara ver una presentacioacuten preliminar dvips para prepararlo para la impresioacuten y luegolpr para imprimirlo Si mantildeana llegara a conseguir otro programa de presentacioacutenpreliminar de archivos dvi podriacutea utilizarlo en lugar del xdvi sin cambiar el resto delos programas que uso En el momento actual mi sistema estaacute corriendo treinta y ocho

programas simultaacuteneamente (Gran parte de ellos son programas del sistema que duermenhasta que tienen alguacuten trabajo especiacutefico para realizar)

Cuando utilice un sistema operativo desearaacute minimizar la cantidad de trabajo que tieneque llevar a cabo para concluir su tarea Unix proporciona varias herramientas que puedenayudarle pero para ello debe conocer que es lo que hacen No es muy productivo perderseuna hora intentando poner a andar alguna cosa y al final tener que abandonar todo Estelibro le ensentildearaacute queacute herramientas debe Ud utilizar en queacute situacioacuten y como combinaresas herramientas entre siacute

La parte clave de un sistema operativo se denomina nuacutecleo10 En muchos sistemasoperativos como Unix OS2 o VMS el nuacutecleo proporciona las funciones necesarias paralos programas que estaacuten corriendo y los planifica para su ejecucioacuten Esto significabaacutesicamente que el programa A puede tomar una cierta cantidad de tiempo el programa B lamisma cantidad etc El nuacutecleo siempre estaacute funcionando es el primer programa quearranca cuando se enciende el sistema y el uacuteltimo programa que hace algo cuando se apagael equipo

_____________________________________________

9 Este disentildeo estuvo determinado por el hardware sobre el cual funcionoacute originalmenteUnix Por alguna extrantildea razoacuten el sistema operativo resultante fue muy uacutetil sobre otrasplataformas de hardware El disentildeo baacutesico fue tan bueno que auacuten veinticinco antildeos despueacutessigue usaacutendose

10 N del T nuacutecleo del ingleacutes kernel

Capiacutetulo 2

A propoacutesito iquestqueacute es Unix

Ken Thompson tiene un automoacutevil en cuyo proyecto de disentildeo trabajoacute A diferencia de otrosautomoacuteviles eacuteste no tiene velociacutemetro nivel de combustible ni ninguna de las estuacutepidasluces que importunan al conductor moderno En su lugar si el conductor comete alguacutenerror se enciende un enorme en el centro del tablero El conductor experimentadodice sabraacute usualmente que es lo que anda mal

21 La historia de Unix

En 1965 los Bell Telephone Laboratories (Bell Labs una divisioacuten de ATampT) estabatrabajando con General Electric y el Proyecto MAC del MIT para escribir un sistemaoperativo llamado Multics

Para hacer maacutes corta una historia de por siacute larga Bell Labs decidioacute que el proyecto noestaba yendo a ninguna parte y disolvioacute el grupo Esto sin embargo dejoacute a la Bell sinun buen sistema operativo

Ken Thompson y Dennis Ritchie decidieron esbozar un sistema operativo que supliera lasnecesidades de la Bell Labs Cuando Thompson llegoacute a necesitar un entorno de desarrollo(1970) que corriera en una PDPshy7 aprovechoacute para poner en praacutectica sus ideas BrianKernighan le dioacute el nombre de Unix como un juego de palabras contra Multics

Un tiempo despueacutes Dennis Ritchie inventoacute el lenguaje de programacioacuten C En 1973 sereescribioacute el sistema operativo Unix en C en lugar del ensamblador original1 En 1977se movioacute Unix a una nueva maacutequina distinta de las PDP en las que habiacutea corridopreviamente mediante un proceso que se denomina migracioacuten El hecho de que Unix estabaescrito en C facilitoacute la migracioacuten pues gran parte del coacutedigo ya escrito necesitoacute soacutelouna simple recompilacioacuten y no una reescritura

Al final de los 70 ATampT teniacutea prohibido competir en la industria de la computacioacuten porlo que otorgoacute licencias econoacutemicas de Unix a varios colegios y universidades Unix sedifundioacute lentamente fuera de las instituciones acadeacutemicas pero pronto tambieacuten se hizopopular en el aacutembito comercial

El Unix de la actualidad es distinto del Unix de 1970 Existen dos corrientesprincipales System V de los Unix System Laboratories (USL) que es una subsidiaria deNovell2 y BSD Berkeley Software Distribution La versioacuten USL estaacute ahora por su cuartaversioacuten o SVR43 mientras que la uacuteltima BSD es la 44 Sin embargo existen muchasdiferentes versiones de Unix entre estas dos La mayoriacutea de las versiones de Unix sondesarrolladas por compantildeiacuteas de software y derivan de uno de los dos agrupamientos Lasversiones que se utilizan actualmente incorporan caracteriacutesticas de ambas variaciones

Las versiones actuales de Unix para PC Intel cuestan entre $500 y $2000

_____________________________________________

1 Lenguaje ensamblador es un lenguaje de computadoras muy elemental y que estaacuteindisolublemente ligado a un tipo particular de ordenador

22 La historia de Linux

El autor primario de Linux es Linus Torvalds A partir de la versioacuten original ha sidomejorado por incontables personas de todo el mundo Se trata de un clon del sistemaoperativo Unix escrito desde cero Ni USL ni la Universidad de California Berkeleytuvieron participacioacuten en la escritura de Linux Una de las cosas maacutes interesantes deLinux es que el desarrollo ocurre simultaacuteneamente alrededor del mundo La gente hacontribuiacutedo desde Australia a Finlandia y esperamos que lo siga haciendo

Linux comenzoacute como un proyecto para explorar el chip 386 Uno de los primeros proyectosde Linus fue un programa que pueda alternar entre la impresioacuten de AAAA y BBBB Esto luegoevolucionoacute hacia Linux

Linux ha sido registrado bajo los teacuterminos de la Licencia Puacuteblica General GNU (GNUGeneral Public License) o GPL Esta licencia escrita por la Free Software Foundation(FSF) estaacute disentildeada para evitar que alguna persona restrinja la distribucioacuten desoftware En pocas palabras dice que aunque Ud cobre a alguien por entregarle unacopia no podraacute impedir que ese alguien la regale Tambieacuten significa que debe estardisponible el coacutedigo fuente4 Esto es uacutetil para los programadores

Cualquiera puede modificar Linux y auacuten distribuir sus modificaciones siempre quemantenga el coacutedigo bajo la misma licencia

En Linux puede correr la mayoriacutea del software popular en Unix incluyendo el Sistema deVentanas X X se desarrolloacute en el Instituto Tecnoloacutegico Massachusetts para permitir alos sistemas Unix la creacioacuten de ventanas graacuteficas y la coacutemoda interaccioacuten con lasmismas En la actualidad el sistema X se usa en todas las versiones disponibles de Unix

Ademaacutes de las dos variaciones de Unix System V y BSD existe un conjunto de documentosde estandarizacioacuten publicados por la IEEE denominados POSIX Linux antes que nadasatisface los documentos POSIXshy1 y POSIXshy2 Su apariencia se asemeja mucho a la de BSD enciertas partes mientras que es parecido a System V en otras Es una combinacioacuten (y parala mayoriacutea de las personas una buena) de los tres estaacutendares

Algunas de las utilidades incluiacutedas con las distribuciones de Linux proceden de la FreeSoftware Foundation y son parte del proyecto GNU El proyecto GNU es un esfuerzo paraescribir un avanzado sistema operativo portable con el estilo de Unix Portablesignifica que pueda correr en una variedad de maacutequinas distintas no soacutelo en PCs IntelMacintoshes o lo que sea El sistema operativo del Proyecto GNU se llama Hurd Laprincipal diferencia entre el Linux y el GNU Hurd no se encuentra en la interfaz delusuario sino en la del programador el Hurd es un sistema operativo moderno mientrasque Linux es maacutes parecido al disentildeo original de Unix

_____________________________________________

2 Recientemente vendida a Novell antes era propiedad de ATampT

3 Una manera criacuteptica de decir System five Revision four

4 El coacutedigo fuente de un programa es lo que el programador lee y escribe Luego setraduce a un coacutedigo de maacutequina ilegible para las personas que es el que la computadorainterpreta

La historia precedente de Linux olvida mencionar otra persona maacutes allaacute de Linus TorvaldsPor ejemplo H J Lu se ha ocupado de mantener gcc y la biblioteca C de Linux (doselementos necesarios para todos los programas en Linux) casi desde el principio de lavida del sistema operativo Ud puede encontrar una lista de personas que merecenreconocimiento por su trabajo en cada sistema Linux en el archivousrsrclinuxCREDITS

221 Linux aquiacute y ahora

La primer cifra en el nuacutemero de versioacuten de Linux indica revisiones realmente importantesen alcance

Este nuacutemero cambia muy lentamente y para la eacutepoca en que esto se escribe (febrero de1996) soacutelo estaacute disponible la versioacuten 115 La segunda cifra indica revisiones de menorenvergadura

Los segundos nuacutemeros cuando son pares representan versiones maacutes estables en las que unopuede confiar plenamente cuando son impares indican versiones en desarrollo que son maacutespropensas a contener errores La uacuteltima cifra es el nuacutemero menor de lanzamiento cada vezque se libera una nueva versioacuten que tal vez soacutelo arregla unos pocos problemas o agregaunas pocas caracteriacutesticas se incrementa en uno este nuacutemero En febrero de 1996 lauacuteltima versioacuten estable es la 1211 y la uacuteltima en desarrollo es la 1361

Linux es un sistema grande y desafortunadamente contiene errores que los desarrolladoresreparan al encontrarlos Auacuten cuando algunas personas puedan experimentarmalfuncionamientos regularmente esto se debe normalmente a causa de piezas de hardwareque no son estaacutendares o que estaacuten defectuosas los errores6 que afectan a todos losusuarios son escasos y no se dan seguido

Por supuesto eacutesos son los errores del nuacutecleo Los errores pueden presentarse en casicada aspecto del sistema y los usuarios de poca experiencia tienen problemas paradiferenciar los distintos programas entre siacute Por ejemplo cierto problema puede hacerque todos los caracteres aparezcan como un galimatiacuteas iquestes un error o unacaracteriacutestica Sorpresivamente es una caracteriacutestica existen ciertas secuencias decontrol que al aparecer provocan el galimatiacuteas Espero que este libro le sea de ayudapara poder identificar esas situaciones

222 Unas pocas preguntas y respuestas

Antes de embarcarnos para nuestra larga travesiacutea repasemos las cuestiones ultrashyimportantes

Pregunta iquestCoacutemo se pronuncia Linux

Respuesta De acuerdo con Linus debe pronunciarse con un sonido corto ih como prIntmInImal etc Linux debe rimar con Minix que es otro clon de Unix No debe pronunciarsecomo la pronunciacioacuten (americana) de Peanuts en Linus sino maacutes bien como LIHshynucksY la u es cortante como en rule no suave como en ducks Linux debe al menos rimarcon cynics

_____________________________________________

5 N del T La traduccioacuten se hace en febrero de 1997 y ya la versioacuten 2 es cosa detodos los diacuteas

6 N del T error del ingleacutes bug

Pregunta iquestPor queacute trabajar en Linux

Respuesta iquestPor queacute no Linux es generalmente maacutes barato que los otros sistemasoperativos (o al menos no maacutes caro) y con frecuencia es menos problemaacutetico que algunossistemas comerciales Puede que no sea el mejor sistema para sus aplicaciones enparticular pero para alguien que estaacute interesado en utilizar las aplicaciones Unixdisponibles para Linux se trata de un sistema de alta performance

223 Software comercial en Linux

Existe un montoacuten de software comercial disponible para Linux Comenzando con Motif quees una interfaz para el sistema X Window que vagamente nos recuerda a Microsoft WindowsLinux tiene cada vez maacutes software comercial En estos tiempos Ud puede adquirircualquier cosa desde WordPerfect (el popular procesador de palabras) hasta Maple que esun paquete que realiza complejas manipulaciones simboacutelicas para Linux

Para aquellos lectores interesados en las cuestiones legales esto estaacute permitido por lalicencia de Linux A la vez que la licencia GNU General Public License (que se reproduceen el Apeacutendice B) cubre el nuacutecleo de Linux la licencia GNU Library General PublicLicense (que se puede ver en el Apeacutendice C) cubre la mayor parte del coacutedigo del cualdependen las aplicaciones Esto permite que los proveedores de software comercial puedanvender sus aplicaciones y reservarse el coacutedigo fuente de las mismas

Debe Ud percatarse de que los dos documentos antes nombrados son notificaciones dederechos de autor Ellos no regulan como utiliza Ud el software solamente indican bajocuales circunstancias Ud puede copiar dicho software o sus productos derivados Para laFree Software Foundation eacutesta es una distincioacuten muy importante Linux no involucraninguna licencia estilo pitoacuten que lo envolveraacute y asfixiaraacute sino que estaacute protegidopor la misma ley que le impide a Ud fotocopiar un libro

Capiacutetulo 3

En el principio

This login session $1399 but for you $1188

Tal vez ha tenido experiencia con MSshyDOS u otro sistema operativo monousuario como OS2o el de Macintosh En esos sistemas operativos Ud no tiene que identificarse frente ala computadora antes de poder utilizarla siempre se supone que es el uacutenico usuario en elsistema y que puede acceder a todo lo que quiera Por el contrario Unix es un sistemaoperativo multiusuario no soacutelo puede utilizarlo maacutes de una persona a la vez sino quelas distintas personas recibiraacuten distinto trato

Para poder identificar las personas Unix necesita un usuario para que el procesodenominado ingreso1 pueda identificarlo o identificarla2 Apenas se enciende unacomputadora tiene lugar un complejo proceso antes que la misma esteacute lista para serusada Como esta guiacutea estaacute orientada a Linux les direacute que es lo que sucede durante lasecuencia de arranque3

Debe advertir Ud que si estaacute utilizando Linux en alguna clase de ordenador distinto auna PC Intel algunos temas de este capiacutetulo no se aplicaraacuten a su caso En su mayoriacuteadichos temas se encontraraacuten en la Seccioacuten 31

Si Ud estaacute interesado uacutenicamente en utilizar su computadora puede saltearse toda lainformacioacuten de este capiacutetulo excepto la de la Seccioacuten 33

31 La computadora despierta

Lo primero que sucede cuando se conecta la alimentacioacuten a su computadora es la ejecucioacutende un programa denominado BIOS Su nombre proviene de las iniciales de Basic InputOutputSystem que significa Sistema de EntradaSalida Baacutesico Este programa estaacute almacenado demanera permanente dentro de la computadora en chips que normalmente son del tipo delectura solamente Para nuestros propoacutesitos el BIOS es un programa que nunca se puedecambiar Al funcionar realiza ciertas comprobaciones miacutenimas y luego se fija si hay undisquete en la primer disquetera Si encuentra alguno mira en su sector de arranque ycomienza a ejecutar su coacutedigo si lo hay Si hay un disquete pero no contiene un sectorde arranque el BIOS mostraraacute el siguiente mensaje

Nonshysystem disk or disk error

_____________________________________________

1 N del T ingreso en ingleacutes logging in

2 Desde ahora en adelante utilizareacute los pronombres masculinos para identificar a todaslas personas Esta es la convencioacuten estaacutendar en ingleacutes (N del T y en castellano) ycon esto no quiero decir que soacutelo los hombres pueden utilizar computadoras

3 N del T arranque del ingleacutes bootshyup

Si quitamos el disquete y apretamos una tecla el proceso de arranque continuaraacute Si noexiste un disquete en la disquetera el BIOS se fija si existe un registro maestro dearranque (MBR master boot record) en el disco riacutegido Si es asiacute comienza a ejecutar elcoacutedigo que alliacute encuentra que se ocupa de cargar el sistema operativo En los sistemasLinux el cargador se llama LILO (por LInux LOader) puede ocupar el MBR y en ese casocargaraacute el Linux (La distribucioacuten en particular que esteacute utilizando puede manejar elarranque desde el disco riacutegido de otra manera asiacute que debe controlar esto en ladocumentacioacuten que se incluye con la distribucioacuten Otra buena referencia es ladocumentacioacuten de LILO [1 ])

32 Linux despierta

Luego que el BIOS le pasa el control a LILO LILO a su vez le pasa el control al nuacutecleode Linux El nuacutecleo es el programa central del sistema operativo que controla a todoslos demaacutes Lo primero que hace Linux una vez que comienza su ejecucioacuten es cambiar la CPUa modo protegido El procesador 803864 que controla su computadora tiene dos modos que sedenominan modo real y modo protegido El sistema operativo DOS corre en modo real aligual que el BIOS Sin embargo los sistemas operativos maacutes avanzados necesitan correr enmodo protegido Por ello cuando Linux arranca descarta el BIOS

Los procesadores distintos al 386 llegan a este estado de manera diferente Ninguacuten otroprocesador necesita cambiar a modo protegido y soacutelo unos pocos tienen un contexto tanpesado de carga como LILO y el BIOS Una vez que arranca el nuacutecleo Linux trabaja caside la misma manera

A continuacioacuten Linux mira que clase de hardware tiene debajo Necesita saber que clasede discos riacutegidos tiene si hay o no un ratoacuten de bus si estaacute conectado a una red yotras trivialidades como esas Linux no puede recordar ciertas cosas luego de apagado demanera que las pregunta cada vez que arranca Afortunadamente no se las pregunta a Udiexclse las pregunta al hardware Durante el arranque el nuacutecleo de Linux muestra unoscuantos mensajes aunque con ciertas variaciones

Puede leer acerca de esos mensajes en la Seccioacuten 34 Este proceso de consulta puedecausar algunos problemas con el sistema pero si lo hace lo haraacute probablemente cuandoinstale Linux por primera vez Si tiene problemas consulte la documentacioacuten de ladistribucioacuten

El nuacutecleo solamente se ocupa de administrar los otros programas entonces cuando estaacutesatisfecho con que todo anda bien debe arrancar otro programa para que haga los trabajosuacutetiles El programa que el nuacutecleo arranca se llama init_____________________________________________

4 Cuando hable del 80386 tambieacuten hago referencia a computadoras basadas en 80486Pentium y Pentium Pro a menos que especiacuteficamente indique lo contrario Ademaacutesabreviareacute 80386 mediante el teacutermino 386

Figura 31 El camino que sigue un PC Intel hasta que nos muestra el indicativo delinteacuterprete de comandos Init puede o no arrancar X Si lo hace corre xdm Si no corregetty

Una vez que el nuacutecleo arranca init no lanza ninguacuten otro programa El nuacutecleo setransforma asiacute en un administrador y proveedor no en un programa activo

Por lo tanto para saber que es lo que hace la computadora luego que el nuacutecleo arrancadeberemos examinar init La complicada secuencia de arranque por la que atraviesa init noes ideacutentica en todas las computadoras Para Linux existen varias versiones de init ycada una hace las cosas a su manera Ademaacutes tambieacuten influye si su maacutequina estaacute en red e

incluso cual distribucioacuten utilizoacute para instalar Linux Algunas de las cosas que puedensuceder cuando init arranca son

o El control de integridad del sistema de archivos iquestPero queacute es un sistema de archivosse estaraacute preguntando Ud Un sistema de archivos es la disposicioacuten de los archivos enel disco riacutegido Ademaacutes permite que Unix sepa cuales partes del disco riacutegido estaacutenocupadas y cuales no Desafortunadamente ciertos factores como los cortes en elsuministro de energiacutea hacen que la informacioacuten que el sistema de archivos tiene sobre ladisposicioacuten en el disco de los archivos no coincida con la disposicioacuten real En estoscasos se ve la utilidad de un programa llamado fsck que es capaz de encontrar estassituaciones y (con suerte) corregirlas

o Se lanzan programas especiales de encaminamiento para las redes Estos programasinforman a su computadora coacutemo se supone que puede comunicarse con las otras

o Se borran los archivos temporales que crean ciertos programas

o Se actualiza correctamente el reloj del sistema Esto es maacutes complicado de lo que puedeparecer pues Unix de manera predeterminada necesita la hora en UCT (UniversalCoordinated Time) tambieacuten conocido como hora de Greenwich y el reloj de la CMOS (que esalimentado por una bateriacutea dentro de la computadora) muy probablemente estaraacute configuradocon la hora local Esto significa que debe tener alguacuten programa que lea la hora del relojde la CMOS y la corrija transformaacutendola en hora UCT

Despueacutes que init termina con sus actividades de arranque comienza con sus tareasplanificadas

init se convierte asiacute en el padre de todos los procesos del sistema Unix Un proceso essimplemente un programa que estaacute corriendo como cualquier programa puede correr maacutes deuna vez entonces puede haber maacutes de un proceso para un programa dado en particular

En Unix los procesos (instancias de un programa) se crean mediante una llamada alsistema5 (que es un servicio provisto por el nuacutecleo) denominada fork (Se lo llama forko bifurcacioacuten pues un proceso se bifurca en dos independientes) init forkea (bifurca)unos cuantos procesos los que a su vez forkean6 otros En su sistema Linux con todaseguridad init corre varias instancias de un programa llamado getty getty es el programaque le permitiraacute iniciar el ingreso al usuario y que a continuacioacuten lanzaraacute el programalogin

33 La actuacioacuten del usuario

331 El ingreso

Lo primero que hay que hacer para poder utilizar una maacutequina con Unix es identificarsefrente a la misma Este proceso conocido en ingleacutes como logging in (registro deingreso) es la manera que tiene Unix de saber cuales son los usuarios autorizados parautilizar el sistema Durante el ingreso se le preguntaraacute un nombre de cuenta y unacontrasentildea7 Los nombres de las cuentas son por lo general parecidos a los nombres de laspersonas y se lo asignaraacute el administrador del sistema Si Ud es el administrador delsistema deberaacute crearse una cuenta para poder trabajar sin los cuidados especiales querequiere la cuenta root (La informacioacuten necesaria para llevar a cabo dicha tarea podraacuteencontrarla en Installation and Getting Started 8 o en The Linux System AdministratorsGuide)

Luego de que tenga lugar la secuencia de procedimientos durante el arranque Ud veraacute enla pantalla algo como lo que se muestra a continuacioacuten (la primer liacutenea es meramente unsaludo (podriacutea ser alguna advertencia legal o cualquier otra cosa)

Welcome to the mousehouse Please have some cheese

mousehouse login

Sin embargo puede ser que lo que el sistema le presente al arrancar no se parezca aesto Por ejemplo puede que en lugar de una aburrida pantalla de texto nos muestre unapantalla graacutefica Auacuten en este caso la computadora le pediraacute sus datos al ingreso y maacutes omenos de la misma manera Si eacuteste es el caso en su sistema entonces el entorno detrabajo que utilizaraacute es el sistema X El X Window

System es un sistema de ventanas y en el capiacutetulo 5 se discutiraacuten algunas de lasdiferencias con las que se enfrentaraacute De cualquier manera el proceso de ingreso seraacutesimilar en ambos casos

_____________________________________________

5 N del T llamada al sistema del ingleacutes system call

6 N del T Mis disculpas por el teacutermino prometo no usarlo maacutes shy)

7 N del T contrasentildea palabra clave del ingleacutes password

8 N del T Puede consultar la versioacuten en castellano ya existente

Esta es por supuesto la invitacioacuten que Ud buscaba para ingresar (login) A lo largo deeste manual utilizaremos el usuario ficticio (o no tan ficticio dependiendo de sumaacutequina) larry9 Donde Ud vea larry debe poner el nombre de su propia cuenta Losnombres de las cuentas se basan en general en los nombres reales los sistemas Unix maacutesgrandes y serios tienen cuentas que usan el apellido del usuario alguna combinacioacuten denombre y apellido y auacuten se da el caso que deban agregarle algunos diacutegitos Por ejemplonombres de cuentas posibles para Larry Greenfield podriacutean ser larry greenfie lgreenfilg19

mousehouse seraacute de la misma manera el nombre de la maacutequina sobre la que trabajareacute

Es posible que cuando Ud instale Linux se le pregunte el nombre que desea asignarleEsto no es demasiado importante pero cada vez que haga falta utilizareacute mousehouse o maacutesraramente lionsden cuando necesite de un segundo sistema por razones de claridad o decontraste

Luego de teclear larry y apretar |_Intro_| nos encontramos con lo siguiente

mousehouse login larry

Password

Linux estaacute solicitando su contrasentildea10 Cuando escriba su contrasentildea no podraacute ver lo queestaacute tecleando en razoacuten de la privacidad necesaria a dicha palabra Escribacuidadosamente puede borrar caracteres pero no podraacute ver lo que estaacute editando Noescriba muy despacio si hay gente miraacutendole podriacutean llegar a descubrirla En cualquiercaso si se equivoca no se haga problemas pues el sistema le daraacute otra oportunidad deingresar

Luego que ingrese correctamente su nombre de cuenta o nombre de usuario y su contrasentildeaapareceraacute un corto mensaje denominado mensaje del diacutea11 que se obtiene del archivoetcmotd

Este archivo se utiliza para dar a conocer cualquier clase de informacioacuten a los usuarioscon respecto al estado del sistema y es responsabilidad del administrador del sistemafijar su contenido Despueacutes de todo esto aparece un prompt Un prompt es un siacutembolo que

nos indica que la computadora estaacute lista para recibir un comando Debe parecerse a lasiguiente figura

homelarry$

Si Ud estaacute utilizando X Window el prompt apareceraacute en alguna de las ventanas que hayen pantalla (Las ventanas son simples cajas rectangulares) Para escribir en elprompt mediante el ratoacuten mueva el cursor del mismo (probablemente se ve como una granX o una flecha) dentro de la ventana

332 Al abandonar la computadora

iexclNo apague la computadora directamente iexclSe arriesga a perder valiosos datos

A diferencia de la mayoriacutea de las versiones de DOS no es una buena idea apagar la llavede alimentacioacuten de la computadora asiacute como asiacute cuando termine de utilizarla Si reiniciala maacutequina (con el botoacuten de reset) sin antes tomar las debidas precauciones seraacute igual depernicioso Linux tiene una antememoria o cacheacute que mejora el rendimiento del disco Estosignifica que temporalmente guarda en RAM informacioacuten perteneciente al sistema dealmacenamiento permanente12

_____________________________________________

9 N del T He dejado aquiacute sin traducir ni cambiar el nombre del autor de la versioacuten eningleacutes y lo mismo vale para otros nombres como el de la maacutequina etc

10N del T contrasentildea del ingleacutes password

11N del T mensaje del diacutea del ingleacutes Message Of The Day(motd)

Las diferencias entre lo que Linux cree que hay en el disco y lo que efectivamente estaacutealmacenado en el disco se sincronizan cada 30 segundos Si desea apagar o reiniciar lacomputadora necesitaraacute ejecutar alguacuten procedimiento que indique a Linux que debe detenerel sistema de cacheacute y actualizar la informacioacuten en el disco

Si ya ha terminado sus tareas con la computadora pero auacuten estaacute dentro del sistema (yatecleoacute su nombre de usuario y su palabra clave) lo primero que debe hacer es registrarla salida (logout) del sistema Para ello teclee el comando logout Todos los comandosse enviacutean oprimiendo la tecla marcada como |_Enter_| |_Return_| oacute |_Intro_| Hasta queno aprieta |_Intro_| no pasa nada y por lo tanto puede borrar lo que escribioacute yrecomenzar

homelarry$ logout

Welcome to the mousehouse Please have some cheese

mousehouse login

Ahora puede ingresar otro usuario

333 Como apagar la computadora

Si el suyo se trata de un sistema en el cual trabaja un uacutenico usuario (Ud shy)) puededesear apagar la computadora cuando haya finalizado su trabajo con ella13 Para bajar elsistema14 o sea apagarlo ordenadamente deberaacute ingresar a una cuenta especialdenominada root La cuenta del root es la cuenta del administrador del sistema y puedeacceder a todos los archivos que existen en el sistema Si desea apagar la computadoraprimero debe bajar el sistema y para ello deberaacute obtener la palabra clave que utiliza eladministrador del sistema Por favor ingrese Ud Entonces como root

mousehouse login root

Password

Linux version 1355 (rootmousehouse) 1 Sun Jan 7 145626 EST 1996

shutdown now

Why fin del dia de trabajo

URGENT message from the sysadmin

System going down NOW

fin del dia de trabajo

Now you can turn off the power

_____________________________________________

12 La diferencia entre RAM y un disco riacutegido es como la diferencia entre la memoria decorto plazo y la de largo plazo Al quitar la alimentacioacuten de la computadora es como sile dieacuteramos un fortiacutesimo golpe en la cabeza olvidaraacute todo lo que teniacutea en la memoria decorto plazo Pero las cosas guardadas en la memoria de largo plazo el disco riacutegidoestaraacuten bien El disco es miles de veces maacutes lento que la RAM

13 Para evitar el debilitamiento prematuro de ciertos componentes de hardware es mejorque apague la computadora soacutelo cuando ya no la vaya a utilizar por el resto del diacuteaEncender y apagar una vez al diacutea la computadora probablemente es el mejor compromisoentre ahorrar energiacutea y machacar el sistema

14 N del T bajar el sistema del ingleacutes shutdown

El comando shutdown now prepara al sistema para que pueda apagarse o reiniciarse Debeesperar por el mensaje que dice que es seguro apagar o reiniciar el sistema (Cuando elsistema le pregunta Why15 soacutelo le estaacute preguntando una razoacuten para decirle a los otrosusuarios Como no hay otra persona utilizando el sistema cuando Ud lo baja puederesponderle con lo que se le ocurra o con nada)

Un pequentildeo dato para el perezoso como alternativa al enfoque de logoutlogin se puedeutilizar el comando su Mientras estaacute trabajando con su nombre de cuenta habitual (larrya nuestros efectos) escriba su y luego |_Intro_| Se le solicitaraacute la palabra clave deladministrador del sistema y si la ingresa correctamente tendraacute a partir de dicho momentolos privilegios que le corresponden al mismo Ahora con estos privilegios agregadospodraacute bajar el sistema mediante el comando shutdown now

34 Mensajes del nuacutecleo

Cuando se conecta la alimentacioacuten a su computadora aparece una serie de mensajes en lapantalla que describe el hardware conectado al ordenador Estos mensajes son producto dela actividad del nuacutecleo de Linux En esta seccioacuten intentaremos describir y explicar esosmensajes

Naturalmente estos mensajes variacutean de maacutequina a maacutequina Describireacute entonces losmensajes que aparecen en la miacutea El siguiente ejemplo contiene todos los mensajesestaacutendar y algunos especiacuteficos (En general la maacutequina sobre la que voy a realizar ladescripcioacuten estaacute miacutenimamente configurada no veraacute por lo tanto mucha informacioacutenrelacionada con la configuracioacuten de dispositivos)

Se utilizoacute Linux versioacuten 1355 uno de los maacutes recientes al momento de escribir

1 Lo primero que hace Linux es decidir que clase de tarjeta de viacutedeo y pantalla tieneconectado de manera de seleccionar un tamantildeo de letra apropiado (Cuanto maacutes pequentildeo esel tamantildeo maacutes caben en una pantalla a la vez) Linux puede consultarle si desea alguacutentipo de letra en particular o puede que tenga una seleccioacuten ya compilada en suinterior16

Console 16 point font 400 scans Console colour VGA+ 80x25 1 virtualconsole (max 63)

En este ejemplo el duentildeo de la maacutequina decidioacute al momento de compilar que utilizariacuteael tipo de letra estaacutendar tamantildeo grande Ademaacutes notaraacute que la palabra color estaacute malescrita Evidentemente Linus aprendioacute la versioacuten incorrecta de idioma ingleacutes17

_____________________________________________

15 N del T why significa iquestpor queacute

16 Compilada se refiere al proceso mediante el cual un programa de computadora escritopor una persona se traduce a algo que entiende la computadora Si una caracteriacutestica seha compilado en su interior significa que estaacute incluida en el programa

17 N del T colour es la variante ortograacutefica del ingleacutes insular y color lanorteamericana

2 La proacutexima tarea del nuacutecleo es informar acerca de la velocidad de su sistema medidaen BogoMIPS Un MIP equivale a un milloacuten de instrucciones por cada segundo mientrasque un BogoMIP es un bogus MIP18 cuantas veces la computadora puede hacerabsolutamente nada por cada segundo (Como este bucle no hace nada en realidad el nuacutemerocalculado no es tampoco una medida de la velocidad del sistema) Linux utiliza estenuacutemero cuando necesita esperar por alguacuten dispositivo de hardware

Calibrating delay loop ok shy 3328 BogoMIPS

3 El nuacutecleo de Linux tambieacuten nos comenta acerca de la utilizacioacuten de la memoria

Memory 23180k24576k available (544k kernel code 384k reserved 468k data)

Esto significa que la maacutequina tiene 24 megabytes de memoria Parte de esta memoria estaacutereservada por el nuacutecleo El resto puede ser utilizada por los programas Eacuteste es el lugartemporal conocido como RAM que se utiliza soacutelo como almacenamiento de corto plazo Sucomputadora tambieacuten dispone de una memoria permanente denominada disco riacutegido El

contenido del disco riacutegido se mantiene intacto auacuten luego de quitar la alimentacioacuten delordenador

4 A lo largo del proceso de arranque Linux controla distintas partes del hardware y nosmuestra mensajes indicativos de las mismas

This processor honours the WP bit even when in supervisor mode Good

5 Ahora Linux pasa a la configuracioacuten de red Lo que veremos a continuacioacuten estaacute mejorexplicado en The Linux Networking Guide19 y estaacute fuera del alcance de este documento

Swansea University Computer Society NET3033 for Linux 1350

IP Protocols ICMP UDP TCP

6 Linux soporta la FPU la unidad de punto flotante20 Eacutesta es un chip especial (o partede un chip en el caso del procesador 80486DX) que se ocupa de la aritmeacutetica con nuacutemerosno enteros

Algunos de esos chips no estaacuten en buenas condiciones y cuando Linux trata deidentificarlos la maacutequina se cuelga21 La maacutequina deja de funcionar Si esto sucedeUd veraacute en su pantalla lo siguiente

Checking 386387 coupling

Sino el mensaje seraacute

Checking 386387 coupling Ok fpu using exception 16 error reporting

si estaacute utilizando un 486DX Si tiene un 386 con un 387 le apareceraacute

Checking 386387 coupling Ok fpu using irq13 error reporting

_____________________________________________

18 N del T bogus significa espurio (para los argentinos trucho)

19 N del T Disponible en castellano Vea el apeacutendice D

20 N del T unidad de punto flotante del ingleacutes Floating Point Unit

21 N del T se cuelga del ingleacutes crashes

7 Y ahora se controla la instruccioacuten halt

Checking hlt instruction Ok

8 Luego de esta configuracioacuten inicial Linux escribe una liacutenea identificaacutendose a siacutemismo En ella explica cual es la versioacuten del nuacutecleo la del compilador de C de GNU quese utilizoacute para compilarlo y la fecha de dicha compilacioacuten

Linux version 1355 (rootmousehouse) (gcc version 270) 1 Sun Jan 7145626 EST 1996

9 El controlador serie comienza a consultar acerca del hardware instalado Uncontrolador es una parte del nuacutecleo que controla un dispositivo normalmente unperifeacuterico Se hace responsable por los detalles de la comunicacioacuten entre la CPU y eldispositivo Esto permite que la gente que escribe aplicaciones de usuario se puedaconcentrar en la aplicacioacuten pues no tiene que preocuparse por como trabaja exactamentela computadora

Serial driver version 411 with no serial options enabled

tty00 at 0x03f8 (irq = 4) is a 16450

tty01 at 0x02f8 (irq = 3) is a 16450

tty02 at 0x03e8 (irq = 4) is a 16450

Aquiacute vemos que ha encontrado tres puertos serie Un puerto serie es el equivalente delpuerto COM en DOS es el dispositivo que se utiliza normalmente para comunicarse conmodems y ratones

Lo que significan las liacuteneas anteriores es que el puerto serie 0 (COM1) tiene ladireccioacuten 0x03f8

Cuando dicho puerto interrumpe al nuacutecleo usualmente para decir que tiene datos listosutiliza la IRQ 422 Las IRQ son un medio que tienen los perifeacutericos de hablarse con elsoftware Cada puerto serie tambieacuten tiene un chip controlador que usualmente se denomina16450 aunque tambieacuten puede ser el 8250 o el 16550

10 A continuacioacuten viene el puerto paralelo que normalmente se conecta a la impresoraLos puertos paralelos en Linux tienen nombres que comienzan con lp lp son las inicialesde Line Printer23 aunque en los tiempos actuales parece maacutes apropiado usar las inicialesde Laser Printer (Sin embargo Linux se comunica sin problemas con cualquier clase deimpresora conectada al puerto paralelo de matriz de puntos chorro de tinta o laser)

lp0 at 0x03bc (polling)

Este mensaje dice que ha encontrado un puerto paralelo y que usaraacute el controlador dedispositivo estaacutendar

_____________________________________________

22 N del T IRQ Interrupt ReQuest (peticioacuten de interrupcioacuten)

23 N del T Impresora de liacuteneas

11 Linux identifica luego las unidades de disco riacutegido En el sistema que le estoymostrando mousehouse tengo instalados dos unidades de disco riacutegido IDE

hda WDC AC2340 325MB w127KB Cache CHS=10101255

hdb WDC AC2850F 814MB w64KB Cache LBA CHS=8273263

12 El nuacutecleo ahora busca las unidades de disco flexible En este ejemplo la maacutequinatiene dos unidades la A es una unidad de 5 1=4 y la B es una de 3 1=2 Linuxdenomina fd0 a la unidad A y fd1 a la unidad B

Floppy drive(s) fd0 is 144M fd1 is 12M

floppy FDC 0 is a National Semiconductor PC87306

13 El proacuteximo controlador que arranca en mi sistema ejemplo es el controlador SLIPEscribe un mensaje acerca de su configuracioacuten

SLIP version 083shyNET3019shyNEWTTY (dynamic channels max=256) (6 bitencapsulation enabled)

CSLIP code copyright 1989 Regents of the University of California

14 El nuacutecleo explora dentro de los discos riacutegidos que ha encontrado Busca las distintasparticiones que tiene cada uno Una particioacuten es una seccioacuten loacutegica de una unidad que seutiliza para evitar que interfieran entre siacute distintos sistemas operativos coexistentesEn este ejemplo la computadora tiene dos discos (hda y hdb) con cuatro y unaparticiones respectivamente

Partition check

hda hda1 hda2 hda3 hda4

hdb hdb1

15 Finalmente Linux monta la particioacuten raiacutez Eacutesta es la particioacuten del disco en la cualreside el sistema operativo Linux Cuando Linux monta esta particioacuten hace que esteacutedisponible para los usuarios

VFS Mounted root (ext2 filesystem) readonly

Capiacutetulo 4

El shell de Unix

Es muy faacutecil crear archivos en el sistema operativo UNIX Por lo tanto los usuariostienden a crear muchos archivos que utilizan una gran cantidad de espacio Se ha dichoque la uacutenica cosa estaacutendar y comuacuten a todos los sistemas UNIX es el mensajeshydelshydiacutea queles pide a los usuarios que borren los archivos que no necesitan

Guiacutea del administrador de System V2

41 Comandos Unix

Cuando ingresa al sistema Unix se enfrenta con algo maacutes o menos como lo que se muestra acontinuacioacuten

homelarry$

Ese algo se denomina prompt1 Como su nombre sugiere le solicita a Ud que ingrese uncomando Todos los comandos Unix consisten de una secuencia de letras nuacutemeros ycaracteres No son vaacutelidos los espacios dentro del nombre del comando Algunos comandosvaacutelidos son mail cat y CMU_is_Numbershy5 Algunos caracteres no estaacuten permitidosvolveremos a este tema maacutes adelante

Unix ademaacutes hace diferencia entre mayuacutesculas y minuacutesculas2 lo que significa que Cat ycat son comandos distintos

El prompt se muestra como resultado del accionar de un programa especial denominadointeacuterprete de comandos3 El inteacuterprete de comandos o shell acepta los comandos queescribe el usuario y los ejecuta Los comandos pueden formar programas en el lenguaje delinteacuterprete de comandos y a dichos programas se los denomina guiones de shell

_____________________________________________

1 N del T prompt significa solicitud

2 La diferenciacioacuten entre mayuacutesculas y minuacutesculas es una cosa muy personal Algunossistemas operativos como OS2 y Windows NT preservan las diferencias pero no las cuentancomo distintas En la praacutectica habitual con Unix se utiliza raramente la diferenciacioacutenLa situacioacuten de tener un par de comandos Cat y cat diferentes no es comuacuten

3 N del T inteacuterprete de comandos del ingleacutes shell

Los shell en Unix se clasifican en dos grandes grupos los tipo Bourne y los tipo C Losshell tipo Bourne toman su nombre a partir de su inventor Steven Bourne Steven Bourneescribioacute el shell original de Unix denominado sh a partir de entonces la mayoriacutea delos shells tienen un nombre con el sufijo sh para indicar que son extensiones de la ideaoriginal Existen varias implementaciones de este shell que colectivamente llevan elnombre de shells Bourne Tambieacuten son comunes los shells tipo C cuyo original fueimplementado por Bill Joy Tradicionalmente los shell Bourne se han utilizado para los

scripts de shell y por razones de compatibilidad con el sh original mientras que losshells C han sido maacutes comunes en su aplicacioacuten interactiva (Los C tienen ventajas encuanto a sus mejores caracteriacutesticas interactivas aunque son maacutes difiacuteciles deprogramar)

Linux viene con un shell Bourne denominado bash escrito por la organizacioacuten FreeSoftware Foundation4 El nombre bash proviene de Bourne Again SHell uno de los tantosjuegos de palabras en Unix Se trata de un shell Bourne avanzado tiene las capacidadesestaacutendar de programacioacuten que se encuentran en todos los shells Bourne y ademaacutes varias delas caracteriacutesticas interactivas que se encuentran en los shells C bash es el shellpredeterminado cuando uno usa Linux

Apenas ingresa por primera vez el prompt que Ud ve es producto de la accioacuten de bash enotras palabras estaacute Ud corriendo su primer programa Unix el shell bash Mientras esteacuteconectado el shell bash estaraacute permanentemente funcionando

411 Un comando Unix tiacutepico

El primer comando que debe conocer es cat Para utilizarlo escriba cat y luego oprima|_Intro_|

homelarry$ cat

Si tiene ahora el cursor posicionado en una liacutenea nueva entonces lo que ha hecho estaacutebien Existen unas cuantas variantes que podriacutea haber tecleado algunas funcionaraacutenotras no

o Si tuvo alguacuten error de tecleo al escribir cat deberiacutea haber visto algo maacutes o menosasiacute

homelarry$ ct

ct command not found

homelarry$

Por lo tanto el shell le informa que no pudo encontrar un programa denominado ct yle ofrece otro prompt para seguir trabajando Recuerde que Unix hace diferencia entremayuacutesculas y minuacutesculas CAT estaacute mal escrito

o Puede que Ud haya escrito algunos espacios en blanco antes del comando como5

homelarry$ cat

Sin embargo el resultado es correcto y el programa cat corre sin problemas

_____________________________________________

4 N del T La Fundacioacuten para el Software Libre _tal es la traduccioacuten de su nombre_ seocupa de la produccioacuten y distribucioacuten de software que no tiene limitaciones en su uso yocopia enfrentando de esta manera las praacutecticas de las compantildeiacuteas tradicionales dedesarrollo Que el software sea libre no significa que sea barato la libertad incluye lagratuidad pero es mucho maacutes que ello

5 El indica que el usuario escribioacute un espacio

o Tambieacuten puede que haya oprimido un |_Intro_| en una liacutenea en blanco no se preocupe ycontinuacutee pues no tiene ninguacuten efecto

Doy por sentado que Ud ha corrido con eacutexito cat y estaacute esperando que haga algo que lomaraville Pues bien no no es un juego cat es una muy uacutetil utilidad que no parece muyuacutetil a primera vista Escriba cualquier cosa y luego oprima |_Intro_| Lo que veraacute es

homelarry$ cat

Help Im stuck in a Linux program

Help Im stuck in a Linux program

Lo que parece haber hecho cat es devolver un eco de lo escrito Esto es uacutetil a veces talvez no ahora Asiacute que salgamos de este programa y veamos otros con beneficios maacutes obvios

Para finalizar ciertos comandos Unix teclee |_Ctrlshyd_|6 |_Ctrlshyd_| es el caraacutecter endshyofshyfile7 o EOF para abreviar Puede que en ciertos libros de texto aparezca como endshyofshytext8 Nos referiremos a este caraacutecter como EOF Es un caraacutecter de control que informaa los programas Unix que ha cesado el ingreso de datos Cuando cat ve que no teclea maacutesnada termina

Para ver otro ejemplo parecido pruebe el programa sort Como su nombre lo indica sortes un programa de clasificacioacuten Si Ud teclea unas cuantas liacuteneas y luego oprime |_Ctrlshyd_| sort las mostraraacute a la salida de manera ordenada Esta clase de programas sedenominan filtros porque toman texto desde su entrada lo filtran y lo vierten a susalida modificado de alguna manera Tanto cat como sort son filtros inusuales cat esinusual pues lee el texto de entrada y no lo cambia

sort es inusual porque lee todas las liacuteneas de entrada hasta el EOF antes de emitir susalida La mayoriacutea de los filtros trabajan sobre la base de liacutenea por liacutenea leen unaliacutenea de la entrada realizan cierto coacutemputo y escriben una liacutenea diferente de salida

42 Autoayuda

El comando man muestra las paacuteginas de la guiacutea de referencia para un comando dado9 Porejemplo

homelarry$ man cat

cat(1) cat(1)

NAME

cat shy Concatenates or displays files

SYNOPSIS

cat [shybenstuvAET] [shyshynumber] [shyshynumbershynonblank] [shyshysqueezeshyblank]

[shyshyshowshynonprinting] [shyshyshowshyends] [shyshyshowshytabs] [shyshyshowshyall]

[shyshyhelp] [shyshyversion] [file]

DESCRIPTION

This manual page documents the GNU version of cat

________________________________________________

6 Mantenga oprimida la tecla etiquetada |_Ctrl|_y aprete |_d_| luego suelte ambas

7 N del T fin de archivo

8 N del T fin de texto

9 man tambieacuten puede mostrar informacioacuten acerca de las llamadas al sistema subrutinasformatos de archivos etc En la versioacuten original de Unix el comando mostraba lainformacioacuten exactamente igual a la que apareciacutea en la documentacioacuten impresa Por ahoraes probable que Ud soacutelo esteacute interesado en obtener ayuda acerca de los comandos

Hay aproximadamente una paacutegina completa de informacioacuten sobre cat10 Pruebe correr manen este momento No espere entender la paacutegina de manual que se le muestra Las paacuteginas demanual suponen un cierto conocimiento de Unix conocimiento que tal vez Ud no tenga eneste momento

Cuando termine de leer la paacutegina es probable que vea un bloque en video inverso al finalde la paacutegina parecido a shyshymoreshyshy o a Line 1 Se trata del pedido de maacutes(informacioacuten) que pronto le seraacute muy familiar

En lugar de dejar escapar el texto fuera de los liacutemites de la pantalla man se detiene alfinal de cada paacutegina y espera para ver que ha decidido hacer Ud Si desea seguirleyendo oprima |_Barra espaciadora_| y avanzaraacute una paacutegina Si desea terminar con lalectura de la paacutegina del manual oprima |_q_| Regresaraacute entonces al prompt del shellque esperaraacute hasta que Ud escriba otro comando

man provee ademaacutes una funcioacuten de buacutesqueda de palabras clave Por ejemplo digamos que Udestaacute interesado en el tema PostScript el lenguaje de control de impresoras desarrolladopor Adobe Si escribe man shyk ps o man shyk Postscript recibiraacute como resultado unalista de todos los comandos llamadas al sistema y otras partes documentadas de Unix quecontengan la palabra ps (o Postscript) en su nombre o descripcioacuten breve Esto puedellegar a ser muy uacutetil cuando quiere buscar una herramienta para hacer algo pero noconoce su nombre o si existe

43 Almacenaje de la informacioacuten

Los filtros son muy uacutetiles cuando Ud se ha transformado en un usuario experimentadopero tienen un pequentildeo problema Coacutemo almacena Ud la informacioacuten Seguramente iexclno seespera que Ud teclee todas las cosas cada vez que desea utilizar el programa Porsupuesto que no Unix provee archivos y directorios

Un directorio es como una carpeta contiene hojas de papel o archivos Una carpetasuficientemente grande puede contener otras carpetas puede haber directorios dentro dedirectorios En Unix se denomina sistema de archivo a la coleccioacuten de archivos ydirectorios Inicialmente en el sistema de archivo soacutelo existe un directorio denominadoroot11 Dentro de este directorio hay maacutes directorios y dentro de ellos hay archivosy auacuten maacutes directorios12

_____________________________________________

10 N del T El ejemplo se ha mantenido en ingleacutes pues es muy probable que Ud tengainstaladas las paacuteginas de manual en dicho idioma de manera predeterminada Pruebe maacutestarde de instalar el conjunto de paacuteginas de manual que estaacuten disponibles en castellano

11 N del T directorio raiacutez

Cada archivo y cada directorio tiene un nombre Nos referiremos a su nombre corto13 quepuede coincidir con el de otro archivo yo directorio en alguna otra parte del sistema dearchivo y al nombre largo14 que es uacutenico Un nombre corto para un archivo puede serjoe mientras que su nombre completo podriacutea ser homelarryjoe El nombre completo sedenomina usualmente trayectoria15 La trayectoria puede decodificarse como una secuenciade directorios Por ejemplo veremos como se lee homelarryjoe

homelarryjoe

La barra inicial indica el directorio raiacutez

Aquiacute esta el directorio denominado home Estaacute dentro del directorio raiacutez

Este es el directorio larry el cual estaacute dentro de home

joe estaacute dentro de larry Una trayectoria puede referirse tanto a un directorio como a unnombre de archivo asiacute que joe podriacutea ser cualquiera de ellos Todos los items antes delnombre corto deben ser directorios

Una manera sencilla de visualizar todo esto es mediante un diagrama en aacuterbol Para ver eldiagrama de un sistema tiacutepico Linux mire la Figura 41 Debe Ud notar que dichodiagrama no estaacute completo (iexclun sistema Linux completo tiene maacutes de 8000 archivos) y soacutelomuestra algunos de los directorios estaacutendar Por lo tanto puede haber algunosdirectorios del diagrama que no esteacuten en su sistema y de hecho su sistema tendraacutedirectorios que no aparecen en la figura

431 Miremos los directorios con ls

Ahora que ya sabe de la existencia de archivos y directorios debe haber tambieacuten unamanera de manipularlos Por supuesto El comando ls es uno de los maacutes importantes y loque hace es listar los archivos Si prueba a correr el comando ls entonces veraacute

homelarry$ ls

homelarry$

Estaacute bien no se preocupe por no ver nada Unix es intencionalmente callado si no hayarchivos para mostrar no muestra nada (ni siquiera un no hay archivos) Por lo tantola ausencia de salida es la manera de ls de decir que no encontroacute ninguacuten archivo

Pero hace un momento dije que hay maacutes de 8000 archivos por alliacute iquestdoacutende estaacuten Acaba deencontrar el concepto de directorio actual Como puede ver en el prompt su directorioactual es homelarry y alliacute no hay archivos Si desea la lista de archivos de undirectorio maacutes poblado pruebe con el directorio raiacutez

homelarry$ ls

bin etc install mnt root user var

dev home lib proc tmp usr vmlinux

homelarry$

_____________________________________________

12 Puede haber o no un liacutemite a la profundidad a la cual puede llegar el sistema dearchivo (En mi caso nunca la alcanceacute uno faacutecilmente puede tener directorios de 10niveles de profundidad)

13 N del T Nombre relativo del archivo o directorio

14 N del T Nombre completo o absoluto

15 N del T trayectoria del ingleacutes path

___________________________________________________________________________________________Figura 41 Tiacutepico aacuterbol (podado) de directorios Unix

________||bin

|___dev

|

|___etc

|

|___home ________larry

| |

| |___sam

|___lib

|

|___proc

|

|___tmp

|

|___usr________||X11R6

|

|___bin

|

|___emacs

|

|___etc

|

|___g++shyinclude

|

|___include

|

|___lib

|

|___

| local

| ||_bin

| |___emacs

| |

| |___etc

| |

| |___lib

|

|___man

|

|___spool

|

|___src________linux

|

|___tmp

En el comando anterior ls el directorio ( ) es lo que se denomina un paraacutemetroLa primer palabra de un comando es el nombre del comando y cualquier cosa que le sigason sus paraacutemetros Los paraacutemetros generalmente modifican la forma en la que actuacutea unprograma para ls el paraacutemetro le dice de cual directorio desea Ud la lista de archivosAlgunos comandos tienen paraacutemetros especiales denominados opciones o interruptores16 Paraver esto pruebe

homelarry$ ls shyF

bin etc install mnt root user var

dev home lib proc tmp usr vmlinux

homelarry$

_____________________________________________

16 N del T interruptores del ingleacutes switches

El shyF es una opcioacuten Las opciones son clases especiales de paraacutemetros que comienzan conun guioacuten y modifican el funcionamiento del programa Para ls shyF es una opcioacuten que lepermite a Ud ver cuales de las entradas son directorios cuales son archivos especialescuales programas y cuales son archivos normales Cualquiera que termina con una barra esun directorio Trataremos con maacutes detalle las caracteriacutesticas de ls maacutes adelante iexclEs unprograma sorprendentemente complejo

Por ahora hay dos lecciones que se deben aprender Primero debe aprender que es lo quehace ls Pruebe unos cuantos otros directorios de los que se muestran en el aacuterbol de laFigura 41 y fiacutejese en su contenido Naturalmente algunos estaraacuten vaciacuteos y otrostendraacuten muchos archivos dentro Le sugiero que utilice ls con y sin la opcioacuten shyF Por ejemplo ls usrlocal debe aparecer maacutes o menos asiacute

homelarry$ ls usrlocal

archives bin emacs etc ka9q lib tcl

homelarry$

La segunda leccioacuten es maacutes general Muchos comandos Unix son como ls Tienen opciones queen general consisten de un caraacutecter precedido por un guioacuten y tienen paraacutemetros Adiferencia de ls algunos comandos requieren ciertos paraacutemetros yu opciones Paramostrar como se usan los comandos utilizaremos el siguiente formato

ls [shyaRF] [directorio]

En general y desde ahora en adelante utilizareacute plantillas de comandos como la mostradaantes de introducir comandos nuevos para Ud La primer palabra es el comando (en estecaso ls) A continuacioacuten del comando siguen todos los paraacutemetros Los paraacutemetrosopcionales se encerraraacuten entre corchetes ([ y ]) Las metashyvariables estaacuteninclinadas_son palabras que toman el lugar de los paraacutemetros reales (Por ejemplo maacutesarriba puede Ud ver que dice directorio lo cual debe ser reemplazado por el nombre deun directorio real)

Las opciones son un caso especial Estaacuten encerradas entre corchetes pero Ud puedeutilizar una sola de ellas sin necesidad de emplear todas juntas Por ejemplo con lastres opciones enumeradas maacutes arriba para el caso de ls Ud tiene ocho maneras posiblesde correr el comando con o sin cada una de las opciones (Contraste ls shyR con ls shyF)

432 El directorio actual y cd

shy pwd

El uso de los directorios puede ser insoportable si se tiene que teclear la trayectoriacompleta cada vez que se quiere acceso a un directorio En lugar de ello los shell deUnix tienen una caracteriacutestica denominada directorio actual presente o detrabajo Es muy probable que su configuracioacuten de shell muestre dicho directorio como

parte del prompt homelarry Si no lo hace pruebe el comando pwd que proviene de lasigla de las palabras present working directory17 (Algunas veces el prompt muestra elnombre de la maacutequina Esto soacutelo es uacutetil realmente en un entorno de red en el cual hay unagran cantidad de maacutequinas diferentes)

mousehousegtpwd

homelarry

mousehousegt

Como puede Ud ver pwd le dice cuaacutel es su directorio actual18_ se trata de un comandomuy simple La mayoriacutea de los comandos actuacutea de forma predeterminada sobre eldirectorio actual

shy cd [directorio]

Podemos cambiar nuestro directorio actual mediante el comando cd Por ejemplo pruebe

homelarry$ cd home

home$ ls shyF

larry sam shutdown steve user1

home$

Si Ud omite el paraacutemetro opcional directorio se lo retornaraacute a su directorio raiacutezpersonal o directorio original De otro modo cd lo cambiaraacute al directorio especificadoPor ejemplo

home$ cd

homelarry$ cd

$ cd home

home$ cd usr

usr$ cd localbin

usrlocalbin$

Como puede ver cd le permite expresar el directorio de destino con trayectoriasabsolutas o relativas Una trayectoria absoluta comienza con una y especifica todoslo directorios que existen antes del archivo que Ud desea Una trayectoria relativa estaacutereferida a su directorio actual En el ejemplo anterior cuando estaba en usr hice unmovimiento relativo a localbin local es un directorio que existe bajo usr ybin es un directorio bajo local (cd home tambieacuten fue un cambio de directoriorelativo)

Existen dos directorios que se utilizan solamente para trayectorias relativas y El directorio se refiere al directorio actual y es el directorio

anterior son abreviaturas de directorio y existen en todos los directorios aunque nocuadran bien en la metaacutefora de carpeta dentro de carpeta Auacuten el directorio raiacutez tieneun directorio anterior eacutel es su propio directorio anterior

_____________________________________________

17 N del T Directorio de trabajo actual

18 En este libro veraacute todos los teacuterminos en uso directorio de trabajo presentedirectorio actual o directorio de trabajo Prefiero directorio actual aunque a vecesrecurra a las otras formas a causa de razones de estilo

El archivo chaptershy1 viene a ser el archivo chaptershy1 que estaacute en el directorio actualOcasionalmente seraacute necesario que Ud coloque expliacutecitamente el para que ciertoscomandos funcionen aunque esto es raro En la mayoriacutea de los casos daraacute igual ponerchaptershy1 o chaptershy1

El directorio es maacutes uacutetil cuando queremos retroceder

usrlocalbin$ cd

usrlocal$ ls shyF

archives bin emacs etc ka9q lib tcl

usrlocal$ ls shyF src

cweb linux xmris

usrlocal$

En este ejemplo me cambieacute al directorio anterior mediante cd y luego listeacute eldirectorio usrsrc desde usrlocal utilizando el nombre src Debe advertir que sihubiese estado en homelarry ejecutar el comando ls shyF src no me habriacutea servido alpropoacutesito de ver lo que hay en usrsrc

El directorio ~ es un alias para su directorio personal

usrlocal$ ls shyF ~

usrlocal$

Puede ver que auacuten no hay nada en su directorio personal ~ seraacute maacutes uacutetil a medida queaprendamos maacutes acerca de como manipular los archivos

433 Creacioacuten y borrado de directorios

shy mkdir directorio1 [directorio2 directorioN]

En Unix crear directorios es extremadamente simple y puede ser una muy uacutetil herramientade organizacioacuten Para crear un nuevo directorio utilice el comando mkdir Por supuestomkdir viene de make directory19

Con un pequentildeo ejemplo veamos como funciona esto

homelarry$ ls shyF

homelarry$ mkdir reportshy1993

homelarry$ ls shyF

reportshy1993

homelarry$ cd reportshy1993

homelarryreportshy1993$

mkdir puede tomar maacutes de un paraacutemetro a los que interpreta como nombres de directoriosque debe crear Puede especificarlos mediante su nombre relativo o absoluto reportshy1993es un caso de ejemplo con trayectoria relativa

homelarryreportshy1993$ mkdir homelarryreportshy1993chap1 ~reportshy1993chap2

homelarryreportshy1993$ ls shyF

chap1 chap2

homelarryreportshy1993$

_____________________________________________

19 N del T Crear directorio

shy rmdir directorio1 [directorio2 directorioN]

El opuesto de mkdir es rmdir (remove directory20) rmdir trabaja exactamente igual quemkdir Un ejemplo de rmdir es

homelarryreportshy1993$ rmdir chap1 chap3

rmdir chap3 No such file or directory

homelarryreportshy1993$ ls shyF

chap2

homelarryreportshy1993$ cd

homelarry$ rmdir reportshy1993

rmdir reportshy1993 Directory not empty

homelarry$

Como puede apreciar rmdir se niega a borrar un directorio que no existe y tampocopermite eliminar directorios que tengan algo dentro (Recuerde que reportshy1993 tiene un

subdirectorio chap2 dentro de eacutel) Existe un tema interesante para pensar entoncesiquestqueacute pasa si intenta eliminar su directorio actual Averiguumleacutemoslo

homelarry$ cd reportshy1993

homelarryreportshy1993$ ls shyF

chap2

homelarryreportshy1993$ rmdir chap2

homelarryreportshy1993$ rmdir

rmdir Operation not permitted

homelarryreportshy1993$

Otra situacioacuten del mismo estilo es que sucede si intenta eliminar el directorio anterioral directorio actual Bien esto no es un problema nuevo el directorio anterior alactual no estaacute vaciacuteo (existe el actual en eacutel) asiacute que no puede ser borrado

44 Informacioacuten en movimiento

Todos este asunto de los directorios estaacute muy lindo pero no son de ninguna ayuda amenos que Ud tenga alguacuten sitio donde almacenar sus datos Los dioses del Unix vieroneste problema y lo solucionaron haciendo que los usuarios tengan archivos21

_____________________________________________

20 N del T Eliminar directorio

21N del T Tambieacuten denominados ficheros

Aprenderemos maacutes acerca de la creacioacuten y edicioacuten de archivos en los proacuteximos capiacutetulos

Los comandos baacutesicos para manipular archivos en Unix son cp mv y rm Sus nombresprovienen de copy22 move23 y remove24 respectivamente

441 cp como un monje

shy cp [shyi] fuente destino

shy cp [shyi] archivo1 archivo2 archivoN directorioshydeshydestino25

cp es una utilidad muy praacutectica en Unix y ademaacutes muy poderosa Permite que una personapueda copiar maacutes informacioacuten en un segundo que lo que podiacutea copiar un monje del siglo XIVen todo un antildeo

Debe ser muy cuidadoso con cp si no dispone de una cantidad importante de espacio endisco A nadie le hace gracia ver el mensaje Disk full26 cuando estaacute trabajando conarchivos importantes

cp tambieacuten puede sobreescribir archivos existentes sin previo aviso trataremos este temamaacutes adelante

Bien hablaremos primero acerca de la primer liacutenea en la plantilla del comando El primerparaacutemetro de cp es el nombre del archivo que hay que copiar el segundo es el lugar dondese desea depositar la copia Puede obtener una copia con un nombre distinto o una en undirectorio diferente Veamos algunos ejemplos

homelarry$ ls shyF etcpasswd

etcpasswd

homelarry$ cp etcpasswd

homelarry$ ls shyF

passwd

homelarry$ cp passwd frog

homelarry$ ls shyF

frog passwd

homelarry$

El primer comando cp que corriacute tomoacute el archivo etcpasswd que contiene los nombres detodos los usuarios en un sistema Unix y lo copioacute en mi directorio raiacutez cp no borra elarchivo fuente asiacute que no hice nada que pudiera dantildear el sistema O sea que ahoraexisten dos copias del contenido del archivo etcpasswd ambas se denominan passwd perouna estaacute en el directorio etc y la otra en homelarry

_____________________________________________

22 N del T Copiar

23 N del T Mover

24 N del T Quitar borrar

25 cp necesita de dos renglones en su plantilla porque el significado del segundoparaacutemetro depende de la cantidad de paraacutemetros

26 N del T Disco lleno

Luego creamos una tercera copia de etcpasswd cuando tecleamos cp passwd frog ahorahay tres copias etcpasswd homelarrypasswd y homelarryfrog El contenido de esostres archivos es el mismo sus nombres de archivo difieren

cp puede copiar archivos entre directorios si el primer paraacutemetro es un archivo y elsegundo es un directorio En este caso el nombre simple (sin el path) de destinocoincidiraacute con el original para cada archivo

Tambieacuten se puede copiar un archivo y cambiar su nombre de destino en una sola operacioacutencaso que se da cuando ambos paraacutemetros son nombres de archivo Aquiacute reside uno de lospeligros de cp Si tecleara cp etcpasswd etcgroup el comando cp creariacuteanormalmente un archivo nuevo con el contenido ideacutentico al de etcpasswd y con el nombre

etcgroup Por lo tanto si etcgroup ya existiera cp destruiriacutea el contenido delantiguo sin darle la oportunidad de guardarlo (Ni siquiera escribiraacute un mensaje en elcual le advierta que estaacute por destruir un archivo al copiarle otro encima) Echemos unamirada a otro ejemplo de cp

homelarry$ ls shyF

frog passwd

homelarry$ mkdir passwd_version

homelarry$ cp frog passwd passwd_version

homelarry$ ls shyF

frog passwd passwd_version

homelarry$ ls shyF passwd_version

frog passwd

homelarry$

iquestCoacutemo useacute cp en este caso Evidentemente cp puede tomar maacutes de dos paraacutemetros como sepuede apreciar en la segunda liacutenea de plantillas del comando Lo que el comando anteriorrealizoacute es copiar los archivos que aparecen listados (frog y passwd) al directoriopasswd_version De hecho cp puede tomar cualquier nuacutemero de paraacutemetros interpreta losprimeros n shy 1 como los nombres de archivo que debe copiar y el neacutesimoparaacutemetro como elnombre del directorio al cual se deben copiar los anteriores

No puede renombrar archivos cuando copia maacutes de uno a la vez siempre mantienen su nombresimple Esto nos lleva a una pregunta interesante iquestQueacute es lo que pasariacutea si tecleamoscp frog passwd toad donde frog y passwd existen y toad no es un directorioInteacutentelo y lo sabraacute

442 La poda con rm

shy rm [shyi] archivo1 archivo2 archivoN

Ahora que hemos aprendido como crear millones de archivos con cp (y creacuteame muy prontoencontraraacute nuevas maneras de crear maacutes archivos) seriacutea uacutetil aprender la manera deborrarlos De hecho es muy simple el comando que anda necesitando es rm y funcionacomo Ud se lo esperariacutea a cualquier archivo cuyo nombre se pasa como paraacutemetro a rm selo borra Por ejemplo

homelarry$ ls shyF

frog passwd passwd_version

homelarry$ rm frog toad passwd

rm toad No such file or directory

homelarry$ ls shyF

passwd_version

homelarry$

Como puede Ud apreciar rm es extremadamente espartano No soacutelo no pide su confirmacioacutensino que borra cosas auacuten en el caso en que haya errores en la liacutenea de comandos Estobien puede ser peligroso Considere la diferencia entre estos dos comandos

homelarry$ ls shyF

toad frog

homelarry$ ls shyF frog

toad

homelarry$ rm frogtoad

homelarry$

y este otro

homelarry$ rm frog toad

rm frog is a directory

homelarry$ ls shyF

frog

homelarry$

Como puede ver la diferencia en un caracter hace una diferencia importante en la salidadel comando iexclEs vital que Ud controle lo que ha escrito en sus liacuteneas de comando antesde presionar |_Intro_|

443 Seriacutea interesante tener un rastrillo

shy mv [shyi] nombreshyviejo nombreshynuevo

shy mv [shyi] archivo1 archivo2 archivoN nuevoshydirectorio

Por uacuteltimo el otro comando del que debe cuidarse es mv mv se parece un montoacuten a cpexcepto que borra el archivo original despueacutes de copiarlo Se puede entender como lautilizacioacuten conjunta de cp y rm Veamos que podemos hacer

homelarry$ cp etcpasswd

homelarry$ ls shyF

passwd

homelarry$ mv passwd frog

homelarry$ ls shyF

frog

homelarry$ mkdir report

homelarry$ mv frog report

homelarry$ ls shyF

report

homelarry$ ls shyF report

frog

homelarry$

Como puede ver mv renombra un archivo (que es el primer paraacutemetro) si el segundoparaacutemetro es un archivo Si el segundo paraacutemetro es un directorio mv moveraacute el archivoal nuevo directorio manteniendo el mismo nombre simple

Debe Ud ser muy cuidadoso con mv el comando no controla si el archivo ya existe yborraraacute cualquier archivo que hubiera con el nombre de destino Por ejemplo si ya tengoun archivo de nombre frog existente en mi directorio report el comando mv frog reportborraraacute el archivo reportfrog y lo reemplazaraacute con frog

De hecho existe una manera de lograr que tanto rm cp y mv le consulten a Ud antes deeliminar archivos Los tres comandos nombrados aceptan la opcioacuten shyi a tal efecto SiUd utiliza un alias puede hacer que el shell ejecute rm shyi automaacuteticamente cuandoteclee rm Aprenderaacute maacutes de estos temas luego en la Seccioacuten 913 en la paacutegina 92

Capiacutetulo 5

El sistema de ventanas X

Lo mejor de los estaacutendares es que haya tantos para elegir Andrew S Tanenbaum

Este capiacutetulo soacutelo es aplicable para aquellos que usen el sistema de ventanas X Si seencuentra con una pantalla con muacuteltiples ventanas colores o un cursor que soacutelo se muevecon el ratoacuten estaacute usted usando X (Si su pantalla contiene caracteres blancos sobrefondo negro no estaacute usando X Para arrancarlo refieacuterase a la Seccioacuten 51)

51 Ejecucioacuten y salida del sistema de ventanas X

511 Ejecucioacuten de X

Incluso cuando X no arranque de forma automaacutetica durante el ingreso en el sistema esposible arrancarlo desde la liacutenea de comandos del inteacuterprete en modo texto Hay doscomandos que arrancan X bien startx o bien xinit Debe intentar startx primero Si elinteacuterprete de comandos se queja de que ese comando no existe entonces pruebe con xinit aver si arranca X de ese modo Si no funciona ninguno de los comandos anteriores puedeque no tenga X instalado en su sistema refieacuterase a la documentacioacuten local de sudistribucioacuten

Si el comando se ejecuta pero regresa al inteacuterprete en modo texto tras un rato X estaacuteinstalado pero no ha sido configurado todaviacutea En ese caso debe consultar ladocumentacioacuten que acompantildeaba su distribucioacuten en lo referente a como configurar X

512 Saliendo de X

Dependiendo de coacutemo se haya configurado X puede haber dos modos diferentes de salir deX El primero es que su gestor de ventanas controle la ejecucioacuten de X En ese casodeberaacute salir de X usando un menuacute (ver Seccioacuten 548 en la paacutegina 41) Para ver el menuacutebasta apretar un botoacuten del ratoacuten sobre el fondo

La entrada del menuacute que busca debe ser algo asiacute como Exit Window Manager1 o Exit X2Trate de encontrar esa entrada (puede que haya maacutes de un menuacute intente usar diferentesbotones) y eliacutejala

El otro meacutetodo utiliza una ventana xterm especial para controlar X En este casoseguramente existiraacute una ventana cuyo tiacutetulo sea login3 o system xterm4 Para salirde X mueva el cursor a esa ventana y escriba exit5

Si X arrancoacute automaacuteticamente tras su ingreso en el sistema uno de estos meacutetodosprobablemente le sacaraacute de eacutel Basta conectarse de nuevo para regresar a eacutel Si ejecutoacute Xde forma manual al salir volveraacute al interprete de comandos en modo texto (Si quieresalir del sistema bastaraacute con escribir logout )

52 iquestQueacute es el sistema de ventanas X

El Sistema de Ventanas X es un meacutetodo de trabajo graacutefico y distribuido desarrolladoprincipalmente en el Instituto Tecnoloacutegico de Massachusetts Actualmente estaacute a cargo deun consorcio de fabricantes (debidamente llamado El Consorcio X) y es mantenido porellos

El Sistema de Ventanas X (que a partir de ahora abreviaremos como X6 tiene revisionescada pocos antildeos conocidas como lanzamientos La uacuteltima revisioacuten ha sido X11R6 o sextolanzamiento7

El nuacutemero 11 indica la versioacuten oficial pero no ha habido cambios en los uacuteltimos antildeos ytampoco hay planes para cambiarla en un futuro proacuteximo

Al ser cliente y servidores programas diferentes es posible ejecutar cada uno en enmaacutequinas completamente diferentes Ademaacutes de constituir un meacutetodo estaacutendar paraaplicaciones graacuteficas es posible ejecutar un programa en una maacutequina remota (iexclincluso alotro lado del paiacutes si quiere) y que los resultados aparezcan en la estacioacuten de trabajoque tiene enfrente suyo

Un tercer concepto con el que debe familiarizarse es el de gestor de ventanas El gestorde ventanas es un cliente especial que le dice al servidor en que posicioacuten debencolocarse las diferentes ventanas y permite al usuario moverlas El servidor por siacutemismo no interacciona con el usuario Se trata de un medio que conecta el usuario y elcliente

53 iquestQueacute es esto que hay en mi pantalla

Al arrancar X varios programas son ejecutados Primero arranca el servidor Luegogeneralmente arrancan varios clientes Desgraciadamente no hay un estaacutendar comuacuten entrelas diferentes distribuciones Es bastante probable que entre los clientes se encuentreun gestor de ventanas bien fvwm o twm un inteacuterprete de comandos xterm y un relojxclock

_____________________________________________

1 NT En ingleacutes salir del gestor de ventanas

2 NT En ingleacutes salir de X

3 NT En ingleacutes ingreso en el sistema o autenticacioacuten

4 NT En ingleacutes xterm del sistema o terminal X del sistema

5 NT En ingleacutes salir

6 Existen varias formas de referirse al Sistema de Ventanas X Una forma que aunque comuacutenes incorrecta es X Window o Ventanas X

7 NT La palabra inglesa es release Por ello los lanzamientos se diferencianantildeadiendo una R y el nuacutemero correspondiente

531 XClock

shy xclock [shydigital] [shyanalog] [shyupdate segundos] [shyhands color]

Primero explicaremos el maacutes simple xclock funciona exaacutectamente como se puede esperarMarca los segundos minutos y horas en una ventana pequentildea

Ni usar los botones del ratoacuten ni escribir en la ventana xclock produce efecto algunoshyeso es todo lo que hace iquestO quizaacute no En realidad hay varias opciones diferentes quepermiten hacer que el programa se comporte de modos diferentes Asiacute por ejemplo xclockshydigital crea un reloj digital xclock shyupdate 1 hace que el segundero se mueva cadasegundo y xclock shyupdate 5 hace que se mueva cada cinco segundos

Para obtener maacutes informacioacuten sobre las opciones de xclock puede consultar la paacutegina delmanual correspondiente man xclock Si piensa ejecutar varias copias de xclockprobablemente deberiacutea consultar la Seccioacuten 64 (Multitarea) para saber como se ejecutan ala vez que sus otros programas

(Si ejecuta una copia de xclock en primer plano que es la forma usual en la que seejecuta un programa y quiere salir de eacutel basta teclear |_Ctrlshyc_|)

532 XTerm

La ventana que muestra el prompt del inteacuterprete de comandos (podraacute ver algo parecido ahomelarry$) es controlada por un programa llamado xterm xterm es un programaengantildeosamente complicado A primera vista no parece que haga mucho pero realmente hacemuchiacutesimo trabajo xterm emula una terminal de forma que las aplicaciones de modo textode Unix funcionen correctamente Tambieacuten mantiene en memoria informacioacuten de forma que sepueden consultar comandos usados previamente (Para ver como hace uso de esto refieacuterasea la Seccioacuten 563)

Gran parte de este libro estaacute dedicada a aprender como usar el interprete de comandos deUnix que se encuentra dentro de la ventana xterm Para poder escribir en la xtermgeneralmente es necesario mover el cursor (que posiblemente aparece en forma de X o deflecha) al interior de la ventana xterm De todos modos este comportamiento esdependiente del gestor de ventanas

Uno de los modos en los que se puede arrancar un programa bajo X es a traveacutes de unaxterm Al tratarse los programas X de programas Unix estaacutendar pueden ser arrancados atraveacutes de un inteacuterprete de comandos como el de las xterms Para evitar bloquear la xtermejecutando un programa largo desde ella generalmente se prefiere arrancar los programasX en segundo plano Para consultar este tema puede referirse a la Seccioacuten 64

54 Gestores de ventanas

Bajo Linux los gestores de ventanas maacutes comunes son dos El primero llamado twm queviene de Tab Window Manager Es un programa mayor que el segundo fvwm (fvwm viene deF() Virtual Window Manager el autor nunca explicoacute que significaba la f8) Ambosgestores de ventanas son altamente configurables lo cual impide dar instruccionesespeciacuteficas sobre que teclas usar para hacer algo en particular

Si le interesa saber algo sobre la configuracioacuten de twm refieacuterase a la Seccioacuten 921 Laconfiguracioacuten de fvwm se describe en la Seccioacuten 922

541 Cuando se crean nuevas ventanas

Hay tres tipos de cosas que un gestor de ventanas puede hacer cuando se crea una nuevaventana Es posible configurar el gestor de ventanas de manera que aparezca la forma dela ventana permitieacutendole colocarla en la posicioacuten que prefiera en la pantalla Este modose llama colocacioacuten manual Si ve aparecer la forma de la ventana puede moverla con elratoacuten y colocarla presionando el botoacuten izquierdo

_____________________________________________

8 N del T En el Linux Journal No 43 Noviembre 1997 hay una entrevista a RobertNation paacutegs 46shy47 y eacuteste dice que la F estaacute por Feeble (Gracias Joseacute Luis Gurpeguipor la aclaracioacuten)

A veces es posible que el gestor de ventanas las coloque por siacute mismo Se trata de lacolocacioacuten aleatoria

Finalmente a veces la aplicacioacuten pregunta por el lugar preciso en el que el quiere quese situacutee Tambieacuten el gestor de ventanas puede configurarse de forma que siempre situacutee lasventanas de ciertas aplicaciones en lugares fijos (Asiacute por ejemplo se puede especificarque xclock siempre aparezca en la esquina superior derecha de la pantalla)

542 Foco

El gestor de ventanas controla otras cosas importantes Lo que probablemente le interesamaacutes es el foco El foco del servidor determina que ventana recibe los caraacutecteresintroducidos mediante el teclado Generalmente en X el foco es determinado por laposicioacuten del cursor del ratoacuten Si mueve el cursor del ratoacuten dentro de una ventana xterm9esa xterm recibe los caracteres tecleados Se trata de un comportamiento diferente al deotros sistemas de ventanas como Windows de Microsoft OS2 o Macintosh donde debepinchar con el ratoacuten en una ventana para que adquiera el foco

Generalmente bajo X si el cursor del ratoacuten se sale de una ventana se pierde el foco yle resultaraacute imposible escribir en ella

Debe notar sin embargo que es posible configurar tanto twm como fvwm de forma que paracambiar el foco necesite pinchar la ventana correspondiente y pinchar fuera paradesenfocarla de forma que se comporten igual que Windows de Microsoft Una de dos tratede averiguar como funciona su gestor de ventanas probando o consulte la documentacioacutenlocal

543 Moviendo ventanas

Otro aspecto de X que es altamente configurable es el meacutetodo para mover ventanas Yotengo configurados tres meacutetodos para mover ventanas en twm El maacutes obvio es mover elcursor del ratoacuten sobre la barra del tiacutetulo y arrastrar la ventana Desgraciadamente laconfiguracioacuten permite definir el movimiento usando cualquiera de los tres botones10 (Paraarrastrar situacutee el cursor sobre la barra del tiacutetulo y mantenga presionado el botoacuten delratoacuten correspondiente mientras se mueve) Lo maacutes probable es que su configuracioacuten use elbotoacuten izquierdo para mover ventanas

Otra forma de mover ventanas puede ser manteniendo una tecla pulsada mientras mueve elratoacuten Asiacute en mi caso si mantengo pulsada la tecla |_Alt_| y muevo el cursor sobre unaventana puedo arrastrarla usando el botoacuten izquierdo de mi ratoacuten

Por supuesto para ver como funciona en su caso puede probar igual que antes o referirsea la documentacioacuten local Alternativamente si quiere tratar de interpretar los ficherosde configuracioacuten de los gestores de ventanas puede referirse a la Seccioacuten 921 para twmo 922 para fvwm

_____________________________________________

9 iexclPuede ejecutar varias copias de xterm al mismo tiempo

10 Muchos ratones de PCs tienen dos botones uacutenicamente En este caso generalmente esposible emular el botoacuten central presionando ambos botones simultaacuteneamente

544 Profundidad

Dado que las ventanas pueden solaparse en X necesitamos el concepto de profundidad Apesar de que tanto las ventanas como la pantalla son bidimensionales unas ventanaspueden estar delante de otras de forma que cubren total o parcialmente aquella situadadetraacutes

Existen varias operaciones que manejan la profundidad

o Subir o poner una ventana delante Generalmente se hace pinchando con alguno de losbotones en la barra de tiacutetulo de la ventana en cuestioacuten El botoacuten usado depende de laconfiguracioacuten del gestor de ventanas (Es posible que sean varios los botones queproduzcan este efecto)

o Bajar o empujar una ventana hacia atraacutes Generalmente se hace pinchando igualmente enla barra de tiacutetulo pero usando otro botoacuten Tambieacuten es posible configurar el gestor deventanas de forma que pinchar traiga la ventana hacia delante siempre que haya algoencima de ella y la lleve hacia atraacutes si no hay nada delante

o Alzar en ciclo de forma que el gestor de ventanas va alzando las ventanas una a unaen orden

545 Iconizar

Existen otras operaciones que pueden tapar ventanas o hacerlas desaparecer completamenteLa primera es iconizacioacuten Dependiendo del gestor de ventanas que use este procesopuede realizarse de varias formas Con twm muchas personas configuran un gestor deiconos Se trata de una ventana especial que contiene una lista con las demaacutes ventanas enuso en la pantalla Pinchando con el ratoacuten en uno de los nombres (o dependiendo de laconfiguracioacuten en uno de los botones) la ventana desaparece es iconizada La ventana estaacuteauacuten activa pero no puede verse Pinchando otra vez en el gestor de iconos la ventanavuelve a aparecer en la pantalla

Se trata de algo muy uacutetil Se podriacutea por ejemplo tener xterm remotas en diferentesmaacutequinas que use ocasionalmente al mismo tiempo Dado sin embargo que soacutelo las usararamente puede mantenerlas iconizadas mientras trabaja con un pequentildeo grupo El uacutenicoproblema es que resulta faacutecil perder alguna ventana Generalmente eso lleva a crearnuevas ventanas que dupliquen la funcionalidad de las que estaacuten iconizadas

Otros gestores de ventanas crean verdaderos iconos en la parte inferior de la pantalla osimplemente en la ventana raiacutez

546 Variando el tamantildeo

Existen diversos meacutetodos para variar el tamantildeo de las ventanas bajo X De nuevo estodepende de su gestor de ventanas y de coacutemo haya sido configurado El meacutetodo al que estaacutenacostumbrados los usuarios de Windows de Microsoft consiste en pinchar en el borde de laventana y arrastrarlo Si las ventanas que produce su gestor tienen un borde gordo quehace que el cursor del ratoacuten cambie al pasar por encima de eacutel seguramente tambieacuten puedeusar ese meacutetodo

Otra forma es crear un botoacuten de variacioacuten de tamantildeo en la barra del tiacutetulo Es el botoacutenvisible en la parte derecha de las barras de los tiacutetulos de la Figura 53 Para usarlopinche con el botoacuten izquierdo del ratoacuten en eacutel y mantenieacutendolo presionado mueacutevalo fuerade la ventana para variar el tamantildeo Para fijar el nuevo tamantildeo basta soltar el botoacuten delratoacuten

547 Maximizacioacuten

La mayoriacutea de los gestores de ventanas soportan maximizacioacuten En twm por ejemplo puedemaximizar la altura de una ventana su ancho o ambos a la vez Aunque twm llama a esteproceso zooming yo prefiero usar maximizacioacuten Las aplicaciones pueden responder demodo diferente a un cambio de tamantildeo (Por ejemplo xterm no cambia el tamantildeo de letrapero aumenta el espacio de trabajo)

Desgraciadamente no hay un modo estaacutendar de maximizar ventanas

548 Menuacutes

Los gestores de ventanas tambieacuten proporcionan al usuario un sistema de menuacutes pararealizar tareas de forma raacutepida una y otra vez Por ejemplo podriacutea tener una opcioacuten queejecute Emacs de forma automaacutetica o una xterm adicional De ese modo no tendriacutea queejecutar el comando dentro de una xterm iexclesto es especialmente bueno si no hay ningunaxterm ejecutaacutendose en la que pueda escribir para ejecutar un programa nuevo

De forma general se puede acceder a los menuacutes pinchando en la ventana raiacutez que es unaventana inmoacutevil que siempre estaacute debajo de las demaacutes Por defecto esta ventana es decolor gris pero puede tener cualquier aspecto11 Si quiere probar a ver un menuacute pinchey mantenga cualquier botoacuten del ratoacuten sobre la ventana raiacutez Deberiacutea aparecer un menuacutePara seleccionar una opcioacuten mantenga presionado el botoacuten y mueva el ratoacuten hasta marcarla opcioacuten deseada Entonces suelte el botoacuten

55 Atributos X

Hay muchos programas que usan X Algunos como emacs puede ejecutarse tanto en modotexto como en una ventana X que eacutel mismo crea automaacuteticamente Pero en general lamayoriacutea de los programas para X soacutelo funcionan bajo X

551 Geometriacutea

Existe una serie de cosas que son comunes a todos los programas que se ejecutan bajo XEn X el concepto de geometriacutea engloba el lugar y el tamantildeo de la ventana La geometriacutea deuna ventana tiene cuatro componentes a saber

_____________________________________________

11 Un programa divertido que puede probar se llama xfishtank Este programa crea unpequentildeo acuario en el fondo de su pantalla

o La dimensioacuten horizontal generalmente medida en pixels (Un pixel es la unidad maacutespequentildea que puede colorearse y representarse en la pantalla Muchas configuraciones X enPCs basados en un procesador Intel tienen una resolucioacuten de 1024 pixels horizontalmentepor 768 pixels verticalmente) Algunas aplicaciones como xterm o emacs miden su tamantildeoen caracteres (Por ejemplo ochenta caracteres por liacutenea)

o La dimensioacuten vertical tambieacuten medida en pixels generalmente Al igual que antes enalgunos casos se puede medir en liacuteneas

o La distancia horizontal a uno de los bordes de la pantalla Por ejemplo +35 significaa treinta y cinco pixels desde la izquierda Sin embargo shy50 significa que el extremoderecho de la ventana estaacute a cincuenta pixels del borde derecho de la pantallaGeneralmente no es posible lanzar una ventana fuera de la pantalla aunque si se puedemover fuera (La principal excepcioacuten es cuando la ventana es demasiado grande)

o La distancia vertical desde la parte superior o inferior de la pantalla la distanciase mide desde la parte superior si es positiva o desde la inferior si es negativa

Los cuatro componentes se unen formando la cadena de geometriacutea 503x73shy78+0 (Esto marcala geometriacutea de una ventana de 503 pixels de largo 73 pixels de alto situada cerca dela esquina superior derecha de la pantalla) O de otro modo tendremos tamantildeoh x tamantildeovshysituacioacutenh + situacioacutenv

552 Presentacioacuten

Toda aplicacioacuten X tiene asociada una presentacioacuten Eacutesta determina cuaacutel es la pantallacontrolada por el servidor X La presentacioacuten estaacute formada por tres elementos

o El nombre de la maacutequina en la que se ejecuta el servidor En el caso de sistemas Linuxaislados el nombre de la maacutequina que ejecuta el servidor coincide con la que ejecuta losclientes En ese caso se puede omitir el nombre por completo

o El nuacutemero del servidor de dicha maacutequina que debe responder a las peticiones de losclientes Dado que una maacutequina puede estar corriendo diferentes servidores a la vez (esalgo improbable pero posible en maacutequinas Linux) cada uno tiene que tener un nuacutemeropropio

o El nuacutemero del monitor X permite que un servidor controle maacutes de un monitor a la vezPor ejemplo puede que alguien quiera tener maacutes espacio de forma que use dos monitores ala vez Para evitar que el rendimiento de la maacutequina sea muy malo en vez de tener dosservidores hacen que sea el mismo servidor el que controle las dos maacutequinas

Si ponemos estas tres cosas juntas obtendremos maacutequinanuacutemeroshydeshyservidornuacutemeroshydeshypantalla Por ejemplo en mousehouse todas mis aplicaciones tienen la presentacioacutenfijada en 00 lo que significa que la salida aparece en la primera pantalla del primerservidor local Sin embargo si uso una computadora remota tendriacutea que sermousehouse00

Figura 51 Opciones Estaacutendar para Programas X

Nombre Seguido de Ejemplo

shygeometry Geometriacutea de la ventana xterm shygeometry 80x24+0+90

shydisplay A doacutende quiere que el programa enviacutee lasalida

xterm shydisplay lionsden00

shyfg Color primario en primer plano xterm shyfg yellow

shybg Color primario en el segundo plano xterm shybg blue

Por defecto la presentacioacuten se toma de una variable de entorno (ver Seccioacuten 914)llamada DISPLAY12 pero puede ser fijada mediante una opcioacuten desde el inteacuterprete decomandos (ver Figura 52) Para ver cuaacutel es el valor de la variable DISPLAY bastaejecutar echo $DISPLAY

56 Caracteriacutesticas comunes

A pesar de que X es una interfaz graacutefica de usuario se trata de una interfaz muydesequilibrada

Resulta imposible predecir como va a comportarse cualquier elemento del sistema porque sepueden reconfigurar cambiar o incluso sustituir muy faacutecilmente Eso significa que es muydifiacutecil explicar como se han de usar los distintos elementos de la interfaz Una de lasrazones que ya conocemos es la posibilidad de utilizar diferentes gestores de ventanasque a su vez son altamente configurables

Otra explicacioacuten para el desequilibrio de la interfaz es que las aplicaciones X se puedenconstruir mediante conjuntos de chismes13 La distribucioacuten X estaacutendar incluye loswidgets Athena desarrollados en el MIT Las aplicaciones gratuitas suelen hacer uso deeste conjunto Tienen la desventaja de que su aspecto no es particularmente atrayente yresultan algo maacutes difiacuteciles de usar en un programa que los otros

Otro conjunto de widget popular es Motif Motif es un conjunto no gratuito similar a lainterfaz de usuario usada por Windows de Microsoft Muchas aplicaciones comerciales asiacutecomo algunas gratuitas usan el conjunto de widget Motif El popular Browser de World WideWeb netscape por ejemplo usa Motif

Veamos cuales son algunas de las cosas maacutes habituales que puede encontrar

561 Botones

Los botones son generalmente los componentes de la interfaz maacutes faacuteciles de usar Un botoacutense invoca situando el cursor del ratoacuten sobre el botoacuten en cuestioacuten y pinchando (pulsando ysoltando inmediatamente) el botoacuten izquierdo Los botones Athena y Motif sonfuncionalmente equivalentes pero tienen diferencias de apariencia

_____________________________________________

12 NT DISPLAY significa presentacioacuten en ingleacutes

13 NT Se trata de la traduccioacuten de la palabra inglesa widget

562 Barras de menuacute

Una barra de menuacute es una coleccioacuten de comandos accesibles mediante el ratoacuten Cada palabraes la cabecera de una categoriacutea File14 contiene comandos que permiten cargar o grabarficheros Por convencioacuten esta categoriacutea incluye tambieacuten el comando que termina laaplicacioacuten

Para utilizar un comando mueva el cursor del ratoacuten sobre la categoriacutea correspondiente(como por ejemplo File) y apriete el botoacuten izquierdo Sin soltarlo arrastre el ratoacutenhacia abajo para ver los diferentes comandos de esa categoriacutea Para seleccionar unomueva el cursor sobre el mismo y suelte el botoacuten del ratoacuten Algunas barras de menuacute lepermiten pinchar sobre la categoriacutea si este es su caso pinche sobre la categoriacutea paraver el menuacute que se mantendraacute hasta que pinche de nuevo para seleccionar un comando otromenuacute o pinche fuera (indicando que no estaacute interesado en ninguacuten comando en particular)

563 Barras de desplazamiento

Una barra de desplazamiento es un meacutetodo que permite ver soacutelo una parte de un documentomientras que mantiene el resto fuera de la pantalla Por ejemplo en la Figura 54 la

ventana de xterm soacutelo presenta el tercio inferior del texto disponible Es muy faacutecil vercual parte del texto es el que se puede ver en cualquier momento la franja oscura de labarra estaacute situada y tiene una longitud relativa a la porcioacuten de texto que se puede verCuando no hay maacutes que lo que se puede ver toda la barra aparece de color oscuro Si setrata de la mitad seraacute la mitad la que aparezca oscurecida

Puede tener una barra de desplazamiento vertical a la derecha o la izquierda de su textoy una horizontal en la parte superior o inferior dependiendo de la aplicacioacuten de que setrate

Barras de desplazamiento Athena

Las barras de desplazamiento Athena funcionan de forma diferente a las de otros sistemasde ventanas Cada uno de los tres botones del ratoacuten tiene una funcioacuten diferente Paradesplazarse hacia arriba (es decir para que ver el material situado por encima de lo quese puede ver en ese momento) puede pinchar en cualquier lugar de la barra con el botoacutenderecho Para desplazarse hacia abajo puede usar el botoacuten izquierdo de forma anaacuteloga

Tambieacuten puede saltar a cualquier lugar en particular usando el botoacuten central del ratoacuten ypinchando en el lugar de la barra que corresponde a la posicioacuten del texto que leinteresa Esto hace a la ventana presentar el material situado en ese punto deldocumento

_____________________________________________

14 NT Del ingleacutes fichero o archivo

Barras de desplazamiento Motif

Una barra Motif actuacutea de un modo maacutes parecido al acostumbrado en Windows de Microsoft oen un Macintosh La parte derecha de la Figura 54 muestra un ejemplo Debe notar queademaacutes de la barra en siacute misma hay unas flechas tanto en la parte superior como en lainferior Estas flechas se pueden usar para ajuste fino de la pantalla pinchando tantoel botoacuten izquierdo como el central mueve la ventana ligeramente (por ejemplo una liacutenea)el botoacuten derecho no hace nada

El comportamiento asociado a pinchar en la barra de desplazamiento es completamentediferente en las barras Motif del que exhiben las barras Athena El botoacuten derecho notiene efecto Asociado al botoacuten izquierdo la ventana se moveraacute hacia arriba si pinchasobre la posicioacuten actual o hacia abajo en el caso contrario Si pincha sobre la barra enel lugar actual y la arrastra podraacute moverse a cualquier posicioacuten a voluntad Al soltar elbotoacuten se fija cual es la posicioacuten final de la ventana

Pinchando el botoacuten central en cualquier lugar de la barra hace que la ventana se desplacehacia ese lugar de forma inmediata igual que ocurre en barras Athena Sin embargo elpunto elegido se convierte en el centro de la nueva pantalla de datos

Capiacutetulo 6

Trabajando con Unix

A UNIX saleslady Lenore

Enjoys work but she likes the beach more

She found a good way

To combine work and play

She sells C shells by the seashore

Unix es un potente sistema para aquellos que saben coacutemo dominar su poder En estecapiacutetulo intentareacute describir varias maneras de usar el shell de Unix bash maacuteseficientemente

61 Comodines

En el capiacutetulo anterior se ensentildearon los comandos para mantener ficheros cp mv y rm Aveces se querraacute tratar con maacutes de un fichero a la vez en realidad con muchos a la vezPor ejemplo se quiere copiar todos los ficheros que empiecen por data en un directoriollamado backup Se podriacutea hacer esto ejecutando muchos comandos cp o escribiendo cadafichero en una liacutenea de comando Estos dos meacutetodos llevan mucho tiempo incluso setienen muchas posibilidades de cometer errores

Una buena manera de hacer este trabajo es teclear

homelarryreport$ ls shyF

1993shy1 1994shy1 data1 data5

1993shy2 datashynew data2

homelarryreport$ mkdir ~backup

homelarryreport$ cp data ~backup

homelarryreport$ ls shyF ~backup

datashynew data1 data2 data5

homelarryreport$

Como se puede observar el asterisco indica a cp que tome todos los ficheros que empiecenpor data y los copie a backup iquestQueacute cree que cp dw backup puede haber hecho

611 iquestQueacute ocurre realmente

Buena pregunta De hecho hay un par de caracteres especiales interceptados por el shellbash El caraacutecter un asterisco dice cambia esta palabra con todos los ficherosque se ajusten a esta especificacioacuten Asiacute el comando cp data backup como el dearriba cambia a cp datashynew data1 data2 data5 backup antes de ejecutarse

Para ilustrar esto introducireacute un comando nuevo echo echo es un comando extremadamentesimple repite o muestra cualquier paraacutemetro De este modo

homelarry$ echo Hola

Hola

homelarry$ echo Como se encuentra

Como se encuentra

homelarry$ cd report

homelarryreport$ ls shyF

1993shy1 1994shy1 data1 data5

1993shy2 datashynew data2

homelarryreport$ echo 199

1993shy1 1993shy2 1994shy1

homelarryreport$ echo 4

1994shy1

homelarryreport$ echo 2

1993shy2 data2

homelarryreport$

Como se puede ver el shell expande el comodiacuten y pasa todos los ficheros al programa quese va a ejecutar Esto plantea una pregunta interesante iquestqueacute ocurre si no hay ficherosque se ajusten a la especificacioacuten del comodiacuten Pruebe echo rcfrog y bash pasaraacuteliteralmente la especificacioacuten del comodiacuten al programa

Otros shells como tcsh en vez de pasar el comodiacuten literalmente contestaraacuten No matchAquiacute estaacute el mismo comando ejecutado bajo tcsh

mousehousegtecho rcfrog

echo No match

mousehousegt

La uacuteltima pregunta que podriacutea hacerse es iquestqueacute pasa si quisiera mostrar data en vez dela lista de nombres Bien tanto en bash como en tcsh soacutelo se debe incluir la cadenaentre comillas

homelarryreport$ echo data mousehousegtecho data

data Oacute bien data

homelarryreport$ mousehousegt

612 El signo de interrogacioacuten

Ademaacutes del asterisco el shell tambieacuten interpreta un signo de interrogacioacuten como uncaraacutecter especial

Un signo de interrogacioacuten coincidiraacute con un caraacutecter y soacutelo uno Por ejemplo ls etc

mostraraacute todos los ficheros de dos letras en el directorio etc

62 Ganar tiempo con bash

621 Editando la liacutenea de comandos

A veces escribe un comando largo a bash y antes de pulsar |_Intro_| se da cuenta deque ha cometido un error al escribirlo Se puede simplemente borrar todo y volver ateclear correctamente pero iexcles demasiado esfuerzo En cambio se pueden usar las flechaspara moverse borrar ellos caraacutecteres incorrectos y escribir la informacioacutencorrectamente

Hay muchas teclas especiales que ayudan a editar la liacutenea de comandos muchas de ellassimilares a los comandos usados en GNU Emacs Por ejemplo |_Cshyt_| intercambia doscaraacutecteres adyacentes1

Se pueden encontrar muchos de los comandos en el capiacutetulo sobre Emacs Capiacutetulo 8

622 Completamiento de comandos y nombres de fichero

Otra peculiaridad de bash es la ejecucioacuten automaacutetica de las liacuteneas de comando Porejemplo veamos el siguiente ejemplo de un comando cp tiacutepico

homelarry$ ls shyF

estoshyesshyunshyficheroshylargo

homelarry$ cp estoshyesshyunshyficheroshylargo corto

homelarry$ ls shyF

corto estoshyesshyunshyficheroshylargo

homelarry$

Es una gran molestia tener que teclear cada letra de estoshyesshyunshyficheroshylargo cada vezque se quiere acceder a eacutel sucede lo mismo si queremos crear estoshyesshyunshyficheroshylargocopiando en eacutel etcpasswd2 Ahora aprenderemos a escribir el anterior comando cp maacutesraacutepidamente y con menos posibilidad de error

En vez de teclear el nombre del fichero entero se escribe cp es se pulsa y suelta latecla |_Tab_| Por arte de magia el resto del nombre del fichero aparece en la liacutenea decomandos y se puede escribir corto Desgraciadamente bash no pude leer lospensamientos por lo que se debe teclear corto

Cuando se pulsa |_Tab_| bash mira lo que hay escrito y busca un fichero que empiece comoeso Por ejemplo si tecleo usrbinema y luego pulso |_Tab_| bash encontraraacuteusrbinemacs ya que es el uacutenico fichero que empieza por usrbinema en mi sistema Encambio si tecleo usrbinld y pulso |_Tab_| bash me avisaraacute Eso es porque tresficheros usrbinld usrbinldd y usrbinld86 empiezan por usrbinld en misistema

Si se intenta un completamiento y bash avisa se puede pulsar inmediatamente |_Tab_| otravez para conseguir una lista de todos los ficheros que coincidan con el patroacuten De estemodo si no se estaacute seguro del nombre exacto del fichero podemos teclear los primeroscaracteres del nombre y buscarlo en una lista maacutes pequentildea de ficheros

______________________________________________

1 |_Cshyt_|significa mantener pulsada la tecla marcada como Ctrl y apretar la tecla tLuego soltar ambas

2 cp etcpasswd estoshyesshyunshyficheroshylargo

63 La entrada estaacutendar y La salida estaacutendar

Intentemos abordar un problema simple conseguir un listado del directorio usrbin Sihacemos ls usrbin algunos de los nombres de los ficheros saldraacuten por arriba de lapantalla iquestComo se pueden ver todos los ficheros

631 Algunos conceptos de Unix

El sistema operativo Unix facilita mucho a los programas el uso del terminal Cuando unprograma escribe algo en la pantalla estaacute usando algo llamado salida estaacutendar Salidaestaacutendar en ingleacutes standard output o stdout es la manera que tiene el programa deescribirle cosas al usuario El nombre por el que se indica un programa es entradaestaacutendar (stdin) Es posible que un programa se comunique con el usuario sin usar laentrada o salida estaacutendar pero la mayoriacutea de los comandos que se tratan en este librousan stdin y stdout

Por ejemplo el comando ls imprime una lista de los directorios en la salida estaacutendarque estaacute normalmente conectada al terminal Un comando interactivo como el shellbash lee los comandos de la entrada estaacutendar

Un programa tambieacuten puede escribir en el error estaacutendar ya que es muy faacutecil hacer que lasalida estaacutendar apunte a cualquier lugar aparte del terminal El error estaacutendar (stderr)estaacute casi siempre conectado al terminal para que alguna persona pueda leer el mensaje

En esta seccioacuten examinaremos tres modos de enredarse con la entrada y salida estaacutendarredireccionar la salida redireccionar la entrada y las tuberiacuteas

632 Redireccionar la salida

Un aspecto muy importante de Unix es la posibilidad de redireccionar la salida Estopermite que en vez de ver los resultados de un comando los salvemos en un fichero o losenviemos directamente a una impresora Por ejemplo para redireccionar la salida delcomando ls usrbin se coloca un signo gt al final de la liacutenea y se indica elfichero donde dejar la salida

homelarry$ ls

homelarry$ ls shyF usrbin gt listado

homelarry$ ls

listado

homelarry$

Como se puede ver en vez de escribir los nombres de todos los ficheros el comando creaun fichero totalmente nuevo en el directorio actual Echemos un vistazo a este ficherousando el comando cat

Si se recuerda cat era un comando bastante inuacutetil que copiaba lo que se escribiacutea(entrada estaacutendar) al terminal (salida estaacutendar) cat tambieacuten imprime un fichero en lasalida estaacutendar si se indica el fichero como paraacutemetro

homelarry$ cat listado

homelarry$

La salida exacta del comando ls usrbin aparece en el contenido de listado Por ahoratodo bien sin embargo no resuelve el problema original3

A pesar de todo cat hace algunas cosas interesantes cuando se redirecciona su salidaiquestQueacute hace el comando cat listado gt fichero Normalmente el gt fichero dice coge todala salida del comando y ponla en fichero La salida del comando cat listado es elfichero listado Asiacute hemos inventado un nuevo (y no tan eficiente) meacutetodo de copiarficheros

iquestQueacute ocurre con el comando cat gt zorro cat lee cada liacutenea escrita en el terminal(entrada estaacutendar) y la imprime de vuelta (salida estaacutendar) hasta que lee |_Ctrlshyd_| Eneste caso la salida estaacutendar se ha redireccionado al fichero zorro Ahora cat sirve comoun editor rudimentario

homelarry$ cat gt zorro

El rapido zorro marron salta sobre el descuidado perro

pulsa Ctrlshyd

Ahora se ha creado el fichero zorro que contiene la frase El rapido zorro marron saltasobre el descuidado perro Un uacuteltimo uso del versaacutetil comando cat es concatenarficheros cat imprimiraacute cada fichero dado como paraacutemetro uno despues de otro El comandocat listado zorro imprimiraacute el listado del directorio usrbin y luego la tonta fraseAsiacute el comando cat listado zorro gt listyzorro crearaacute un nuevo fichero conteniendo loscontenidos de listado y zorro

633 Redireccionar la entrada

Asiacute como cuando se redirecciona la salida estaacutendar es posible redireccionar la entradaEn lugar de que un programa lea su entrada desde el teclado la leeraacute desde un ficheroComo redireccionar la entrada estaacute relacionado con redireccionar la salida parecenatural que lt sea el caraacutecter para redireccionar la entrada Eacuteste tambieacuten se usadespueacutes del comando que se desee ejecutar

Esto es generalmente uacutetil si se tiene un fichero de datos y un comando que espera susdatos desde la entrada estaacutendar Muchos comandos permiten especificar un fichero sobre elcual operar asiacute que en las actividades diarias el lt no se usa tanto como otrasteacutecnicas

634 Las tuberiacuteas

Muchos comandos Unix producen gran cantidad de informacioacuten Por ejemplo es normal que uncomando como ls usrbin produzca maacutes salida que la que se puede ver en pantalla Paraque se pueda ver toda la informacioacuten de un comando como ls usrbin es necesario usarotro comando Unix llamado more4 more pararaacute cada vez que la pantalla se llene deinformacioacuten Por ejemplo more lt etcrc mostraraacute el fichero etcrc como lo hariacutea catetcrc excepto que more permite leerlo more tambieacuten admite el comando more etcrc y esa es la forma normal de invocarlo

_____________________________________________

3 Para lectores impacientes el comando que se debe usar es more Sin embargo hay quehablar un poco sobre algo maacutes antes de llegar ahiacute

4 Se llama more porque ese es el indicador que originalmente mostraba shyshymoreshyshy Envarias versiones de Linux el comando more es identico a un comando maacutes avanzado que hacetodo lo que more puede hacer y maacutes auacuten Como demostracioacuten de que los programadores deordenadores son malos coacutemicos llamaron a este nuevo programa less

Sin embargo eso no ayuda al problema de que ls usrbin muestre maacutes informacioacuten de laque se pueda ver more lt ls usrbin no funciona iexclla redireccioacuten de entrada soacutelofunciona con ficheros no comandos Se podriacutea hacer esto

homelarry$ ls usrbin gt tempshyls

homelarry$ more tempshyls

homelarry$ rm tempshyls

Pero Unix propone una forma maacutes limpia de hacerlo Se puede usar el comando ls usrbin_ more El caraacutecter _ es una tuberiacutea Como una tuberiacutea de agua una tuberiacutea Unixcontrola el flujo En vez de agua se controla el flujo de informacioacuten

Los filtros son programas muy uacutetiles para usarse en conjuncioacuten con las tuberiacuteas Unfiltro es un programa que lee la entrada estaacutendar la cambia de alguna manera y la sacapor la salida estaacutendar

more es un filtro lee los datos que coge de la entrada estaacutendar y los muestra por lasalida estaacutendar pantalla a pantalla permitiendo leer el fichero more no es un granfiltro porque su salida no se puede enviar a otro programa

Otros filtros incluyen los programas cat sort head y tail Por ejemplo si se quiereleer soacutelo las primeras diez liacuteneas de la salida de ls se puede usar ls usrbin _ head

64 Multitarea

641 Usando el control de trabajos

Control de trabajos se refiere a la habilidad de poner procesos (esencialmente otrapalabra para programas) en background (segundo plano) y ponerlos de vuelta en foreground(primer plano)

Esto es como decir que se quiere ser capaz de ejecutar algo mientras se hacen otrascosas pero que esteacuten ahiacute otra vez cuando se les quiera decir algo o pararlos En Unixla principal herramienta para el control de procesos es el shell seguiraacute la pista de losprocesos por usted si se aprende como hablar su lenguaje

Las dos palabras maacutes importantes en ese lenguaje son fg para primer plano y bg parasegundo plano Para entender como funcionan use el comando yes en el indicador delsistema

homelarry$ yes

Esto produce el maravilloso efecto de desplazar una larga columna de yes por la parteizquierda de la pantalla tan raacutepido que no se pueden seguir5 Para pararlo se podriacuteapulsar |_Ctrlshyc_| y matarlo pero esta vez Ud oprimiraacute |_Ctrlshyz_| Parece habersedetenido pero habraacute un mensaje antes del indicador de sistema maacutes o menos parecido aeste

[1]+ Stopped yes

_____________________________________________

5 Hay buenas razones para que este extrantildeo comando exista Ciertos comandos esperan unaconfirmacioacuten un si ([y]es en ingleacutes) a una pregunta El comando yes permite alprogramador automatizar la respuesta a esas preguntas

Significa que el trabajo yes se ha suspendido en el segundo plano Se puede hacer quesiga ejecutaacutendose tecleando fg en el indicador de sistema que lo pondraacute en primer planootra vez Si se desea se pueden hacer otras cosas antes mientras estaacute suspendidoPruebe unos cuantos ls o algo antes de ponerlo en primer plano nuevamente

Una vez que ha vuelto al primer plano las yes empezaraacuten a salir otra vez tan raacutepidocomo antes

No hay que preocuparse de que si mientras ha estado suspendido ha almacenado maacutes yespara enviarlas a la pantalla cuando un trabajo se suspende el programa entero no seejecuta hasta que se lo vuelva de vuelta a la vida (Ahora pulse |_Ctrlshyc_| para matarlode veras)

Pongamos aparte el mensaje que obtuvimos del shell

[1]+ Stopped yes

El nuacutemero entre corchetes es el nuacutemero de trabajo de este proceso y se usaraacute cuando senecesite referenciarlo especiacuteficamente (Naturalmente desde el momento que tengamos enejecucioacuten muacuteltiples trabajos se necesita un modo de acceder a cada uno) El +siguiente indica que eacutese es el trabajo actual esto es el proceso maacutes reciente que seha movido del primer plano al segundo

Si se tecleara fg se pondriacutea el trabajo con el + en primer plano otra vez (Maacutessobre esto despueacutes cuando se discuta la ejecucioacuten de muacuteltiples trabajos a la vez) Lapalabra Stopped significa que el trabajo estaacute parado El trabajo no estaacute muerto peroactualmente no se ejecuta Linux lo ha guardado en un estado especial de suspendidolisto para saltar a la accioacuten cuando alguien lo solicite Finalmente el yes es el nombredel trabajo que se ha detenido

Antes de seguir adelante matemos este trabajo y lo arrancamos otra vez de formadiferente El comando se llama kill y se usa del siguiente modo

homelarry$ kill 1

[1]+ Stopped yes

homelarry$

Ese mensaje sobre el proceso que indica parado otra vez induce a error Para saber siauacuten estaacute vivo (eso es tanto en ejecucioacuten como congelado en un estado suspendido) tecleejobs

homelarry$ jobs

[1]+ Terminated yes

homelarry$

Ahora ya lo sabe iexclel trabajo ha terminado (Es posible que el comando jobs no muestrenada lo que simplemente significa que no hay trabajos ejecutaacutendose en segundo plano Sise acaba de matar un trabajo y al teclear jobs no muestra nada se tiene la seguridad deque el comando kill se ha ejecutado correctamente Normalmente indicaraacute que el trabajo haterminado)

Ahora ejecute yes de nuevo de esta forma

homelarry$ yes gt devnull

Si lee la seccioacuten sobre la redireccioacuten de entrada y salida sabraacute que se estaacute enviando lasalida de yes a un fichero especial llamado devnull devnull es un agujero negro quecome cualquier salida que se le enviacutee (se puede imaginar ese torrente de yes saliendo pordetraacutes del ordenador y perforando un agujero en la pared si eso le hace feliz)

Despueacutes de teclear esto no se recuperaraacute el indicador de sistema pero tampoco saldraacuteesa columna de yes Sin embargo la salida se estaacute enviando a devnull el trabajo auacuten seejecuta en primer plano Como siempre se puede suspender pulsando |_Ctrlshyz_| Haacutegaloahora para volver al indicador del sistema

homelarry$ yes gt devnull

[yes se ejecuta y solamente se ha pulsado Ctrlshyz]

[1]+ Stopped yes gtdevnull

homelarry$

Hmm iquesthay alguna forma de ponerlo en ejecucioacuten en segundo plano mientras deja elindicador del sistema para trabajar de forma interactiva El comando para hacer eso esbg

homelarry$ bg

[1]+ yes gtdevnull amp

homelarry$

Ahora deberaacute tener confianza en miacute sobre esto despueacutes de teclear bg el trabajo yes gtdevnull habraacute continuado con su ejecucioacuten otra vez pero esta vez en segundo plano Dehecho si hace alguna cosa en el prompt como ls u otros se daraacute cuenta que su maacutequinase ha ralentizado un poco (iexclgenerar y descargar continuamente una cadena preparada deyes lleva algo de tiempo al fin y al cabo) Aparte de esto no hay ninguacuten otro efectoSe puede hacer lo que se desee en el indicador del sistema y yes continuaraacute felizmenteenviando su salida al agujero negro

Ahora hay dos formas diferentes de matarlo con el comando kill que ya se explicoacute oponiendo el trabajo en primer plano de nuevo e interrumpirlo con una interrupcioacuten|_Ctrlshyc_| Probemos la segunda forma soacutelo para entender la relacioacuten entre fg y bg unpoco mejor

homelarry$ fg

yes gtdevnull

[ahora esta en primer plano Imagine que pulso Ctrlshyc para terminarlo]

homelarry$

Bueno se acaboacute Ahora ejecute unos cuantos trabajos simultaacuteneamente como estos

homelarry$ yes gt devnull amp

[1] 1024

homelarry$ yes _ sort gt devnull amp

[2] 1026

homelarry$ yes _ uniq gt devnull

[y aqui pulse Ctrlshyz para suspenderlo por favor]

[3]+ Stopped yes _ uniq gtdevnull

homelarry$

La primera cosa que le debe llamar la atencioacuten de estos comandos es la terminacioacuten amp alfinal de los dos primeros Poner un amp despueacutes del comando indica al shell que losejecute en segundo plano desde el principio (Es una forma de evitarse tener que ejecutarel programa pulsar |_Ctrlshyz_| y luego teclear bg ) Asiacute estos dos comandos hanempezado a ejecutarse en segundo plano El tercero estaacute suspendido e inactivo en estemomento Se puede dar cuenta de que la maacutequina se ha vuelto maacutes lenta ya que los que seestaacuten ejecutando requieren un poco de tiempo de CPU

Cada uno indica su nuacutemero de trabajo Los dos primeros tambieacuten muestran sus nuacutemeros deidentificacioacuten de proceso o PID despueacutes del nuacutemero de trabajo Los PIDs normalmente noson algo que se necesite conocer pero a veces viene bien

Matemos el segundo ya que creo que estaacute ralentizando su maacutequina Se puede teclear kill2 pero eso seriacutea demasiado faacutecil Por el contrario haga esto

homelarry$ fg 2

yes _ sort gtdevnull

[pulse Ctrlshyc para matarlo]

homelarry$

Como esto demuestra fg toma paraacutemetros empezando con De hecho se podriacutea teclearsoacutelo esto

homelarry$ 2

yes _ sort gtdevnull

[pulse Ctrlshyc para matarlo]

homelarry$

Esto funciona por que el shell automaacuteticamente interpreta un nuacutemero de trabajo como unapeticioacuten para poner ese trabajo en primer plano Se puede indicar los nuacutemeros de trabajocon otros nuacutemeros precedidos por un Ahora teclee jobs para ver cuaacuteles trabajosquedan en ejecucioacuten

homelarry$ jobs

[1]shy Running yes gtdevnull amp

[3]+ Stopped yes _ uniq gtdevnull

homelarry$

El shy indica que ese trabajo nuacutemero 1 es segundo en la lista para ser puesto en elprimer plano si soacutelo se teclea fg sin dar paraacutemetros El + indica que el trabajoespecificado es el primero en la lista un fg sin paraacutemetros pondraacute al trabajo nuacutemero 3en el primer plano Sin embargo se puede acceder a eacutel llamaacutendolo si se desea mediante

homelarry$ fg 1

yes gtdevnull

[ahora pulse Ctrlshyz para suspenderlo]

[1]+ Stopped yes gtdevnull

homelarry$

Al cambiar al trabajo nuacutemero 1 y luego suspenderlo han cambiado las prioridades de todoslos trabajos de usuario Esto se puede ver con el comando jobs

homelarry$ jobs

[1]+ Stopped yes gtdevnull

[3]shy Stopped yes _ uniq gtdevnull

homelarry$

Ahora los dos estaacuten parados (porque los dos se han suspendido con |_Ctrlshyz_|) y elnuacutemero 1 es el siguiente en la lista a entrar en el primer plano por defecto Esto es asiacuteporque se le puso en el primer plano manualmente y luego fue suspendido El + siemprese refiere al trabajo maacutes reciente que ha sido suspendido del primer plano Se puedecontinuar con su ejecucioacuten otra vez

homelarry$ bg

[1]+ yes gtdevnull amp

homelarry$ jobs

[1]shy Running yes gtdevnull

[3]+ Stopped yes _ uniq gtdevnull

homelarry$

Fiacutejese que ahora estaacute en ejecucioacuten y el otro trabajo se ha movido en la lista y tiene el+ Ahora mateacutemoslos para que el sistema no esteacute permanentemente ralentizado porprocesos que no hacen nada

homelarry$ kill 1 3

[3] Terminated yes _ uniq gtdevnull

homelarry$ jobs

[1]+ Terminated yes gtdevnull

homelarry$

Apareceraacuten varios mensajes sobre la terminacioacuten de los trabajos nada mueretranquilamente al parecer La figura 61 de la paacutegina 59 muestra un breve resumen de loque se debe saber acerca del control de trabajos

642 Teoriacutea del control de trabajos

Es importante entender que el control de procesos lo hace el shell No hay ninguacutenprograma en el sistema llamado fg por eso fg bg amp jobs y kill son internos alshell6 (A veces kill es un programa independiente en el shell bash usado por Linuxpertenece al shell) Esto es una forma loacutegica de hacerlo ya que cada usuario quiere supropio espacio de control de trabajos y cada usuario ya tiene su propio shell es maacutesfaacutecil que el shell siga la pista de los trabajos usuario Por otro lado cada nuacutemero detrabajo de usuario soacutelo tiene significado para ese usuario mi trabajo nuacutemero [1] y sutrabajo nuacutemero [1] son probablemente dos procesos totalmente diferentes De hecho si seestaacute conectado maacutes de una vez cada uno de los shells tendraacute datos uacutenicos sobre elcontrol de trabajos asiacute como tambieacuten un usuario puede tener dos trabajos diferentes conel mismo nuacutemero ejecutaacutendose en dos shells diferentes

_____________________________________________

6 N del T En el original pone shellshybuiltins eso es que se compilan dentro delshell

La manera segura de referenciarlos es usar el nuacutemero IDentificador de Proceso (PID)Estos nuacutemeros abarcan todo el sistema cada proceso tiene su propio (y uacutenico) nuacutemero Dosusuarios diferentes pueden referenciar un proceso por su PID y saber que estaacuten hablandosobre el mismo proceso (iexclasumiendo que estaacuten conectados en la misma maacutequina)

Echeacutemosle un vistazo a un comando maacutes para entender que son los PIDs El comando ps listatodos los procesos en ejecucioacuten incluyendo el shell Prueacutebelo Tiene tambieacuten unascuantas opciones de las cuales las maacutes importantes (para mucha gente) son a u yx La opcioacuten a lista los procesos pertenecientes a alguacuten usuario no soacutelo los suyos

propios La x lista los procesos que no tienen un terminal asociado a ellos7Finalmente la u da informacioacuten adicional sobre los procesos que es frecuentementeuacutetil

Para hacerse una idea de lo que realmente estaacute haciendo el sistema se ponen todosjuntos ps shyaux Se pueden ver los procesos que usan maacutes memoria mirando la columnaMEM y maacutes CPU mirando a la columna CPU (La columna TIME lista la cantidad total detiempo de CPU usado)

Otra nota raacutepida sobre los PIDs kill aparte de tomar opciones de la forma no_trabajotoma opciones de los PIDs en crudo Esto es si pone un yes gt devnull en segundoplano se ejecuta ps y se busca el yes Luego se teclea kill PID 8

Si empieza a programar en C con su sistema Linux pronto aprenderaacute que el control detrabajos del shell es soacutelo una versioacuten interactiva de las llamadas a las funciones fork yexecl Esto es demasiado complejo para explicarlo aquiacute pero seriacutea uacutetil recordarlodespueacutes cuando se esteacute programando y se quieran ejecutar muacuteltiples procesos desde unsimple programa

65 Consolas virtuales como estar en varios lugares a la vez

Linux soporta consolas virtuales Son una manera de hacer que su simple maacutequina aparezcacomo muacuteltiples terminales todos conectados al mismo nuacutecleo Linux Por fortuna usar lasconsolas virtuales es una de las cosas maacutes simples en Linux hay hot keys9 para cambiarentre las consolas raacutepidamente Para probarlo hay que conectarse al sistema pulsar latecla |_Alt_| izquierda y pulsar |_F2_| (esto es la tecla de funcioacuten nuacutemero 2)10 11

_____________________________________________

7 Esto soacutelo tiene sentido para ciertos programas que no tienen que hablar con el usuarioa traveacutes del teclado

8 En general es maacutes faacutecil matar el nuacutemero del trabajo en vez de usar PIDs

9 NT No he creido apropiado traducir este teacutermino ya que muchos usuarios saben a loque se refiere De todas formas para el que no lo sepa esto es una simple combinacioacutende teclas que hace un cierto trabajo

Se encontraraacute con otro indicador para conectarse No se alarme ahora estaacute en la consolavirtual (VC) nuacutemero 2 Coneacutectese y haga algunas cosas unos cuantos ls o lo que sea paraconfirmar que es un shell real Ahora puede volver a la VC nuacutemero 1 pulsando el |_Alt_|izquierdo y |_F1_| O se puede mover a una tercera VC de la forma obvia (|_AltshyF3_|)

Generalmente los sistemas Linux vienen con cuatro VC activadas por defecto Esto se puedeincrementar a ocho estos temas se cubriraacuten en The Linux System Administrators GuideEllo implica editar uno o dos ficheros en el directorio etc Sin embargo cuatro debenser suficientes para la mayoriacutea de las personas

Una vez las haya usado las VC probablemente se convertiraacuten en una herramientaindispensable para tener varias cosas ejecutaacutendose a la vez Por ejemplo yo normalmenteejecuto Emacs en la VC 1 (y hago la mayor parte de mi trabajo ahiacute) mientras tengo unprograma de comunicaciones en la VC 3 (asiacute puede coger o dejar ficheros via modemmientras trabajo o ejecutar programas en maacutequinas remotas) y mantengo un shell en la VC2 soacutelo en caso de que tenga que ejecutar algo sin involucrar a la VC 1

_____________________________________________

10 Hay que asegurarse de que esto se hace desde consolas en modo texto si se estaacuteejecutando X Window u otra aplicacioacuten graacutefica probablemente no funcionaraacute sin embargo

corre el rumor de que pronto se podraacute cambiar entre las consolas virtuales en X Window deLinux

11 N del T De hecho al momento de la traduccioacuten la combinacioacuten es |_CtrlshyAltshyteclashydeshyfuncioacuten_|

Figura 61 Resumen de comandos y teclas usados para el control de trabajos

Comando Explicacioacuten

fg nordm_trabajo Este es un comando del shell que devuelve un trabajo alprimer plano Para saber cuaacutel es eacuteste por defecto se tecleajobs y se busca el que tiene el +

Paraacutemetros nuacutemero de trabajo opcional El trabajo pordefecto se identifica con el +

amp Cuando se antildeade un amp al final de la liacutenea de comandosindica al comando que se ejecute en segundo planoautomaacuteticamente Este trabajo estaacute entonces sujeto a todoslos meacutetodos usuales para el control de trabajos aquiacutedetallados

bg nordm_trabajo Este es un comando del shell que manda a un trabajosuspendido ejecutarse en segundo plano Para saber cual eseacuteste por defecto se teclea jobs y se busca el que tieneel +

Paraacutemetros nuacutemero de trabajo opcional El trabajo pordefecto se identifica con el +

kill nordm_trabajo PID Este es un comando del shell que obliga a un trabajo ensegundo plano ya sea suspendido o en ejecucioacuten a terminarSe debe siempre especificar el nuacutemero de trabajo o PID y sise estaacuten usando nuacutemeros de trabajo no hay que olvidar ponerel

Paraacutemetros El nuacutemero de trabajo (a continuacioacuten del ) o elPID (no es necesario el ) Se puede especificar maacutes de unproceso o trabajo en una liacutenea

jobs Este comando del shell lista informacioacuten sobre los trabajosque estaacuten en ese momento en ejecucioacuten o suspendidos A vecestambieacuten dice cuaacuteles son los que acaban de salir o hanterminado

|_Ctrlshyc_| Este es el caraacutecter geneacuterico de interrupcioacuten Normalmentesi se pulsa mientras un programa se estaacute ejecutando enprimer plano mataraacute al programa (puede que haya que hacerlovarias veces) Sin embargo no todos los programasresponderaacuten a este meacutetodo de terminacioacuten

|_Ctrlshyz_| Esta combinacioacuten de teclas normalmente suspende un programapuede que algunos programas lo ignoren Una vez suspendidoel trabajo se puede reiniciar en el segundo plano o se puedematar

Capiacutetulo 7

Pequentildeos programas potentes

better pout cry

better watchout

lpr why

santa claus ltnorth pole gttown

cat etcpasswd gtlist

ncheck list

ncheck list

cat list _ grep naughty gtnogiftlist

cat list _ grep nice gtgiftlist

santa claus ltnorth pole gt town

who _ grep sleeping

who _ grep awake

who _ egrep bad_good

for (goodness sake) shy

be good

71 El poder de Unix

El poder de Unix1 se esconde en pequentildeos comandos que no parecen ser muy uacutetiles cuando seutilizan por separado pero combinados con otros (directa o indirectamente) proporcionanun entorno mucho maacutes potente y flexible que la mayoriacutea de los otros sistemas operativosLos comandos de los que hablaremos en este capiacutetulo son entre otros sort grep morecat wc spell diff head y tail

Veremos lo que cada una de las utilidades hace por separado y luego daremos algunosejemplos de como utilizarlos conjuntamente2

_____________________________________________

1 N del T El cookie de apertura de este capiacutetulo es la traduccioacuten a comandos Unix deuna cancioacuten de navidad

Santa Claus is coming to town (escrita por H Gillespie J F Coots)

2 Noacutetese que los resuacutemenes de los comandos en este capiacutetulo no son extensos Para masinformacioacuten vea la paacutegina del manual correspondiente con el comando man

72 Trabajando con ficheros

Junto a comandos como cd mv y rm que ya se vieron en el Capiacutetulo 4 hay otros comandosque trabajan con ficheros pero no con los datos contenidos en ellos Estos son touchchmod du y df

Ninguno de ellos se preocupa por lo que contiene el fichero simplemente modificanalgunas de las informaciones que Unix guarda acerca del fichero

Estos comandos manipulan

o Los registros de tiempo Todo fichero tiene tres fechas asociadas a eacutel3 Las tresfechas son las siguientes creacioacuten del fichero uacuteltima modificacioacuten (cuando se produjoel uacuteltimo cambio en el fichero) y uacuteltimo acceso (cuando se produjo la uacuteltima lectura delfichero)

o El duentildeo Cada fichero en Unix pertenece a un uacutenico propietario

o El grupo Cada fichero tiene tambieacuten asociados un grupo de usuarios El grupo maacutes usualpara los ficheros de usuario se denomina users que es al cual por lo generalpertenecen todos los usuarios con cuenta en el sistema

o Los permisos Cada fichero tiene ciertos permisos (tambieacuten llamados privilegios)asociados a eacutel que indican a Unix quieacuten puede acceder a ese fichero cambiarlo o en elcaso de ser un programa ejecutarlo Cada uno de estos permisos puede ser establecido porseparado para el duentildeo el grupo y el resto de usuarios

shy touch fichero1 fichero2 ficheroN

touch actualiza los registros de fecha y hora con la fecha y hora actual de los ficherosindicados en la linea de comandos Si el fichero no existe touch lo crearaacute Tambieacuten esposible especificar la fecha y hora a registrar en la informacioacuten de losficheros_consulte la paacutegina del manual (comando man) para maacutes informacioacuten sobre touch

shy chmod [shyRfv] modo fichero1 fichero2 ficheroN

El comando que se utiliza para modificar los permisos de un fichero es el chmod4 Antesde

meternos en como utilizar este comando veamos primero que permisos hay en Unix Cadafichero tiene asociados un grupo de permisos Estos permisos le indican al sistemaoperativo quien puede leer escribir o ejecutar como programa el fichero (Acontinuacioacuten se explica como puede un usuario hacer estas cosas Un programa ejecutadopor un usuario puede hacer las mismas cosas que las que le esteacuten permitidas al propiousuario esto puede suponer un problema de seguridad si se desconoce lo que hace cadaprograma en particular)

_____________________________________________

3 Los antiguos sistemas de ficheros de Linux soacutelo almacenaban una fecha ya que derivabande Minix Si se utiliza alguno de estos sistemas de ficheros parte de la informacioacuten noestaraacute disponible y las operaciones que se realicen sobre ellas seraacuten inuacutetiles

4 N del T Abreviatura de change mode cambiar modo

Unix reconoce tres tipos diferentes de individuos primero el propietario del fichero (yla persona que puede utilizar el comando chmod sobre ese fichero) Segundo el grupoEl grupo de la mayoriacutea de los ficheros normales de un usuario del sistema seraacute users(Para ver el grupo de un fichero en particular utilizar ls shyl fichero ) Por uacuteltimoestaacute el resto que no son ni propietarios ni pertenecen al grupo denominados otros5

De esta forma por ejemplo un fichero puede tener permisos de lectura y escritura parael propietario permiso de lectura para el grupo y ninguacuten tipo de permisos para otros Opor alguna razoacuten un fichero puede tener permisos de lecturaescritura para el grupo yotros pero iexclninguacuten privilegio para el propietario

Veamos algunos ejemplos de como cambiar permisos utilizando chmod Primero creamos unfichero utilizando cat emacs o cualquier otro programa Por defecto son posibles lasoperaciones de lectura y de escritura sobre el fichero (Los permisos dados a otrosusuarios dependen de coacutemo esteacuten establecidas las variables del sistema y de la cuenta delusuario) Podemos asegurarnos de que tenemos permiso de lectura utilizando el comandocat a continuacioacuten eliminamos el privilegio de lectura para nosotros mismos utilizandochmod ushyr fichero 6 Ahora si intentamos leer el fichero obtendremos el mensaje deerror Permission denied Devolvemos el privilegio de lectura utilizando chmod u+rfichero

Los permisos de directorio utilizan las tres mismas ideas anteriores leer escribir yejecutar pero con ligeras variaciones El privilegio de lectura permite al usuario (o algrupo o a otros) leer el directorio listar los nombres de los ficheros El permiso deescritura permite antildeadir o borrar ficheros El permiso de ejecucioacuten permite al usuarioacceder a ficheros en el directorio o a cualquier subdirectorio (Si un usuario no tienepermisos de ejecucioacuten para un directorio entonces no puede siquiera hacer un cd almismo)

Para utilizar chmod reemplazar el modo por el usuario grupo otro o todos (all) y laoperacioacuten a realizar (Es decir utilizar un signo maacutes + para antildeadir privilegios y unmenos shy para quitarlos

Un signo igual = indica los mismos permisos para los usuarios involucrados en el modo)Los permisos posibles son lectura (read) escritura (write) y ejecucioacuten (execute)

La opcioacuten shyR al utilizar chmod cambiaraacute los permisos de un directorio de todos losficheros contenidos en eacutel y de forma recursiva los permisos del aacuterbol de subdirectoriosa partir de eacutel La opcioacuten shyf fuerza a que chmod intente cambiar los permisos incluso siel usuario no es el duentildeo del fichero (Si se utiliza el paraacutemetro f al ejecutar chmodno se mostraraacute un mensaje de error en caso de que no pueda cambiar los permisos delfichero) por uacuteltimo la opcioacuten v hace que la ejecucioacuten del chmod informe de todo loque hace

_____________________________________________

5 N del T En ingles owner (con u de user) group and othersrespectivamente

6 N del T El paraacutemetro ushyr indica user minus read es decir usuario menos lectura

73 Estadiacutesticas del sistema

Los comandos de esta seccioacuten son de utilidad a la hora de mostrar las estadiacutesticas delsistema operativo o de una parte de eacutel

shy du [shyabs] [trayectoria1 trayectoria2 trayectoriaN]

El comando du7 contabilizaraacute el espacio de disco ocupado por un subdirectorio y todos sussubdirectorios El uso de este comando sin utilizar paraacutemetros devolveraacute una lista decuanto disco consume cada subdirectorio del directorio actual y al final del informecuanto disco utiliza el directorio (y todos sus subdirectorios) Si se le pasa uno o maacutesparaacutemetros devolveraacute la cantidad de espacio utilizado por esos ficheros o directorios enlugar de la del directorio actual

La opcioacuten a mostraraacute ademaacutes del espacio de los directorios el de los ficherosUtilizando b como opcioacuten presentaraacute el total en bytes en lugar de kilobytes (1kilobyte = 1024 caracteres)8

Finalmente el paraacutemetro s informaraacute soacutelo acerca de los directorios expliciacutetos en lalinea de comando y no de sus subdirectorios

shy df

El comando df9 resume la cantidad de espacio utilizada en el disco Para cada sistema deficheros (recuerde que sistemas de ficheros diferentes son o bien unidades fiacutesicas oparticiones diferentes) muestra el espacio total de disco la cantidad utilizada lacantidad disponible y la capacidad total del sistema de ficheros que se utiliza

Un caso extrantildeo que puede darse es la posibilidad de tener una capacidad superior al100 o que la cantidad utilizada maacutes la disponible no sea igual a la total Esto esdebido a que Unix reserva parte del espacio de cada sistema de ficheros para eldirectorio raiacutez De esta forma aunque alguacuten usuario accidentalmente sature el disco elsistema todaviacutea tendraacute un poco de espacio para seguir operativo

Este comando no ofrece opciones que puedan ser de utilidad al usuario

shy uptime

El comando uptime10 informa sobre el tiempo en el que el sistema ha estado activo esdecir el tiempo transcurrido desde que Unix arrancoacute por uacuteltima vez

Este comando tambieacuten devuelve la hora actual y el promedio de carga que soporta elsistema El promedio de carga es el nuacutemero medio de procesos esperando a ejecutar en undeterminado periodo de tiempo uptime muestra el promedio de carga del uacuteltimo minuto y delos cinco y diez uacuteltimos minutos Si este promedio de carga se aproxima a cero indica queel sistema ha estado relativamente desocupado por el contrario si el promedio es cercanoal uno indica que el sistema ha estado casi completamente utilizado pero en ninguacutenmomento sobrecargado Los promedios de carga altos son el resultado de la ejecucioacutensimultaacutenea de varios programas

Extraordinariamente uptime es uno de los pocos comandos de Unix que iexclno tienen opciones

_____________________________________________

7 N del T Abreviatura de disk usage utilizacioacuten del disco

8 Un byte es el equivalente de una letra en un documento de texto

9 N del T Abreviatura de disk filling espacio disponible en el disco

10 N del T Tiempo en estado activo

shy who

El comando who muestra los usuarios activos en ese momento en el sistema y cuando haniniciado su respectiva sesioacuten Si le damos los paraacutemetros am i (es decir who am i) nos devuelve la informacioacuten relativa a nosotros mismos11

shy w [shyf] [nombre_usuario]

El programa w devuelve los usuarios actuales del sistema y que estaacuten haciendo(Baacutesicamente combina la funcionalidad de uptime y who La cabecera del informe quepresenta w es exactamente la misma que uptime siendo la informacioacuten de cada una de lasliacuteneas la siguiente el nombre del usuario hora de inicio de la sesioacuten (y cuanto tiempoha estado ocioso) JCPU es la cantidad total de tiempo de CPU utilizada por ese usuariomientras que PCPU es la cantidad total de tiempo utilizada por sus tareas actuales

Si al comando se le pasa la opcioacuten f mostraraacute los sistemas remotos desde los que losusuarios acceden si los hay Puede indicarse un nombre de usuario como paraacutemetro paramostrar soacutelo informacioacuten relativa a eacutel

74 iquestQueacute hay en un fichero

Principalmente hay dos comandos en Unix para listar ficheros cat y more Sobre ambos yase habloacute en el Capiacutetulo 6

shy cat [shynA] [fichero1 fichero2 ficheroN]

cat no es un comando de uso amigable no espera a que el usuario acabe de leer elfichero y se utiliza generalmente en contextos de tuberiacuteas Aunque pueden utilizarsealgunas opciones muy uacutetiles del comando por ejemplo n numera todas las liacuteneas delfichero y A mostraraacute los caraacutecteres de control como caraacutecteres normales en lugar dehacer (posiblemente) cosas extrantildeas en la pantalla

(Recuerde que para ver las opciones maacutes curiosas y quizaacute menos uacutetiles utilice elcomando man man cat Si no se especifican ficheros en la liacutenea de comandos cataceptaraacute la entrada desde stdin12

_____________________________________________

11 N del T literalmente es como preguntar al sistema iquestquieacuten soy yo

shy more [shyl] [+nuacutemero_liacutenea] [fichero1 fichero2 ficheroN]

more es maacutes uacutetil y ademaacutes es el comando recomendado para ver ficheros de texto ASCII Lauacutenica opcioacuten interesante es l que indica al comando que no se desea interpretar elcaraacutecter |_CtrlshyL_| como caraacutecter de nueva paacutegina El comando comenzaraacute en la liacuteneanuacutemero_liacutenea especificada

Al ser more un comando interactivo hemos resumido a continuacioacuten las oacuterdenes maacutescomunes

|_Barrashyespaciadora_| Pasar a la siguiente pantalla de texto

|_d_| Pasar 11 liacuteneas de pantalla o aproximadamente la mitad de una pantallanormal 25 liacuteneas

|__|Busca una expresioacuten regular La construccioacuten de una expresioacuten regularpuede ser muy complicada por lo que es recomendable teclear simplemente eltexto a buscar Por ejemplo sapo |_Intro_| buscaraacute la primera ocurrencia desapo en el fichero a partir de la posicioacuten actual

La misma tecla seguida por un |_Intro_| buscaraacute la siguiente ocurrencia de lauacuteltima expresioacuten buscada

|_n_| Buscaraacute la proacutexima aparicioacuten de la expresioacuten regular especificada

|__||_n_| Pasar al siguiente fichero en caso de que se especifique maacutes deun fichero en la liacutenea de comandos

|__||_p| Pasar al fichero anterior

|_q_| Terminar more

shy head [shyliacuteneas] [fichero1 fichero2 ficheroN]

head mostraraacute las primeras diez liacuteneas de los ficheros especificados o las primeras diezliacuteneas de la stdin si no se especifica ninguacuten fichero en la liacutenea de comandos Cualquieropcioacuten numeacuterica se tomaraacute como el nuacutemero de liacuteneas a mostrar por ejemplo head shy15 ranamostraraacute las primeras quince liacuteneas del fichero rana

shy tail [shyliacuteneas] [fichero1 fichero2 ficheroN]

Como head tail mostraraacute solo una parte del fichero en este caso el final del ficherolas uacuteltimas diez liacuteneas del fichero o que provengan de la stdin tail tambieacuten acepta laopcioacuten de especificar el nuacutemero de liacuteneas como en el caso anterior

_____________________________________________

12 N del T standard input entrada estaacutendar generalmente entrada de datos porteclado

shy file [fichero1 fichero2 ficheroN]

El comando file intenta identificar que tipo de formato tiene un fichero en particularDebido a que no todos los ficheros tienen extensioacuten o otras formas de identificarlosfaacutecilmente este comando realiza algunas comprobaciones rudimentarias para intentarcomprender exactamente que contiene el fichero

Hay que tener cuidado ya que es bastante posible que file realice una identificacioacutenincorrecta

75 Comandos de edicioacuten

Esta seccioacuten trata de los comandos que alteran un fichero realizando sobre el ficherooperaciones concretas o mostrando estadiacutesticas del mismo

shy grep [shynvwx] [shynuacutemero] expresioacuten [fichero1 fichero2 ficheroN ]

Uno de los comandos maacutes uacutetiles de Unix es el grep13 utilizado para buscar expresiones enun fichero de texto La forma maacutes sencilla de usarlo es

homelarry$ cat animales

Los animales son unas criaturas muy interesantes Uno de mis animalesfavoritos es el tigre una temible bestia con grandes colmillos

Tambien me gusta el leonshyshyshy realmente increible

homelarry$ grep igre animales

el tigre una temible bestia con grandes colmillos

homelarry$

Una de los problemas de esta forma de usarlo es que simplemente muestra las liacuteneas quecontienen la palabra a buscar no aporta informacioacuten acerca de donde buscar en elfichero es decir el nuacutemero de liacutenea Pero dependiendo de lo que se pretenda puede serhasta maacutes que suficiente por ejemplo si se buscan los errores de la salida de unprograma se puede probar aout _ grep error donde aout es el nombre del programa

Cuando es necesario conocer donde estaacuten las palabras a buscar es decir el nuacutemero deliacutenea hay que utilizar la opcioacuten n Si lo que se desea es ver todas las liacuteneas dondeno se encuentra la expresioacuten especificada entonces utilice la opcioacuten v

Otra posibilidad que ofrece el grep es la buacutesqueda de partes de una palabra como en elejemplo anterior que igre se equiparoacute con tigre Para buscar soacutelo palabras completashay que pasarle al grep la opcioacuten w y para liacuteneas completas la opcioacuten es x

Si no se especifica ninguacuten fichero (por ejemplo grep igre ) grep examinaraacute la stdin

_____________________________________________

13 N del T Abreviatura de generalized regular expression parser analizador general deexpresiones regulares

shy wc [shyclw] [fichero1 fichero2 ficheroN ]

El comando wc14 simplemente cuenta el nuacutemero de palabras liacuteneas y caracteres en losficheros pasados como paraacutemetros Si no se especifica ninguacuten fichero operaraacute sobre lastdin Los tres paraacutemetros clw indican el elemento a contar caracteres liacuteneas yw para palabras

Por ejemplo wc shycw contaraacute el nuacutemero de caracteres y palabras pero no el nuacutemero deliacuteneas Si no se indica ninguacuten paraacutemetro wc cuenta todo palabras liacuteneas y caracteres

Se puede utilizar wc para saber el nuacutemero de ficheros de un directorio ls _ wc shyw Sise desea saber el nuacutemero de ficheros que acaban en c entonces ejecute ls c _ wc shyw

shy spell [fichero1 fichero2 ficheroN]

spell es el corrector ortograacutefico maacutes sencillo de Unix generalmente para ingleacutesamericano15

spell es un filtro igual que la mayoriacutea de los comandos que hemos comentado antes quetoma el fichero de texto ASCII y devuelve todas las palabras que considera erroacuteneasspell opera sobre los ficheros especificados y si no se incluye ninguno entoncesutiliza la stdin

Tambieacuten es posible que esteacute disponible en su maacutequina ispell que es un correctorortograacutefico un poco maacutes sofisticado ispell ofrece diversos vocabularios y un menuacute maacutesmanejable en caso de ejecutarlo con un fichero en la liacutenea de comandos Tambieacuten puedeejecutarse como un filtro si no se especifica ninguacuten fichero

La forma de trabajar con ispell es bastante obvia pero si necesita maacutes ayuda consulte lapaacutegina del manual correspondiente man ispell

shy cmp fichero1 [fichero2]

cmp compara dos ficheros El primero debe ser obligatoriamente pasado como paraacutemetromientras que el segundo puede ser pasado como un segundo paraacutemetro o leiacutedo desde laentrada estaacutendar cmp es muy sencillo y simplemente dice donde se diferencian los dosficheros

shy diff fichero1 fichero2

Uno de los comandos estaacutendar maacutes complejos de Unix es el diff La versioacuten GNU de difftiene hasta iexclveinte opciones en la liacutenea de comandos Es una versioacuten mucho maacutes potenteque cmp y muestra cuales son las diferencias en lugar de decir simplemente donde estaacute laprimera

Ya que una buena parte de las opciones del diff estaacuten maacutes allaacute del alcance de estemanual simplemente hablaremos del funcionamiento baacutesico Brevemente diff toma dosparaacutemetros y muestra las diferencias entre ellos liacutenea a liacutenea Por ejemplo

homelarry$ cat rana

Los animales son una criaturas muy interesantes Uno de mis animalesfavoritos es el tigre una temible bestia con grandes colmillos

Tambien me gusta el leonshyshyshy realmente increible

homelarry$ cp rana sapo

homelarry$ diff rana sapo

homelarry$ cat perro

Los animales son una criaturas muy nteresantes Uno de mis animales favoritoses

el tigre una temible bestia con grandes colmillos

Tambien me gusta el leonshyshyshy realmente increible

homelarry$ diff rana perro

1c12

lt Los animales son una criaturas muy interesantes Uno de mis animalesfavoritos es

shyshyshyshy

gt Los animales son una criaturas muy nteresantes Uno de mis animalesfavoritos es

gt

3c4

lt Tambien me gusta el leonshyshyshy realmente increible

shyshyshyshy

gt Tambien me gusta el leonshyshyshy realmente increible

homelarry$

_____________________________________________

14 N del T Abreviatura de word count contar palabras

15 Aunque hay versiones del corrector para diversas lenguas europeas la copia que puedeencontrarse en su maacutequina Linux es con toda probabilidad para ingleacutes americano

Como puede observarse diff no devuelve nada cuando los dos ficheros son iguales Perocuando hemos comparado dos ficheros diferentes se muestra una cabecera de seccioacuten1c12 indicando que ha comparando la liacutenea 1 del fichero de la izquierda rana con lasliacuteneas 1shy2 de perro y las diferencias que ha encontrado Luego ha comparado la liacutenea 3 derana con la liacutenea 4 de perro

Aunque pueda parecer extrantildeo que compare diferentes nuacutemeros de liacutenea es bastanteeficiente ya que es posible que pueda haber alguacuten retorno de liacutenea de maacutes en alguno delos ficheros

shy gzip [shyv] [fichero1 fichero2 ficheroN]

shy gunzip [shyv] [fichero1 fichero2 ficheroN]

shy zcat [fichero1 fichero2 ficheroN]

Estos tres programas se utilizan para comprimir y descomprimir datos gzip o GNU Zip esun programa que lee de los ficheros originales y devuelve ficheros maacutes pequentildeos borralos ficheros especificados en la liacutenea de comandos y los reemplaza con ficheros quetienen el mismo nombre pero con gz antildeadido a su nombre

shy tr cadena1 cadena2

El comando de traduccioacuten de caracteres opera sobre la entrada estaacutendar no acepta unnombre de fichero como paraacutemetro Reemplaza todas las ocurrencias de cadena1 en laentrada con la cadena2 En comparacioacuten con llamadas tan sencillas como tr rana sapo tr puede aceptar comandos maacutes complejos Por ejemplo hay una forma raacutepida de convertirlos caracteres en minuacutescula por otros en mayuacutescula

homelarry$ tr shylower] [upper]

Esta es una frase RARA

ESTA ES UNA FRASE RARA

tr es relativamente complejo y se usa normalmente en pequentildeos programas shell comofiltro

Capiacutetulo 8

Editando archivos con Emacs

FUNNY SOMETHING OR OTHER

81 iquestQueacute es Emacs

Para obtener algo en una computadora necesita una forma de introducir texto en losarchivos y una manera de cambiar el texto que ya estaacute en los archivos Un editor es unprograma para este tipo de tareas emacs es uno de los editores maacutes populares en parteporque es muy faacutecil para un principiante hacer trabajos con eacutel (El editor de Unixclaacutesico el vi se trata en el Apeacutendice A)

Para aprender emacs tiene que encontrar un archivo de texto (letras nuacutemeros etc)coacutepielo a su directorio de usuario 1 (no queremos modificar el archivo original si eacutestecontiene informacioacuten importante) y luego llame a Emacs con el archivo

homelarry$ emacs LEAME

(Por supuesto si decide copiar etcrc etcinittab o cualquier otro archivosustituya ese nombre de archivo por LEAME Por ejemplo si cp etcrc ~rc entoncesemacs rc)

Llamar a Emacs puede tener efectos diferentes dependiendo en doacutende lo haga Desde unaconsola que muestra soacutelo caracteres de texto Emacs se apoderaraacute de toda la consola Si lollama desde X Emacs abriraacute su propia ventana Asumireacute que lo estaacute haciendo desde unaconsola de texto pero todo sucede de la misma manera en la versioacuten de X loacutegicamentesimplemente sustituya la palabra ventana en los lugares en donde lea pantallaiexclAdemaacutes recuerde que debe mover el puntero del ratoacuten a la ventana de Emacs paraescribir

Su pantalla (o ventana si estaacute usando X) deberiacutea parecerse a la Figura 81 La mayorparte de la pantalla contiene su documento de texto pero las dos uacuteltimas liacuteneas sonespecialmente interesantes si estaacute tratando de aprender Emacs La penuacuteltima liacutenea (la quetiene una cadena larga de guiones) se denomina liacutenea de modo (mode line en ingleacutes)

_____________________________________________

1 Por ejemplo cp usrsrclinuxLEAME LEAME

En mi liacutenea de modo ve Top Deberiacutea decir All y puede haber otras pequentildeasdiferencias

(A muchas personas les aparece la hora actual en la liacutenea de modo) La liacuteneainmediatamente inferior a la liacutenea de modo se denomina minibuffer o a veces el aacuterea deeco Emacs usa el minibuffer para enviar mensajes al usuario y ocasionalmente cuando esnecesario para leer informacioacuten que introduce el usuario De hecho ahora mismo Emacs leestaacute diciendo Para obtener informacioacuten acerca del Proyecto GNU y sus objetivos teclee

Cshyh Cshyp (soacutelo que en ingleacutes) Ignoacuterelo por ahora no vamos a usar mucho el minibufferpor un tiempo

Antes de realizar cualquier cambio en el texto del archivo necesita aprender coacutemomoverse El cursor deberaacute estar al principio del archivo en la esquina superiorizquierda de la pantalla

Para avanzar presione |_Cshyf_| (reteniendo la tecla |_Control_| mientras presiona fpara forward (avanzar) Avanzaraacute un caraacutecter cada vez y si retiene ambas teclas larepeticioacuten automaacutetica de teclas de su sistema deberaacute surtir efecto en medio segundoaproximadamente Notaraacute como cuando llega al fin de la liacutenea el cursor automaacuteticamentese mueve a la proacutexima liacutenea |_Cshyb_| (para backward (retroceder) tiene elcomportamiento opuesto Y ya que estamos en ello |_Cshyn_| y ||_Cshyp_|| le llevan a lasliacuteneas siguiente y anterior respectivamente 2

Usar las teclas de control es comuacutenmente la manera maacutes raacutepida de moverse cuando estaacuteeditando

El objetivo de Emacs es mantener sus manos sobre las teclas alfashynumeacutericas del tecladodonde se realiza la mayoriacutea del trabajo Sin embargo si quiere las teclas de movimientodeberaacuten funcionar tambieacuten

De hecho cuando usa X deberiacutea ser capaz de ubicar el puntero del ratoacuten y hacer clickcon el botoacuten izquierdo para mover el cursor donde quiera Sin embargo esto es muy lentoiexcltiene que mover la mano hasta el ratoacuten La mayoriacutea de la gente que usa Emacs usaprincipalmente el teclado para moverse por el texto

_____________________________________________

2 En caso de que auacuten no lo haya notado muchos de los comandos de movimiento de emacsconsisten en combinar |_Control_| con una uacutenica letra mnemoteacutecnica

Use ||_Cshyp_|| y |_Cshyb_| para ir a la esquina superior izquierda Ahora mantenga |_Cshyb_|un poco maacutes

Deberiacutea oiacuter un sonido molesto de campana y ver el mensaje Beginning of buffer(Principio del buffer) que aparece en el minibuffer En este punto se puede preguntariquestPero queacute es un buffer Cuando Emacs trabaja sobre un archivo no trabaja realmentesobre el archivo en siacute En vez de eso copia los contenidos del archivo en un aacuterea detrabajo especial de Emacs llamada buffer donde puede modificar el contenido Cuando haacabado de trabajar debe decirle a Emacs que guarde los buffers en otras palabras queescriba el contenido de los buffers en el archivo correspondiente

Hasta que haga esto el archivo permanece sin cambiar y el contenido de los buffersexiste uacutenicamente dentro de Emacs

Con esto en mente prepaacuterese a insertar su primer caraacutecter en el buffer Hasta ahoratodo lo que hemos hecho ha sido no destructivo este es un gran momento Puede escogercualquier caraacutecter que quiera pero si quiere hacer esto con estilo yo sugiero usar unabonita y soacutelida X mayuacutescula

Mientras lo teclea eche un vistazo al principio de la liacutenea de modo al pie de lapantalla Cuando cambia los buffer de modo que sus contenidos no sean iguales que los delarchivo sobre el disco Emacs muestra dos asteriscos a principios de la liacutenea de modopara hacerle saber que el buffer ha sido modificado

shyshyshy Emacs algun_archivotxt (Fundamental)shyshyTopshyshyshyshyshyshyshyshyshyshyshyshyshyshyshyshyshyshyshyshyshyshyshyshy

Estos dos asteriscos se muestran tan pronto como modifica el buffer y permanecenvisibles hasta que guarde el buffer Puede guardar los buffer muchas veces durante unasesioacuten de edicioacuten el comando para hacerlo es simplemente |_Cshyx_Cshys_| (presione|_Control_| y pulse x y s mientras la mantiene apretada iexclprobablemente ya se loimaginoacute) Es deliberadamente faacutecil de escribir porque lo mejor es salvar sus buffers alprincipio y frecuentemente

Ahora voy a enumerar maacutes comandos ademaacutes de los que ya ha aprendido y los puedepracticar del modo que prefiera Yo sugiero familiarizarse con ellos antes de proseguir

Cshyf Avanza un caraacutecter

Cshyb Retrocede un caraacutecter

Cshyn Va a la proacutexima liacutenea

Cshyp Va a la liacutenea anterior

Cshya Va al comienzo de la liacutenea

Cshye Va al final de la liacutenea

Cshyv Va a la proacutexima paacuteginapantalla de texto

Cshyl Redibuja la pantalla con la liacutenea actual en el centro

Cshyd Borra este caraacutecter (practica este)

Cshyk Borra el texto desde aquiacute hasta el fin de liacutenea

Cshyx Cshys Salva el buffer en su archivo correspondiente

|_Retroceso_| Borra el caraacutecter anterior (el uacuteltimo que escribiste)

82 Comenzar raacutepidamente en X

Si estaacute interesado en editar unos archivos raacutepidamente un usuario de X no tiene que irmucho maacutes allaacute de los menuacutes en la parte superior de la pantalla Estos menuacutes no estaacutendisponibles en el modo texto

Cuando ejecute por primera vez Emacs habraacute cuatro menuacutes en la parte superior de lapantalla Buffers File Edit y Help Para usar un menuacute simplemente mueva el punterodel ratoacuten sobre el nombre (como File haga click y retenga el botoacuten izquierdo) Entoncesmueva el puntero a la accioacuten que quiere y libere el botoacuten del ratoacuten Si cambia de idearetire el puntero del ratoacuten del menuacute y libere el botoacuten

El menuacute Buffers enumera los diferentes archivos que han sido editados en esta instanciade Emacs

El menuacute Files muestra un grupo de comandos para cargar y guardar archivos muchos deellos se describiraacuten maacutes adelante El menuacute Edit muestra algunos comandos para editar unbuffer y el menuacute Help deberiacutea dar la documentacioacuten en liacutenea

Notaraacute que las equivalencias del teclado se enumeran junto a las opciones del menuacutePuesto que a largo plazo eacutestas seraacuten maacutes raacutepidas podriacutea quererlas aprender Tambieacutenpara bien o para mal la mayoriacutea de la funcionalidad de Emacs estaacute uacutenicamente disponiblemediante el teclado asiacute que puede que le interese leer el resto de este capiacutetulo

83 Editando varios archivos al mismo tiempo

Emacs puede trabajar sobre maacutes de un de archivo a la vez De hecho el uacutenico liacutemite sobrecuantos buffers puede contener Emacs es la cantidad real de memoria disponible en lamaacutequina El comando para traer un nuevo archivo a un buffer de Emacs es |_Cshyx_Cshyf_|Cuando lo teclee se le pediraacute un nombre de archivo en el minibuffer

Find file (Buscar archivo)~

La sintaxis aquiacute es la misma que la usada para especificar archivos desde la liacutenea decomandos las barras representan subdirectorios ~ es su directorio de usuario Tambieacutenconsigue terminacioacuten automaacutetica de nombre de archivo significa que si ha escritosuficiente de un nombre de archivo en la liacutenea de comandos para identificar el archivosingularmente puede simplemente presionar |_Tab_| para completarlo (o para ver lasterminaciones posibles si hay maacutes de una) ||_Espacio_|| tambieacuten tiene un papel en laterminacioacuten automaacutetica de nombres de ficheros en el minibuffer parecido a |_Tab_| perodejareacute que experimente para que averiguumle coacutemo difieren las dos Una vez que tiene elnombre completo en el minibuffer presione |_Intro_| y Emacs crearaacute un buffer mostrandoel archivo En Emacs este proceso es conocido como encontrar un archivo Siga adelante ybusque ahora alguacuten otro archivo de texto sin importancia y traacuteigalo a Emacs (haga estodesde nuestro buffer original algun_archivotxt) Ahora tiene un nuevo buffer Supondreacuteque se llama otro_archivotxt ya que no puedo ver su liacutenea de modo

Su buffer original parece haber desaparecido (probablemente) se pregunta doacutende fue Estaacutetodaviacutea dentro de Emacs y puede volver a eacutel con |_Cshyx_b_| Cuando teclee esto veraacute queen el minibuffer le pide el nombre un buffer al que cambiar y nombra uno por defecto Elbuffer por defecto lo consigue soacutelo con presionar |_Intro_| en la liacutenea de comandos sinescribir un nombre de buffer El buffer por defecto al que cambiar es siempre el maacutesrecientemente usado para que cuando esteacute haciendo mucho trabajo entre dos buffers |_Cshyx_b_| tenga por defecto el otro buffer (salvaacutendole de tener que escribir el nombre delbuffer) Incluso si el buffer por defecto es el que quiere deberiacutea probar a teclear sunombre de todos modos

Note que consigue el mismo tipo de terminacioacuten automaacutetica que obtuvo al buscar unarchivo al pulsar |_Tab_| completa todo lo que puede del nombre de un buffer y asiacutesucesivamente Cada vez que se le pida algo en el minibuffer es una buena idea ver siEmacs hace terminacioacuten automaacutetica

Aprovechando la terminacioacuten automaacutetica cuando se le ofrezca ahorraraacute teclear muchoEmacs comuacutenmente hace la terminacioacuten automaacutetica cuando elige un elemento de alguna listapredefinida

Todo lo que ha aprendido para moverse y editar texto en el primer buffer se aplica a losnuevos Siga adelante y cambie alguacuten texto en el nuevo buffer pero no lo guarde (esdecir no teclee |_Cshyx_Cshys_|)

Deacutejeme asumir que quiere desechar los cambios sin guardarlos en el archivo El comandopara esto es Cshyx k que mata (kill) el buffer Tecleacuteelo ahora Primero se le preguntaraacutequeacute buffer matar pero por defecto es el buffer actual y casi siempre es el que sequiere matar simplemente presione |_Intro_| Entonces le preguntaraacute si realmente quierematar el buffer Emacs siempre controla antes de matar un buffer que tiene cambios sinsalvar Simplemente escriba yes (siacute) y presione |_Intro_| si quiere matarlo

Siga adelante y practique cargar archivos modificarlos guardarlos y matar sus buffersPor supuesto cercioacuterese de no modificar ninguacuten archivo de sistema importante de unaforma que cause problemas 3 pero trate de tener por lo menos cinco buffers abiertos almismo tiempo para que se pueda dar el gusto de moverse entre ellos

84 Terminando una sesioacuten de edicioacuten

Cuando haya hecho su trabajo en Emacs aseguacuterese de que se guarden todos los buffers quedeben guardarse y salga de Emacs con |_Cshyx_Cshyc_|

A veces |_Cshyx_Cshyc_| le haraacute una pregunta o dos en el minibuffer antes de dejarle salirno se alarme simplemente conteste en las maneras obvias Si piensa que podriacutea volver aEmacs luego no use |_Cshyx_Cshyc_| use |_Cshyz_| que suspenderaacute Emacs Puede volver luegocon el comando fg del shell

Esto es maacutes eficiente que detener a Emacs y comenzar varias veces especialmente si tieneque editar los mismos archivos nuevamente

Bajo X presionar |_Cshyz_| reduciraacute a icono la ventana Mire la seccioacuten sobre minimizar enel Capitulo 5 Esto le da dos formas de minimizar Emacs la manera normal que ofrece elgestor de ventanas y |_Cshyz_| Recuerde cuando minimice un simple fg no traeraacute laventana anterior tendraacute que usar el gestor de ventanas

_____________________________________________

3 De cualquier manera si no es el usuario root de la maacutequina no deberiacutea ser capaz dedantildear el sistema pero tenga cuidado igualmente

85 La tecla Meta

Ha aprendido ya sobre una tecla modificadora en Emacs la tecla |_Control_| Hay unasegunda llamada la tecla Meta que se usa casi tan frecuentemente Sin embargo no todoslos teclados tienen su tecla Meta en el mismo lugar y algunos ni siquiera la tienen Loprimero que necesita hacer es encontrar doacutende se encuentra su tecla Meta Es probable quelas teclas |_Alt_| de su teclado sean tambieacuten teclas Meta si usa un PC IBM o alguacuten otroteclado que tenga una tecla |_Alt_|

La forma de probar esto es mantener presionada una tecla que crea que puede ser una teclaMeta y teclear x Si ve que un pequentildeo prompt aparece en el minibuffer (como esto |_Mshyx_|) entonces la ha encontrado Para librarse del prompt y regresar al buffer de Emacsteclee ||_Cshyg_||

Si no consigue un prompt entonces todaviacutea queda una solucioacuten Puede usar la tecla||_Escape_|| como una tecla Meta Pero en vez de mantenerla pulsada mientras teclea laproacutexima letra tiene que pulsarla y soltarla raacutepidamente y entonces teclee la letraEste meacutetodo funcionaraacute tenga o no una tecla Meta verdadera tambieacuten es la manera maacutessegura para hacerlo Intente ahora pulsar ligeramente ||_Escape_|| y entonces teclee xDeberiacutea conseguir otra vez ese pequentildeo prompt

Simplemente use ||_Cshyg_|| para salir ||_Cshyg_|| es la manera general en Emacs para salirde alguacuten lugar donde no quiere estar Los fastidiosos y comunes pitidos son para hacerlesaber que ha interrumpido algo pero estaacute bien porque es lo que queriacutea hacer cuandotecleoacute ||_Cshyg_||4

La notacioacuten |_Mshyx_| es anaacuteloga a |_Cshyx_| (ponga cualquier caraacutecter en el lugar de lax) Si ha encontrado una verdadera tecla Meta use eacutesta de otra manera simplemente usela tecla ||_Escape_|| Yo escribireacute simplemente |_Mshyx_| y ud tendraacute que usar su propiatecla Meta

86 Cortar pegar destruir y tirar

Emacs como cualquier buen editor le permite cortar y pegar bloques de texto A fin dehacer esto necesita una forma de definir el comienzo y fin del bloque En Emacs se haceesto estableciendo dos ubicaciones en el buffer conocidas como marca y puntero Paracolocar la marca vaya al lugar donde quiere que comience el bloque y teclee |_CshySPC_|(SPC significa ||_Espacio_|| por supuesto)

Deberiacutea ver el mensaje Mark set (Marca establecida) que aparece en el minibuffer5Ahora la marca ha sido establecida en ese lugar No habraacute ninguacuten indicador especialdestacando este hecho pero Ud sabe doacutende la ha puesto y eso es lo que importa

iquestY queacute hay del puntero Bien resulta que ha colocado un puntero cada vez que ha movidoel cursor porque puntero simplemente se refiere a su ubicacioacuten actual en el buffer Enteacuterminos formales el puntero es el punto donde se insertaraacute el texto si escribe algo Alcolocar la marca y luego moverse al final del bloque ha definido un bloque de textoEste bloque es conocido como la regioacuten La regioacuten siempre significa el aacuterea entre lamarca y el puntero

El soacutelo hecho de definir la regioacuten no la deja disponible para pegar Tiene que decirle aEmacs que lo copie para poder ser capaz de pegarlo Para copiar la regioacuten aseguacuterese deque la marca y el puntero estaacuten correctamente establecidos y teclee |_Mshyw_| Ahora hasido grabada por Emacs Para pegarlo en alguna otra parte simplemente vaya alliacute y teclee||Cshyy_|| Esto es conocido como tirar el texto en el buffer

______________________________________________

4 Ocasionalmente un Cshyg no es suficiente para persuadir a emacs que realmente quiereinterrumpir lo que hace Simplemente insista y normalmente Emacs volveraacute a un modo maacutescuerdo

5 Sobre algunos terminales |_CshySPC_| no funciona Para estas maacutequinas debe usar |_Cshy_|

Si quiere mover el texto de la regioacuten a alguna otra parte teclee |_Cshyw_| en vez de |_Mshyw_| Esto mataraacute la regioacuten todo el texto dentro de ella desapareceraacute De hecho se haguardado del mismo modo que si hubiera usado |_Mshyw_| Puede tirar de nuevo con ||_Cshyy_||como siempre El lugar donde emacs guarda todo este texto es conocido como el ciacuterculo demuerte Algunos editores lo llaman el porta papeles o el buffer de pegado

Existe otra manera para cortar y pegar cuando usa |_Cshyk_| para matar hasta el final deuna liacutenea el texto matado se guarda en el ciacuterculo de muerte Si mata maacutes de una liacuteneaseguida se guardaraacuten todas juntas en el ciacuterculo de muerte para que la proacutexima tiradapegue todas las liacuteneas al mismo tiempo Por ello casi siempre es maacutes raacutepido usarrepetidas veces |_Cshyk_| para matar alguacuten texto que establecer la marca y el puntero yusar |_Cshyw_| Sin embargo de una u otra manera funcionaraacute Es realmente una cuestioacuten depreferencia personal coacutemo lo hace

87 Buscar y reemplazar

Hay varias maneras para buscar texto en Emacs Muchas son maacutes bien complejas y no merecela pena tratarlas aquiacute La maacutes faacutecil y la maacutes entretenida es usar isearch

Isearch se refiere a incremental search (buacutesqueda incremental) Supongamos que quierebuscar la cadena taacutebano en el siguiente buffer

Yo estaba temeroso que nos quedaacuteramos sin gasolina cuando mi taacutecito pasajero

exclamoacute ``Auch un aguijoacuten Hay un taacutebano aquiacute dentro

Deberiacutea moverse al comienzo del buffer o por lo menos a alguacuten punto que sabe que estaacuteantes de la primera aparicioacuten de la palabra taacutebano y teclear |_Cshys_| Eso le pondraacuteen el modo de buacutesqueda isearch Ahora comience a escribir la palabra que estaacute buscandotaacutebano Pero tan pronto como escribe la t ve que Emacs ha saltado a la primeraaparicioacuten de t en el buffer Si la cita de arriba es todo el contenido del buffer

entonces la primera t es de la palabra temeroso Ahora escriba la aacute de taacutebano yEmacs saltaraacute sobre taacutecito que contiene la primer ocurrencia de taacute Y finalmenteb consigue taacutebano sin haber tenido que escribir la palabra entera

Lo que hace en una isearch es definir una cadena para buscarla Cada vez que agrega uncaraacutecter al final de la cadena el nuacutemero de posibles cadenas se reduce hasta que hayaescrito lo suficiente para definir la cadena singularmente Una vez que ha encontrado lapalabra puede salir de la buacutesqueda con |_Intro_| o cualquiera de los comandos normalesde movimiento Si piensa que la cadena que buscas esta atraacutes en el buffer entoncesdeberiacutea usar |_Cshyr_| que hace isearch hacia atraacutes

Si encuentra una palabra pero no es la que buscaba entonces presione |_Cshys_| nuevamentemientras todaviacutea esteacute en la buacutesqueda Esto le moveraacute hasta la proacutexima palabracoincidente cada vez que lo haga Si no existe una proacutexima palabra diraacute que la buacutesquedafracasoacute pero si presiona |_Cshys_| nuevamente en este punto la buacutesqueda volveraacute acomenzar desde el principio del buffer Se puede decir lo opuesto de |_Cshyr_| comienza alfinal del buffer

Intente introducir un buffer de texto en ingleacutes y haga un isearch para la cadena thePrimero teclee todos los the que quiera y luego use |_Cshys_| para ir a todas lasapariciones Note que tambieacuten apareceraacuten palabras como them dado que tambieacuten contienela subcadena the Para buscar un uacutenico the deberaacute agregar un espacio al final de lacadena de buacutesqueda Puede agregar nuevos caracteres a la cadena en cualquier punto de labuacutesqueda despueacutes tiene que presionar |_Cshys_| repetidamente para encontrar las proacuteximaspalabras coincidentes Puede usar tambieacuten la |_Retroceso_| o ||_Supr_|| para quitarcaracteres de la cadena en cualquier punto de la buacutesqueda y presionando |_Intro_| salede la buacutesqueda dejaacutendole en la uacuteltima coincidencia

Emacs tambieacuten permite reemplazar todas las apariciones de una cadena con alguna nuevacadena esto es conocido como queryshyreplace (preguntarshyreemplazar) Para invocarloteclee queryshyreplace y |_Intro_|

Como se hace terminacioacuten automaacutetica sobre el nombre del comando una vez que has escritoqueryshyre puede simplemente presionar |_Tab_| para terminarlo Digamos que deseareemplazar todas las ocurrencias de taacutebano por mosca En el prompt Query replace (preguntarshyreemplazar) escriba taacutebano y presione |_Intro_| Entonces apareceraacute elprompt nuevamente y deberaacute introducir mosca Entonces Emacs recorreraacute el bufferparando a cada aparicioacuten de la palabra taacutebano y preguntando si quiere reemplazarlaSimplemente presione en cada instancia y o n por Yes o No hasta que termineSi no entiende esto mientras lo lee prueacutebelo

88 iquestQueacute es lo que ocurre realmente

Realmente todas estas teclas ligadas que ha aprendido son los atajos a funciones deEmacs Por ejemplo ||_Cshyp_|| es una manera abreviada de decirle a Emacs que ejecute lafuncioacuten interna previousshyline (liacutenea_previa) Sin embargo todas estas funciones internaspueden ser llamadas por el nombre usando |_Mshyx_| Si olvida que previousshyline estaacuteligado a ||Cshyp_|| puede escribir simplemente |_Mshyx_| previousshyline |_Intro_| y semoveraacute una liacutenea hacia arriba Pruebe esto ahora para que comprenda como |_Mshyx_|previousshyline y ||_Cshyp_ || son realmente la misma cosa

El disentildeador de Emacs comenzoacute desde la base hacia arriba primero definioacute un lotecompleto de funciones internas y entonces les asocioacute o ligoacute ciertas teclas a las maacutescomuacutenmente usadas A veces es maacutes faacutecil llamar a una funcioacuten expliacutecitamente con |_Mshyx_|que recordar a queacute tecla estaacute ligada

La funcioacuten queryshyreplace por ejemplo estaacute ligada a ||_Mshy_|| en algunas versiones deEmacs Pero iquestquieacuten puede recordar tan rara combinacioacuten A menos que use queryshyreplace muyfrecuentemente es maacutes faacutecil simplemente llamarla con |_Mshyx_|

La mayoriacutea de las teclas que pulsa son letras cuya funcioacuten es ser insertadas en el textodel buffer Cada una de esas teclas estaacute ligada a la funcioacuten selfshyinsertshycommand que no

hace nada maacutes que insertar la letra en el buffer Las combinaciones que usan la tecla|_Control_| con una letra generalmente estaacuten ligadas a funciones que hacen otras cosascomo mover el cursor Por ejemplo |_Cshyv_| estaacute ligada a una funcioacuten llamada scrollshyup(avanzar paacutegina) que mueve el buffer una pantalla hacia arriba (lo que quiere decir quesu posicioacuten en el buffer se mueve hacia abajo por supuesto)

Si alguna vez quisiera realmente insertar un caraacutecter de Control en el buffer entoncesiquestcoacutemo lo hariacutea Despueacutes de todo los caracteres de Control son caracteres ASCII aunquerara vez usados y puede querer tenerlos en un archivo Hay una manera para_impedir_quelos caracteres de Control sean interpretados como comandos por Emacs La tecla ||_Cshyq_||6estaacute ligada a una funcioacuten especial llamada quotedshyinsert (insertar lo citado) Todo loque quotedshyinsert hace es leer la proacutexima tecla e insertarla literalmente en el buffersin tratar de interpretarla como un comando Asiacute es coacutemo puede poner los caracteres deControl en sus archivos usando Emacs iexclNaturalmente la manera de insertar un Cshyq espresionar ||Cshyq_|| dos veces

Emacs tambieacuten tiene muchas funciones que no estaacuten ligadas a ninguna tecla Por ejemplosi escribe un mensaje largo y no quiere tener que presionar |_Intro_| al final de cadaliacutenea Puede hacer que emacs lo haga por Ud (de hecho puede hacer que Emacs hagacualquier cosa por Ud) el comando para hacerlo se llama autoshyfillshymode (modo de autollenado pero no estaacute ligado a ninguna tecla por defecto A fin de invocar este comandodebe escribir Mshyx autoshyfillshymode

Mshyx es la tecla usada para llamar a funciones por el nombre Podriacutea usarlo para llamara funciones como nextshyline y previousshyline pero eso seriacutea muy ineficaz ya que esasfunciones estaacuten ligadas a |_Cshyn_| y ||_Cshyp_||

A propoacutesito si mira su liacutenea de modo despueacutes de invocar autoshyfillshymode notaraacute que lapalabra Fill se ha agregado al lado derecho Mientras esteacute alliacute Emacs llenaraacute(rellenaraacute) el texto automaacuteticamente Puede desactivarlo escribiendo Mshyx autoshyfillshymodenuevamente es un comando de palanca

La incomodidad de escribir largos nombres de funcioacuten en el minibuffer disminuye porqueEmacs hace terminacioacuten automaacutetica en los nombres de funciones de la misma manera que lohace en los nombres de archivo Por lo tanto rara vez deberiacutea encontrarse escribiendo elnombre entero de la funcioacuten letra a letra Si no estaacute totalmente seguro de si puede o nousar la terminacioacuten automaacutetica simplemente presione |_Tab_| No puede hacer dantildeo lopeor que puede suceder es que consiga un caraacutecter Tab y si es afortunado resultaraacute quepuede usar la terminacioacuten automaacutetica

89 Pidiendo ayuda a Emacs

Emacs tiene extensas facilidades de ayuda tan extensas de hecho que soacutelo podemoscomentarlas un poco aquiacute A las facilidades de ayuda maacutes baacutesicas se accede tecleando |_Cshyh_| y luego una uacutenica letra Por ejemplo |_Cshyh_k_| muestra la ayuda sobre una tecla (lepide que presiones una tecla y entonces le dice lo que esa tecla hace) |_Cshyh_t_| abreun breve manual sobre Emacs Maacutes importante auacuten |_Cshyh_Cshyh_Cshyh_| le da ayuda sobre laayuda para decirle que estaacute disponible una vez que ha tecleado |_Cshyh_| por primera vezSi sabe el nombre de una funcioacuten de Emacs (saveshybuffer (grabar el buffer) por ejemplo)pero no puede recordar cuaacutel es la combinacioacuten de teclas a la que estaacute ligada use |_Cshyh_w_| para whereshyis (doacutende estaacute) y escriba el nombre de la funcioacuten O si quiereconocer queacute hace una funcioacuten con detalle use |_Cshyh_f_| que preguntaraacute por un nombre defuncioacuten

______________________________________________

6 Llamamos a Cshyq una tecla aunque se produce manteniendo presionada la tecla Controlypresionando q porque es un uacutenico caraacutecter ASCII

Recuerde que como Emacs hace terminacioacuten automaacutetica del nombre de la funcioacuten realmenteno tiene que estar seguro de coacutemo se llama para pedir ayuda sobre ella Si piensa quepuedes adivinar la palabra con la que podriacutea comenzar teclee eacutesa y presione |_Tab_ |paraver si se completa Si no vuelva atraacutes e intente otra cosa Lo mismo ocurre con losnombres de archivo auacuten cuando no pueda recordar del todo como nombroacute cierto archivo alque no ha accedido en tres meses puede probar y usar la terminacioacuten automaacutetica paraaveriguar si estaacute en lo cierto Usa la terminacioacuten automaacutetica como una forma depreguntar y no soacutelo como una manera de teclear menos

Hay otros caracteres que puede pulsar despueacutes de |_Cshyh_| y con cada uno consigue ayudade una manera diferente Los que usaraacute maacutes frecuentemente son |_Cshyh_k_| |_Cshyh_w_| y|_Cshyh_f_| Una vez que esteacute maacutes familiarizado con Emacs otra para probar es |_Cshyh_a_|que le pregunta por una cadena y le comenta todas las funciones que tienen esa cadenacomo parte de su nombre (la a seriacutea para apropos [a propoacutesito] o about[acerca])

Otra fuente de informacioacuten es el lector de documentacioacuten Info Info es demasiado complejopara tratarlo aquiacute pero si estaacute interesado en explorarlo por si mismo teclee |_Cshyh_i_|y lea el paacuterrafo en la parte superior de la pantalla Le diraacute coacutemo conseguir maacutes ayuda

810 Especializando buffers Modos

Los buffers de Emacs tienen modos asociados7 La razoacuten para esto es que sus necesidadescuando escribe un mensaje de correo son muy diferentes de sus necesidades cuando porejemplo escribe un programa Mejor que tratar de crear un editor que satisfaga cadanecesidad particular en todo momento (que seriacutea imposible) el disentildeador de Emacs8 eligioacutehacer que Emacs se comporte de manera diferente dependiendo de queacute hace Ud en cadabuffer individual Asiacute los buffers tienen modos cada uno disentildeado para alguna actividadespeciacutefica Los aspectos principales que distinguen un modo de otros son lascombinaciones de teclas pero tambieacuten pueden existir otras diferencias

El modo maacutes baacutesico es el modo Fundamental que realmente no tiene ninguacuten comandoespecial

De hecho esto es todo lo que Emacs dice sobre el Modo Fundamental

Modo Fundamental

Modo mayor no especializado para nada en particular Los otros modos mayoresson definidos por comparacioacuten con este

Obtuve asiacute esa informacioacuten Teclee |_Cshyx_b_| que es switchshytoshybuffer (cambiar albuffer) e introduje foo cuando se me preguntoacute por un nombre de buffer al que cambiarComo no habiacutea anteriormente ninguacuten buffer llamado foo Emacs creoacute uno y me cambio a eacutelEstaba en el modo fundamental por defecto pero si no lo hubiese estado podriacutea habertecleado Mshyx fundamentalshymode para que estuviese Todos los nombres de modo tienen uncomando llamado ltnombreshydeshymodogtshymode que pone el buffer actual en ese modo Entoncespara averiguar maacutes sobre este modo mayor tecleeacute |_Cshyh_m_| que consigue ayuda sobre elmodo mayor actual del buffer en que estaacute

_____________________________________________

7 para colmo de males hay Modos Mayores y Modos Menores pero en este momento nonecesita conocer nada acerca de esto

8 Richard Stallman a veces tambieacuten conocido como rms porque es su login

Hay un modo ligeramente maacutes uacutetil llamado textshymode (modo texto que tiene los comandosespeciales |_MshyS_| para centrar paacuterrafo y |_Mshys_| que invoca centrar liacutenea |_MshyS_| apropoacutesito significa exactamente lo que piensa mantenga pulsadas la |_Meta__|y la tecla|_Shift_| y presiona S

Pero no me tome la palabra en esto cree un nuevo buffer poacutengalo en modo texto y teclee|_Cshyh_m_| Puede que no entienda todo lo que Emacs le diga cuando lo haga pero deberiacuteaser capaz de conseguir sacar alguna informacioacuten uacutetil de ello

Esto es una introduccioacuten a algunos de los modos maacutes comuacutenmente usados Si los usaaseguacuterese de que teclea en cada uno |_Cshyh_m_| alguna vez para averiguar maacutes sobre cadamodo

811 Modos de programacioacuten

8111 Modo C

Si usa Emacs para programar en el lenguaje C puede conseguir que eacutel le haga toda laindentacioacuten automaacuteticamente Los archivos cuyos nombres terminan en c o h se abriraacutenautomaacuteticamente en el modo C Esto significa que ciertos comandos especiales de edicioacutenuacutetiles para escribir programas en C estaacuten disponibles En el modo C |_Tab_| estaacute ligadoa cshyindentshycommand (indentar comandos C) Esto significa que presionando la tecla |_Tab_|no inserta realmente un caraacutecter de Tabulacioacuten En cambio si presiona |_Tab_| encualquier parte de una liacutenea Emacs automaacuteticamente indenta esta liacutenea correctamente parasu ubicacioacuten en el programa Esto implica que Emacs sabe algo sobre la sintaxis de C(aunque nada sobre semaacutentica (iexclno puede asegurar que su programa no tenga errores)

Para hacer esto asuma que las liacuteneas anteriores estaacuten indentadas correctamente Estosignifica que si en la liacutenea anterior falta un pareacutentesis un punto y coma llaves ocualquier otra cosa Emacs indentaraacute la liacutenea actual de una manera peculiar inesperadaCuando vea que hace esto sabraacute que debe buscar un error de puntuacioacuten en la liacuteneaanterior

Puede usar esta caracteriacutestica para verificar que ha puntuado correctamente susprogramas

en vez de leer el programa entero_buscado_problemas simplemente comience a indentar lasliacuteneas desde arriba hasta abajo con |_Tab_| y cuando alguna se indenta de forma raraverifique las liacuteneas inmediatamente anteriores En otras palabras iexcldeje a Emacs hacer eltrabajo por Ud

8112 Modo Scheme

Este es un modo mayor que no le serviraacute de nada a menos que tenga un compilador o uninterprete para el lenguaje de programacioacuten Scheme en su sistema Tener uno no es tannormal como digamos un compilador de C pero se estaacute haciendo cada vez maacutes comuacuten asiacuteque lo trataremos tambieacuten

Mucho de lo que es cierto para el modo Scheme es tambieacuten cierto para el modo Lisp siprefiere escribir en Lisp

Bien para complicar las cosas Emacs viene con dos modos Scheme diferentes porque lagente no podiacutea decidir coacutemo queriacutean que funcionara El que estoy describiendo se llamacmuscheme y luego en la seccioacuten personalizando a Emacs hablareacute de coacutemo puede haber dosmodos Scheme diferentes y queacute hacer acerca de ello Por ahora no se preocupe si lascosas en su Emacs no coinciden con las que yo digo aquiacute Un editor personalizablesignifica un editor impredecible iexcly no hay vuelta de hoja

Puede ejecutar un proceso Scheme interactivo en Emacs con el comando Mshyx runshyscheme Estocrea un buffer llamado scheme que tiene el prompt habitual de Scheme Puede teclearexpresiones de Scheme en el prompt presionar |_Intro_| y Scheme las evaluaraacute y mostraraacutela respuesta Asiacute a fin de interactuar con el proceso de Scheme podraacute simplementeescribir todas sus aplicaciones y definiciones de funcioacuten en el prompt Es posible quehaya escrito previamente coacutedigo fuente Scheme en un alguacuten archivo y seriacutea maacutes faacutecilhacer su trabajo en el archivo y enviar las definiciones al buffer de proceso Schemeseguacuten sea necesario

Si el archivo fuente termina en ss o scm automaacuteticamente se abriraacute en el modo Schemecuando lo encuentre con |_Cshyx_Cshyf_| Si por alguna razoacuten no surge en el modo Schemepuede hacerlo a mano con Mshyx schemeshymode Este modo scheme no es lo mismo que el bufferque ejecuta el proceso Scheme maacutes bien el que el buffer de coacutedigo fuente esteacute en modoscheme significa que tiene comandos especiales para comunicar con el buffer de proceso

Si estaacute dentro de la definicioacuten de una funcioacuten en el buffer de coacutedigo fuente Scheme yteclea |_Cshyc_Cshye_| entonces esa definicioacuten seraacute enviada al buffer de procesoexactamente como si lo hubiera tecleado Ud mismo |_Cshyc_Mshye_| enviacutea la definicioacuten yentonces le lleva al buffer de proceso para hacer algo de trabajo interactivo |_Cshyc_Cshyl_| carga un archivo de coacutedigo Scheme (eacuteste funciona desde el buffer de proceso o elbuffer de coacutedigo fuente) Y como otros modos de lenguajes de programacioacuten al presionar|_Tab_| en cualquier lugar de una liacutenea de coacutedigo se indentaraacute correctamente esa liacutenea

Si estaacute en el prompt del buffer de proceso puede usar ||_Mshyp_|| y |_Mshyn_| para moverseentre sus comandos anteriores (tambieacuten conocido como la historia de entrada) Asiacute que siestaacute depurando la funcioacuten rotar y ya lo ha aplicado a los argumentos en el buffer deproceso como

gt(rotar (a b c d e))

entonces puede recuperar ese comando anterior tecleando ||_Mshyp_||en el prompt Aquiacute nodeberiacutea ser necesario volver a escribir expresiones largas en el prompt de Schemehabituacuteese a usar la historia de entrada y ahorraraacute mucho tiempo

Emacs conoce bastantes lenguajes de programacioacuten C C++ Lisp y Scheme son simplementealgunos Generalmente sabe coacutemo indentarlos de forma intuitiva

8113 Modo de correo

Tambieacuten puede editar y enviar correo en Emacs Para entrar en un buffer de correo teclee|_Cshyx_m_| Necesita llenar los campos To (A) y Subjet (Asunto) y entonces use |_Cshyn_| para ir por debajo de la liacutenea de separacioacuten al cuerpo del mensaje (que estaacute vaciacuteocuando comienza por primera vez) No cambie o borre la liacutenea de separacioacuten o sino Emacsno seraacute capaz de enviar su correo use esa liacutenea para distinguir el encabezamiento delcorreo que le dice doacutende enviar el correo de los contenidos del mensaje

Puede escribir lo que quiera por debajo de la liacutenea de separacioacuten Cuando esteacute listo paraenviar el mensaje simplemente teclee |_Cshyc_Cshyc_| y Emacs lo enviaraacute y haraacute que elbuffer de correo desaparezca

812 Como ser maacutes eficiente auacuten

Los usuarios experimentados de Emacs son fanaacuteticos de la eficiencia ltDe hechofrecuentemente acaban derrochando mucho tiempo buscando formas para ser maacutes eficientesNo quiero que le suceda esto aunque hay algunas cosas faacuteciles con las que puede llegar aser un mejor usuario de Emacs A veces los usuarios experimentados hacen que los novatos

se sientan tontos por no saber todos estos trucos por alguna razoacuten la gente llega ahacerse religiosas sobre el uso correcto de Emacs Allaacute vamos

Cuando se mueve de un lado a otro usa los medios maacutes raacutepidos disponibles Ud sabe que|_Cshyf_| es forwardshychar (un caraacutecter hacia adelante) iquestsuponiacutea que |_Mshyf_| es forwardshyword(una palabra hacia delante) |_Cshyb_| es backwardshychar (un caraacutecter hacia atraacutes) iquestSuponequeacute hace |_Mshyb_| Sin embargo esto no es todo puede avanzar una frase cada vez con |_Mshye_ | siempre que escriba sus frases de modo que haya siempre dos espacios despueacutes delpunto final (de otra manera Emacs no puede distinguir donde termina una frase y comienzala siguiente) |_Mshya_| es backwardshysentence (una frase atraacutes)

Si ve que usa repetidamente |_Cshyf_| para llegar al final de la liacutenea averguumleacutencese yaseguacuterese de usar |_Cshye_| en su lugar y |_Cshya_| para ir al principio de la liacutenea Si usamuchos |_Cshyn_| para bajar pantallas de texto averguumleacutencese mucho y usa |_Cshyv_| siempreSi usa repetidamente ||_Cshyp_|| para avanzar pantallas no se atreva a ensentildear la cara yuse |_Mshyv_| en su lugar

Si se estaacute acercando al final de una liacutenea y se da cuenta de que hay una palabra maltecleada o de que se ha olvidado alguna en alguacuten lugar anterior de la liacutenea no use la|_Retroceso_| o ||_Supr_|| para volver a ese punto Eso requeririacutea volver a escribirporciones enteras de texto perfecto En vez de eso use combinaciones de |_Mshyb_| |_Cshyb_| y |_Cshyf_| para moverse a la ubicacioacuten precisa del error arreacuteglelo y entonces use|_Cshye_| para moverse al fin de la liacutenea nuevamente

Cuando tiene que escribir un nombre de archivo nunca teclee el nombre completoSolamente escriba lo suficiente para identificarlo singularmente y deje que Emacstermine el trabajo presionando |_Tab_| o ||_Espacio_|| iquestPor queacute teclear de maacutes cuandopuede derrochar ciclos de CPU en su lugar

Si escribe alguacuten tipo de texto simple y de alguacuten modo su autoshyllenando (autoshyfilling)loha fastidiado use |_|Mshyq_|| que es rellenado de paacuterrafo en los modos de texto comunesEsto ajustaraacute el paacuterrafo en el que estaacute como si hubiese sido llenado liacutenea a liacuteneapero sin tener que liarse hacieacutendolo a mano ||_Mshyq_|| trabajaraacute desde dentro delpaacuterrafo o desde su comienzo o final

A veces es uacutetil usar |_Cshyx_u_| (undo [deshacer]) que trataraacute de deshacer el (los)uacuteltimo(s) cambio(s) que hizo Emacs decidiraacute cuanto deshacer habitualmente decide muyinteligentemente

Llamaacutendolo repetidamente desharaacute maacutes y maacutes hasta que Emacs no pueda recordar queacute cambiosse hicieron

813 Personalizando Emacs

Emacs es tan grande y tan complejo que de hecho tiene iexclsu propio lenguaje deprogramacioacuten No bromeo para personalizar Emacs ajustaacutendolo a sus necesidades tieneque escribir programas en este lenguaje Se llama Emacs Lisp y es un dialecto de Lispasiacute que si tiene experiencia previa en Lisp le pareceraacute bastante amistoso Si no no sepreocupe no voy a profundizar mucho porque definitivamente se aprende mejorpracticando Para aprender realmente a programar Emacs deberaacute consultar las paacuteginas deinformacioacuten de Emacs Lisp y leer mucho coacutedigo fuente de Emacs Lisp

La mayor parte de la funcionalidad de Emacs estaacute definida en archivos de coacutedigo de EmacsLisp9 La mayoriacutea de estos archivos se distribuyen con Emacs y colectivamente sonconocidos como la Biblioteca de Emacs Lisp La ubicacioacuten de esta biblioteca depende decoacutemo se instaloacute Emacs en su sistema son ubicaciones comunes usrlibemacslispusrlibemacs1919lisp etc

El 1919 es el nuacutemero de versioacuten de Emacs y podriacutea ser diferente en su sistema

No necesita hurgar por su sistema de archivos buscando la biblioteca de lisp porqueEmacs tiene la informacioacuten almacenada internamente en una variable llamada loadshypath(trayectoria de carga) Para averiguar el valor de esta variable es necesario evaluarlaesto es hacer que el inteacuterprete de lisp de Emacs consiga su valor Hay un modo especialpara evaluar las expresiones de Lisp en Emacs llamado modo lisp interactivo (lispshyinteractionshymode) Comuacutenmente hay un buffer llamado scratch que estaacute ya en estemodo Si no lo puede encontrar cree un nuevo buffer con cualquier nombre y escriba Mshyxlispshyinteractionshymode dentro de eacutel

Ahora tiene un espacio de trabajo para interactuar con el inteacuterprete Lisp de EmacsTeclee esto

loadshypath

y entonces presione ||_Cshyj_|| al finalizar En el modo Lisp interactivo ||_Cshyj_|| estaacuteligado a evalshyprintshylastshysexp (evaluarshyimprimirshyuacuteltimashysexp) Una sexp es una sshyexpresion lo que significa un grupo balanceado de pareacutentesis incluido el caso de queno haya ninguno Bueno esto es simplificarlo un poco pero iraacute entendiendo que son seguacutenprograme con Emacs Lisp De cualquier manera al evaluar loadshypath deberiacutea conseguir algocomo esto

loadshypath ||_Cshyj_||

(usrlibemacssiteshylispvmshy535 homekfogelelithp

usrlibemacssiteshylisp usrlibemacs1919lisp)

Por supuesto no tendraacute el mismo aspecto en cada sistema puesto que es dependiente decoacutemo se instaloacute Emacs El ejemplo de arriba viene de mi PC 386 que funciona con LinuxComo indica lo anterior loadshypath es una lista de cadenas Cada cadena nombra undirectorio que podriacutea contener archivos de Emacs Lisp Cuando Emacs necesita cargar unarchivo de coacutedigo Lisp va buscaacutendolo en cada uno de estos directorios en orden Si undirectorio se nombra pero no existe en el sistema de archivos Emacs simplemente loignora

_____________________________________________

9 A veces llamados no oficialmente Elisp

Cuando Emacs arranca automaacuteticamente trata de cargar el archivo emacs desde sudirectorio de usuario Por lo tanto si quiere hacer personalizaciones en Emacs deberaacuteponerlas en emacs La personalizacioacuten maacutes comuacuten son las teclas ligadas asiacute que aquiacuteestaacute coacutemo hacerlo

(globalshysetshykey Cshycl gotoshyline)

globalshysetshykey (fijar teclas globalmente) es una funcioacuten de dos argumentos la tecla a laque ha de ser ligada y la funcioacuten a la que ligarla La palabra global significa queesta tecla ligada tendraacute efecto en todos los modos mayores (hay otra funcioacuten localshysetshykey (fijar teclas localmente) que liga una tecla en un uacutenico buffer) Arriba he ligado|_Cshyc_l_| a la funcioacuten gotoshyline (ir a tal liacutenea)

La tecla se describe usando una cadena La sintaxis especial Cshyltcaraacutectergt significamantener pulsada la tecla |_Control_| mientras se presiona ltcaraacutectergt Asiacute mismo Mshyltcaraacutectergt indica la tecla |_Meta_|

Todo eso estaacute muy bien iquestpero coacutemo supe que el nombre de la funcioacuten era gotoshylinePuedo saber que quiero ligar |_Cshyc_l_| a alguna funcioacuten que pregunta por un nuacutemero deliacutenea y mueve el cursor a esa liacutenea pero iquestcoacutemo hice para averiguar el nombre de esafuncioacuten

Aquiacute es donde intervienen las facilidades de ayuda de Emacs Una vez que ha decidido queacutetipo de funcioacuten busca puede usar Emacs para rastrear su nombre exacto He aquiacute unamanera raacutepida y sucia para hacerlo puesto que Emacs completa los nombres de funcioacutensimplemente escriba |_Cshyh_f_| (que es describeshyfunction (describir funcioacuten) recueacuterdelo)y entonces presione |_Tab_| sin escribir nada maacutes Esto pide a Emacs que complete lacadena vaciacutea _en otras palabras iexclla terminacioacuten automaacutetica se corresponderaacute con cada unade las funciones Puede tardar un momento en construir la lista de funciones ya queEmacs tiene muchas funciones internas pero mostraraacute todo lo que entre en la pantallacuando esteacute listo

En este momento presione ||_Cshyg_|| para abandonar la funcioacuten describir funcioacuten Habraacute unbuffer llamado Completions que contiene la lista de terminaciones automaacuteticas queacaba de generar

Cambie a este buffer Ahora puede usar |_Cshys_| isearch para buscar las funcionesprobables Por ejemplo es una suposicioacuten segura que una funcioacuten que pregunta por unnuacutemero de liacutenea y entonces va a esa liacutenea contendraacute la cadena line (liacutenea) en sunombre Por lo tanto simplemente comience buscando la cadena line y acabaraacuteencontrando lo que busca

Si quiere otro meacutetodo puede usar |_Cshyh_a_| commandshyapropos para mostrar todas lasfunciones cuyos nombres se ajustan a la cadena dada La salida de commandshyapropos es unpoco maacutes difiacutecil de clasificar que simplemente buscar una lista de terminacioacutenautomaacutetica en mi opinioacuten pero puede encontrar que tiene distintas sensaciones Pruebeambos meacutetodos y a ver que opina

Siempre existe la posibilidad de que Emacs no tenga ninguna funcioacuten predefinida parahacer lo que estaacute buscando En esta situacioacuten tiene que escribir la funcioacuten Ud mismoNo voy a hablar de coacutemo hacer eso deberiacutea buscar en la biblioteca de Emacs Lisp ejemplosde definiciones de funcioacuten y leer las paginas Info sobre Emacs Lisp Si resulta queconoce a un guruacute local de Emacs preguacutentele coacutemo hacerlo Definir sus propias funcionesde Emacs no es un gran asunto para darle una idea yo he escrito 131 de ellas durantemaacutes o menos el uacuteltimo antildeo Requiere un poco de praacutectica pero la curva de aprendizaje noes empinada

Otra cosa que la gente hace a menudo en su emacs es asignar a ciertas variables losvalores preferidos Por ejemplo ponga esto en su emacs y entonces inicie un nuevoEmacs

(setq inhibitshystartupshymessage t)

Emacs verifica el valor de la variable inhibitshystartupshymessage (bloquear mensaje dearranque) para decidir si muestra la informacioacuten sobre la versioacuten y la falta de garantiacuteacuando arranca La expresioacuten de Lisp de arriba usa el comando setq para asignar a esavariable el valor `t que es un valor especial de Lisp que significa true (verdadero)Lo contrario de `t es `nil (nada o nulo) que es el valor false (falso) designado enEmacs Lisp He aquiacute dos cosas que estaacuten en mi |_emacs_| que podriacutea encontrar uacutetiles

(setq caseshyfoldshysearch nil) causa la insensibilidad a mayuacutesculas yminuacutesculas para la buacutesqueda

Hacer indentar los programas C de la manera que me gusta

(setq cshyindentshylevel 2)

La primera expresioacuten hace que las buacutesquedas (incluyendo isearch) sean insensibles amayuacutesculas y minuacutesculas esto es la buacutesqueda encontraraacute versiones de un mismo caraacutectersea mayuacutescula o minuacutescula aunque la cadena de buacutesqueda contenga uacutenicamente la versioacuten enminuacutescula La segunda expresioacuten establece que la indentacioacuten por defecto para lassentencias en lenguaje C sea un poco menor de lo normal esto es solamente unapreferencia personal encuentro que esto hace el coacutedigo C maacutes legible

El caraacutecter de comentario en Lisp es Emacs ignora cualquier cosa que siga a uno deeacutestos a menos que aparezca dentro de una cadena literal como esta

estas dos liacuteneas son ignoradas por el inteacuterprete de Lisp pero la

sshyexpression que le sigue se evaluaraacute totalmente

(setq algunashycadenashyliteral Una pausa torpe sin ninguacuten propoacutesito)

Es una buena idea comentar sus cambios en los archivos Lisp porque seis meses despueacutes nose acordaraacute en queacute estaba pensando cuando los modificoacute Si el comentario aparece soacutelo enuna liacutenea preceacutedalo con dos punto y coma Esto ayuda a Emacs a indentar los archivosLisp correctamente

Puede encontrar informacioacuten sobre las variables internas de Emacs de las mismas formasque con las funciones Use |_Cshyh_v_| describeshyvariable para hacer una lista determinacioacuten automaacutetica o use |_Cshyh_Cshya_| apropos Apropos difiere de |_Cshyh_a_|commandshyapropos en que muestra variables y funciones en vez de solamente funciones

La extensioacuten por defecto para los archivos de Emacs Lisp es el como en cshymodeel Sinembargo para hacer que el coacutedigo Lisp se ejecute maacutes raacutepido Emacs permite que sea byteshycompiled (compilado a un formato interno) y estos archivos de coacutedigo Lisp compiladoterminan en elc en vez de el La excepcioacuten a esto es su archivo emacs que no necesitala extensioacuten el porque Emacs sabe buscarlo para arrancar

Para cargar un archivo de coacutedigo Lisp interactivamente use el comando Mshyx loadshyfile(cargar archivo) Le preguntaraacute por el nombre del archivo Para cargar archivos Lispdesde dentro de otros archivos Lisp haga esto

(load cshymode)fuerza a Emacs a cargar el contenido de cshymodeel o elc

Emacs antildeadiraacute la extensioacuten elc al nombre del archivo e intentaraacute encontrarlo en alguacutenlugar del loadshypath Si falla lo intenta con la extensioacuten el si falla esto usa lacadena literal tal y como es pasada a load Puede compilar (byteshycompile) un archivo conel comando Mshyx byteshycompileshyfile pero si modifica el archivo a menudo probablemente nomerezca la pena Sin embargo no deberiacutea compilar de esa manera su emacs ni siquieradarle la extensioacuten el

Despueacutes de que emacs se ha cargado Emacs busca un archivo llamado defaultel paracargarlo

Comuacutenmente se ubica en un directorio en la trayectoria de carga (loadshypath) llamado siteshylisp o localshyelisp o algo parecido (ver el ejemplo loadshypath que di hace un rato) Lagente que mantiene Emacs en un sistema multiusuario usa defaultel para hacer cambios queafectaraacuten los Emacs de todos puesto que todos los Emacs lo cargan despueacutes de los emacspersonales defaultel no deberiacutea ser compilado ya que tiende a ser modificadofrecuentemente

Si el emacs de una persona contiene alguacuten error Emacs no intentaraacute cargar defaultelsino que simplemente se detendraacute destellando un mensaje diciendo Error in init file(Error en el archivo de inicio) o algo similar Si ve este mensaje probablemente algovaya mal con su emacs

Hay un tipo maacutes de expresioacuten que a menudo va en un emacs La libreria de Emacs Lisp aveces ofrece muacuteltiples paquetes para hacer lo mismo de diferentes formas Esto significaque tiene que especificar cuaacutel quiere usar (o tendraacute el paquete por defecto que no essiempre el mejor para todos los propoacutesitos) Un aacuterea donde esto sucede es en lascaracteriacutesticas de interaccioacuten del Scheme de Emacs Hay dos interfaces diferentes deScheme distribuidos con Emacs (al menos en la versioacuten 19) xscheme y cmuscheme

promptgt ls usrlibemacs1919lispscheme

usrlibemacs1919lispcmuschemeel

usrlibemacs1919lispcmuschemeelc

usrlibemacs1919lispschemeel

usrlibemacs1919lispschemeelc

usrlibemacs1919lispxschemeel

usrlibemacs1919lispxschemeelc

Resulta que el interfaz ofrecido por cmuscheme me gusta mucho maacutes que el que ofrecexscheme pero el que Emacs usaraacute por defecto es xscheme iquestCoacutemo puedo hacer que Emacsactuacutee de acuerdo con mi preferencia Puse esto en mi emacs

note coacutemo la expresioacuten puede quebrarse en dos liacuteneas Lisp

ignora los espacios en blanco generalmente

(autoload runshyscheme cmuscheme

Corre un Scheme inferior de la forma que me gusta t)

La funcioacuten autoload (auto carga) toma el nombre de una funcioacuten (citada con porrazones que tienen que ver con coacutemo funciona Lisp) y le dice a Emacs que esta funcioacutenestaacute definida en un determinado archivo El archivo es el segundo argumento una cadena(sin la extensioacuten el o elc) indicando el nombre del archivo a buscar en la trayectoriade carga loadshypath

Los argumentos restantes son opcionales pero necesarios en este caso el tercerargumento es una cadena de documentacioacuten para la funcioacuten de modo que si llama adescribeshyfunction (describirshyfuncioacuten) consigue alguna informacioacuten uacutetil El cuartoargumento le dice a Emacs que esta funcioacuten autocargable puede ser llamadainteractivamente (esto es usando |_Mshyx_|) Esto es muy importante en este caso porqueuno deberiacutea poder teclear Mshyx runshyscheme para comenzar un proceso de scheme que seejecuta bajo Emacs

Ahora que runshyscheme ha sido definido como una funcioacuten autocargable iquestqueacute sucede cuandotecleo Mshyx runshyscheme Emacs mira la funcioacuten runshyscheme ve que estaacute establecida paraser autocargable y carga el archivo nombrado por la autocarga (en este caso cmuscheme)El archivo compilado cmuschemeelc existe asiacute que Emacs lo cargaraacute Ese archivo debedefinir la funcioacuten runshyscheme o habraacute un error de autocarga Por suerte define runshyscheme asiacute que todo va sin tropiezos y consigo mi interfaz preferida de Scheme10

Una autocarga es como una promesa a Emacs de que cuando llegue el momento puedeencontrar la funcioacuten especificada en el archivo en el que le dice que mire A cambioconsigue alguacuten control sobre lo que se carga Tambieacuten la autocarga ayuda a reducir eltamantildeo de Emacs en la memoria al no cargar ciertas caracteriacutesticas hasta que se pidan

Muchos comandos no estaacuten definidos realmente como funciones cuando Emacs se inicia Maacutesbien estaacuten simplemente preparados para autocargarse desde cierto archivo Si nuncainvoca el comando nunca se carga Este ahorro de espacio es vital para el funcionamientode Emacs si cargara todos los archivos disponibles en la biblioteca Lisp Emacs tomariacuteaveinte minutos simplemente para arrancar y una vez hecho podriacutea ocupar la mayor partede la memoria disponible en su maacutequina No se preocupe no tiene que establecer todasestas autocargas en su emacs ya se tomaron en cuenta cuando Emacs se desarrolloacute

814 Averiguando maacutes

No le he contado todo lo que se puede saber sobre Emacs De hecho no creo haberlecontado siquiera un 1 de lo que se puede saber sobre Emacs Aunque sabe suficiente paraproseguir todaviacutea hay montones de comodidades y trucos que ahorran tiempo que deberiacuteaaveriguar La mejor forma de hacerlo es esperar hasta que vea que necesita algo y buscarentonces una funcioacuten que lo haga

La importancia de estar coacutemodo con las facilidades de ayuda en liacutenea de Emacs no puedeenfatizarse lo suficiente Por ejemplo suponga que quiere poder insertar los contenidosde alguacuten archivo en un buffer que ya estaacute trabajando sobre un archivo diferente para queel buffer contenga a ambos Si intuyese que hay un comando llamado insertshyfile (insertararchivo) tendriacutea razoacuten Para verificar su acertada suposicioacuten teclee Cshyh f En elprompt del minibuffer introduzca el nombre de una funcioacuten sobre la que quiera ayudaPuesto que sabe que hay terminacioacuten automaacutetica en los nombres de funciones_y_puedesuponer que el comando que busca comienza con insert escriba insert y presiona|_Tab_| Esto le muestra todos los nombres de funcioacuten que comienzan con insert einsertshyfile es uno de ellos

De este modo completa el nombre de funcioacuten y lee sobre como trabaja y entonces usa Mshyxinsertshyfile_Si se estaacute preguntando si tambieacuten estaacute ligado a una tecla escribe Cshyh winsertshyfile |_Intro_| y averiacuteguumlelo Cuanto maacutes sepa de las facilidades de ayuda deEmacs maacutes faacutecilmente podraacute hacer preguntas a Emacs acerca de siacute mismo La capacidad dehacerlo combinada con un espiacuteritu de exploracioacuten y un deseo de aprender nuevas formas dehacer las cosas puede acabar por ahorrarle mucho tecleado

_____________________________________________

10 A propoacutesito cmuscheme era la interfaz de la que hablaba antes en la seccioacuten sobre eltrabajo con Scheme asiacute que si quiere usar algo de este manual necesita asegurarse deque ejecuta cmuscheme

Para pedir una copia del manual de usuario de Emacs (Emacs users manual) yo el manualde Programacioacuten en Emacs Lisp (Emacs Lisp Programming manual) debe escribir a

Free Software Foundation

675 Mass Ave

Cambridge MA 02139

USA

Ambos manuales se distribuyen electroacutenicamente con Emacs en una forma legible usando ellector de documentacioacuten Info (Cshyh i) pero puede encontrar maacutes faacutecil tratar con freewareque con las versiones en liacutenea Ademaacutes sus precios son bastantes razonables y el dinerova a una buena causa iexclsoftware gratuito de calidad En alguacuten momento deberiacutea teclear

Cshyh Cshyc para leer las condiciones de copyright de Emacs Es maacutes interesante de lo quepuede pensar y le ayudaraacute a aclarar el concepto de software libre Si cree que eltermino free software simplemente significa que el programa no cuesta nada por favoriexcllea el copyright en cuanto tenga tiempo

Capiacutetulo 9

iexclTengo que ser yo mismo

Si Dios hubiera sabido que necesitariacuteamos previsioacuten nos la habriacutea dado

91 Personalizacioacuten del bash

Una de las cosas que distinguen la filosofiacutea de Unix es que los disentildeadores de sistemasno intentaron predecir cada necesidad que los usuarios podriacutean tener en lugar de esointentaron hacer faacutecil para cada usuario individual la configuracioacuten del entorno a susnecesidades particulares Esto se consigue principalmente a traveacutes de ficheros deconfiguracioacuten Tambieacuten son conocidos como ficheros de inicio ficheros rc (por runcontrol control de arranque) o incluso ficheros punto (dot files) porque losnombres de los ficheros siempre empiezan con Recordemos que los ficheros queempiezan por no se visualizan normalmente con ls

Los ficheros de configuracioacuten maacutes importantes son los usados por el shell El shell pordefecto de Linux es el bash y eacuteste es el shell que cubre este capiacutetulo Antes de empezara explicar coacutemo personalizar el bash tenemos que saber cuales son los archivos que mira

911 Arranque del shell

Hay diferentes modos de funcionamiento del bash Puede funcionar como shell de ingresoque es el modo en que arranca cuando se ingresa por primera vez El shell de ingresodeberiacutea ser el primer shell que vea

Otro modo en que puede funcionar bash es como shell interactivo Este es un shell quepresenta un prompt a un humano y espera una entrada de datos Un shell de ingreso tambieacutenes un shell interactivo Una manera de conseguir un shell interactivo sin ingresar en elsistema es por ejemplo un shell dentro de xterm Cualquier shell que sea creado porotro medio distinto del ingreso registrado en el sistema es un shell de noshyingreso

Finalmente hay shells no interactivos Estos shells se usan para ejecutar un archivo decomandos muy parecidos a los ficheros de procesamiento por lotes del MSshyDOS losarchivos que acaban en BAT Estas macros de shell funcionan como minishyprogramas Aunqueson usualmente mucho maacutes lentos que un programa normal compilado suele ser ciertotambieacuten que son mucho maacutes faacuteciles de escribir Dependiendo del tipo de shell se usaraacutendistintos tipos de archivo al arrancarlo

Tipo de Shell Accioacuten

Ingreso interactivo Se lee y ejecuta el archivo bash_profile

Interactivo Se lee y ejecuta el archivo bashrc

No_interactivo Se lee y ejecuta la macro de shell

912 Ficheros de arranque

Como muchos usuarios quieren tener mayormente el mismo entorno sin importar que tipo deshell interactivo acaben teniendo y sea o no un shell de ingreso empezaremos nuestraconfiguracioacuten poniendo un comando muy simple en nuestro archivo bash_profile source~bashrc El comando source ordena al shell que interprete el argumento como una macrode shell Lo que significa para nosotros es que cada vez que bash_profile se ejecutatambieacuten se ejecuta bashrc Ahora soacutelo antildeadiremos comandos a nuestro archivo bashrc Sialguna vez queremos que se ejecute un comando uacutenicamente cuando hemos hecho un ingresoregistrado lo antildeadiremos a nuestro bash_profile

913 Creando alias

iquestCuales son algunas de las cosas que interesariacutea personalizar Esto es algo que creo queel 90 de los usuarios de Bash han puesto en su bashrc

alias ll=ls shyl

Este comando define un alias de shell llamado ll que expande el comando normal de shellls shyl cuando se invoca por el usuario De modo que asumiendo que Bash ha leiacutedo estecomando del fichero bashrc podemos teclear ll para conseguir el efecto de ls__shyl_ consolo la mitad de pulsaciones Lo que ocurre es que cuando tecleamos ll y pulsamos|_Intro_| Bash lo intercepta lo reemplaza por ls shyl y ejecuta eacuteste en su lugar Nohay ninguacuten programa llamado ll en el sistema pero el shell automaacuteticamente traduce elalias a un programa vaacutelido

Hay algunos alias de ejemplo en la figura 913 Puede ponerlos en su propio bashrc Unoespecialmente interesante es el primero Con eacutel cada vez que alguien teclea ls automaticamente tiene una opcioacuten shyF antildeadida (El alias no intenta expandirse a siacute mismootra vez) Este es un modo muy comuacuten de antildeadir opciones que se usan constantemente alllamar a un programa

Noacutetese los comentarios con el caracter en la figura 913 Cada vez que aparece un el shell ignora el resto de la liacutenea

Quizaacute haya notado unas cuantas cosas sueltas sobre los ejemplos Primero me he dejadolas comillas en algunos de los alias como pu Estrictamente hablando las comillas no sonnecesarias cuando soacutelo se tiene una palabra a la derecha del signo igual

Figura 91 Algunos alias de ejemplo para bash

Alias Comentario

alias ls=ls shyF

alias ll=ls shyl

alias la=ls shya

alias ro=rm ~ rm ~

alias rd=rmdir

alias md=mkdir

alias pu=pushd

muestra los caracteres al final del listado

ls especial

este borra las copias de seguridad creadas por Emacs

ahorra teclas

pushd popd y dirs no estan incluidos en este

alias po=popd

alias ds=dirs

manualshyshyshyquiza quiera echarles un vistazo

en la pagina man de Bash

alias to=telnet csoberlinedu

alias ta=telnet altairmcsanlgov

alias tg=telnet wombatgnuaimitedu

alias tko=tpalk koldcsoberlinedu

alias tjo=talk jimbcsoberlinedu

alias mroe=more

alias moer=more

alias email=emacs shyf rmail

alias ed2=emacs shyd floss0 shyfg grey95shybg grey50

estos solo son atajos de teclado

correcion ortografica

mi lector de correo

asi llamo a Emacs

Pero no hace dantildeo poner comillas asiacute que no me dejeacuteis crearos malos haacutebitos Ciertamentehabraacute que usarlas si se va a crear un alias de un comando con opciones yo argumentos

alias rf=refrobnicate shyverbose shyprolix shywordy shyo fooout

Ademaacutes el uacuteltimo alias tiene alguacuten entrecomillado gracioso

alias ed2=emacs shyd floss0 shyfg grey95 shybg grey50

Como es faacutecil suponer he querido pasar entrecomillados dentro de las opciones asiacute quetengo que anteponerles una contrabarra para que bash no crea que ya ha llegado al finaldel alias

Finalmente he creado dos alias de dos errores de escritura comunes mroe y moerapuntando al comando que pretendiacutea escribir more Los alias no interfieren con el pasode argumentos a un programa Lo siguiente funciona bien

homelarry$ mroe hurdtxt

De hecho saber como crear sus propios alias es probablemente por lo menos la mitad delas personalizaciones que haraacute jamaacutes Experimente un poco descubra cuaacuteles son loscomandos largos que teclea frecuentemente y cree alias para ellos De esta manera leresultaraacute maacutes confortable trabajar con el prompt del shell

914 Variables de entorno

Otra cosa que uno hace frecuentemente en bashrc es definir variables de entorno Y gtqueacuteson las variables de entorno Vamos a mirarlo desde otra direccioacuten Supongamos que estaacuteleyendo la documentacioacuten del programa fruggle y se encuentra con una de estasexpresiones

Fruggle normalmente busca su fichero de configuracioacuten frugglerc en el directorio raiacutezdel usuario Sin embargo si la variable de entorno FRUGGLEPATH indica un nombre dearchivo diferente miraraacute ahiacute en su lugar

Cada programa se ejecuta en un entorno y ese entorno es definido por el shell que llamoacuteal programa1 Se puede decir que el entorno existe dentro del shell Los programadorestienen una rutina especial para interrogar al entorno y el programa fruggle usa esarutina Comprueba el valor de la variable de entorno FRUGGLEPATH Si esa variable no estaacutedefinida sencillamente usaraacute el archivo frugglerc del directorio raiacutez Si estaacutedefinida usaraacute el valor de esa variable (que debe ser el nombre de un archivo quefruggle pueda usar) en lugar del archivo por defecto frugglerc Asiacute es como se puedecambiar el entorno en bash

homelarry$ export PGPPATH=homelarrysecretspgp

Hay que pensar en el comando export con este significado Por favor exporta estavariable fuera del entorno donde estareacute llamando programas de modo que su valor seavisible para ellos Realmente hay razones para llamarlo export como se veraacute despueacutes

Esta variable en particular es usada por el infame programa de encriptacioacuten medianteclave puacuteblica de Phil Zimmerman pgp Por defecto pgp usa el directorio raiacutez como lugarpara encontrar determinados archivos que necesita (que contienen claves de encriptacioacuten)y tambieacuten un lugar para guardar archivos temporales que crea mientras estaacute en marcha Aldarle este valor a la variable PGPPATH le he dicho que use el directoriohomelarrysecretspgp en lugar de homelarry

He tenido que leer el manual de pgp para encontrar el nombre exacto de la variable y loque hace pero es bastante estaacutendar el uso del nombre del programa en mayuacutesculas seguidodel sufijo PATH Tambieacuten es uacutetil saber como preguntar al entorno

homelarry$ echo $PGPPATH

homelarrypgp

homelarry$

Noacutetese el $ se precede la variable de entorno con un signo de doacutelar para extraer elvalor de la variable Si lo hubiera escrito sin el signo de doacutelar echo simplementehabriacutea mostrado su(s) argumento(s)

homelarry$ echo PGPPATH

PGPPATH

homelarry$

El $ se usa para evaluar variables de entorno pero soacutelo lo hace dentro del contextodel shell o sea cuando el shell estaacute interpretando iquestCuando estaacute el shellinterpretando Bueno cuando se escriben comandos en el prompt o cuando bash estaacuteleyendo comandos de un archivo como bashrc se puede decir que estaacute interpretando loscomandos

_____________________________________________

1 Ahora se puede comprobar porqueacute los shells son tan importantes ltNo hay que andarpasando un entorno completo a mano cada vez que se llame a un programa

Figura 92 Algunas variables de entorno importantes

Nombre Contenido Ejemplo

HOME Directorio principal del usuario homelarry

TERM Tipo de terminal del usuario xterm vt100 o console

SHELL Path del shell del usuario binbash

USER Nombre de ingreso larry

PATH Lista de buacutesqueda de programas binusrbinusrlocalbinusrbinX11

Hay otro comando muy uacutetil para preguntar al entorno env env ensentildearaacute un listado detodas las variables de entorno Es posible especialmente si se usa X que la lista sesalga de la pantalla

Si esto ocurre hay que canalizar env a traveacutes de more env _ more

Unas cuantas de estas variables pueden ser muy uacutetiles asiacute que las comentaremos Mire laFigura 914 Estas cuatro variables estaacuten definidas automaacuteticamente cuando se ingresa enel sistema no se definen en bashrc o bash_login

Vamos a echar un vistazo maacutes de cerca a la variable TERM Para comprenderla vamos amirar hacia atraacutes en la historia del Unix El sistema operativo necesita conocer ciertosdatos sobre su consola para poder realizar funciones baacutesicas como escribir un caraacutecteren la pantalla mover el cursor a la liacutenea siguiente etc En los primeros diacuteas de losordenadores los fabricantes estaban continuamente antildeadiendo nuevas caracteriacutesticas a susterminales primero el viacutedeo inverso luego quizaacutes juegos de caracteres europeoseventualmente incluso primitivas funciones de dibujo (hay que recordar que eacutestos eran lostiempos anteriores a los sistemas de ventanas y el ratoacuten) Pero todas estas funcionesrepresentaban un problema para los programadores iquestCoacutemo iban a saber lo que un terminalpodiacutea soportar y lo que no Y iquestcoacutemo podiacutean emplear nuevas caracteriacutesticas sin convertirlos viejos terminales en inservibles

En Unix la respuesta a estas cuestiones fue etctermcap etctermcap es una lista detodos los terminales que un sistema conoce y como controlan el cursor Si unadministrador de sistema consigue un terminal nuevo todo lo que tiene que hacer esantildeadir una entrada para ese terminal en etctermcap en lugar de recompilar todo el UnixA veces es incluso maacutes simple Al pasar el tiempo el vt100 de Digital EquipmentCorporation se convirtioacute en un pseudoshyestaacutendar y muchos nuevos terminales fueronconstruidos para que pudieran emularlo o comportarse como si fueran un vt100

Bajo Linux el valor de TERM es a veces console un cloacutenico de vtshy100 con algunascaracteriacutesticas antildeadidas

Otra variable PATH es tambieacuten crucial para el funcionamiento correcto del shell Aquiacuteestaacute la miacutea

homelarry$ env _ grep ^PATH

PATH=homelarrybinbinusrbinusrlocalbinusrbinX11usrTeXbin

homelarry$

El PATH es una lista separada por el caraacutecter dos puntos de los directorios dondeel shell buscaraacute el nombre del programa a ejecutar Cuando yo tecleo ls y pulso|_Intro_| por ejemplo Bash primero busca en homelarrybin un directorio que he hechopara guardar los programas que escribo Pero yo no he escrito ls (de hecho iexclcreo que seescribioacute antes de que yo naciera) Como no lo encuentra en homelarrybin Bash miradespueacutes en bin iexcly ahiacute hay una coincidencia binls existe y es ejecutable de modo queBash deja de buscar un programa llamado ls y lo arranca Podriacutea haber habidoperfectamente otro ls esperando en el directorio usrbin pero bash nunca lo ejecutaraacutesi no lo pido especificando una ruta de directorios expliacutecita

homelarry$ usrbinls

La variable PATH existe para no tener que teclear rutas de directorio completas para cadacomando Cuando se escribe un comando Bash lo busca en los directorios nombrados en elPATH en orden y si lo encuentra lo ejecuta Si no lo encuentra devuelve un descorteacutesmensaje de error

homelarry$ clubly

clubly command not found

Notar que en mi PATH no existe el directorio actual Si estuviera tendriacutea esteaspecto

homelarry$ echo $PATH

homelarrybinbinusrbinusrlocalbinusrbinX11usrTeXbin

homelarry$

Esto es asunto de debate en los ciacuterculos de Unix (de los cuales ahora es miembro leguste o no) El problema es que tener el directorio actual en el path puede ser unagujero en la seguridad Supongamos que entramos en un directorio en el que alguien hadejado un Caballo de Troya llamado ls y hacemos un ls como es natural despueacutes deentrar en un directorio nuevo Como el directorio actual viene primero en nuestroPATH el shell encontraraacute esta versioacuten de ls y la ejecutaraacute Sea cual sea el dantildeo quehayan puesto en ese programa lo acabamos de activar (y puede ser un montoacuten de dantildeo)Quien fuera no necesita permisos de root para hacerlo soacutelo hace falta permisos deescritura en el directorio donde se encuentra el falso ls Incluso podriacutea ser su propiodirectorio home si sabe que vamos a estar husmeando por ahiacute en alguacuten momento

En su propio sistema es muy improbable que las personas se esteacuten dejando trampas unas aotras Pero en un gran sistema multiusuario (como muchos ordenadores de universidades)hay un montoacuten de programadores hostiles con los que nunca se ha encontrado Que quieratentar a la suerte o no teniendo en el path depende de la situacioacuten no voy a serdogmaacutetico en ninguacuten sentido soacutelo quiero informar de los riesgos impliacutecitos2 Lossistemas multiusuario son verdaderas comunidades donde la gente puede hacerles cosas alos demaacutes en todo tipo de maneras nunca vistas

El modo en que he dejado mi PATH incluye la mayoriacutea de lo que se ha aprendido hasta ahorasobre variables de entorno Esto es lo que hay actualmente en mi bashrc

export PATH=$shyPATH$shyHOMEbinbinusrbinusrlocalbinusrbinX11usrTeXbin

_____________________________________________

2 Recueacuterdese que siempre se puede ejecutar un programa en el directorio actual siendoexpliacutecito pej foo

Me aprovecho de que la variable HOME se activa antes de que Bash lea el fichero bashrcusando su valor en la construccioacuten del PATH Las llaves () son un nivel antildeadido decita delimitan el tamantildeo de lo que va a evaluar $ de modo que el shell no se confundapor culpa del texto inmediatamente posterior (bin en este caso) Aquiacute hay otro ejemplodel efecto que tienen

homelarry$ echo $shyHOMEfoo

homelarryfoo

homelarry$

Sin las llaves no connseguiriacutea nada porque no hay ninguna variable de entorno llamadaHOMEfoo

homelarry$ echo $HOMEfoo

homelarry$

Quisiera aclarar una cosa en este path el significado de $PATH Lo que hace es incluirel valor de cualquier variable PATH previamente activada en mi nuevo PATH iquestDoacutende sehabraacute activado la variable anterior El archivo etcprofile sirve como una especie debash_profile global comuacuten a todos los usuarios Tener un archivo centralizado como estehace maacutes sencillo para el administrador del sistema antildeadir un directorio nuevo al PATH detodo el mundo sin que cada uno tenga que hacerlo individualmente Si se incluye el pathantiguo en el nuevo no se perderaacuten ninguno de los directorios que el sistema ya hayapreparado

Tambieacuten se puede controlar como aparece el prompt Esto se consigue mediante la variablede entorno PS1 Personalmente quiero un prompt que me indique el path del directorioactual asiacute es como lo hago en mi bashrc

export PS1=$PWD$

Como se puede ver en realidad se usan dos variables La que se activa es PS1 y toma elvalor de PWD que puede ser interpretada como Print Working Directory (imprime eldirectorio de trabajo) o Path to Working Directory(trayectoria al directorio detrabajo) Pero la evaluacioacuten de PWD tiene lugar entre apoacutestrofos agudos Estos apoacutestrofossirven para evaluar la expresioacuten en su interior la cual a su vez evaluacutea la variable PWDSi soacutelo hubieacuteramos hecho export PS1=$PWD nuestro prompt nos habriacutea mostradoconstantemente el path del directorio de trabajo en el momento en que PS1 fue activadaen lugar de actualizarse constantemente mientras cambiamos de directorios Bueno es unpoco confuso y no muy importante en realidad Soacutelo hay que tener en cuenta que senecesita esa clase de apoacutestrofos si se quiere mostrar el directorio actual en el prompt

Quizaacute se prefiera export PS1=$PWDgt o incluso el nombre del sistema

export PS1=`hostname`gt

Diseccionemos este ejemplo un poco maacutes Aquiacute se usa un nuevo tipo de literal elapoacutestrofo grave Esta clase de literal no protege nada de hecho hostname no apareceen ninguna parte del prompt cuando intentamos arrancarlo Lo que sucede realmente es quese evaluacutea el comando dentro de los apoacutestrofos graves y el resultado se guarda en lugardel nombre del comando entrecomillado

Probemos con echo `ls` o wc `ls` A medida que se consiga maacutes experiencia usando elshell esta teacutecnica se hace maacutes y maacutes potente

Hay mucho maacutes por comentar de como se configura el fichero bashrc y aquiacute no haybastante espacio para hacerlo Se puede aprender maacutes leyendo la paacutegina man de bash opreguntando a usuarios experimentados Aquiacute hay un bashrc completo para poderestudiarlo es razonablemente estaacutendar aunque el path es un poco largo

Algunas cosas al azar

ulimit shyc unlimited

export history_control=ignoredups

export PS1=$PWDgt

umask 022

paths especiacuteficos de aplicaciones

export MANPATH=usrlocalmanusrman

export INFOPATH=usrlocalinfo

export PGPPATH=$shyHOMEpgp

PATH principal

homepath=$shyHOME~bin

stdpath=binusrbinusrlocalbinusrucbetcusretcusrgames

pubpath=usrpublicbinusrgnusoftbinusrlocalcontribsbin

softpath=usrbinX11usrlocalbinX11usrTeXbin

export PATH=$shyhomepath$shystdpath$shypubpath$shysoftpath

Teacutecnicamente las llaves no eran necesarias porque los dos puntos son

delimitadores vaacutelidos pero las llaves son una buena costumbre

y no hacen dantildeo

alias

alias ls=ls shyCF

alias fg1=fg 1

alias fg2=fg 2

alias tba=talk sussmanternmcsanlgov

alias tko=talk koldcsoberlinedu

alias tji=talk jimbtotorobioindianaedu

alias mroe=more

alias moer=more

alias email=emacs shyf vm

alias pu=pushd

alias po=popd

alias b=~b

alias ds=dirs

alias ro=rm ~ rm ~

alias rd=rmdir

alias ll=ls shyl

alias la=ls shya

alias rr=rm shyr

alias md=mkdir

alias ed2=emacs shyd floss0 shyfg grey95 shybg grey50

function gco

shy

gcc shyo $1 $1c shyg

92 Los ficheros de inicio de X Window

Mucha gente prefiere trabajar dentro de un entorno graacutefico y para las maacutequinas bajo Unixeso suele significar usar X Si se estaacute acostumbrado al Macintosh o al Microsoft Windowspuede costar un poco acostumbrarse al sistema X Window especialmente al modo en que seconfigura

Con Macintosh o Microsoft Windows se personaliza el entorno desde dentro si se quierecambiar el fondo por ejemplo se pulsa con el ratoacuten sobre el nuevo color en alguacutenprograma graacutefico especial de configuracioacuten En X las opciones por defecto del sistema secontrolan mediante ficheros de texto que se editan directamente en otras palabras seescribe el nombre del color en un fichero para cambiar el color del fondo

No se puede negar que este meacutetodo no es tan llano como el de algunos sistemas de ventanascomerciales Creo que esta tendencia a permanecer basado en texto incluso en un entornograacutefico tiene mucho que ver con el hecho de que X fueacute creado por un puntildeado deprogramadores que simplemente no estaban tratando de escribir un software que pudieranusar sus abuelos Esta tendencia puede cambiar en futuras versiones de X (por lo menosasiacute lo espero3) pero por ahora hay que aprender como entenderse con unos cuantosficheros de texto maacutes Por lo menos nos da un control muy flexible y preciso de nuestraconfiguracioacuten

Aquiacute estaacuten los ficheros maacutes importantes para configurar X

xinitrc Un script arrancado por X cuando se inicia

twmrc Leido por el gestor de X Window twm

fvwmrc Leido por el gestor de X Window fvwm

Todos estos ficheros deberiacutean estar en el directorio $HOME si es que existen

xinitrc es una macro de shell muy simple que se ejecuta cuando invocamos a X Puedehacer cualquiera de las cosas que pueden hacer otras macros de shell pero por supuestosu uso principal es arrancar varios programas de X y establecer paraacutemetros del sistema deventanas El uacuteltimo comando en xinitrc es usualmente el nombre de un gestor de ventanasa ejecutar por ejemplo usrbinX11twm

iquestQueacute tipo de cosas nos gustariacutea poner en xinitrc Quizaacute algunas llamadas al programaxsetroot para hacer que la ventana de fondo (escritorio) y el ratoacuten tengan el aspectoque deseamos Llamadas a xmodmap que informa al servidor4 de como interpretar lassentildeales del teclado

_____________________________________________

3 N del T Yo tambieacuten shy)

4 El servidor soacutelo se refiere al proceso principal en la maacutequina con el que todos losdemaacutes programas de X tienen que comunicar para usar la pantalla Estos otros programas seconocen como clientes y todo el paquete se llama sistema clienteshyservidor

O cualquier otro programa que se quiera iniciar cada vez que se arranque X (por ejemploxclock) Aquiacute estaacute una parte de mi xinitrc el suyo seguramente seraacute distinto asiacute quehay que tomaacuterselo soacutelo como ejemplo

binsh

La primera liacutenea le dice al sistema operativo que shell usar para

interpretar esta macro La macro en siacute misma debe estar marcada como

ejecutable se puede hacer con chmod +x ~xinitrc

xmodmap es un programa que informa al servidor X de como interpretar las

sentildeales del teclado Es definitivamente aconsejable aprender como

funciona Se puede probar con man xmodmap xmodmap shyhelp

xmodmap shygrammar y otras opciones

No garantizo que las expresiones abajo escritas signifiquen nada en tu

sistema (ni siquiera garantizo que signifiquen algo en el miacuteo)

xmodmap shye clear Lock

xmodmap shye keycode 176 = Control_R

xmodmap shye add control = Control_R

xmodmap shye clear Mod2

xmodmap shye add Mod1 = Alt_L Alt_R

xset es un programa para establecer otros paraacutemetros del servidor X

xset m 3 2 amp paraacutemetros del ratoacuten

xset s 600 5 amp preferencias del salvapantallas

xset s noblank amp lo mismo

xset fp+ homelarryxfonts para cxterm

Para aprender maacutes xset shyhelp

Ordena al servidor X que sobreponga fishcursor sobre fishmask y use

el patroacuten resultante como cursor del ratoacuten

xsetroot shycursor homelablarryxfishcursor homelablarryxfishmask amp

Un placentero patroacuten y color de fondo

xsetroot shybitmap homelablarryxpyramidxbm shybg tan

para hacer xrdb aquiacute Y que hay del fichero Xdefaults

Hay que mirar man xsetroot o xsetroot shyhelp para maacutes

informacioacuten sobre el programa usado arriba

Un programa cliente el imponente reloj circular de color de Jim Blandy

usrlocalbincircles amp

Quizaacute os gustariacutea tener un reloj en la pantalla a todas horas

usrbinX11xclock shydigital amp

Permite a programas cliente de X ejecutaacutendose en occscsoberlinedu

mostrarse a siacute mismos aquiacute y lo mismo para jujumcsanlgov

xhost occscsoberlinedu

xhost jujumcsanlgov

Se puede simplemente decirle al servidor X que permita usar aquiacute

a clientes que esteacuten ejecutaacutendose en cualquier otra maacutequina

pero esto es un agujero en la seguridad shyshy ltestos clientes pueden ser

usados por cualquier otro que puede vigilar lo que se teclea cuando se

entra una contrasentildea o algo asiacute

Si se quiere hacerlo de todos modos se puede usar un + para indicar

cualquier nombre de host posible en lugar de un nombre especiacutefico

asiacute

xhost +

Y finalmente arrancar el gestor de ventanas

usrbinX11twm

Alguna gente prefiere otros gestores de ventanas Yo uso twm pero fvwm se

distribuye tambieacuten muchas veces con Linux

usrbinX11fvwm

Noacutetese que algunos comandos son iniciados en segundo plano (pej los que van seguidosde amp) mientras que otros no lo son La distincioacuten estaacute en que algunos programas seiniciaraacuten cuando arranquemos X y seguiraacuten en marcha hasta que salgamos Los otros seejecutan una vez y se cierran inmediatamente xsetroot es uno de eacutestos soacutelo establece laventana principal o el cursor a lo que sea y luego se cierra

Una vez que el gestor de ventanas ha arrancado leeraacute su propio fichero de inicio quecontrola cosas como la composicioacuten de los menuacutes en queacute posiciones se presentan lasventanas cuando se abren control de iconos y otros asuntos terriblemente importantesSi se usa twm el fichero es twmrc en nuestro directorio home Si se usa fvwm elfichero es fvwmrc etc Explicaremos soacutelo estos dos ya que son los gestores de ventanasque maacutes frecuentemente se encontraraacuten con Linux

921 Configuracioacuten de twm

twmrc no es una macro de shell_estaacute escrito en un lenguaje especialmente hecho para twmiexclcreacutealo o no5 Principalmente a la gente en su twmrc le gusta jugar con los estilos dela ventana (colores y demaacutes) y hacer interesantes menuacutes asiacute que ahiacute va un twmrc deejemplo

Indica colores para varias partes de una ventanas Tiene un gran impacto

en la sensacioacuten que transmite el entorno

Color

shy

BorderColor OrangeRed

BorderTileForeground Black

BorderTileBackground Black

TitleForeground black

TitleBackground gold

MenuForeground black

MenuBackground LightGrey

MenuTitleForeground LightGrey

MenuTitleBackground LightSlateGrey

MenuShadowColor black

IconForeground DimGray

IconBackground Gold

IconBorderColor OrangeRed

IconManagerForeground black

IconManagerBackground honeydew

Espero que no tengas un sistema monocromo pero si lo tienes

Monochrome

shy

BorderColor black

BorderTileForeground black

BorderTileBackground white

TitleForeground black

TitleBackground white

He creado beifangbmp con el programa bitmap Aquiacute le digo a twm

que lo use como el patroacuten por defecto para destacar las barras de

tiacutetulo de las ventanas

Pixmaps

shy

TitleHighlight homelarryxbeifangbmp

No os preocupeacuteis por estas cosas son soacutelo para usuarios avanzados shy)

BorderWidth 2

TitleFont shyadobeshynew century schoolbookshyboldshyrshynormalshyshy14shy140shy75shy75shypshy87shyiso8859shy1

MenuFont 6x13

IconFont lucidasansshyitalicshy14

ResizeFont fixed

Zoom 50

RandomPlacement

Estos programas no tendraacuten una barra de tiacutetulo por defecto

NoTitle

shy

stamp

xload

xclock

xlogo

xbiff

xeyes

oclock

xoid

AutoRaise significa que una ventana aparece al frente cuando el ratoacuten

entra en ella Lo encuentro desconcertante asiacute que lo he desactivado

Como puedes ver he heredado mi twmrc de otra gente a quien tampoco le

gustaba Autoraise

AutoRaise

shy

nothing No me gusta autoshyraise Ni a mi A mi tampoco

Aquiacute es donde se define la funcioacuten de los botones del mouse

Noacutetese el patroacuten Un botoacuten del ratoacuten pulsado en la ventana

principal si no se estaacute pulsando ninguna tecla modificadora siempre

hace aparecer un menuacute Otras posiciones usualmente producen

modificaciones de la ventana en alguacuten modo y las teclas modificadoras

se usan junto con los botones del ratoacuten para acceder a las funciones

maacutes avanzadas de manipulacioacuten de ventanas

No hay porqueacute seguir este patroacuten en twmrc shyshy el coacutemo

establecer el entorno es un asunto totalmente personal

Button = KEYS CONTEXT FUNCTION

shyshyshyshyshyshyshyshyshyshyshyshyshyshyshyshyshyshyshyshyshyshyshyshyshyshyshyshyshyshyshyshyshyshy

Button1 = root fmenu main

Button1 = title fraise

Button1 = frame fraise

Button1 = icon ficonify

Button1 = m window ficonify

Button2 = root fmenu stuff

Button2 = icon fmove

Button2 = m window fmove

Button2 = title fmove

Button2 = frame fmove

Button2 = s frame fzoom

Button2 = s window fzoom

Button3 = root fmenu x

Button3 = title flower

Button3 = frame flower

Button3 = icon fraiselower

Puedes escribir tus propias funciones esta se usa en el menuacute

windowops cerca del final de este fichero

Function raiseshynshyfocus

shy

fraise

ffocus

Muy bien abajo estaacuten los menuacutes a los que me referiacutea en la

seccioacuten de los botones del ratoacuten Noacutetese que muchas de estas

entradas de menuacute llaman a submenuacutes a su vez Se pueden tener tantos

niveles como se quiera pero no se pueden tener menuacutes recursivos Ya

lo he probado

menu main

shy

Vanilla ftitle

Emacs fmenu emacs

Logins fmenu logins

Xlock fmenu xlock

Misc fmenu misc

Esto me permite llamar a emacs desde varias maacutequinas diferentes Ver

la seccioacuten sobre ficheros rhosts para maacutes informacioacuten sobre

como funciona

menu emacs

shy

Emacs ftitle

here usrbinemacs amp

fnop

phylo rsh phylo emacs shyd floss0 amp

geta rsh geta emacs shyd floss0 amp

darwin rsh darwin emacs shyd floss0 amp

ninja rsh ninja emacs shyd floss0 amp

indy rsh indy emacs shyd floss0 amp

oberlin rsh csoberlinedu emacs shyd flosslifeuiucedu0 amp

gnu rsh gateshy1gnuaimitedu emacs shyd flosslifeuiucedu0 amp

Esto me permite llamar a xterms desde varias maacutequinas diferentes Ver

la seccioacuten sobre ficheros rhosts para maacutes informacioacuten sobre

como funciona

menu logins

shy

Logins ftitle

here usrbinX11xterm shyls shyT `hostname` shyn `hostname` amp

phylo rsh phylo xterm shyls shydisplay floss0 shyT phylo amp

geta rsh geta xterm shyls shydisplay floss0 shyT geta amp

darwin rsh darwin xterm shyls shydisplay floss0 shyT darwin amp

ninja rsh ninja xterm shyls shydisplay floss0 shyT ninja amp

indy rsh indy xterm shyls shydisplay floss0 shyT indy amp

El salvapantallas xlock llamado con varias opciones (cada una de

ellas da una bonita imagen)

menu xlock

shy

Hop xlock shymode hop amp

Qix xlock shymode qix amp

Flame xlock shymode flame amp

Worm xlock shymode worm amp

Swarm xlock shymode swarm amp

Hop NL xlock shymode hop shynolock amp

Qix NL xlock shymode qix shynolock amp

Flame NL xlock shymode flame shynolock amp

Worm NL xlock shymode worm shynolock amp

Swarm NL xlock shymode swarm shynolock amp

Programas de todo tipo que uso ocasionalmente

menu misc

shy

Xload usrbinX11xload amp

XV usrbinX11xv amp

Bitmap usrbinX11bitmap amp

Tetris usrbinX11xtetris amp

Hextris usrbinX11xhextris amp

XRoach usrbinX11xroach amp

Analog Clock usrbinX11xclock shyanalog amp

Digital Clock usrbinX11xclock shydigital amp

Esto es para lo que uso el botoacuten central del ratoacuten

menu stuff

shy

Chores ftitle

Sync binsync

Who who _ xmessage shyfile shy shycolumns 80 shylines 24 amp

Xhost + usrbinX11xhost + amp

Rootclear homelarrybinrootclear amp

Funciones de X que a veces conviene usar

menu x

shy

X Stuff ftitle

Xhost + xhost + amp

Refresh frefresh

Source twmrc ftwmrc

(De)Iconify ficonify

Move Window fmove

Resize Window fresize

Destroy Window fdestroy

Window Ops fmenu windowops

fnop

Kill twm fquit

Este es un submenuacute del de arriba

menu windowops

shy

Window Ops ftitle

Show Icon Mgr fshowiconmgr

Hide Icon Mgr fhideiconmgr

Refresh frefresh

Refresh Window fwinrefresh

twm version fversion

Focus on Root funfocus

Source twmrc ftwmrc

Cut File fcutfile

(De)Iconify ficonify

DeIconify fdeiconify

Move Window fmove

ForceMove Window fforcemove

Resize Window fresize

Raise Window fraise

Lower Window flower

Raise or Lower fraiselower

Focus on Window ffocus

RaiseshynshyFocus ffunction raiseshynshyfocus

Destroy Window fdestroy

Kill twm fquit

_____________________________________________

5 Eacuteste es uno de los problemas de los ficheros de configuracioacuten normalmente usan supropio lenguaje de comandos Esto significa que los usuarios se vuelven muy buenos a lahora de aprender lenguajes nuevos raacutepidamente Supongo que habriacutea estado bien que losprimeros programadores de Unix se hubieran puesto de acuerdo en alguacuten estaacutendar de ficherode inicio pero para ser justo es difiacutecil de predecir que tipo de informacionesnecesitaraacuten los programas

iexclGuau Creedme este no es el twmrc maacutes largo que he llegado a ver Es probable que convuestra versioacuten de X vinieran algunos ejemplos de archivos twmrc bastante decentes Sepueden buscar dentro del directorio usrlibX11twm o en usrX11libX11twm

Un defecto de programa que hay que vigilar en los ficheros twmrc es no olvidarse deponer el amp despueacutes de un comando en un menuacute Si se nota que X se cuelga cuando se usanciertos comandos lo maacutes probable es que eacutesta sea la causa Hay que salir de X con|_Ctrl_|shy|_Alt_|shy|_Retroceso_| editar twmrc y probar otra vez

922 Configuracioacuten de fvwm

Si se usa fvwm el directorio usrlibX11fvwm (o usrX11libX11fvwm) tiene algunosejemplos de ficheros de configuracioacuten

[Compantildeeros No seacute nada sobre fvwm aunque supongo que sacareacute algo en claro de losficheros de ejemplo igual que el lector shy) Ademaacutes dado el pequentildeo pero decentesystemtwmrc en el directorio arriba mencionado me pregunto si vale la pena que de estelargo ejemplo con mi propio twmrc De momento estaacute aquiacute pero no seacute si lo dejaremos onoshyKarl]

93 Otros ficheros de inicio

Otros ficheros de inicio dignos de mencioacuten son

emacs Leiacutedo por el editor de texto Emacs cuando arranca

netrc Da los nombres y contrasentildeas por defecto para ftp

rhosts Hace una cuenta accesible remotamente

forward Para redireccioacuten automaacutetica del correo

931 El fichero de configuracioacuten de Emacs

Si se usa emacs como editor principal entonces el fichero emacs es muy importante Sediscute con extensioacuten en el Capiacutetulo 8

932 Configuracioacuten por defecto del FTP

El fichero netrc permite tener ciertas configuraciones por defecto cada vez que searranca ftp Aquiacute hay un pequentildeo netrc de ejemplo

machine flosslifeuiucedu login larry password fishSticks

machine darwinlifeuiucedu login larry password fishSticks

machine getalifeuiucedu login larry password fishSticks

machine phylolifeuiucedu login larry password fishSticks

machine ninjalifeuiucedu login larry password fishSticks

machine indylifeuiucedu login larry password fishSticks

machine clonemcsanlgov login fogel password doorm

machine ospreymcsanlgov login fogel password doorm

machine ternmcsanlgov login fogel password doorm

machine altairmcsanlgov login fogel password doorm

machine dalekmcsanlgov login fogel password doorm

machine jujumcsanlgov login fogel password doorm

machine sunsiteuncedu login anonymous password larrycsoberlinedu

Cada liacutenea de netrc especifica un nombre de maacutequina un nombre de cuenta de acceso ausar por defecto con esa maacutequina y una contrasentildea Esto es muy uacutetil si se usa ftpcontinuamente y se estaacute harto de teclear el nombre de acceso y la contrasentildea en cada unoEl programa de ftp intentaraacute acceder automaacuteticamente usando los datos del fichero netrcsi se hace ftp a una de las maacutequinas listadas alliacute

Se puede obligar a ftp a ignorar el fichero netrc y no intentar acceder de maneraautomaacutetica arrancaacutendolo con la opcioacuten shyn ftp shyn

Hay que asegurarse de que el fichero netrc soacutelo es legible por el usuario Se puede usarel programa chmod para establecer los permisos de lectura Si otra gente puede leerlosignifica que pueden encontrar su contrasentildea de acceso a varios otros ordenadores Estoes un agujero en la seguridad tan grande como uno pueda tenerlo Como recomendacioacuten paraser cuidadoso ftp y otros programas que miran el fichero netrc no funcionaraacuten si lospermisos de lectura del fichero son incorrectos

Hay mucho maacutes sobre el fichero netrc de lo que se ha explicado aquiacute Cuando se tenga unaoportunidad hay que probar man netrc o man ftp

933 Permitiendo un acceso remoto sencillo a su cuenta

Si tiene un fichero rhosts en su directorio $HOME le permitiraacute usar programas en estamaacutequina de forma remota Por ejemplo se puede estar registrado en la maacutequinacsoberlinedu pero con un rhosts correctamente configurado en flosslifeuiucedu sepuede usar un programa en floss y presentar el resultado en cs sin tener que registrarseo teclear una contrasentildea frente a floss

El archivo rhosts se ve maacutes o menos asiacute

frobnozzcsknowledgeedu jsmith

aphroditeclassicshahvaahdedu wphilps

frobbohoolacom trixie

El formato es muy directo un nombre de maacutequina seguido de un nombre de usuarioSupongamos que este ejemplo es en realidad mi archivo rhosts en flosslifeuiuceduEsto significariacutea que puedo usar programas en floss y ver el resultado en cualquiera delas maacutequinas listadas siempre y cuando yo esteacute tambieacuten registrado como el usuariocorrespondiente a cada maacutequina cuando intento ejecutar el programa

El mecanismo exacto con el que uno usa un programa remoto es normalmente el programa rshSignifica remote shell(shell remoto) y lo que hace es iniciar un shell en la maacutequinaremota y ejecutar el comando especificado Por ejemplo

frobbo$ whoami

trixie

frobbo$ rsh flosslifeuiucedu ls ~

footxt mbox urlps snaxtxt

frobbo$ rsh flosslifeuiucedu more ~snaxtxt

[snaxtxt aparece pagina a pagina aqui]

El usuario trixie en flosslifeuiucedu que teniacutea el fichero rhosts de ejemplomostrado antes permite expliacutecitamente a trixie en frobbohoolacom usar programascomo si fuera trixie de floss

No hay porqueacute tener el mismo nombre de usuario en todas las maacutequinas para que rhostsfuncione Se puede usar la opcioacuten shyl con rsh para especificar a la maacutequina remota cualnombre de usuario se quiere usar para registrarse Si ese nombre existe en la maacutequinaremota y tiene un fichero rhosts con el nombre de la maacutequina local y el nombre deusuario correspondiente entonces la orden incluida con rsh se ejecutaraacute

frobbo$ whoami

trixie

frobbo$ rsh shyl larry flosslifeuiucedu ls ~

[Inserta aqui un listado de mi directorio en floss]

Esto funcionaraacute si el usuario larry en flosslifeuiucedu tiene un fichero rhostsque permite a trixie de frobbohooplacom usar programas en su cuenta Si son o no lamisma persona es irrelevante la uacutenica cosa importante son los nombres de usuario losnombres de las maacutequinas y la fila referente a floss en el rhosts de Larry Noacutetese queel fichero rhosts de Trixie en frobbo no importa soacutelo cuenta el de la maacutequina remota

Hay otras combinaciones que se pueden poner en un fichero rhosts por ejemplo se puededejar en blanco el nombre de usuario detraacutes del nombre de una maacutequina remota parapermitir a cualquier usuario de esa maacutequina que ejecute programas en la maacutequina localEsto es por supuesto un riesgo en la seguridad alguien podriacutea ejecutar remotamente unprograma que borre mis archivos por el simple hecho de tener una cuenta en ciertamaacutequina Si se va a hacer cosas como esta entonces hay que asegurarse de que el ficherorhosts es legible soacutelo por el usuario implicado y por nadie maacutes

934 Redireccioacuten de correo

Tambieacuten se puede tener un fichero forward el cual no es un fichero de configuracioacutenestrictamente hablando Si contiene direcciones de eshymail entonces todo el correo quellegue al usuario se redirigiraacute a esas direcciones Esto es uacutetil cuando se tienen cuentasen varios sistemas pero se quiere leer el correo desde un solo sitio

Hay una gran cantidad de otros ficheros de configuracioacuten posibles La cantidad exactavariaraacute de sistema a sistema y depende de los programas instalados Una manera de sabermaacutes es mirar todos los archivos en el directorio $HOME que empiecen por No es seguroque todos sean ficheros de configuracioacuten pero seguro que la mayoriacutea siacute lo es

94 Veamos algunos ejemplos

El ejemplo definitivo que puedo dar es mostrar un sistema Linux en funcionamiento Asiacuteque si teneacuteis acceso a Internet estaacuteis invitados a hacer telnet a flosslifeuiuceduRegistraacuteos como guest contrasentildea explorer y husmead por dentro Muchos de losarchivos de ejemplo se pueden encontrar en homekfogel pero tambieacuten hay otrosdirectorios de usuarios Sois libres de copiar cualquier cosa que se pueda leer Porfavor tened cuidado floss no es un sitio terriblemente seguro y ciertamente se puedeconseguir acceso como root si uno lo intenta lo suficiente Prefiero creer en laconfianza maacutes que en la vigilancia constante para mantener la seguridad

Capiacutetulo 10

Hablando con los demaacutes

Una nocioacuten fundamental de Usenet es que es una cooperativa

Cuando ya van para diez los antildeos que llevo en Usenet discrepo con loanterior La nocioacuten fundamental de Usenet es el insulto airado

Chuq Von Rospach

Los modernos sistemas operativos tipo Unix son muy buenos a la hora de hablar con otrasmaacutequinas y funcionar en red Dos maacutequinas Unix diferentes pueden intercambiar informacioacutende muchas muchas maneras distintas Este capiacutetulo va a intentar contar coacutemo se puedesacar provecho de esta gran facilidad para la comunicacioacuten

Trataremos de cubrir el correo electroacutenico las noticias de Usenet y diversas utilidadesbaacutesicas de comunicaciones de Unix

101 Correo electroacutenico

Una de las facilidades maacutes populares que ofrece Unix de forma estaacutendar es el correoelectroacutenico

Con eacutel evitamos el habitual folloacuten de buscar un sobre una hoja de papel un laacutepiz unsello y un servicio postal A cambio debemos enfrentarnos al folloacuten de pelear con elordenador

1011 Enviar correo

Todo lo que hay que hacer es teclear mail nombre y escribir el mensaje

Por ejemplo supongamos que queremos enviar correo a un usuario que se llama sam

homelarry$ mail sam

Subject Documentacion del usuario

Solo estoy probando el sistema de correo

[Ctrlshyd]

homelarry$

homelarry$

El programa mail es muy simple Como cat acepta texto de la entrada estaacutendar liacutenea aliacutenea hasta que recibe un caraacutecter de finshydeshytexto como uacutenico caraacutecter en una liacutenea|_Ctrlshyd_| Asiacute para enviar nuestro mensaje tuvimos que pulsar |_Intro_| y despueacutes|_Ctrlshyd_| Usar mail es la manera maacutes raacutepida de mandar correo y es bastante uacutetil cuandose usa con redireccioacuten de entrada yo salida Por ejemplo si quisieacuteramos enviar porcorreo electroacutenico el fichero report1 a Sam podriacuteamos escribir mail sam lt report1 o incluso sort report1 _ mail sam

Sin embargo la desventaja de usar mail para enviar correo es su primitiviacutesimo editoriexclNo se puede cambiar ni una liacutenea una vez se ha pulsado |_Intro_| Asiacute que yo recomiendomandar correo (cuando no se use redireccioacuten) con el modo mail del Emacs El tema se trataen la Seccioacuten 810

1012 Leer el correo

shy mail [nombre]

El programa mail ofrece una forma algo liosa de leer el correo Si se teclea mail sinparaacutemetros apareceraacute lo siguiente

homelarry$ mail

No mail for larry

homelarry$

No mail for larry significa No hay correo para larry

Me voy a enviar correo a miacute mismo para poder utilizar el lector

homelarry$ mail larry

Subject Sapos

Y ranas

EOT

homelarry$ echo culebras _ mail larry

homelarry$ mail

Mail version 55 6190 Type for help

usrspoolmaillarry 2 messages 2 new

gtN 1 larry Tue Aug 30 1811 10211 Sapos

N 2 larry Tue Aug 30 1812 9191

amp

El siacutembolo peticioacuten de oacuterdenes del programa mail es un et a la inglesa (amp) Acepta unpar de oacuterdenes sencillas y muestra una breve pantalla de ayuda si se pulsa seguidode |_Intro_| Las oacuterdenes baacutesicas de mail son

t listashydeshymensajes Mostrar los mensajes en la pantalla

d listashydeshymensajes Borrar los mensajes

s listashydeshymensajes fichero Guardar los mensajes en fichero

r listashydeshymensajes Responder a los mensajes_esto es comenzar a escribir unnuevo mensaje dirigido a quien fuera que envioacute los mensajes referidos

q Salir y guardar los mensajes que no hayan sido borrados en un ficherollamado mbox en el directorio raiacutez del usuario

iquestQueacute es una listashydeshymensajes Consiste en una lista de nuacutemeros separados por espacios oincluso un rango de los mismos como 2shy4 (lo que es equivalente a 2 3 4) Asiacute mismo sepuede introducir el nombre del remitente de este modo la orden t sam mostraraacute todos losmensajes provenientes de Sam Si se omite la listashydeshymensajes se supone que la orden serefiere al uacuteltimo mensaje mostrado

Leer el correo con el programa mail presenta varios inconvenientes El primero es que siun mensaje es maacutes largo que la pantalla iexclel programa mail no se detiene Habraacute queguardar el mensaje en un fichero y usar more sobre eacutel despueacutes El segundo es que noofrece una buena interfaz para manejar el correo antiguo cuando se quiere guardar elcorreo para leerlo maacutes tarde

Emacs tambieacuten permite leer el correo con rmail pero este libro no lo cubreAdicionalmente la mayoriacutea de los sistemas Linux vienen con algunos lectores de correoadicionales ademaacutes de mail como elm o pine

102 Noticias maacutes que de sobra

103 Localizar a la gente

El programa finger permite obtener informacioacuten de otros usuarios del sistema y de todo elmundo Sin duda el programa finger recibioacute este nombre por los anuncios de la ATampT queexhortaban a la gente a salir y tocar a alguien Dado que el Unix tiene sus oriacutegenes enla ATampT probablemente eso le hiciera gracia al autor

shy finger [shyslpm] [usuario][maquina]

Los paraacutemetros opcionales de finger pueden resultar algo liosos La verdad es que no estan difiacutecil Se puede solicitar informacioacuten de un usuario local (sam) informacioacuten deotra maacutequina (lionsden) informacioacuten sobre un usuario remoto (samlionsden) osimplemente informacioacuten sobre la maacutequina local (nada)

Otra caracteriacutestica es que si se pide informacioacuten sobre un usuario y no hay ninguacuten nombrede cuenta que coincida exactamente con el dado trataraacute de emparejar el nombre real conlo que se haya especificado Eso significa que si ejecutamos finger Greenfield noscontestaraacute que existe la cuenta sam de Sam Greenfield

homelarry$ finger sam

Login sam Name Sam Greenfield

Directory homesam Shell bintcsh

Last login Sun Dec 25 1447 (EST) on tty2

No Plan

homelarry$ finger greenfiegaussrutgersedu

[gaussrutgersedu]

Login name greenfie In real life Greenfie

Directory gaussu1greenfie Shell bintcsh

On since Dec 25 151941 on ttyp0 from tiptopshyslipshy6439

13 minutes Idle Time

No unread mail

Project Debes estar bromeando de que proyecto me hablas

No Plan

homelarry$ finger

Login Name Tty Idle Login Time Office Office Phone

larry Larry Greenfield 1 351 Dec 25 1250

larry Larry Greenfield p0 Dec 25 1251

homelarry$

La opcioacuten shys hace que finger utilice siempre la forma abreviada (la que se obtienenormalmente cuando se hace finger a una maacutequina) y la opcioacuten shyl hace que use siemprela forma larga incluso al hacer finger a una maacutequina La opcioacuten shyp hace que finger nomuestre los ficheros forward plan ni project y la shym hace que cuando se hapedido informacioacuten sobre un usuario soacutelo de informacioacuten de un nombre de cuenta que nointente emparejar el nombre que se le da con un nombre real

1031 Planes y proyectos

Pero iquestqueacute es eso de plan y project Son ficheros que existen en el directorio raiacutez deun usuario y que se muestran cuando se le hace finger Cada uno puede crear sus propiosficheros plan y project la uacutenica restriccioacuten es que soacutelo se muestra la primera liacuteneadel fichero project Ademaacutes todo el mundo debe tener permisos de buacutesqueda (la x deejecucioacuten) del directorio raiacutez del usuario en cuestioacuten (chmod a+x ~) y debe serposible para todo el mundo leer los ficheros plan y project (chmod a+r ~plan~project )

104 Uso remoto de sistemas

shy telnet sistemashyremoto

La forma maacutes habitual de usar un sistema Unix remoto es con telnet telnet es normalmenteun programa muy sencillo de usar

homelarry$ telnet lionsden

Trying 12823641

Connected to lionsden

Escape character is ^]

lionsden login

Como puede verse despues de teclear telnet se nos presenta un mensaje de acceso alsistema remoto Podemos introducir cualquier nombre de usuario (iexclsiempre que conozcamosla contrasentildea) y despueacutes usar el sistema remoto casi como si estuvieacuteramos sentados alliacute

La manera normal de salir de telnet es hacer logout en el sistema remoto Otra forma estecleando la secuencia de escape que (como en el ejemplo de arriba) es habitualmente||_Ctrlshy]_||

Esto nos presenta un nuevo siacutembolo del peticioacuten de oacuterdenes telnetgt Entonces podemosteclear quit y |_Intro_| y la conexioacuten con el otro sistema seraacute cerrada y el programatelnet finalizaraacute (Si cambiaacuteramos de idea simplemente pulsando |_Intro_| volveriacuteamos alsistema remoto)

Si se estaacuten usando las X se puede crear un nuevo xterm para el otro sistema al queestamos saltando Con la orden xterm shytitle lionsden shye telnet lionsden amp crearemosuna nueva ventana xterm que automaacuteticamente ejecute telnet (Si eso se hace confrecuencia probablemente seraacute deseable crear un alias o un programa de shell que lo hagaautomaacuteticamente)

105 Intercambio de ficheros

shy ftp sistemashyremoto

La manera usual de intercambiar ficheros entre sistemas Unix es ftp acroacutenimo queproviene de file transfer protocol (protocolo de transferencia de ficheros) Trasejecutar la orden ftp se nos pediraacute que nos identifiquemos de forma muy parecida a contelnet Despueacutes de hacerlo aparece un siacutembolo de peticioacuten de oacuterdenes especial el siacutemboloftp

La orden cd funciona de la manera habitual pero en el sistema remoto cambia dedirectorio en el otro sistema De la misma forma la orden ls lista los ficheros en elsistema remoto

Las dos oacuterdenes maacutes importantes son get y put get transfiere un fichero del sistemaremoto al local y put lleva un fichero del sistema local al remoto Ambas oacuterdenes tienenefecto en el directorio local en el que se haya arrancado ftp y en el directorio remotoen el que se esteacute en ese momento (que se puede haber cambiado con la orden cd )

Un problema habitual con ftp es la distincioacuten entre ficheros de texto y binarios ftp esun protocolo muy antiguo y antes teniacutea ventajas suponer que los ficheros que setransferiacutean eran de texto El comportamiento por omisioacuten de algunas versiones de ftp eseacutese lo que significa que los programas que se enviacuteen o reciban se corromperaacuten Porseguridad conviene usar la orden binary antes de empezar a transferir ficheros

Para salir de ftp se usa la orden bye

106 Viajando por la telarantildea

La Telarantildea Mundial (World Wide Web) o WWW es un uso muy popular de la InternetConsiste en un conjunto de paacuteginas cada una con su propia URL_Localizador Uniforme deRecursos asociado

Los URLs son simpaacuteticas secuencias de caracteres de la forma lthttpwwwrutgersedugtLas paacuteginas estaacuten por lo general escritas en HTML (Lenguaje de Composicioacuten deHipertexto) El HTML permite al autor de un documento enlazar ciertas palabras frases oimaacutegenes con otros documentos que se hallen en cualquier lugar de la telarantildea Cuando unusuario lee un documento puede moverse raacutepidamente a otro picando en una palabra clave oen un botoacuten y se le mostraraacute el otro documento en cuestioacuten que posiblemente esteacute a milesde kiloacutemetros del primero

shy netscape [url]

El navegador maacutes popular de Linux es netscape se trata de un navegador comercial quevende (y regala) Netscape Communications Corporation netscape soacutelo funciona con las X

netscape trata de ser tan faacutecil de usar como sea posible y utiliza el conjunto de widgetsMotif para lograr una apariencia muy a lo Microsoft Windows El conocimiento baacutesico parapoder usar netscape es que las palabras azules subrayadas son enlaces asiacute como muchas delas imaacutegenes (Se puede averiguar cuales imaacutegenes son enlaces picando en ellas) Picandoen esas palabras con el botoacuten izquierdo del ratoacuten aparece una nueva paacutegina

Linux soporta muchos navegadores maacutes incluyendo el navegador original lynx lynx es unnavegador orientado a texto_no muestra ninguna imagen que es con lo que actualmente serelaciona al Web pero funciona sin las X

shy lynx [url]

Es un poco maacutes complicado aprender a usar lynx pero normalmente se le coge el trucodespueacutes de jugar un rato con las flechas del cursor Las flechas hacia arriba y haciaabajo nos mueven entre los enlaces de una paacutegina La flecha hacia la derecha sigue elenlace seleccionado (resaltado) La flecha hacia la izquierda vuelve a la paacuteginaanterior Para salir de lynx se debe pulsar |_q_| lynx tiene muchas oacuterdenes maacutesconsuacuteltese la paacutegina del manual

Capiacutetulo 11

Comandos divertidos

Bueno la mayoriacutea de la gente que tiene que ver con los comandos de UNIX expuestos eneste capiacutetulo no estaraacuten de acuerdo con este tiacutetulo iexclQue diablos Se me ha ensentildeado queel interfaz del Linux es muy estaacutendar y ahora tenemos un grupo de comandos cada unotrabajando de una manera completamente diferente Nunca recordareacute todas esas opciones iquestydice que son divertidos

Siacute Vd ha visto un ejemplo del humor de los hackers1 Ademaacutes miacuterelo desde el ladopositivo no hay comandos del MSshyDOS equivalentes a eacutestos Si los necesita tiene queadquirirlos por separado y nunca sabraacute como seraacute su interfaz Aquiacute hay un uacutetil (yeconoacutemico) valor antildeadido iexcliexclasiacute que disfruacutetelo

El conjunto de comandos explicados en este capiacutetulo cubre find que permite al usuariobuscar grupos de ficheros especificados dentro del aacuterbol de directorios tar uacutetil paraempaquetar alguacuten archivo para ser enviado o soacutelo salvado dd el multicopista de bajonivel y sort el cual siacute clasifica ficheros Una uacuteltima condicioacuten estos comandosno estaacuten bajo ninguacuten concepto estandarizados y si bien podriacuteamos encontrar un nuacutecleo deopciones comunes en todos los sistemas IX las versiones (de GNU) que se explican maacutesabajo y Vd puede encontrar en su sistema Linux usualmente poseen muchas maacutescapacidades Por tanto si Vd planea usar otros sistemas operativos UNIX por favor noolvide comprobar la paacutegina del manual del sistema en cuestioacuten para aprender las quizaacutes notan pequentildeas diferencias

111 find el buscador de ficheros

1111 Generalidades

Entre los diversos comandos vistos hasta aquiacute habiacutea algunos que permitiacutean al usuariobajar recursivamente el aacuterbol del directorio para llevar a cabo alguna accioacuten losejemplos canoacutenicos son ls shyR y rm shyR Bien find es el comando recursivo Cada vezque piense Bueno tengo que hacer tal cosa con todos esos ficheros en mi propiaparticioacuten hariacutea mejor en pensar en usar find En cierto sentido el hecho que findencuentre ficheros es solo un efecto secundario su ocupacioacuten real es evaluar

_____________________________________________

1 NT La palabra Hacker en este contexto se refiere a una persona con profundosconocimientos de informaacutetica

La estructura baacutesica del comando es como sigue

shy find ruta [ ] expresioacuten [ ]

Esto es al menos en la versioacuten de GNU otras versiones no permiten especificar maacutes queuna ruta y ademaacutes es muy infrecuente la necesidad de hacer tal cosa La explicacioacutenburda de la sintaxis del comando es bastante simple Vd indica desde doacutende quiereempezar la buacutesqueda (la parte de la ruta con el find de GNU puede omitir esto y seraacute

tomado por defecto el directorio en uso ) y que clase de buacutesqueda quiere realizar (laparte de la expresioacuten)

El comportamiento estaacutendar del comando es un poco engantildeoso por lo que maacutes vale tenerloen cuenta Supongamos que en su directorio principal de usuario existe un directoriollamado basura el cual contiene un fichero foobar Vd felizmente escribe find shynamefoobar (lo que como puede adivinar busca ficheros llamados foobar) y obtiene nadamaacutes que otra vez el prompt El problema reside en el hecho de que find es por defecto uncomando silencioso soacutelo devuelve 0 si la buacutesqueda fue completada (con o sin haberencontrado algo) o un valor distinto de cero si hubiera habido alguacuten problema Esto noocurre con la versioacuten que Vd puede encontrar en el Linux pero de todas maneras es uacutetilrecordarlo

1112 Expresiones

La parte de la expresioacuten puede ser dividida en cuatro grupos diferentes de palabrasclave opciones tests acciones y operadores Cada uno de ellos puede devolver un valorverdaderofalso junto con un efecto secundario La diferencia entre los grupos semuestra a continuacioacuten

opciones afecta a la funcioacuten general de find maacutes que al procesamiento de un solofichero Un ejemplo es shyfollow el cual instruye a find para seguir enlaces simboacutelicosen vez de soacutelo presentar el nodoshyi Siempre devuelven verdadero

tests son verdaderos tests (por ejemplo shyempty comprueba si el fichero estaacute vaciacuteo) ypuede devolver verdadero o falso

acciones tienen tambieacuten un efecto secundario sobre el nombre del fichero consideradoPueden asimismo devolver verdadero o falso

operadores no devuelven realmente un valor (convencionalmente pueden ser consideradoscomo verdaderos) y se usan para construir expresiones sinteacuteticas Un ejemplo es shyor el cual hace la OR loacutegica de las dos subexpresiones a su lado Note que cuando seyuxtaponen expresiones estaacute involucrada una shyand

Debe advertir que find depende del inteacuterprete de comandos para tener la liacutenea de comandosanalizada sintaacutecticamente esto significa que todas las palabras clave deben serintroducidas entre espacios en blanco y ademaacutes que hay un montoacuten de caracteres bonitosque deberaacuten precederse de escape si no seriacutean destrozados por el propio inteacuterprete decomandos Cada viacutea de escape (barra invertida simples y dobles comillas) estaacute bien enlos ejemplos las palabras clave de un solo caraacutecter se sentildealizaraacuten en general mediantecon una barra invertida porque es la manera maacutes simple (al menos en mi opinioacuten iexclY soyyo quien estaacute escribiendo estas notas)

1113 Opciones

Aquiacute estaacute la lista de todas las opciones conocidas de la versioacuten GNU de find Recuerdeque siempre devuelven verdadero

shydaystart mide el tiempo transcurrido no desde hace 24 horas si no desde la uacuteltimamedianoche

Un auteacutentico hacker probablemente no entenderaacute la utilidad de tal opcioacuten pero untrabajador que programa de ocho a cinco si lo apreciaraacute

shydepth procesa el contenido de cada directorio antes que el directorio en si A decirverdad no conozco muchos usos de esto aparte de una emulacioacuten del comando rm shyF (por

supuesto Vd no puede borrar un directorio antes de que todos sus ficheros sean borradostambieacuten

shyfollow respeta (es decir sigue) los enlaces simboacutelicos Implica la opcioacuten shynoleaf ver abajo

shynoleaf desactiva una optimizacioacuten que dice Un directorio contiene dos subdirectoriosmenos que su cuenta de enlaces riacutegidos2 Si el mundo fuera perfecto todos losdirectorios seriacutean referenciados por cada uno de sus subdirectorios (a causa de la opcioacuten) como dentro de siacute mismo y por su nombre real desde su directorio padre

Esto significa que cada directorio debe ser referenciado al menos dos veces (una por siacutemismo otra por su directorio padre) y cualquier referencia adicional es porsubdirectorios En la praacutectica sin embargo los enlaces simboacutelicos y los sistemas defichero distribuidos3 pueden alterar esto Esta opcioacuten hace que find funcione ligeramentemaacutes despacio pero debe dar los resultados esperados

shymaxdepth niveles shymindepth niveles donde niveles es un entero no negativo Indicanrespectivamente que a lo sumo o que al menos niveles de directorios deberiacutean explorarseUn par de ejemplos son obligados shymaxdepth 0 indica que el comando deberiacutea realizarsesoacutelo sobre los argumentos de la liacutenea de comandos es decir sin bajar recursivamente elaacuterbol de directorios shymindepth 1 inhibe el procesamiento del comando para losargumentos en la liacutenea de comandos pero se consideran todos los otros ficheros debajo

shyversion imprime la versioacuten en uso del programa

shyxdev el cual es un nombre engantildeoso instruye a find para no cruzarse de dispositivo4es decir no cambiarse de sistema de ficheros Es muy uacutetil cuando se tiene que buscaralgo en el sistema de ficheros raiacutez en muchas maacutequinas es una particioacuten algo pequentildeapero sino iexclun find buscariacutea en la estructura entera Podemos asiacute evitar lossistemas de archivo que no son promisorios

_____________________________________________

2 NT hard link count

3 Los sistemas de fichero distribuidos permiten a los ficheros mostrarse como si fueranlocales a una maacutequina cuando realmente estaacuten situados en alguacuten otro lugar

4 NT to cross device

1114 Test

Los dos primeros test son muy simples de comprender shyfalse siempre devuelve falsomientras que shytrue siempre devuelve verdadero Otros test que no necesitan laespecificacioacuten de un valor son shyempty el cual devuelve verdadero si el fichero estaacutevaciacuteo y el par shynouser shynogroup los cuales devuelven verdadero en el caso queninguna entrada en etcpasswd o etcgroup cuadre con el identificador de usuariogrupodel propietario del fichero Veamos un problema comuacuten en los sistemas multiusuario seborra un usuario pero los ficheros pertenecientes a eacutel permanecen en la parte maacutesextrantildea de los sistemas de ficheros y debido a las leyes de Murphy ocupan mucho espacio

El par de test que hemos visto en uacuteltimo lugar nos permitiraacute encontrar esos archivos Porsupuesto es posible buscar un usuario o grupo especiacutefico Los test son shyuid nn y shygidnn Desafortunadamente no es posible dar directamente el nombre del usuario sino quees necesario usar el identificador numeacuterico nn

Ademaacutes estaacute permitido usar las formas +nn que significa un valor estrictamente maacutesgrande que nn y shynn que significa un valor estrictamente maacutes pequentildeo que nn Estoes bastante estuacutepido en el caso de identificadores de usuario5 pero se volveraacute praacutecticocon otros test

Otra opcioacuten uacutetil es shytype c la cual devuelve verdadero si el fichero es del tipoespecial de caraacutecter Los mnemoacutenicos para las posibles selecciones son las mismas letrasque se encuentran en ls entonces tenemos bloque cuando el fichero es uno especial debloque directorio pipes para tuberiacuteas designadas6 link para enlaces simboacutelicos ysocketssockets7 Los ficheros regulares se indican con file

Un test relacionado es shyxtype que es similar a shytype excepto en el caso de enlacessimboacutelicos

Si se ha proporcionado la opcioacuten shyfollow se examina el enlace en lugar del ficheroal que se apunta El test shyfstype type no tiene nada que ver en este caso lo que seexamina es el tipo del sistema de ficheros Creo que la informacioacuten se consigue delfichero etcmtab el uacutenico que presenta los sistemas de ficheros montados estoy seguroque los tipos nfs tmp msdos y ext2 estaacuten entre los reconocidos

Los test shyinum nn y shylinks nn examinan si el fichero tiene nuacutemero de nodoshyi nn onn enlaces mientras que shysizenn es verdadero si el fichero tiene nn bloques de 512bytes asignados (Bueno no precisamente para ficheros disgregados los bloques noasignados tambieacuten se cuentan)

Como hoy en diacutea el resultado de ls shys no siempre se mide en trozos de 512 bytes (Linuxpor ejemplo usa 1 kbyte como la unidad) es posible adicionar a nn el caracter b elcual significa contar en bytes o k contar en kilobytes

Los bits de permiso son examinados a traveacutes del test shyperm mode Si el modo no estaacuteantecedido por un signo entonces los bits de permiso del fichero deben cuadrarexactamente con ellos

Un shy al principio significa que todos los bits de permiso deben ser puestos a uno perono hace suposiciones sobre los otros un + al principio se satisface soacutelo si cualquierade los bits estaacute a uno

_____________________________________________

5 NT UIDs

6 NT named pipes

7 NT enchufe

iexclUps Olvideacute decir que el modo se escribe en octal o simboacutelicamente como se usa enchmod El proacuteximo grupo de test estaacute relacionado con el tiempo que hace que se hautilizado un fichero por uacuteltima vez Esto viene bien cuando un usuario ha llenado suespacio ya que usualmente hay muchos ficheros que no usaba desde hace antildeos y cuyosignificado ha olvidado El problema es localizarlos y find es la uacutenica esperanza a lavista shyatime nn es verdadero si la uacuteltima vez que se accedioacute al fichero fue hace nndiacuteas shyctime nn si el estado del fichero fue cambiado por uacuteltima vez hace nn diacuteas porejemplo con un chmod y shymtime nn si el fichero fue modificado por uacuteltima vez hace nndiacuteas Algunas veces Vd necesita una marca de tiempo 8 maacutes precisa el test shynewerarchivo se satisface si el fichero considerado ha sido modificado maacutes tarde que elarchivo Por lo tanto Vd soacutelo tiene que usar touch con la fecha deseada y ya estaacute Elfind de GNU antildeade los test shyanewer y shycnewer los cuales se comportan de una manerasimilar y los test shyamin shycmin y shymmin que cuentan el tiempo en minutos en vezde periacuteodos de 24 horas

Por uacuteltimo pero no menos importante el test que yo uso maacutes a menudo shyname patroacuten esverdadero si el nombre del fichero concuerda exactamente con patroacuten el cual es maacutes omenos el uacutenico que se usariacutea en un ls estaacutendar (iquestPor queacute maacutes o menos Porque porsupuesto Vd tiene que recordar que todos los paraacutemetros son procesados por elinteacuterprete de comandos y esos encantadores metacaracteres sufren una expansioacuten Asiacute untest como shyname foo no devolveraacute lo que Vd desea y Vd deberiacutea escribir cualquierade los dos shyname foo o shyname foo Este es probablemente uno de los maacutes comuneserrores cometidos por usuarios descuidados asiacute que escriacutebalo en letras GRANDES en supantalla Otro problema es que como con ls no se reconocen los puntos al principio delnombre del archivo Para hacer frente a esto puede usar el test shypath patroacuten el cualno se preocupa acerca de los puntos y barras inclinadas cuando compara la ruta delfichero considerado con patroacuten

1115 Acciones

Hemos dicho que las acciones son aquellas que realmente hacen algo Bueno shyprune maacutesbien no hace nada es decir al descender el aacuterbol de directorios (a menos que se leagregue shydepth ) Se la encuentra usualmente junto con shyfstype para elegir entrevarios sistemas de ficheros a aquellos que deberiacutean examinarse

Las otras acciones pueden ser divididas en dos amplias categoriacuteas Acciones que imprimenalgo La maacutes obvia de estas y en realidad la accioacuten por defecto de find es shyprintque imprime el nombre del(os) fichero(s) que concuerde(n) con las otras condiciones en laliacutenea de comandos y devuelve verdadero Una variante sencilla de shyprint es shyfprintarchivo en la cual se usa archivo en vez de la salida estaacutendar otra es shyls listael fichero en uso en el mismo formato que ls shydils shyprintfformato se comporta maacuteso menos como la funcioacuten de C printf() para que se pueda especificar que formato deberiacuteatener la salida y shyfprintf archivo formato hace lo mismo pero escribieacutendolo enarchivo Estas acciones tambieacuten devuelven verdadero

_____________________________________________

8 NT timestamp

Acciones que ejecutan algo Su sintaxis es un poco extrantildea y su uso estaacute muy extendidopor lo que por favor consideacuterelas

shyexec comando ejecuta el comando y la accioacuten devuelve verdadero si el estadoretornado por el comando es 0 lo que significa que la ejecucioacuten fue correcta La razoacutenpara el es bastante loacutegica find no sabe donde termina el comando y el truco deponer la accioacuten ejecutable al final del comando no es aplicable Bueno la mejor manerapara sentildealar el final del comando es usar el caracter que usa el inteacuterprete de comandospara este fin que es pero por supuesto un punto y coma solo en la liacutenea decomandos seriacutea comido por el inteacuterprete de comandos y nunca llegariacutea a find asiacute quetienen que ser precedidos de escape La segunda cosa a recordar es como especificar elnombre del fichero en uso dentro del comando ya que probablemente Vd hizo todo elesfuerzo al construir la expresioacuten para hacer algo y no soacutelo para ver la hora Esto sehace por medio de la cadena de caracteres Algunas versiones antiguas de findrequieren que coloque las llaves entre espacios en blanco (no muy praacutectico si Vdnecesita por ejemplo la ruta entera y no soacutelo el nombre del fichero) pero con el findde GNU podriacutea ser cualquier lugar de la cadena de caracteres que compone el comando iquestYno deberiacutea estar precedido de escape o entrecomillado seguramente se estaraacutepreguntando Asombrosamente yo nunca tuve que hacer esto ni bajo tcsh ni bajo bash (shno considera shy y como caraacutecteres especiales asiacute que no es ni mucho menos un problema)Mi idea es que los inteacuterpretes de comandos saben que shy no es una opcioacuten que tengasentido por tanto no intentan expandirlas afortunadamente para find que puede obtenerlaintacta shyok comando se comporta como shyexec con la diferencia que para cadafichero seleccionado se pregunta al usuario que confirme el comando si la respuestaempieza por y o Y se ejecuta de otra manera no y la accioacuten devuelve falso

1116 Operadores

Hay una cierta cantidad de operadores aquiacute hay una lista en orden de prioridaddecreciente

( expr )

Fuerza el orden de prioridad Los pareacutentesis deben por supuesto estar entrecomillas ya que tambieacuten son muy significativos para el inteacuterprete decomandos

expr

shynot expr

Cambia el verdadero valor de la expresioacuten esto es si expr es verdadera sevuelve falsa El signo de exclamacioacuten no tiene que ser precedido de escapeporque estaacute seguido por un espacio en blanco

expr1 expr2

expr1 shya expr2

expr1 shyand expr2

Todas corresponden con la operacioacuten loacutegica AND El caso maacutes comuacuten es elprimero en el cual estaacute impliacutecita expr2 no se evaluacutea si expr1 es falsa

expr1 shyo expr2

expr1 shyor expr2

corresponden a la operacioacuten loacutegica OR expr2 no es evaluada si expr1 esverdadera

expr1 expr2

es la declaracioacuten de lista ambas expr1 y expr2 se evaluacutean (junto con todoslos efectos secundarios iexclpor supuesto) y el valor final de la expresioacuten esel de expr2

1117 Ejemplos

Siacute find tiene demasiadas opciones lo se Pero hay un montoacuten de casos preparados quevalen la pena recordar porque son usados muy a menudo Veamos algunos de ellos

$ find shyname foo shyprint

encuentra todos los nombres de fichero que empiezan con foo Si la cadena de caracteresestaacute incluida en el nombre probablemente tiene maacutes sentido escribir algo como fooen vez de foo

$ find usrinclude shyxtype f shyexec grep foobar

devnull shy

Es un grep ejecutado recursivamente que empieza del directorio usrinclude En estecaso estamos interesados tanto en ficheros regulares como en enlaces simboacutelicos queapuntan a ficheros regulares por tanto el test shyxtype Muchas veces es maacutes simpleevitar especificarlo especialmente si estamos bastante seguros cuales ficheros binariosno contienen la cadena de caracteres deseada

(iquestY por queacute el devnull en el comando Es un truco para forzar al grep a escribir elfichero del nombre donde se ha encontrado un emparejamiento El comando grep se aplica acada fichero con una invocacioacuten diferente y por tanto no cree que sea necesario mostrara la salida el nombre del fichero Pero ahora hay dos ficheros esto es iexclel activo ydevnull Otra posibilidad podriacutea ser redirigir la salida9 del comando a xargs y dejarlellevar a cabo el grep Yo lo intenteacute e hice pedazos completamente mi sistema de ficheros(junto con estas notas que estoy intentando recuperar a mano shy( )

$ find shyatime +1 shyfstype ext2 shyname core

shyexec rm shy

Es un trabajo claacutesico para la tabla de tareas preplaneadas Borra todos los ficherosllamados core en el sistema de ficheros del tipo ext2 al cual no se ha accedido en lasuacuteltimas 24 horas Es posible que alguien quiera usar los ficheros de imagen de memoria10para realizar un volcado post mortem pero nadie podriacutea recordar lo que estuvo haciendodespueacutes de 24 horas

$ find home shyxdev shysize +500k shyls gt piggies

_____________________________________________

9 NT to pipe

10 NT core file

Es uacutetil para ver quieacuten tiene esos archivos que atascan el sistema de ficheros Note eluso de shyxdev como soacutelo estamos interesados en un sistema de ficheros no es necesariodescender otro sistema de ficheros montado bajo home

1118 Una uacuteltima palabra

Tenga en mente que find es un comando que consume mucho tiempo ya que tiene que accedera cada uno de los nodosshyi del sistema para realizar su operacioacuten Por lo tanto es sabiocombinar cuantas operaciones sean posibles en una uacutenica invocacioacuten de find especialmenteen las tareas de mantenimiento interno que usualmente se administran mediante un

trabajo de la tabla de tareas planificadas Un ejemplo informativo es el siguientesupongamos que queremos borrar los ficheros que acaban en BAK y cambiar la proteccioacuten detodos los directorios a 771 y todos los ficheros que acaban en sh a 755 Y quizaacutestengamos montado el sistema de ficheros NFS en un enlace telefoacutenico y no queramosexaminar los ficheros ahiacute (iquestPor queacute escribir tres comandos diferentes La manera maacutesefectiva para realizar la tarea es eacutesta

$ find ( shyfstype nfs shyprune ) shyo

( shytype d shya shyexec chmod 771 shy ) shyo

( shyname BAK shya shyexec binrm shy ) shyo

( shyname sh shya shyexec chmod 755 shy )

Parece feo (iexcly con mucho abuso de barras invertidas) pero miraacutendolo fijamente revelaque la loacutegica subyacente es bastante sencilla Recuerde lo que se hace es una evaluacioacutenverdaderofalso el comando introducido es soacutelo un efecto secundario Pero esto significaque se ejecuta soacutelo si find puede evaluar la parte ejecutable de la expresioacuten esto essoacutelo si la parte izquierda de la subexpresioacuten se evaluacutea como verdadera Asiacute si porejemplo el fichero considerado en el momento es un directorio entonces el primerejecutable se evaluacutea y el permiso del nodoshyi se cambia a 771 de otra manera olvida todoy pasa a la siguiente subexpresioacuten Probablemente es maacutes faacutecil verlo en la praacutectica queescribirlo pero despueacutes de un momento llegaraacute a ser una cosa natural para Vd

112 tar el archivador en cinta

1121 Introduccioacuten

1122 Opciones principales

1123 Modificadores

1124 Ejemplos

113 dd el duplicador de datos

La leyenda dice que allaacute lejos en las nieblas del tiempo cuando el primer UNIX fuecreado sus desarrolladores necesitaron un comando de bajo nivel para copiar datos entredispositivos Como teniacutean prisa decidieron tomar prestada la sintaxis usada en lasmaacutequinas IBMshy360 y desarrollar maacutes tarde un interfaz consistente con la de los otroscomandos El tiempo pasoacute y todos se acostumbraron tanto con la manera extrantildea de usar ddque ya ha quedado asiacute No se si es verdad pero es una bonita historia para contar

1131 Opciones

A decir verdad dd no es totalmente distinto de los otros comandos de UNIX es enrealidad un filtro esto es lee por defecto de la entrada estaacutendar y escribe en lasalida estaacutendar Por tanto si Vd escribe soacutelo dd la terminal se queda quietaesperando una entrada y un |_CtrlshyC_| es la uacutenica cosa con sentido a teclear (paracortarlo)

La sintaxis del comando es como sigue

shy dd [if=archivo_entrada] [of=archivo_salida] [ibs=cant_bytes] [obs=cant_bytes]

[bs=cant_bytes] [cbs=cant_bytes] [skip=cant_bloques]

[seek=cant_bloques] [count=cant_bloques] [conv=ascii ebcdic ibm block

unblock lcase ucase swab noerror notrunc sync]

Todas las opciones son de la forma opcioacuten=valor No se permite ninguacuten espacio ni antes nidespueacutes del signo de igual esto soliacutea ser molesto porque el inteacuterprete de comandos noexpandiacutea un nombre de fichero en esta situacioacuten pero la versioacuten de bash presente enLinux es bastante inteligente asiacute que Vd no tiene que preocuparse por eso Es tambieacutenimportante recordar que todos los valores numerables (cant_bytes y cant_bloques citadosarriba) pueden ser seguidos por un multiplicador

Las opciones posibles son b para bloque el cual multiplica por 512 k para kilobytes(1024) w para palabra (2) y xm que multiplica por m

El significado de las opciones se explica a continuacioacuten

if=archivo_entrada y of=archivo_salida instruye a dd a respectivamente leerde archivo_entrada y escribir a archivo_salida En el uacuteltimo caso el ficherode salida es truncado al valor dado por seek o si la palabra clave noestaacute presente a 0 (esto es borrado) antes de realizar la operacioacuten Miretambieacuten la opcioacuten notrunc

ibs=nn y obs=nn especifican cuantos bytes deben ser leiacutedos o escritos a lavez Creo que por defecto es 1 bloque esto es 512 bytes pero no estoy muyseguro de ello desde luego funciona de esa manera con ficheros planos11Estos paraacutemetros son muy importantes cuando se usa dispositivos especialescomo entrada o salida por ejemplo leer de la red deberiacutea establecer ibs a10 kbyte mientras que una disquetera 12 de 35de alta densidad tiene comotamantildeo natural de bloque 18 kbyte Fallar al establecer estos valores podriacutearepercutir no soacutelo a largo plazo al llevar a cabo el comando sino inclusiveen errores de expiracioacuten de plazo asiacute que tenga cuidado

bs=nn tanto lee y escribe nn bytes a la vez Este no hace caso a las palabrasclave ibs y obs

cbs=nn establece el buffer de conversioacuten a nn bytes Este buffer se usacuando se traduce de ASCII a EBCDIC o desde un dispositivo no ablocado a unoablocado13 Por ejemplo los ficheros creados bajo VMS tienen a menudo untamantildeo de bloque de 512 asiacute que se tiene que poner cbs a 1b cuando se leeuna cinta externa de VMS iexclEspero que Vd no tenga que entretenerse en estascosas

skip=nbl y seek=nbl le dicen al programa que omita nbl bloquesrespectivamente al final de la entrada y al principio de la salida Porsupuesto el uacuteltimo caso tiene sentido si se da la conversioacuten notrunc (verabajo) Cada tamantildeo de bloque es el valor de ibs (obs) Cuidado si noestablece el ibs y escribe skip=1b Vd estaacute realmente omitiendo 512x512bytes esto es 256KB No es precisamente lo que Vd queriacutea iquestno

count=nbl pretende copiar soacutelo nbl bloques de la entrada cada uno de lostamantildeos dados por ibs Esta opcioacuten junto con la previa se vuelve uacutetil sipor ejemplo Vd tiene un fichero corrupto y quiere recuperar cuanto seaposible de eacutel Vd debe omitir la parte ilegible y copiar lo que resta

conv=conversioacuten[conversioacuten ] transforma el fichero de la manera que seespecifica en sus argumentos Transformaciones posibles son ascii queconvierte de EBCDIC a ASCII ebcdic y ibm las cuales realizan unaconversioacuten inversa (iexclsiacute no existe una uacutenica conversioacuten de EBCDIC a ASCII Laprimera es la estaacutendar pero la segunda funciona mejor cuando se imprimenficheros en una impresora IBM) block la cual rellena registros terminadosen nueva liacutenea del tamantildeo de cbs reemplazando los cambios de liacutenea conespacios finales unblock que realiza lo contrario (elimina espaciosfinales y los reemplaza con cambios de liacutenea) lcase y ucase paraconvertir a minuacutesculas y mayuacutesculas respectivamente swab que intercambiacada par de bytes de entrada (por ejemplo para usar un fichero que contieneenteros de tipo short escritos en una maacutequina 680x0 en una maacutequina basada enIntel se necesita dicha conversioacuten) noerror para continuar procesando auacutendespueacutes de encontrar errores sync que rellena los bloques de entrada deltamantildeo de ibs con caracteres NUL finales

_____________________________________________

11 NT plain files

12 NT floppy

13 N del T ablocado se refiere a la caracteriacutestica de agrupamiento en bloques de losdatos en el dispositivo

1132 Ejemplos

El ejemplo canoacutenico es con el uacutenico que Vd probablemente ha chocado hasta ahora cuandointentoacute crear el primer disco de Linux como escribir a un disco sin un sistema deficheros MSshyDOS La solucioacuten es simple

$ dd if=diskimg of=devfd0 obs=18k count=80

Decidiacute no usar ibs porque no se cual es el mejor tamantildeo de bloque para un disco duropero en este caso no habriacutea hecho ninguacuten perjuicio si en vez de obs usara sencillamenteel bs inclusive podriacutea haber sido un poquito maacutes raacutepido Observe la explicacioacuten delnuacutemero de sectores a escribir (18 kbyte es lo que ocupa un sector asiacute que count sepone a 80) y el uso del nombre de bajo nivel del dispositivo de la disquetera

Otra aplicacioacuten uacutetil de dd estaacute relacionada con la copia de seguridad de la redSupongamos que estamos en una maacutequina alfa y que en la maacutequina beta estaacute la unidad decinta devrst0 con un fichero tar que estamos interesados en obtener Tenemos los mismosprivilegios en ambas maacutequinas pero no hay espacio en beta para volcar 14 el fichero tarEn este caso podriacuteamos escribir

$ rsh beta dd if=devrst0 ibs=8k obs=20k _ tar xvBf shy

para hacer en un solo paso la operacioacuten completa En este caso hemos usado lasfacilidades de rsh para realizar la lectura de la cinta Los tamantildeos de entrada y salidaestaacuten establecidos a los valores por defecto por estas operaciones esto es 8 kbyte parala lectura de la cinta y 20 kbyte para la escritura en ethernet desde el punto de vistade la otra cara del tar hay el mismo flujo de bytes el cual podriacutea ser obtenido de la

cinta excepto el hecho de que llega de una manera bastante erraacutetica y la opcioacuten B esnecesaria

iexclAh Casi lo olvidaba No creo para nada que dd sea un acroacutenimo de data duplicatorpero al menos es una manera divertida de recordar su significado

114 sort el clasificador de datos

1141 Introduccioacuten

1142 Opciones

1143 Ejemplos

_____________________________________________

14 NT dump

Capiacutetulo 12

Errores equivocaciones bugs y otras molestias

Unix nunca fue disentildeado para evitar que la gente hiciera cosas estuacutepidas porque esapoliacutetica les habriacutea evitado tambieacuten hacer cosas inteligentes

Doug Gwyn

121 Evitando errores

Muchos usuarios hablan de su frustracioacuten con el sistema operativo Unix en alguna ocasioacutena menudo a causa de lo que ellos mismos han hecho Una caracteriacutestica del sistemaoperativo Unix que muchos usuarios adoran cuando estaacuten trabajando bien y odian despueacutesde una sesioacuten hasta bien avanzada la noche es que muy pocas oacuterdenes piden confirmacioacutenCuando un usuario estaacute despierto y funcionando raramente piensa sobre ello y esto esuna ventaja ya que le permite trabajar maacutes eficientemente

De todos modos hay algunas desventajas rm y mv no piden nunca confirmacioacuten y estoconduce frecuentemente a problemas Por eso veamos una pequentildea lista que puede ayudarlea evitar el desastre total

o iexclTenga copias de seguridad Esto va dirigido especialmente a sistemas de un solousuario iexcltodos los administradores de sistema deben realizar copias de seguridad de susistema regularmente Una vez a la semana es suficiente para salvar muchos ficheros Paramaacutes informacioacuten consulte The Linux System Administrators Guide

o Los usuarios individuales deben tener sus propias copias de seguridad si es posibleSi usa maacutes de una maacutequina regularmente intente mantener copias actualizadas de todos susficheros en cada una de las maacutequinas Si tiene acceso a una unidad de disquetes puedehacer copias de seguridad en disquetes de su material criacutetico En el peor de los casosmantenga copias adicionales del material maacutes importante que haya en su cuenta en undirectorio separado

o Piense sobre las oacuterdenes especialmente las destructivas como mv rm y cp antes deactuar Debe ser tambieacuten cuidadoso con las redirecciones (gt) sobreescribiraacuten susficheros cuando no esteacute prestando atencioacuten Incluso el maacutes inofensivo de los comandospuede convertirse en siniestro

homelarryreport$ cp reportshy1992 reportshy1993 backups

puede convertirse faacutecilmente en desastre

homelarryreport$ cp reportshy1992 reportshy1993

o El autor tambieacuten recomienda a partir de su propia experiencia personal no hacerlimpieza de ficheros a altas horas de la madrugada iquestQue su estructura de directoriosparece un poco desordenada a la 132am Deacutejelo estar un poco de desorden nunca ha dantildeadoun ordenador

o Siacutegale la pista a su directorio actual A veces el prompt que estaacute usando no muestraen que directorio estaacute usted trabajando y el peligro acecha iexclEs triste leer un mensajeen compunixadmin1 sobre un usuario root que estaba en en vez de en tmp Por ejemplo

mousehousegt pwd

etc

mousehousegt ls tmp

passwd

mousehousegt rm passwd

La anterior serie de comandos podriacutea hacer muy infeliz al usuario al ver como eliminaronel fichero de contrasentildeas de su sistema iexclSin eacutel la gente no puede acceder

122 Queacute hacer cuando algo va mal

123 No es fallo tuyo

Por desgracia para los programadores del mundo no todos los problemas son a causa deerrores del usuario Unix y Linux son sistemas complicados y todas las versionesconocidas tienen errores de programacioacuten (bugs2) Algunas veces esos errores sondifiacuteciles de encontrar y soacutelo aparecen bajo ciertas circunstancias

Ante todo iquestqueacute es un error Un ejemplo de error es si le pide al ordenador que calcule5+3 y contesta 7 Aunque este es un ejemplo trivial de que puede ir mal la mayoriacuteade los errores en programas de computadoras se relacionan con la aritmeacutetica en algunaforma extremadamente extrantildea

_____________________________________________

1 Un foro de discusioacuten internacional en Usenet que trata sobre la administracioacuten decomputadoras Unix

2 Bug (polilla fam bicho) Se denomina asiacute a los errores que aparecen en un programaCuenta la leyenda que cuando los ordenadores eran unos monstruos llenos de vaacutelvulas queocupaban habitaciones enteras un teacutecnico que trataba de resolver un error en el Mark IIde Harvard detectoacute que la causa era una polilla de verdad que se habiacutea colado entre lasvaacutelvulas y provocaba pequentildeos cortocircuitos al revolotear de un lado a otro

1231 Cuando hay un error

Si la computadora da una respuesta erroacutenea (iexclcompruebe que la respuesta es erroacutenea) o sebloquea eso es un error Si cualquier programa se bloquea o da un mensaje de error delsistema operativo eso es un error

Si un comando no finaliza nunca su ejecucioacuten puede ser un error pero debe asegurarse deque no le ha pedido que esteacute durante mucho tiempo haciendo lo que usted queriacutea quehiciera Pida ayuda si no sabe lo que haciacutea el comando

Algunos mensajes le alertaraacuten de la existencia de errores Algunos mensajes no sonerrores Revise la seccioacuten 34 y el resto de la documentacioacuten para estar seguro de que noson mensajes informativos normales Por ejemplo mensajes como disk full (disco lleno)o lp0 on fire (lp0 ardiendo) no son problemas de software sino algo incorrecto en suhardware no hay suficiente espacio libre en el disco o la impresora estaacute mal

Si no puede encontrar informacioacuten sobre un programa es un error en la documentacioacuten ydeberiacutea ponerse en contacto con el autor de dicho programa y ofrecerse para escribirlausted mismo Si algo estaacute incorrecto en la documentacioacuten existente3 es un error en esemanual Si algo aparece incompleto o poco claro en el manual eso es un error

Si no puede vencer al gnuchess al ajedrez es un fallo de disentildeo en el algoritmo deajedrez que usted usa pero no necesariamente un error en su cerebro

1232 Notificando un error

Cuando esteacute seguro de haber encontrado un error es importante asegurarse de que suinformacioacuten llega al lugar adecuado Intente encontrar que programa causa el error si nopuede encontrarlo tal vez pueda pedir ayuda en composlinuxhelp o compunixmisc Unavez encuentre el programa intente leer la paacutegina del manual para ver quien lo escribioacute

El meacutetodo preferido para enviar notificaciones de errores en el mundo Linux es viacutea correoelectroacutenico Si no tiene acceso al correo electroacutenico puede ponerse en contacto con lapersona que le suministroacute Linux eventualmente encontraraacute alguien que o bien tienecorreo electroacutenico o vende Linux comercialmente y por tanto quiere eliminar el mayornuacutemero de errores posibles Recuerde en todo caso que nadie estaacute obligado a corregirninguacuten error a menos que tenga un contrato

Cuando enviacutee una notificacioacuten de error incluya toda la informacioacuten que se le ocurraEsto incluye

o Una descripcioacuten de lo que usted piensa que es incorrecto Por ejemplo Obtengo 5cuando calculo 2+2 o Dice segmentation violation shyshy core dumped Es importante decirexactamente que esteacute sucediendo para que el responsable del mantenimiento pueda corregirsu error

o Incluya cualquier variable de entorno relevante

o La versioacuten de su nuacutecleo (mire en el fichero procversion) y sus bibliotecas de sistema(mire en el directorio lib si no puede descifrarlo enviacutee un listado de lib)

o iquestCoacutemo ejecutoacute el programa en cuestioacuten o si era un error del nuacutecleo iquestqueacute estabahaciendo en ese momento

o Toda la informacioacuten complementaria Por ejemplo el comando w puede no mostrar elproceso actual para ciertos usuarios No diga simplemente w no funciona para ciertousuario El error podriacutea ocurrir debido a que el nombre del usuario tiene ochocaracteres de longitud o cuando estaacute accediendo a traveacutes de la red En su lugar diga wno muestra el proceso actual para el usuario greenfie cuando accede a traveacutes de la red

o Y recuerde sea amable La mayoriacutea de la gente trabaja en el software libre por elgusto de hacerlo y porque tienen un gran corazoacuten No los amargue la comunidad Linux hadesilusionado ya a demasiados desarrolladores y auacuten es pronto en la vida del Linux

_____________________________________________

3 iexclEspecialmente en eacutesta

Apeacutendice A

Introduccioacuten a vi

vi (pronunciado vi ai en ingleacutes o uve i) es en realidad el uacutenico editor que se puedeencontrar en praacutecticamente cualquier instalacioacuten de Unix Este editor fue escritooriginalmente en la Universidad de California en Berkeley y se puede encontrar versionesen casi cualquier edicioacuten de Unix incluido Linux Al principio cuesta un pocoacostumbrarse a eacutel pero tiene muchas caracteriacutesticas muy potentes En generalrecomendamos que un nuevo usuario aprenda Emacs que generalmente es maacutes faacutecil de usarSin embargo la gente que usa maacutes de una plataforma o que encuentra que no le gustaEmacs puede estar interesada en aprender vi

Es necesaria una breve resentildea histoacuterica de vi para comprender coacutemo la tecla |_k_| puedesignificar mover el cursor arriba una liacutenea y porqueacute hay tres diferentes modos de uso Sino le apetece aprender a usar el editor los dos tutoriales le llevaraacuten de ser un crudoprincipiante hasta tener el suficiente conocimiento del grupo de comandos que usted puedellegar a usar El capiacutetulo tambieacuten incluye una guiacutea de comandos que sirve de uacutetilreferencia para tenerla cerca del terminal

Incluso si vi no se convierte en su editor de texto normal el conocimiento de su uso noseraacute desperdiciado Es casi seguro que el sistema de Unix que use tendraacute alguna variantedel editor vi

Puede ser necesario usar vi mientras instala otro editor como Emacs Muchas herramientasde Unix aplicaciones y juegos usan un subconjunto del grupo de comandos de vi

A1 Una raacutepida historia de Vi

Los editores de texto en la antiguumledad funcionaban en modo de una liacutenea y se usabantiacutepicamente desde terminales no inteligentes de impresioacuten Un editor tiacutepico que operabaen este modo es Ed El editor es potente y eficiente y usa una cantidad muy pequentildea derecursos del sistema y funcionaba con las pantallas de aquel entonces vi ofrece alusuario una alternativa visual con un grupo de comandos notablemente amplio comparado coned

vi como lo conocemos hoy comenzoacute como el editor de liacutenea ex De hecho ex se ve como unmodo especial de edicioacuten en vi aunque ahora lo contrario es verdad El componente visualde ex puede ser iniciado desde la liacutenea de comando usando el comando vi o desde dentrode ex

El editor exvi fue desarrollado en la universidad de California en Berkeley por WilliamJoy Originalmente se suministraba como una utilidad no soportada hasta su inclusioacutenoficial en la distribucioacuten del Unix ATampT System V Se ha ido haciendo cada vez maacutespopular incluso con la competencia de los modernos editores de pantalla completa

Debido a la popularidad de vi existen muchas variantes cloacutenicas y se pueden encontrarvarias versiones para la mayoriacutea de los sistemas operativos No es el propoacutesito de estecapiacutetulo el incluir todos los comandos disponibles bajo vi o sus variantes Muchos cloneshan aumentado y modificado el comportamiento original de vi La mayoriacutea de los clones nosoportan todos los comandos originales de vi

Si tiene un buen conocimiento de trabajo con ed entonces vi presenta una curva deaprendizaje maacutes suave Aunque usted no tenga ninguna intencioacuten de usar vi como su editorregular el conocimiento baacutesico de vi solamente puede serle una ventaja

A2 Raacutepido tutorial de Ed

El propoacutesito de esta guiacutea es que usted empiece a usar ed ed estaacute disentildeado para ser faacutecilde usar y requiere poco entrenamiento para comenzar La mejor manera de aprender espracticando asiacute que siga las instrucciones y pruebe el editor antes de descontar susventajas praacutecticas

A21 Crear un fichero

ed soacutelo puede editar un fichero a la vez Siga el siguiente ejemplo para crear su primerfichero de texto usando ed

homelarry$ ed

a

Este es mi primer fichero de texto usando Ed

Esto es divertido de verdad

w primerotxt

q

homelarry$

Ahora puede verificar el contenido del fichero usando la utilidad de concatenacioacuten deUnix

homelarry$ cat primerotxt

El ejemplo anterior ha mostrado un nuacutemero de puntos importantes Cuando invoca ed como enel ejemplo tendraacute un fichero vaciacuteo La tecla |_a_| se usa para antildeadir texto al ficheroPara finalizar la sesioacuten de entrada de texto se usa un punto |__| en la primera columnadel texto Para salvar el texto a un fichero la tecla |_w_| se usa en combinacioacuten con elnombre del fichero y finalmente la tecla |_q_| se usa para salir del editor

La observacioacuten maacutes importante es que hay dos modos de operacioacuten Al principio el editorestaacute en modo de comandos Un comando se define por caracteres para asegurarse de cualesson las intenciones del usuario ed usa un modo de texto y un modo de comando

A22 Editar un fichero existente

Para antildeadir una liacutenea de texto a un fichero existente siga el siguiente ejemplo

homelarry$ ed primerotxt

a

Esta es una nueva linea de texto

w

q

Si comprueba el fichero con cat veraacute que hay una nueva liacutenea insertada entre las dosliacuteneas originales iquestCoacutemo supo ed doacutende poner la nueva liacutenea de texto

Cuando ed lee el fichero se acuerda de cual es la liacutenea actual El comando |_a_| antildeadiraacuteel texto despueacutes de la liacutenea actual ed tambieacuten puede poner el texto antes de la liacuteneaactual con la tecla |_i_| El efecto seraacute la insercioacuten del texto antes de la liacuteneaactual

Ahora es faacutecil ver que ed opera en el texto liacutenea por liacutenea Todos los comandos se puedenaplicar a una liacutenea elegida

Para antildeadir una liacutenea de texto al final de un fichero

homelarry$ ed primerotxt

$a

La ultima linea de texto

w

q

El modificador de comandos ||_$_|| le dice a ed que antildeada la liacutenea despueacutes de la uacuteltimaliacutenea Para antildeadir la liacutenea despues de la primera liacutenea el modificador seriacutea |_1_| Ahoratenemos la posibilidad de seleccionar la liacutenea para antildeadir una liacutenea de texto despueacutes delnuacutemero de liacutenea o insertar una liacutenea antes del nuacutemero de liacutenea

iquestCoacutemo sabemos lo que hay en la liacutenea actual El comando |_p_| muestra el contenido de laliacutenea actual Si quiere hacer que la liacutenea actual sea la liacutenea 2 y a la vez quiere verel contenido de esa liacutenea entonces haga lo siguiente

homelarry$ ed primerotxt

2p

q

A23 Nuacutemeros de liacutenea en detalle

Ha visto coacutemo mostrar el contenido de la liacutenea actual usando el comando |_p_| Tambieacutensabemos que hay modificadores del nuacutemero de liacutenea para los comandos Para ver el texto dela segunda liacutenea

2p

Hay algunos modificadores especiales que se refieren a posiciones que pueden cambiardurante el tiempo que edita un fichero El ||_$_||es la uacuteltima liacutenea del texto Para verla uacuteltima liacutenea

$p

El nuacutemero de liacutenea actual usa un siacutembolo de modificador especial ___|_| Para mostrar laliacutenea actual usando un modificador

p

Esto puede parecer innecesario aunque es muy uacutetil en el contexto de los grupos denuacutemeros de liacutenea

Para mostrar el contenido del texto desde la liacutenea 1 a la liacutenea 2 se le debe pasar elalcance

12p

El primer nuacutemero se refiere a la liacutenea de comienzo y el segundo se refiere a la uacuteltimaliacutenea La liacutenea actual seraacute por consiguiente el segundo nuacutemero del grupo de liacuteneas

Si quiere mostrar el contenido del fichero desde el comienzo hasta la liacutenea actual

1p

Para mostrar el contenido desde la liacutenea actual hasta el final del fichero

$p

Todo lo que queda es mostrar el contenido de todo el fichero y esto queda como unejercicio para usted

iquestCoacutemo puede borrar las dos primeras liacuteneas del fichero

12d

El comando |_d_| borra el texto liacutenea por liacutenea Si usted quisiera borrar el contenidocompleto lo hariacutea con

1$d

Si usted ha hecho muchos cambios y no quiere salvar los contenidos del fichero lo mejores salir del editor sin escribir el fichero antes

La mayoriacutea de los usuarios no usan ed como el principal editor Los editores maacutes modernosofrecen una pantalla completa de edicioacuten y grupos de comandos maacutes flexibles ed ofreceuna buena introduccioacuten a vi y ayuda a explicar coacutemo se originaron los comandos de vi

A3 Raacutepido tutorial de Vi

El propoacutesito de este tutorial es que comience a usar el editor vi Este tutorial asumeque no tiene ninguna experiencia con vi asiacute que le mostraremos los diez comandos maacutesbaacutesicos de vi Estos comandos fundamentales son suficientes para realizar la mayoriacutea desus necesidades de edicioacuten y puede expandir su vocabulario de vi cuanto necesite Serecomienda que tenga un ordenador para practicar seguacuten avanza con el tutorial

A31 Ejecutar vi

Para ejecutar vi simplemente tiene que teclear las letras vi seguidas del nombre defichero que desea crear Veraacute una pantalla con una columna de tildes (~) en el ladoizquierdo vi estaacute ahora en modo de comando Cualquier cosa que teclee seraacute interpretadocomo un comando no como texto que usted desea escribir Para introducir texto tiene queteclear un comando Los dos comandos de entrada baacutesicos son los siguientes

i insertar texto a la izquierda del cursor

a antildeadir texto a la derecha del cursor

Dado que estaacute al comienzo de un fichero vaciacuteo no importa cual de estos usar Escriba unode ellos y despueacutes teclee el siguiente texto (un poema de Augustus DeMorgan encontradoen The Unix Programming Environment por BW Kernighan y R Pike)

Las pulgas grandes tienen pequentildeas pulgasltIntrogt

sobre sus espaldas para que les muerdanltIntrogt

Y las pulgas pequentildeas tienen pulgas maacutes pequentildeasltIntrogt

y asiacute hasta el infinitoltIntrogt

Y las pulgas grandes a su vezltIntrogt

tienen pulgas maacutes grandes sobre las que estarltIntrogt

Mientras que estas de nuevo tienen otras maacutes grandes aunltIntrogt

y maacutes grandes aun y asiacuteltIntrogt

ltEscgt

Fiacutejese que tiene que pulsar la tecla |_Esc_| para finalizar la insercioacuten y volver al modode comando

A32 Comandos de movimiento del cursor

h mueve el cursor un espacio a la izquierda

j mueve el cursor un espacio abajo

k mueve el cursor un espacio arriba

l mueve el cursor un espacio a la derecha

Estos comandos se pueden repetir manteniendo la tecla pulsada Intente mover el cursorpor el texto ahora Si intenta un movimiento imposible por ejemplo pulsar la tecla|_k_| cuando el cursor estaacute en la liacutenea superior la pantalla parpadearaacute momentaacuteneamenteo el terminal sonaraacute No se preocupe no muerde y su fichero no saldraacute dantildeado

A33 Borrar texto

x borra el caraacutecter que hay en el cursor

dd borra la liacutenea donde estaacute el cursor

Mueva el cursor a la primera liacutenea y poacutengalo de modo que esteacute bajo la n Pulse la letra|_x_| y la n desapareceraacute Ahora pulse la letra |_i_| para cambiarse al modo deinsercioacuten y vuelva a teclear la n Pulse |_Esc_| cuando haya terminado

A34 Salvar un fichero

w salvar (escribir al disco)

q salir

Aseguacuterese de que estaacute en modo de comando pulsando la tecla |_Esc_| Ahora pulse w Estosalvaraacute su trabajo escribieacutendolo a un fichero de disco

El comando para salir de vi es |_q_| Si quiere combinar el salvar y salir escriba wqTambieacuten hay una abreviacioacuten para wq _ ZZ Dado que gran parte del trabajo deprogramacioacuten consiste en ejecutar un programa encontrar alguacuten problema y llamar elprograma en el editor para hacer alguacuten pequentildeo cambio y luego volver a salir del editorpara ejecutar el programa otra vez ZZ seraacute un comando que usaraacute a menudo (En realidadZZ no es un sinoacutenimo exacto de wq _ si no ha hecho ninguacuten cambio al fichero que estaacuteeditando desde la ultima vez que lo salvo ZZ simplemente saldraacute del editor mientras quewq salvaraacute (redundantemente) el fichero antes de salir)

Si usted se lo ha cargado todo sin esperanzas y simplemente quiere volver a empezarlotodo puede teclear q (recuerde pulsar la tecla |_Esc_| primero) Si omite el vi nole permitiraacute salir sin salvar

A35 iquestQueacute viene a continuacioacuten

Los diez comandos que acaba de aprender deberiacutean ser suficientes para su trabajo Sinembargo solamente ha rozado la superficie del editor vi Hay comandos para copiarmaterial de un lugar del fichero a otro para mover material de un lugar a otro paramover material de un fichero a otro para ajustar el editor a sus gustos personales etcCon todo hay unos 150 comandos

A4 Tutorial avanzado de Vi

La ventaja y la potencia de vi estaacute en la habilidad de usarlo con eacutexito con soacutelo saberunos pocos comandos La mayoriacutea de los usuarios de vi se sienten un poco incoacutemodos alprincipio sin embargo despueacutes de alguacuten tiempo se encuentran aacutevidos de mayor conocimientode los comandos disponibles

El siguiente tutorial asume que el usuario ha completado el tutorial raacutepido (arriba) ypor lo tanto se siente a gusto con vi Este tutorial expone algunas de lascaracteriacutesticas maacutes poderosas de exvi desde copiar texto hasta la definicioacuten de macrosHay una seccioacuten sobre ex y los paraacutemetros para ajustar el editor a su gusto Estetutorial describe los comandos en vez de llevarle grupo por grupo

Se recomienda que usted disponga de alguacuten tiempo para probar los comandos en alguacuten textode ejemplo que se pueda permitir destruir

Este tutorial no expone todos los comandos de vi aunque se cubren los maacutes comuacutenmenteusados y auacuten otros adicionales Aunque usted elija usar otro editor de texto se esperaque apreciaraacute vi y lo que ofrece a quienes deciden usarlo

A41 Movimiento

La funcionalidad maacutes baacutesica de un editor es el mover el cursor por el texto Aquiacute estaacutenlos comandos de movimiento

h mueve el cursor un espacio a la izquierda

j mueve el cursor una liacutenea hacia abajo

k mueve el cursor una liacutenea hacia arriba

l mueve el cursor un espacio a la derecha

Algunas implementaciones tambieacuten permiten el uso de las teclas de cursor para mover elcursor

w mueve al principio de la siguiente palabra

e mueve al final de la siguiente palabra

E mueve al final de la siguiente palabra antes de un espacio

b mueve al principio de la palabra anterior

0 mueve al principio de la liacutenea actual

^ mueve a la primera palabra de la liacutenea actual

$ mueve al final de la liacutenea

ltCRgt mueve al principio de la siguiente liacutenea

shy mueve al principio de la liacutenea anterior

G mueve al final del fichero

1G mueve al principio del fichero

nG mueve a la liacutenea n

ltCntlgt G muestra el nuacutemero de liacutenea actual

va al pareacutentesis correspondiente

H mueve a la liacutenea superior en pantalla

M mueve a la liacutenea de en medio de la pantalla

L mueve al final de la pantalla

n_ mueve el cursor a la columna n

El texto se desplaza automaacuteticamente cuando el cursor alcanza la parte superior oinferior de la pantalla Tambieacuten hay comandos que permiten controlar el desplazamientodel texto

ltCntlgt f desplaza una pantalla hacia delante

ltCntlgt b desplaza una pantalla hacia atraacutes

ltCntlgt d desplaza media pantalla hacia abajo

ltCntlgt u desplaza media pantalla hacia arriba

Los comandos anteriores controlan el movimiento del cursor Algunos de los comandos usanun modificador de comandos en la forma de un nuacutemero que precede al comando Estacaracteriacutestica normalmente repite el comando ese nuacutemero de veces

Para mover el cursor ocho posiciones a la izquierda

8l mueve el cursor 8 posiciones a la izquierda

Si desea introducir un nuacutemero de espacios delante de un texto podriacutea usar el modificadorde comandos con el comando insertar Introduzca el nuacutemero de repeticiones (n) y despueacutes|_i_| seguido por el espacio y luego pulse la tecla |_Esc_|

ni inserta alguacuten texto y lo repite n veces

Los comandos que tratan con liacuteneas usan el modificador para referirse al nuacutemero de liacuteneaEl |_G_| es un buen ejemplo

1G mueve el cursor a la primera liacutenea

vi tiene un voluminoso grupo de comandos que se puede usar para mover el cursor por eltexto

vi tambieacuten puede posicionar el cursor en una liacutenea desde la liacutenea de comandos

vi +10 mi_ficherotex

Este comando abre el fichero llamado mi_ficherotex y pone el cursor 10 liacuteneas maacutes abajodel comienzo del fichero

Pruebe los comandos de esta seccioacuten Muy poca gente los recuerda todos en una solasesioacuten La mayor parte de los usuarios solamente utiliza una parte de estos comandos

Ahora se puede mover pero iquestcoacutemo modificar el texto

A42 Modificacioacuten del texto

El propoacutesito es cambiar el contenido del fichero y vi ofrece un amplio conjunto decomandos para ayudarnos en este proceso

Esta seccioacuten se concentra en antildeadir texto cambiar el texto existente y borrar texto Alfinal de esta seccioacuten usted tendraacute el conocimiento para crear cualquier fichero de textoque desee Las secciones restantes se concentran en comandos maacutes especializados yconvenientes

Cuando usted teclea nuevo texto puede introducir varias liacuteneas usando la tecla |_Intro_|Si hay que corregir un error tipograacutefico mientras introduce texto puede usar la tecla|_Retroceso_| para mover el cursor sobre el texto Las varias implementaciones de vi secomportan de manera diferente Algunas simplemente mueven el cursor hacia atraacutes y eltexto sigue vieacutendose y es aceptado Otras borran el texto cuando pulsa la tecla deborrado Otras versiones incluso permiten usar las teclas de cursores para mover elcursor mientras se estaacute en modo de entrada de texto Este modo de funcionamiento no es elnormal de vi Si el texto es visible y usa la tecla |_Esc_| mientras estaacute en la liacutenea enla que pulsoacute |_Retroceso_| entonces el texto que hay despueacutes del cursor se borraraacute Useel editor para acostumbrarse a este comportamiento

a Antildeadir texto a partir de la posicioacuten actual del cursor

A Antildeadir al final de la liacutenea

i Insertar texto a la izquierda del cursor

I Insertar texto a la izquierda del primer caracter que no sea espacio en laliacutenea actual

o Abrir una nueva liacutenea y antildeade texto debajo de la liacutenea actual

O Abrir una nueva liacutenea y antildeade texto encima de la liacutenea actual

vi tiene un pequentildeo grupo de comandos para borrar texto que se pueden mejorar con el usode modificadores

x Borrar el caraacutecter que estaacute debajo del cursor

dw Borrar desde la posicioacuten actual al final de la palabra

dd Borrar la liacutenea actual

D Borrar desde la posicioacuten actual al final de la liacutenea

Los modificadores se pueden usar para aumentar la potencia de los comandos Lossiguientes ejemplos son un subgrupo de las posibilidades

nx Borrar n caracteres desde el que estaacute bajo el cursor

ndd Borrar n liacuteneas

dnw Borrar n palabras (igual que ndw)

dG Borrar desde la posicioacuten actual hasta el final del fichero

d1G Borrar desde la posicioacuten actual hasta el principio del fichero

d$ Borrar desde la posicioacuten actual al final de la liacutenea (Esto es igual queD)

dn$ Borrar desde la liacutenea actual al final de la eneacutesima liacutenea

La lista de comandos anterior muestra que la operacioacuten de borrado puede ser muy uacutetilEsto se hace patente cuando se aplica en combinacioacuten con los comandos de movimiento decursor Hay que hacer notar que el comando |_D_| ignora los modificadores que se leapliquen

En ocasiones usted puede necesitar deshacer los cambios al texto Los siguientes comandosrecuperan el texto que habiacutea antes de hacer cambios

u Deshacer el uacuteltimo comando

U Deshacer todos los cambios ocurridos en la liacutenea actual

e Editar otra vez Recupera el estado del fichero desde la uacuteltima vez quese salvoacute

vi no soacutelo le permite deshacer cambios tambieacuten puede dar la vuelta al comandodeshacer Por ejemplo si usamos el comando |_5dd_| para borrar 5 liacuteneas se puedenrecuperar usando el comando |_u_| Si usted usa |_u_| una vez maacutes las 5 liacuteneasdesapareceraacuten de nuevo

vi ofrece comandos que permiten que se hagan cambios al texto sin tener que borrar yvolver a escribir

rc Reemplaza del caracter bajo el cursor con la letra c Se Mueve el cursoral modificador de repeticioacuten por ejemplo 2rc

R Sobreescribe el texto con el nuevo texto

cw Cambia el texto de la palabra actual

c$ Cambia el texto desde la posicioacuten actual al final de la liacutenea

cnw Cambia las siguientes n palabras (Igual que ncw)

cn$ Hacer cambios hasta el final de la eneacutesima liacutenea

C Hacer cambios hasta el final de la liacutenea actual

cc Hacer cambios en la liacutenea actual

s Sustituye el texto que escriba por el caracter actual

ns Sustituye el texto que escriba por los siguientes n caracteres

Las series de comandos de cambio que permiten que se introduzca un grupo de caracteres seterminan con la tecla |_Esc_|

El comando |_cw_| empieza en la posicioacuten actual en la palabra y termina al final de lapalabra

Cuando use un comando de cambio que especifica la distancia sobre la que se aplicaraacute elcambio vi pondraacute un $ en la uacuteltima posicioacuten de caraacutecter El nuevo texto puede sobrepasaro no llegar a la longitud original de texto

A43 Copiar y mover bloques de texto

El movimiento de texto supone la combinacioacuten de un nuacutemero de comandos para conseguir elpropoacutesito final Esta seccioacuten introduce los buffers1 con y sin nombre junto a loscomandos que cortan y pegan el texto

La copia de texto se realiza en tres pasos principales

1 Copia del texto a un buffer

2 Movimiento del cursor al lugar de destino

3 Pegar (poner) el texto en el buffer de edicioacuten

El buffer de edicioacuten no es sino el propio fichero en el que usted estaacute trabajando

Para Copiar texto al buffer sin nombre use el comando |_y_|

yy Mueve una copia de la liacutenea actual al buffer sin nombre

Y Mueve una copia de la liacutenea actual al buffer sin nombre

nyy Mueve las siguientes n lineas al buffer sin nombre

nY Mueve las siguientes n liacuteneas al buffer sin nombre

yw Mueve una palabra al buffer sin nombre

ynw Mueve n palabras al buffer sin nombre

nyw Mueve n palabras al buffer sin nombre

y$ Mueve el texto desde la posicioacuten actual al final de la liacutenea al buffer sinnombre

_____________________________________________

1 N del T buffer es una palabra inglesa que se refiere a un espacio reservado enmemoria para guardar alguna informacioacuten temporalmente En este caso se usan buffers paraalmacenar una copia temporal del texto que usted desea copiar o mover

El buffer sin nombre es un buffer temporal que puede ser faacutecilmente afectado por otroscomandos comunes Hay ocasiones en las cuales necesitamos mantener el contenido de unbuffer durante un periacuteodo maacutes extenso de tiempo En este caso se usariacutea un buffer connombre vi tiene 26 buffers con nombre Los buffers usan las letras del alfabeto como elnombre de identificacioacuten Para distinguir un comando de un buffer con nombre vi usa elcaraacutecter |__| Cuando use un buffer con nombre de letra minuacutescula los contenidos sesobre escriben mientras que el uso del nombre en letra mayuacutescula antildeade el nuevo texto alcontenido actual

ayy Mueve la liacutenea actual al buffer con nombre a

aY Mueve la liacutenea actual al buffer con nombre a

byw Mueve la palabra actual al buffer con nombre b

Byw Antildeade la palabra actual al contenido del buffer b

by3w Mueve las siguientes 3 palabras al buffer b

Use el comando |_p_| para pegar el contenido del buffer al buffer de edicioacuten

p Pegar del buffer sin nombre a la DERECHA del cursor

P Pegar del buffer sin nombre a la IZQUIERDA del cursor

nP Pegar n copias del buffer sin nombre a la IZQUIERDA del cursor

aP Pegar del buffer con nombre a a la DERECHA del cursor

b3P Pegar 3 copias del buffer con nombre b a la IZQUIERDA del cursor

Cuando use vi dentro de un xterm tiene otra opcioacuten para copiar texto Marque el bloque detexto que desea copiar arrastrando el cursor del ratoacuten sobre el texto Si mantienepulsado el botoacuten izquierdo del ratoacuten y arrastra el ratoacuten desde el comienzo al finalinvertiraacute el viacutedeo del texto Esta operacioacuten automaacuteticamente coloca el texto en un bufferreservado para el servidor de X Window

Para pegar el texto pulse el botoacuten de enmedio Acueacuterdese de poner vi en modo deinsercioacuten dado que la entrada de texto se podriacutea interpretar como comandos y el resultadoseriacutea cuando menos desagradable Usando la misma teacutecnica se puede copiar una sola palabrahaciendo doble click con el botoacuten izquierdo del ratoacuten sobre la palabra Solamente secopiaraacute esa uacutenica palabra Para pegarla se usa el mismo procedimiento que anteriormenteLos contenidos del buffer soacutelo cambian cuando se marca otro bloque de texto

Para mover un bloque de texto son necesarios tres pasos

1 Borrar el texto para ponerlo en un buffer con o sin nombre

2 Mover el cursor a la posicioacuten de destino

3 Pegar el buffer

El proceso es el mismo que el de copia con un solo cambio en el primer paso para borrarCuando

se usa el comando |_dd_| la liacutenea se borra y se coloca en el buffer sin nombre Luegopuede poner el

contenido del mismo modo que lo hizo cuando copioacute el texto en la posicioacuten deseada

add Borrar la liacutenea y ponerla en el buffer con nombre a

a4dd Borrar cuatro liacuteneas y ponerlas en el buffer con nombre a

dw Borrar una palabra y ponerla en el buffer sin nombre

Vea la seccioacuten sobre el modificado de texto para ver maacutes ejemplos de borrado de texto

En el caso de que el sistema falle el contenido de todos los buffers se pierde exceptoel contenido de los buffers de edicioacuten que se puede recuperar (ver comandos Uacutetiles)

A44 Buacutesqueda y cambio de texto

vi dispone de varios comandos para buacutesqueda Usted puede buscar desde un solo caraacutecterhasta una expressioacuten completa

Los dos comandos principales de buacutesqueda basados en caracteres son |_f_| y |_t_|

fc Encuentra el siguiente caracter c Se mueve a la derecha del siguiente

Fc Encuentra el siguiente caracter c Se mueve a la izquierda del anterior

tc Se mueve a la DERECHA al caracter anterior al siguiente c

Tc Se mueve a la IZQUIERDA al caraacutecter que sigue al c anterior vi(En algunasesto es lo mismo que Fc)

Repite el uacuteltimo comando fFtT

Igual que () pero cambiando la direccioacuten del comando original

Si el caracter que usted buscaba no se encuentra vi emitiraacute un pitido o le daraacute otrotipo de sentildeal (tal vez un parpadeo de toda la pantalla)

vi le permite buscar una cadena de texto en el buffer de edicioacuten

tira Busca hacia la derecha y abajo la siguiente instancia de tira

tira Busca hacia la izquierda y arriba la siguiente instancia de tira

n Repite el uacuteltimo comando o

N Repite el uacuteltimo comando o en la direccioacuten opuesta

Cuando use los comandos ||_||or |__| la uacuteltima liacutenea en la parte baja de la pantallase vaciaraacute

Introduzca en esa liacutenea la tira de caracteres que desea buscar y pulse |_Intro_|

La tira en el comando ||_||or |__|puede ser una expresioacuten regular Una expresioacutenregular puede ser una descripcioacuten de un conjunto de tiras La descripcioacuten se construyeusando texto entremezclado con caracteres especiales Los caracteres especiales de unaexpresioacuten regular son [ ] ^ $

Vale por cualquier caraacutecter excepto el caraacutecter de nueva liacutenea

Tecla de escape para cualquier caracter especial

Vale por 0 o maacutes instancias del caracter anterior

[ ] Busca exactamente uno de los caracteres incluiacutedos entre los corchetes

^ El caracter que sigue a ^ debe estar al principio de la liacutenea

$ El caracter que precede a $ se busca al final de la liacutenea

[^] Busca cualquier cosa que no se encuentre despues de ^ dentro de loscorchetes

[shy] Busca un rango de caracteres

El uacutenico modo de acostumbrarse a usar las expresiones regulares es usaacutendolas Acontinuacioacuten mostramos varios ejemplos de uso

cch Coincide con coche cacho cochera etc

cpe Coincide con cpe cper etc

stop Coincide con stp stop stoop etc

carn Coincide con cartoacuten carrilloacuten carmen etc

xyz Coincide con xyz al final de la liacutenea

^Los Encuentra cualquier liacutenea que empiece con Los

abcdef$ Encuentra cualquier liacutenea que termine con abcdef

^Solo$ Coincide con cualquier liacutenea que soacutelo tenga la palabra Solo

p[aiue]so Coincide con paso piso puso peso

Ver[DshyF] Coincide con VerD VerE VerF

Ver[^1shy9] Coincide con Ver siempre que a continuacioacuten NO haya un nuacutemero

the[ir][re] Coincide con their therr there theie

[AshyZashyz][AshyZashyz] Coincide con cualquier palabra

vi usa el modo de comandos de ex para llevar a cabo buacutesquedas y sustituciones Todos loscomandos que empiezan con dos puntos son comandos en modo ex

Los comandos de buacutesqueda y sustitucioacuten permiten que se usen expresiones regulares sobreun rango de liacuteneas y sustituir la tira de caracteres que se busca El usuario puede pedirconfirmacioacuten antes de que se realice la sustitucioacuten Merece la pena hacer una revisioacuten dela representacioacuten de los nuacutemeros de liacutenea en el tutorial de ed

ltprimgtltultgtsltbuscagtltsustgtg Comando general

1$slosLosg Buscar el fichero entero y sustituir los por Los

stheTheg siginifica el fichero entero (igual que arriba)

5s^g Borra el contenido de la liacutenea actual hasta la quinta

slosLosgc Sustituye los con Los preguntando antes de hacer laoperacioacuten

s^g Borra los primeros cuatro caraacutecteres de cada liacutenea

El comando de buacutesqueda es muy potente cuando se combina con las expresiones regulares Sino se incluye la directiva |_g_| entonces el cambio soacutelo se aplica a la primera instanciaque se encuentre en cada liacutenea

En ocasiones usted quiere usar los caracteres de buacutesqueda en los caracteres desustitucioacuten Se puede reescribir todo el comando en la liacutenea pero vi permite que loscaracteres de sustitucioacuten incluyan algunos caracteres especiales

15sayudaampndog Sustituye ayuda por ayudando en las cinco primeras liacuteneas

s ampampg Duplica el nuacutemero de espacios entre palabras

El uso de la tira de caracteres completa_para buacutesqueda_tiene sus liacutemites y por lo tantovi usa los pareacutentesis en secuencia de escape ||_(_|| y ||_)_||para seleccionar el rangode la sustitucioacuten El uso de un diacutegito en secuencia de escape |_1_| identifica el rangoen el orden de la definicioacuten y la sustitucioacuten se puede hacer

s^()1g Borra todo despues de e incluyendo los dos puntos

s()()21g Da la vuelta a las palabras a los dos lados de losdos puntos

vi ofrece comandos muy potentes que muchos editores de texto modernos no tienen o nopueden ofrecer El coste de esta potencia suele ser tambieacuten el principal argumento encontra de vi Los comandos pueden ser difiacuteciles de aprender y leer Sin embargo lamayoriacutea de las cosas buenas suelen ser un poco extrantildeas al principio Con un poco depraacutectica y tiempo los comandos de vi se convertiraacuten en una segunda naturaleza para Ud

Apeacutendice B

The GNU General Public License

GNU GENERAL PUBLIC LICENSE

Version 2 June 1991

Copyright Oc 1989 1991 Free Software Foundation Inc 675 Mass Ave Cambridge MA 02139USA

Everyone is permitted to copy and distribute verbatim copies of this license documentbut changing it is not allowed

Preamble

The licenses for most software are designed to take away your freedom to share and changeit By contrast the GNU General Public License is intended to guarantee your freedom toshare and change free software to make sure the software is free for all its users ThisGeneral Public License applies to most of the Free Software Foundations software and toany other program whose authors commit to using it (Some other Free Software Foundationsoftware is covered by the GNU Library General Public License instead) You can apply itto your programs too

When we speak of free software we are referring to freedom not price Our GeneralPublic Licenses are designed to make sure that you have the freedom to distribute copiesof free software (and charge for this service if you wish) that you receive source codeor can get it if you want it that you can change the software or use pieces of it in newfree programs and that you know you can do these things

To protect your rights we need to make restrictions that forbid anyone to deny you theserights or to ask you to surrender the rights These restrictions translate to certainresponsibilities for you if you distribute copies of the software or if you modify it

For example if you distribute copies of such a program whether gratis or for a fee youmust give the recipients all the rights that you have You must make sure that they tooreceive or can get the source code And you must show them these terms so they know theirrights

We protect your rights with two steps (1) copyright the software and (2) offer you thislicense which gives you legal permission to copy distribute andor modify the software

Also for each authors protection and ours we want to make certain that everyoneunderstands that there is no warranty for this free software If the software is modifiedby someone else and passed on we want its recipients to know that what they have is notthe original so that any problems introduced by others will not reflect on the originalauthors reputations

Finally any free program is threatened constantly by software patents We wish to avoidthe danger that redistributors of a free program will individually obtain patentlicenses in effect making the program proprietary To prevent this we have made itclear that any patent must be licensed for everyones free use or not licensed at all

The precise terms and conditions for copying distribution and modification follow

Terms and Conditions

0 This License applies to any program or other work which contains a notice placed bythe copyright holder saying it may be distributed under the terms of this General PublicLicense

The Program below refers to any such program or work and a work based on theProgram means either the Program or any derivative work under copyright law that is tosay a work containing the Program or a portion of it either verbatim or withmodifications andor translated into another language (Hereinafter translation isincluded without limitation in the term modification) Each licensee is addressed asyou

Activities other than copying distribution and modification are not covered by thisLicense they are outside its scope The act of running the Program is not restrictedand the output from the Program is covered only if its contents constitute a work basedon the Program (independent of having been made by running the Program) Whether that istrue depends on what the Program does

1 You may copy and distribute verbatim copies of the Programs source code as youreceive it in any medium provided that you conspicuously and appropriately publish oneach copy an appropriate copyright notice and disclaimer of warranty keep intact all thenotices that refer to this License and to the absence of any warranty and give any otherrecipients of the Program a copy of this License along with the Program

You may charge a fee for the physical act of transferring a copy and you may at youroption offer warranty protection in exchange for a fee

2 You may modify your copy or copies of the Program or any portion of it thus forming awork based on the Program and copy and distribute such modifications or work under theterms of Section 1 above provided that you also meet all of these conditions

a You must cause the modified files to carry prominent notices stating that you changedthe files and the date of any change

b You must cause any work that you distribute or publish that in whole or in partcontains or is derived from the Program or any part thereof to be licensed as a whole atno charge to all third parties under the terms of this License

c If the modified program normally reads commands interactively when run you must causeit when started running for such interactive use in the most ordinary way to print ordisplay an announcement including an appropriate copyright notice and a notice that thereis no warranty (or else saying that you provide a warranty) and that users mayredistribute the program under these conditions and telling the user how to view a copyof this License (Exception if the Program itself is interactive but does not normallyprint such an announcement your work based on the Program is not required to print anannouncement)

These requirements apply to the modified work as a whole If identifiable sections ofthat work are not derived from the Program and can be reasonably considered independentand separate works in themselves then this License and its terms do not apply to thosesections when you distribute them as separate works But when you distribute the samesections as part of a whole which is a work based on the Program the distribution of thewhole must be on the terms of this License whose permissions for other licensees extendto the entire whole and thus to each and every part regardless of who wrote it

Thus it is not the intent of this section to claim rights or contest your rights to workwritten entirely by you rather the intent is to exercise the right to control thedistribution of derivative or collective works based on the Program

In addition mere aggregation of another work not based on the Program with the Program(or with a work based on the Program) on a volume of a storage or distribution mediumdoes not bring the other work under the scope of this License

3 You may copy and distribute the Program (or a work based on it under Section 2) inobject code or executable form under the terms of Sections 1 and 2 above provided thatyou also do one of the following

a Accompany it with the complete corresponding machineshyreadable source code which mustbe distributed under the terms of Sections 1 and 2 above on a medium customarily used forsoftware interchange or b Accompany it with a written offer valid for at least threeyears to give any third party for a charge no more than your cost of physicallyperforming source distribution a complete machineshyreadable copy of the correspondingsource code to be distributed under the terms of Sections 1 and 2 above on a mediumcustomarily used for software interchange or

c Accompany it with the information you received as to the offer to distributecorresponding source code (This alternative is allowed only for noncommercialdistribution and only if you received the program in object code or executable form withsuch an offer in accord with Subsection b above)

The source code for a work means the preferred form of the work for making modificationsto it For an executable work complete source code means all the source code for allmodules it contains plus any associated interface definition files plus the scriptsused to control compilation and installation of the executable However as a specialexception the source code distributed need not include anything that is normallydistributed (in either source or binary form) with the major components (compilerkernel and so on) of the operating system on which the executable runs unless thatcomponent itself accompanies the executable

If distribution of executable or object code is made by offering access to copy from adesignated place then offering equivalent access to copy the source code from the sameplace counts as distribution of the source code even though third parties are notcompelled to copy the source along with the object code

4 You may not copy modify sublicense or distribute the Program except as expresslyprovided under this License Any attempt otherwise to copy modify sublicense ordistribute the Program is void and will automatically terminate your rights under thisLicense However parties who have received copies or rights from you under thisLicense will not have their licenses terminated so long as such parties remain in fullcompliance

5 You are not required to accept this License since you have not signed it Howevernothing else grants you permission to modify or distribute the Program or its derivativeworks These actions are prohibited by law if you do not accept this License Thereforeby modifying or distributing the Program (or any work based on the Program) you indicateyour acceptance of this License to do so and all its terms and conditions for copyingdistributing or modifying the Program or works based on it

6 Each time you redistribute the Program (or any work based on the Program) therecipient automatically receives a license from the original licensor to copy distributeor modify the Program subject to these terms and conditions You may not impose anyfurther restrictions on the recipients exercise of the rights granted herein You arenot responsible for enforcing compliance by third parties to this License

7 If as a consequence of a court judgment or allegation of patent infringement or forany other reason (not limited to patent issues) conditions are imposed on you (whetherby court order agreement or otherwise) that contradict the conditions of this Licensethey do not excuse you from the conditions of this License If you cannot distribute soas to satisfy simultaneously your obligations under this License and any other pertinentobligations then as a consequence you may not distribute the Program at all Forexample if a patent license would not permit royaltyshyfree redistribution of the Programby all those who receive copies directly or indirectly through you then the only way youcould satisfy both it and this License would be to refrain entirely from distribution ofthe Program

If any portion of this section is held invalid or unenforceable under any particularcircumstance the balance of the section is intended to apply and the section as a wholeis intended to apply in other circumstances

It is not the purpose of this section to induce you to infringe any patents or otherproperty right claims or to contest validity of any such claims this section has thesole purpose of protecting the integrity of the free software distribution system whichis implemented by public license practices Many people have made generous contributionsto the wide range of software distributed through that system in reliance on consistentapplication of that system it is up to the authordonor to decide if he or she iswilling to distribute software through any other system and a licensee cannot impose thatchoice

This section is intended to make thoroughly clear what is believed to be a consequence ofthe rest of this License

8 If the distribution andor use of the Program is restricted in certain countrieseither by patents or by copyrighted interfaces the original copyright holder who placesthe Program under this License may add an explicit geographical distribution limitationexcluding those countries so that distribution is permitted only in or among countriesnot thus excluded In such case this License incorporates the limitation as if writtenin the body of this License

9 The Free Software Foundation may publish revised andor new versions of the GeneralPublic License from time to time Such new versions will be similar in spirit to thepresent version but may differ in detail to address new problems or concerns

Each version is given a distinguishing version number If the Program specifies a versionnumber of this License which applies to it and any later version you have the optionof following the terms and conditions either of that version or of any later versionpublished by the Free Software Foundation If the Program does not specify a versionnumber of this License you may choose any version ever published by the Free SoftwareFoundation

10 If you wish to incorporate parts of the Program into other free programs whosedistribution conditions are different write to the author to ask for permission Forsoftware which is copyrighted by the Free Software Foundation write to the Free SoftwareFoundation we sometimes make exceptions for this Our decision will be guided by the two

goals of preserving the free status of all derivatives of our free software and ofpromoting the sharing and reuse of software generally

NO WARRANTY

11 BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE THERE IS NO WARRANTY FOR THE PROGRAMTO THE EXTENT PERMITTED BY APPLICABLE LAW EXCEPT WHEN OTHERWISE STATED IN WRITING THECOPYRIGHT HOLDERS ANDOR OTHER PARTIES PROVIDE THE PROGRAM AS IS WITHOUT WARRANTY OFANY KIND EITHER EXPRESSED OR IMPLIED INCLUDING BUT NOT LIMITED TO THE IMPLIEDWARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE THE ENTIRE RISK AS TOTHE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU SHOULD THE PROGRAM PROVEDEFECTIVE YOU ASSUME THE COST OF ALL NECESSARY SERVICING REPAIR OR CORRECTION

12 IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING WILL ANYCOPYRIGHT HOLDER OR ANY OTHER PARTY WHO MAY MODIFY ANDOR REDISTRIBUTE THE PROGRAM ASPERMITTED ABOVE BE LIABLE TO YOU FOR DAMAGES INCLUDING ANY GENERAL SPECIAL INCIDENTALOR CONSEQUENTIAL DAMAGES ARISING OUT OF THE USE OR INABILITY TO USE THE PROGRAM(INCLUDING BUT NOT LIMITED TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSESSUSTAINED BY YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHERPROGRAMS) EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF SUCHDAMAGES

How to Apply These Terms to Your New Programs

If you develop a new program and you want it to be of the greatest possible use to thepublic the best way to achieve this is to make it free software which everyone canredistribute and change under these terms

To do so attach the following notices to the program It is safest to attach them to thestart of each source file to most effectively convey the exclusion of warranty and eachfile should have at least the copyright line and a pointer to where the full notice isfound

one line to give the programs name and an idea of what it does

Copyright Oc 19yy name of author

This program is free software you can redistribute it andor modify it under the termsof the GNU General Public License as published by the Free Software Foundation eitherversion 2 of the License or (at your option) any later version

This program is distributed in the hope that it will be useful but WITHOUT ANY WARRANTYwithout even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSESee the GNU General Public License for more details

You should have received a copy of the GNU General Public License along with thisprogram if not write to the Free Software Foundation Inc 675 Mass Ave Cambridge MA02139

Also add information on how to contact you by electronic and paper mail

If the program is interactive make it output a short notice like this when it starts inan interactive mode

Gnomovision version 69 Copyright Oc 19yy name of author

Gnomovision comes with ABSOLUTELY NO WARRANTY for details type `show w

This is free software and you are welcome to redistribute it under certain conditionstype show c for details

The hypothetical commands show w and show c should show the appropriate parts of theGeneral Public License Of course the commands you use may be called something otherthan show w and show c they could even be mouseshyclicks or menu items whatever suitsyour program

You should also get your employer (if you work as a programmer) or your school if anyto sign a copyright disclaimer for the program if necessary Here is a sample alterthe names

Yoyodyne Inc hereby disclaims all copyright interest in the program `Gnomovision(which makes passes at compilers) written by James Hacker

signature of Ty Coon 1 April 1989

Ty Coon President of Vice

This General Public License does not permit incorporating your program into proprietaryprograms If your program is a subroutine library you may consider it more useful topermit linking proprietary applications with the library If this is what you want to douse the GNU Library General Public License instead of this License

Apeacutendice C

The GNU Library General Public

License

GNU LIBRARY GENERAL PUBLIC LICENSE

Version 2 June 1991

Copyright Oc 1991 Free Software Foundation Inc 675 Mass Ave Cambridge MA 02139 USAEveryone is permitted to copy and distribute verbatim copies of this license documentbut

changing it is not allowed [This is the first released version of the library GPL It isnumbered 2 because it goes with version 2 of the ordinary GPL]

Preamble

The licenses for most software are designed to take away your freedom to share and changeit By contrast the GNU General Public Licenses are intended to guarantee your freedomto share and change free softwareshyto make sure the software is free for all its users

This license the Library General Public License applies to some specially designatedFree Software Foundation software and to any other libraries whose authors decide to useit You can use it for your libraries too

When we speak of free software we are referring to freedom not price Our GeneralPublic Licenses are designed to make sure that you have the freedom to distribute copiesof free software (and charge for this service if you wish) that you receive source codeor can get it if you want it that you can change the software or use pieces of it in newfree programs and that you know you can do these things

To protect your rights we need to make restrictions that forbid anyone to deny you theserights or to ask you to surrender the rights These restrictions translate to certainresponsibilities for you if you distribute copies of the library or if you modify it

For example if you distribute copies of the library whether gratis or for a fee youmust give the recipients all the rights that we gave you You must make sure that theytoo receive or can get the source code If you link a program with the library you mustprovide complete object files to the recipients so that they can relink them with thelibrary after making changes to the library and recompiling it And you must show themthese terms so they know their rights

Our method of protecting your rights has two steps (1) copyright the library and (2)offer you this license which gives you legal permission to copy distribute andor modifythe library

Also for each distributors protection we want to make certain that everyoneunderstands that there is no warranty for this free library If the library is modifiedby someone else and passed on we want its recipients to know that what they have is notthe original version so that any problems introduced by others will not reflect on theoriginal authors reputations

Finally any free program is threatened constantly by software patents We wish to avoidthe danger that companies distributing free software will individually obtain patentlicenses thus in effect transforming the program into proprietary software To preventthis we have made it clear that any patent must be licensed for everyones free use ornot licensed at all

Most GNU software including some libraries is covered by the ordinary GNU GeneralPublic License which was designed for utility programs This license the GNU LibraryGeneral Public License applies to certain designated libraries This license is quitedifferent from the ordinary one be sure to read it in full and dont assume thatanything in it is the same as in the ordinary license

The reason we have a separate public license for some libraries is that they blur thedistinction we usually make between modifying or adding to a program and simply using itLinking a program with a library without changing the library is in some sense simplyusing the library and is analogous to running a utility program or application programHowever in a textual and legal sense the linked executable is a combined work aderivative of the original library and the ordinary General Public License treats it assuch

Because of this blurred distinction using the ordinary General Public License forlibraries did not effectively promote software sharing because most developers did notuse the libraries We concluded that weaker conditions might promote sharing better

However unrestricted linking of nonshyfree programs would deprive the users of thoseprograms of all benefit from the free status of the libraries themselves This LibraryGeneral Public License is intended to permit developers of nonshyfree programs to use freelibraries while preserving your freedom as a user of such programs to change the freelibraries that are incorporated in them (We have not seen how to achieve this as regardschanges in header files but we have achieved it as regards changes in the actualfunctions of the Library) The hope is that this will lead to faster development of freelibraries

The precise terms and conditions for copying distribution and modification follow Payclose attention to the difference between a work based on the library and a work thatuses the library

The former contains code derived from the library while the latter only works togetherwith the library

Note that it is possible for a library to be covered by the ordinary General PublicLicense rather than by this special one

Terms and Conditions for Copying Distribution and Modification

0 This License Agreement applies to any software library which contains a notice placedby the copyright holder or other authorized party saying it may be distributed under theterms of this Library General Public License (also called this License) Each licenseeis addressed as you

A library means a collection of software functions andor data prepared so as to beconveniently linked with application programs (which use some of those functions anddata) to form executables

The Library below refers to any such software library or work which has beendistributed under these terms A work based on the Library means either the Library orany derivative work under copyright law that is to say a work containing the Library ora portion of it either verbatim or with modifications andor translatedstraightforwardly into another language

(Hereinafter translation is included without limitation in the term modification)

Source code for a work means the preferred form of the work for making modifications toit For a library complete source code means all the source code for all modules itcontains plus any associated interface definition files plus the scripts used tocontrol compilation and installation of the library

Activities other than copying distribution and modification are not covered by thisLicense they are outside its scope The act of running a program using the Library isnot restricted and output from such a program is covered only if its contents constitutea work based on the Library (independent of the use of the Library in a tool for writingit) Whether that is true depends on what the Library does and what the program that usesthe Library does

1 You may copy and distribute verbatim copies of the Librarys complete source code asyou receive it in any medium provided that you conspicuously and appropriately publishon each copy an appropriate copyright notice and disclaimer of warranty keep intact allthe notices that refer to this License and to the absence of any warranty and distributea copy of this License along with the Library

You may charge a fee for the physical act of transferring a copy and you may at youroption offer warranty protection in exchange for a fee

2 You may modify your copy or copies of the Library or any portion of it thus forming awork based on the Library and copy and distribute such modifications or work under theterms of Section 1 above provided that you also meet all of these conditions

a The modified work must itself be a software library

b You must cause the files modified to carry prominent notices stating that you changedthe files and the date of any change

c You must cause the whole of the work to be licensed at no charge to all third partiesunder the terms of this License

d If a facility in the modified Library refers to a function or a table of data to besupplied by an application program that uses the facility other than as an argumentpassed when the facility is invoked then you must make a good faith effort to ensurethat in the event an application does not supply such function or table the facilitystill operates and performs whatever part of its purpose remains meaningful

(For example a function in a library to compute square roots has a purpose that isentirely wellshydefined independent of the application Therefore Subsection 2d requiresthat any applicationshysupplied function or table used by this function must be optionalif the application does not supply it the square root function must still compute squareroots)

These requirements apply to the modified work as a whole If identifiable sections ofthat work are not derived from the Library and can be reasonably considered independentand separate works in themselves then this License and its terms do not apply to thosesections when you distribute them as separate works But when you distribute the same

sections as part of a whole which is a work based on the Library the distribution of thewhole must be on the terms of this License whose permissions for other licensees extendto the entire whole and thus to each and every part regardless of who wrote it

Thus it is not the intent of this section to claim rights or contest your rights to workwritten entirely by you rather the intent is to exercise the right to control thedistribution of derivative or collective works based on the Library

In addition mere aggregation of another work not based on the Library with the Library(or with a work based on the Library) on a volume of a storage or distribution mediumdoes not bring the other work under the scope of this License

3 You may opt to apply the terms of the ordinary GNU General Public License instead ofthis License to a given copy of the Library To do this you must alter all the noticesthat refer to this License so that they refer to the ordinary GNU General PublicLicense version 2 instead of to this License (If a newer version than version 2 of theordinary GNU General Public License has appeared then you can specify that versioninstead if you wish) Do not make any other change in these notices

Once this change is made in a given copy it is irreversible for that copy so theordinary GNU General Public License applies to all subsequent copies and derivative worksmade from that copy

This option is useful when you wish to copy part of the code of the Library into aprogram that is not a library

4 You may copy and distribute the Library (or a portion or derivative of it underSection 2) in object code or executable form under the terms of Sections 1 and 2 aboveprovided that you accompany it with the complete corresponding machineshyreadable sourcecode which must be distributed under the terms of Sections 1 and 2 above on a mediumcustomarily used for software interchange

If distribution of object code is made by offering access to copy from a designatedplace then offering equivalent access to copy the source code from the same placesatisfies the requirement to distribute the source code even though third parties arenot compelled to copy the source along with the object code

5 A program that contains no derivative of any portion of the Library but is designedto work with the Library by being compiled or linked with it is called a work that usesthe Library

Such a work in isolation is not a derivative work of the Library and therefore fallsoutside the scope of this License

However linking a work that uses the Library with the Library creates an executablethat is a derivative of the Library (because it contains portions of the Library) ratherthan a work that uses the library The executable is therefore covered by this LicenseSection 6 states terms for distribution of such executables

When a work that uses the Library uses material from a header file that is part of theLibrary the object code for the work may be a derivative work of the Library even thoughthe source code is not Whether this is true is especially significant if the work can belinked without the Library or if the work is itself a library The threshold for this tobe true is not precisely defined by law

If such an object file uses only numerical parameters data structure layouts andaccessors and small macros and small inline functions (ten lines or less in length)

then the use of the object file is unrestricted regardless of whether it is legally aderivative work (Executables containing this object code plus portions of the Librarywill still fall under Section 6)

Otherwise if the work is a derivative of the Library you may distribute the object codefor the work under the terms of Section 6 Any executables containing that work also fallunder Section 6 whether or not they are linked directly with the Library itself

6 As an exception to the Sections above you may also compile or link a work that usesthe Library with the Library to produce a work containing portions of the Library anddistribute that work under terms of your choice provided that the terms permitmodification of the work for the customers own use and reverse engineering for debuggingsuch modifications

You must give prominent notice with each copy of the work that the Library is used in itand that the Library and its use are covered by this License You must supply a copy ofthis License If the work during execution displays copyright notices you must includethe copyright notice for the Library among them as well as a reference directing theuser to the copy of this License Also you must do one of these things

a Accompany the work with the complete corresponding machineshyreadable source code forthe Library including whatever changes were used in the work (which must be distributedunder Sections 1 and 2 above) and if the work is an executable linked with the Librarywith the complete machineshyreadable work that uses the Library as object code andorsource code so that the user can modify the Library and then relink to produce amodified executable containing the modified Library (It is understood that the user whochanges the contents of definitions files in the Library will not necessarily be able torecompile the application to use the modified definitions)

b Accompany the work with a written offer valid for at least three years to give thesame user the materials specified in Subsection 6a above for a charge no more than thecost of performing this distribution

c If distribution of the work is made by offering access to copy from a designatedplace offer equivalent access to copy the above specified materials from the same place

d Verify that the user has already received a copy of these materials or that you havealready sent this user a copy

For an executable the required form of the work that uses the Library must include anydata and utility programs needed for reproducing the executable from it However as aspecial exception the source code distributed need not include anything that is normallydistributed (in either source or binary form) with the major components (compilerkernel and so on) of the operating system on which the executable runs unless thatcomponent itself accompanies the executable

It may happen that this requirement contradicts the license restrictions of otherproprietary libraries that do not normally accompany the operating system Such acontradiction means you cannot use both them and the Library together in an executablethat you distribute

7 You may place library facilities that are a work based on the Library sideshybyshyside ina single library together with other library facilities not covered by this License anddistribute such a combined library provided that the separate distribution of the workbased on the Library and of the other library facilities is otherwise permitted andprovided that you do these two things

a Accompany the combined library with a copy of the same work based on the Libraryuncombined with any other library facilities This must be distributed under the terms ofthe Sections above

b Give prominent notice with the combined library of the fact that part of it is a workbased on the Library and explaining where to find the accompanying uncombined form ofthe same work

8 You may not copy modify sublicense link with or distribute the Library except asexpressly provided under this License Any attempt otherwise to copy modify sublicenselink with or distribute the Library is void and will automatically terminate yourrights under this License

However parties who have received copies or rights from you under this License willnot have their licenses terminated so long as such parties remain in full compliance

9 You are not required to accept this License since you have not signed it Howevernothing else grants you permission to modify or distribute the Library or its derivativeworks These actions are prohibited by law if you do not accept this License Thereforeby modifying or distributing the Library (or any work based on the Library) you indicateyour acceptance of this License to do so and all its terms and conditions for copyingdistributing or modifying the Library or works based on it

10 Each time you redistribute the Library (or any work based on the Library) therecipient automatically receives a license from the original licensor to copydistribute link with or modify the Library subject to these terms and conditions Youmay not impose any further restrictions on the recipients exercise of the rights grantedherein You are not responsible for enforcing compliance by third parties to thisLicense

11 If as a consequence of a court judgment or allegation of patent infringement or forany other reason (not limited to patent issues) conditions are imposed on you (whetherby court order agreement or otherwise) that contradict the conditions of this Licensethey do not excuse you from the conditions of this License If you cannot distribute soas to satisfy simultaneously your obligations under this License and any other pertinentobligations then as a consequence you may not distribute the Library at all Forexample if a patent license would not permit royaltyshyfree redistribution of the Libraryby all those who receive copies directly or indirectly through you then the only way youcould satisfy both it and this License would be to refrain entirely from distribution ofthe Library

If any portion of this section is held invalid or unenforceable under any particularcircumstance the balance of the section is intended to apply and the section as a wholeis intended to apply in other circumstances

It is not the purpose of this section to induce you to infringe any patents or otherproperty right claims or to contest validity of any such claims this section has thesole purpose of protecting the integrity of the free software distribution system whichis implemented by public license practices Many people have made generous contributionsto the wide range of software distributed through that system in reliance on consistentapplication of that system it is up to the authordonor to decide if he or she iswilling to distribute software through any other system and a licensee cannot impose thatchoice

This section is intended to make thoroughly clear what is believed to be a consequence ofthe rest of this License

12 If the distribution andor use of the Library is restricted in certain countrieseither by patents or by copyrighted interfaces the original copyright holder who placesthe Library under this License may add an explicit geographical distribution limitationexcluding those countries so that distribution is permitted only in or among countriesnot thus excluded In such case this License incorporates the limitation as if writtenin the body of this License

13 The Free Software Foundation may publish revised andor new versions of the LibraryGeneral Public License from time to time Such new versions will be similar in spirit tothe present version but may differ in detail to address new problems or concerns

Each version is given a distinguishing version number If the Library specifies a versionnumber of this License which applies to it and any later version you have the option offollowing the terms and conditions either of that version or of any later versionpublished by the Free Software Foundation If the Library does not specify a licenseversion number you may choose any version ever published by the Free SoftwareFoundation

14 If you wish to incorporate parts of the Library into other free programs whosedistribution conditions are incompatible with these write to the author to ask forpermission For software which is copyrighted by the Free Software Foundation write tothe Free Software Foundation we sometimes make exceptions for this Our decision will beguided by the two goals of preserving the free status of all derivatives of our freesoftware and of promoting the sharing and reuse of software generally

NO WARRANTY

11 BECAUSE THE LIBRARY IS LICENSED FREE OF CHARGE THERE IS NO WARRANTY FOR THE LIBRARYTO THE EXTENT PERMITTED BY APPLICABLE LAW EXCEPT WHEN OTHERWISE STATED IN WRITING THECOPYRIGHT HOLDERS ANDOR OTHER PARTIES PROVIDE THE LIBRARY AS IS WITHOUT WARRANTY OFANY KIND EITHER EXPRESSED OR IMPLIED INCLUDING BUT NOT LIMITED TO THE IMPLIEDWARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE THE ENTIRE RISK AS TOTHE QUALITY AND PERFORMANCE OF THE LIBRARY IS WITH YOU SHOULD THE LIBRARY PROVEDEFECTIVE YOU ASSUME THE COST OF ALL NECESSARY SERVICING REPAIR OR CORRECTION

12 IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING WILL ANYCOPYRIGHT HOLDER OR ANY OTHER PARTY WHO MAY MODIFY ANDOR REDISTRIBUTE THE LIBRARY ASPERMITTED ABOVE BE LIABLE TO YOU FOR DAMAGES INCLUDING ANY GENERAL SPECIAL INCIDENTALOR CONSEQUENTIAL DAMAGES ARISING OUT OF THE USE OR INABILITY TO USE THE LIBRARY(INCLUDING BUT NOT LIMITED TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSESSUSTAINED BY YOU OR THIRD PARTIES OR A FAILURE OF THE LIBRARY TO OPERATE WITH ANY OTHERSOFTWARE) EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF SUCHDAMAGES

How to Apply These Terms to Your New Libraries

If you develop a new library and you want it to be of the greatest possible use to thepublic we recommend making it free software that everyone can redistribute and changeYou can do so by permitting redistribution under these terms (or alternatively underthe terms of the ordinary General Public License)

To apply these terms attach the following notices to the library It is safest to attachthem to the start of each source file to most effectively convey the exclusion ofwarranty and each file should have at least the copyright line and a pointer to wherethe full notice is found

one line to give the librarys name and a brief idea of what it does

Copyright (C) year name of author

This library is free software you can redistribute it andor modify it under the termsof the GNU Library General Public License as published by the Free Software Foundationeither version 2 of the License or (at your option) any later version

This library is distributed in the hope that it will be useful but WITHOUT ANY WARRANTYwithout even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSESee the GNU Library General Public License for more details

You should have received a copy of the GNU Library General Public License along with thislibrary if not write to the Free Software Foundation Inc 675 Mass Ave Cambridge MA02139 USA

Also add information on how to contact you by electronic and paper mail

You should also get your employer (if you work as a programmer) or your school if anyto sign a copyright disclaimer for the library if necessary Here is a sample alterthe names

Yoyodyne Inc hereby disclaims all copyright interest in the library `Frob (a libraryfor tweaking knobs) written by James Random Hacker

signature of Ty Coon 1 April 1990

Ty Coon President of Vice

Thats all there is to it

Apeacutendice D

iquestQueacute es LuCAS

El proyecto LuCAS (Linux en CAStellano) comenzoacute como tantas otras cosas ligadas a Linuxen un bar tomando cervezas (reales no virtuales) Era allaacute por marzo de 1995 y ya sehabiacutea comentado en las aacutereas de FidoNet la necesidad de disponer de textos en castellanosobre Linux Fue en aquel bar el bar Ekin de Algorta (Bizkaia) donde nos reuniacuteamos losusuarios de FidoNet todos los domingos donde surgioacute la idea de pasar a la accioacuten Trasdiscutirlo un poco decidimos comenzar por traducir algo que fuese uacutetil para aquellos quecomenzaban a dar sus primeros pasos en linux y creiacutemos que el Installation amp GettingStarted de Matt Welsh era el documento maacutes adecuado Como era mucho trabajo para unasola persona y habiacutea mucha gente que se habiacutea mostrado dispuesta a colaborar habiacutea quehacerlo bien y el trabajo de traducir un libro como eacuteste requeriacutea una labor decoordinacioacuten que inmediatamente asumimos Ramoacuten Gutieacuterrez y yo Alfonso Belloso Yo mehice cargo de coordinar a los traductores para que no hiciesen trabajo repetido y Ramoacutense encargaba de juntar los trabajos y generar el documento final Pedimos permiso alpropio Matt Welsh y asiacute echamos a andar

Hubo que esperar un largo tiempo a tener una primera versioacuten presentable del libro perose consiguioacute Fundamentalmente el hecho de que era una experiencia nueva y ladiversidad de gente que colaboroacute hizo que este primer paso durase casi un antildeo peromerecioacute la pena esperar Hay que decir que a pesar de que todo este movimiento surgioacute deFidoNet y que desde alliacute se sigue muy de cerca al poco de comenzar a trabajar en ellofue cuando conseguiacute mi primera cuenta de Internet y comprobeacute que la forma maacutes praacutecticade coordinarnos era a traveacutes de La Red ya que por Fidonet las comunicaciones se haciacuteandemasiado largas en el tiempo y no siempre eran seguras (para contactar con alguacutencolaborador a veces se podiacutea tardar 2 semanas o no saber nada de eacutel jamaacutes) Y con ellocomenzamos a disponer de maacutes herramientas primero un servidor de ftp luego una lista decorreo un servidor de Web y asiacute hasta hoy Bueno pues una vez terminado este primerlibro nos quedoacute el gusanillo de hacer maacutes y visto que yo acabeacute un poco cansado vinoJuan Joseacute Amor me tomoacute el relevo y comenzamos a traducir la Network AdministratorGuide de Olaf Kirch Esta vez y con la infraestructura ya montada tardamos unos pocosmeses en tener la primera versioacuten

Y despueacutes de eacuteste ya se estaacuten haciendo maacutes Ya esta terminada la traduccioacuten de la LinuxUser Guide (en su fase alfa) y hay alguacuten proyecto maacutes en marcha No quiero dejar demencionar otros proyectos que trabajan en paralelo a eacuteste LuCAS en siacute se ha idodedicando maacutes a la labor de traduccioacuten de textos tipo libro maacutes concretamente a los delLDP y creaciones propias si bien en su origen se ideoacute para traducir cualquier tipo dedocumento e incluso para crear documentos directamente en castellano El SLUG (SpanishLinux User Group) ya existiacutea cuando surgioacute LuCAS o acababa de aparecer Al amparo deLuCAS surgioacute el INSFLUG que se centra en la traduccioacutencreacioacuten de FAQs HOWTOs ydocumentos maacutes pequentildeos Y probablemente existan maacutes grupos haciendo tareas similarespero que ahora no conozco ni soy capaz de recordar

Para contactar con los coordinadores del grupo LuCAS puede hacerlo con Alfonso Belloso

Martiacutenez ltalfonbipv02biehuesgt o en ltalfoniiesesgt y con Juan Joseacute Amor Iglesiasltjjamorlsfiupmesgt

Apeacutendice E

iquestQueacute es INSFLUG

El INSFLUG nacioacute allaacute por marzo del 96 siendo su seno materno el aacuterea echomail deFidoNet R34LINUX Surge ante el entusiasmo de los que empezaacutebamos por aquel entonces aadentrarnos en el mundo del Linux maravillados por como un SO tan potente dedistribucioacuten libre podiacutea haberse hecho realidad gracias al buen hacer generosidad eincreiacuteble colaboracioacuten entre tantas personas dispersas por el globo

Nos sentimos auacuten maacutes maravillados al observar la increiacuteble participacioacuten de la gente quefrecuentaba el aacuterea modeacutelica en FidoNet y por la inestimable ayuda que alliacute seprestaba eso fue (haciendo un poco de psicoacutelogo) lo que produjo la formacioacuten delINSFLUG un inmenso y sincero agradecimiento ademaacutes de enormes ganas de corresponder pornuestra parte aportando nuestro granito de arena a la comunidad Linux en forma detraducciones de Howtos y FAQs documentos que generalmente no superan la decena depaacuteginas y con cuya traduccioacuten ademaacutes de aportar el novel o no tan novel profundiza enel tema del que trate el Howto a medida que lo traduce redundando en beneficio para eacutelmismo shy)

El INSFLUG se centra en la traduccioacuten de Howtos y FAQs (Frecuently Asked Questions algoasiacute como Preguntas de Uso Frecuente PUFs)

Para la traduccioacuten no necesitas maacutes que un editor de texto (En Linux hay muchos) normaly el paquete linuxdocshysgml con el que empleando un lenguaje muy sencillo similar alHTML una vez escrito un soacutelo fuente se podraacuten obtener a partir de eacutel el documento enformatos dvi ps txt lyx rtf info html etc

Cuentas ademaacutes con una guiacutea traducida del uso del linuxdocshysgml en la que se antildeadendetalles de configuracioacuten para el castellano ademaacutes de la facilidad que supone eltraducir editando el fuente original en ingleacutes ya que los coacutedigos etc ya estaacuten noobstante es un lenguaje sencilliacutesimo ademaacutes de ser el formato oficial de todos losHowtos

El INSFLUG colabora estrechamente con LuCAS es maacutes hay varias personas que colaborancon ambos grupos El grupo LuCAS se dedica mayormente a las guiacuteas (guides) los librosmaacutes extensos del LDP o (Linux Documentation Project)

El coordinador de INSFLUG es Francisco J Montilla (email ltpacopepeinamecomgt ircpukka FiDO 234540222) Si desea maacutes informacioacuten puede consultar su paacutegina en WWW enlthttpwwwinsflugnovaesgt y su espacio de FTP en ltftpftpinsflugnovaesgt

Page 3: G.L.U.P.€€Guía€de€Linux€Para€el€Usuariomural.uv.es/~jalto/LINUX.pdf3 En€el€principio€11 3.1€La€computadora€despierta 3.2€Linux€despierta 3.3€La€actuación€del€usuario

Agradecimientos

El autor quiere agradecer a las siguientes personas por su invaluable ayuda tanto conLinux en siacute como con la escritura de The Linux Users Guide

Linus Torvalds por proveer el material acerca del cual se escribe este libro

Karl Fogel me ha proporcionado una enorme ayuda con la escritura de mi documentacioacuten deLinux y ademaacutes escribioacute la mayor parte del Capiacutetulo 8 y el Capiacutetulo 9 Cualquierreconocimiento hacia su labor seraacute insuficiente

Maurizio Codogno escribioacute gran parte del Capiacutetulo 11

David Channon escribioacute el apeacutendice sobre el vi (Apeacutendice A)

Yggdrasil Computing Inc por su generoso (y voluntario) sosteacuten para este manual

Red Hat Software por su (maacutes reciente y tambieacuten voluntario) sosteacuten

El programa fortune por proveerme algunas de las preciosas citas con las cuales comenzarcada capiacutetulo Auacuten cuando a nadie maacutes le gusten a miacute me encantan

Iacutendice General

1 Introduccioacuten 1

11 iquestQuieacuten debe leer este libro

111 iquestQueacute debe hacer antes de leer este libro

12 iquestCoacutemo evitar leer este libro

13 iquestCoacutemo leer este libro

14 Documentacioacuten de Linux

141 Otros libros de Linux

142 COMOs

143 iquestQueacute es el Proyecto de Documentacioacuten de Linux

15 Sistemas operativos

2 A propoacutesito iquestqueacute es Unix 7

21 La historia de Unix

22 La historia de Linux

221 Linux aquiacute y ahora

222 Unas pocas preguntas y respuestas

223 Software comercial en Linux

3 En el principio 11

31 La computadora despierta

32 Linux despierta

33 La actuacioacuten del usuario

331 El ingreso

332 Al abandonar la computadora

333 Como apagar la computadora

34 Mensajes del nuacutecleo

4 El shell de Unix 21

41 Comandos Unix

411 Un comando Unix tiacutepico

42 Autoayuda

43 Almacenaje de la informacioacuten

431 Miremos los directorios con ls

432 El directorio actual y cd

433 Creacioacuten y borrado de directorios

44 Informacioacuten en movimiento

441 cp como un monje

442 La poda con rm

443 Seriacutea interesante tener un rastrillo

5 El sistema de ventanas X 35

51 Ejecucioacuten y salida del sistema de ventanas X

511 Ejecucioacuten de X

512 Saliendo de X

52 iquestQueacute es el sistema de ventanas X

53 iquestQueacute es esto que hay en mi pantalla

531 XClock

532 XTerm

54 Gestores de ventanas

541 Cuando se crean nuevas ventanas

542 Foco

543 Moviendo ventanas

544 Profundidad

545 Iconizar

546 Variando el tamantildeo

547 Maximizacioacuten

548 Menuacutes

55 Atributos X

551 Geometriacutea

552 Presentacioacuten

56 Caracteriacutesticas comunes

561 Botones

562 Barras de menuacute

563 Barras de desplazamiento

6 Trabajando con Unix 47

61 Comodines

611 iquestQueacute ocurre realmente

612 El signo de interrogacioacuten

62 Ganar tiempo con bash

621 Editando la liacutenea de comandos

622 Completamiento de comandos y nombres de fichero

63 La entrada estaacutendar y La salida estaacutendar

631 Algunos conceptos de Unix

632 Redireccionar la salida

633 Redireccionar la entrada

634 Las tuberiacuteas

64 Multitarea

641 Usando el control de trabajos

642 Teoriacutea del control de trabajos

65 Consolas virtuales como estar en varios lugares a la vez

7 Pequentildeos programas potentes 61

71 El poder de Unix

72 Trabajando con ficheros

73 Estadiacutesticas del sistema

74 iquestQueacute hay en un fichero

75 Comandos de edicioacuten

8 Editando archivos con Emacs 71

81 iquestQueacute es Emacs

82 Comenzar raacutepidamente en X

83 Editando varios archivos al mismo tiempo

84 Terminando una sesioacuten de edicioacuten

85 La tecla Meta

86 Cortar pegar destruir y tirar

87 Buscar y reemplazar

88 iquestQueacute es lo que ocurre realmente

89 Pidiendo ayuda a Emacs

810 Especializando buffers Modos

811 Modos de programacioacuten

8111 Modo C

8112 Modo Scheme

8113 Modo de correo

812 Como ser maacutes eficiente auacuten

813 Personalizando Emacs

814 Averiguando maacutes

9 Tengo que ser yo mismo 91

91 Personalizacioacuten del bash

911 Arranque del shell

912 Ficheros de arranque

913 Creando alias

914 Variables de entorno

92 Los ficheros de inicio de X Window

921 Configuracioacuten de twm

922 Configuracioacuten de fvwm

93 Otros ficheros de inicio

931 El fichero de configuracioacuten de Emacs

932 Configuracioacuten por defecto del FTP

933 Permitiendo un acceso remoto sencillo a su cuenta

934 Redireccioacuten de correo

94 Veamos algunos ejemplos

10 Hablando con los demaacutes 111

101 Correo electroacutenico

1011 Enviar correo

1012 Leer el correo

102 Noticias maacutes que de sobra

103 Localizar a la gente

1031 Planes y proyectos

104 Uso remoto de sistemas

105 Intercambio de ficheros

106 Viajando por la telarantildea

11 Comandos divertidos 117

111 find el buscador de ficheros

1111 Generalidades

1112 Expresiones

1113 Opciones

1114 Test

1115 Acciones

1116 Operadores

1117 Ejemplos

1118 Una uacuteltima palabra

112 tar el archivador en cinta

1121 Introduccioacuten

1122 Opciones principales

1123 Modificadores

1124 Ejemplos

113 dd el duplicador de datos

1131 Opciones

1132 Ejemplos

114 sort el clasificador de datos

1141 Introduccioacuten

1142 Opciones

1143 Ejemplos

12 Errores equivocaciones bugs y otras molestias 129

121 Evitando errores

122 Queacute hacer cuando algo va mal

123 No es fallo tuyo

1231 Cuando hay un error

1232 Notificando un error

A Introduccioacuten a vi 133

A1 Una raacutepida historia de Vi

A2 Raacutepido tutorial de Ed

A21 Crear un fichero

A22 Editar un fichero existente

A23 Nuacutemeros de liacutenea en detalle

A3 Raacutepido tutorial de Vi

A31 Ejecutar vi

A32 Comandos de movimiento del cursor

A33 Borrar texto

A34 Salvar un fichero

A35 iquestQueacute viene a continuacioacuten

A4 Tutorial avanzado de Vi

A41 Movimiento

A42 Modificacioacuten del texto

A43 Copiar y mover bloques de texto

A44 Buacutesqueda y cambio de texto

B The GNU General Public License 147

C The GNU Library General Public License 155

D iquestQueacute es LuCAS 165

E iquestQueacute es INSFLUG 167

Bibliografiacutea

[1] Almesberger Werner LILO Generic Boot Loader for Linux Disponibleelectroacutenicamente tsxshy11mitedu 3 de Julio de 1993

[2] Bach Maurice J The Design of the UNIX Operating System Englewood Cliffs NewJersey PrenticeshyHall Inc 1986

[3] Lamport Leslie LATEX A Document Preparation System Reading MassachusettsAddisonshyWesley Publishing Company 1986

[4] Stallman Richard M GNU Emacs Manual octava edicioacuten Cambridge Massachusetts FreeSoftware Foundation 1993

Capiacutetulo 1

Introduccioacuten

How much does it cost to entice a dopeshysmoking Unix system guru to Dayton

Brian Boyle Unix Worlds First Annual Salary Survey

11 iquestQuieacuten debe leer este libro

iquestEs Ud la persona que debe leer este libro Permiacutetame responder a esta preguntahacieacutendole estas otras iquestAcaba de obtener Linux de alguna fuente lo instaloacute y ahoraquiere saber que puede hacer O iquestes un usuario de computadoras que nunca ha utilizadoUnix y estaacute considerando usar Linux pero quiere saber lo que puede hacer con eacutel

Si tiene este libro la respuesta a esas preguntas probablemente es siacute Cualquiera quetiene Linux (el clon gratuito de Unix escrito por Linus Torvalds) en su PC pero no sabeque hacer despueacutes de la instalacioacuten debe leer este libro Aquiacute encontraraacute explicacionessobre la mayoriacutea de los comandos baacutesicos de Unix e incluso de algunos avanzados Tambieacutentrataremos acerca del potente editor GNU Emacs y de muchas otras aplicaciones importantesen Unix

111 iquestQueacute debe hacer antes de leer este libro

Este libro supone que Ud tiene acceso a un sistema Unix (iexclPara aprender a nadar hay quemojarse) Maacutes importante auacuten el sistema Unix antes mencionado debe ser una PC INTELcorriendo Linux

Este requerimiento no es estrictamente necesario pero cuando las versiones de Unixdifieran en su comportamiento nos ocuparemos de las respuestas que exhiba Linux y no delas otras variantes de Unix

Linux estaacute disponible de distintas maneras llamadas distribuciones Espero que hayaencontrado una distribucioacuten completa como por ejemplo la MCCshyInterim y que la tengainstalada Existen diferencias entre las distintas distribuciones de Linux pero lamayoriacutea de ellas son insignificantes

Ocasionalmente veraacute que en este libro las cosas se ven un poquito distintas a lo que veen su computadora Si le sucede esto es probable que esteacute utilizando una versioacutendistinta de la miacutea estoy interesado en recibir informes de tales casos

Si Ud es el superusuario (el ocupado del mantenimiento el instalador) del sistemadeberaacute crearse una cuenta de usuario normal para Ud mismo Consulte por favor losmanuales de instalacioacuten para obtener la informacioacuten necesaria Si no es el superusuariodeberaacute solicitarle a quien lo sea que le cree una cuenta

Ahora deberaacute tener tiempo y paciencia El aprendizaje de Linux no es faacutecil _la mayoriacutea delas personas encuentran que es maacutes faacutecil aprender el sistema operativo del Macintosh Unavez que aprende Linux las cosas se vuelven mucho maacutes faacuteciles Unix es un sistema muypoderoso y con eacutel es muy faacutecil realizar tareas complejas

Ademaacutes este libro supone que Ud estaacute moderadamente familiarizado con algunos teacuterminoscomputacionales Aunque este requerimiento no es necesario hace maacutes faacutecil la lecturaDebe conocer teacuterminos como `programa o `ejecucioacuten Si no los maneja necesitaraacute de laayuda de alguien maacutes avezado durante su aprendizaje de Unix

12 iquestCoacutemo evitar leer este libro

La mejor manera de aprender el uso de casi cualquier programa de computadora esponieacutendose a trabajar sobre la computadora La mayoriacutea de las personas encuentran de pocobeneficio la lectura de un libro si no utilizan a la vez el programa Por lo tanto lamejor manera de aprender Unix y Linux es utilizaacutendolos Utilice Linux para todo lo quepueda Experimente No tenga miedo es posible que haga algunos liacuteos pero siempre puedevolver a instalar todo Mantenga actualizadas las copias de seguridad y iexcldivieacutertase

Unix no es un sistema operativo tan intuitivamente obvio como algunos otros Por lotanto es probable que deba leer al menos los capiacutetulos 4 5 y el 6 antes de empezar aexperimentar

La manera nuacutemero uno para evitar la lectura de este libro es que utilice la documentacioacutendisponible en liacutenea en Linux Para ello debe aprender a utilizar el comando man sudescripcioacuten estaacute en la Seccioacuten 42

13 iquestCoacutemo leer este libro

La manera sugerida para aprender Unix es leer un poquito luego jugar un poquito Jueguehasta que se sienta coacutemodo con los conceptos y luego puede saltar entre los temas que secubren en el libro Encontraraacute una variedad de temas algunos de los cuales seraacuten de suintereacutes Luego de un tiempo se sentiraacute lo suficientemente confiado como para utilizarcomandos sin saber exactamente que es lo que deberiacutean hacer Esta es una buena sentildeal

Lo que mucha gente asocia con Unix es el shell de Unix se trata de un programa especialque interpreta comandos En la praacutectica eacutesta es una manera conveniente de ver las cosaspero debe saber que Unix es realmente mucho maacutes que el shell o mucho menos _dependiendode como lo mire Este libro le diraacute como utilizar el shell los programas que usualmentevienen con Unix y algunos programas que no son muy comunes (pero que Linux casi siempretrae)

El capiacutetulo actual es un metashycapiacutetulo se discute acerca del libro y de comoaplicarlo para poder hacer nuestro trabajo Los otros capiacutetulos contienen

Capiacutetulo 2 trata del origen y destino de Unix y Linux Tambieacuten se habla de laFree Software Foundation y el proyecto GNU

Capiacutetulo 3 habla de como arrancar y detener su computadora y de lo quesucede durante esas operaciones Gran parte de esto tiene que ver con temasque no es necesario conocer para utilizar Linux pero auacuten asiacute son uacutetiles einteresantes

Capiacutetulo 4 introduce el shell de Unix Es con este programa con el cual laspersonas realizan su trabajo y corren los programas que necesitan Trata delos programas y comandos baacutesicos que necesitaraacute conocer para utilizar Unix

Capiacutetulo 5 cubre el sistema de ventana X2 X es la cara graacutefica principal deUnix e incluso algunas distribuciones lo configuran como opcioacutenpredeterminada

Capiacutetulo 6 analiza algunas de las caracteriacutesticas maacutes avanzadas del shell deUnix El aprendizaje de las teacutecnicas tratadas en este capiacutetulo le ayudaraacute aser maacutes eficiente

Capiacutetulo 7 tiene breves descripciones de muchos de los comandos Unix Cuantomaacutes herramientas sabe utilizar un usuario maacutes raacutepidamente puede concluir sutrabajo

Capiacutetulo 8 describe el editor de textos Emacs Se trata de un programa muyextenso que integra varias de las herramientas de Unix bajo una uacutenicainterfaz

Capiacutetulo 9 trata acerca de las distintas maneras que hay de personalizar unsistema Unix para satisfacer sus gustos personales

Capiacutetulo 10 investiga los medios por los cuales un usuario Unix puedecomunicarse con otras maacutequinas alrededor del mundo incluyendo el correoelectroacutenico y la Red de Alcance Mundial3

Capiacutetulo 11 describe algunos de los comandos con maacutes opciones y maacutes difiacutecilesde utilizar

Capiacutetulo 12 muestra formas sencillas de evitar errores en Unix y Linux

14 Documentacioacuten de Linux

Este libro Guiacutea de Linux Para el Usuario estaacute pensado para el principiante en UnixAfortunadamente el Linux Documentation Project (Proyecto de Documentacioacuten de Linux)tambieacuten estaacute escribiendo libros para los usuarios maacutes experimentados4

_____________________________________________

2 N del T X Window System

3 N del T tambieacuten conocida como WWW o World Wide Web

4 N del T El proyecto LuCAS estaacute ocupaacutendose de traducir parte de la documentacioacuten deLinux al castellano Para obtener informacioacuten actualizada de las traducciones vea elapeacutendice D

141 Otros libros de Linux

Los otros libros incluyen Installation and Getting Started 5 que es una guiacutea paraobtener e instalar Linux The Linux System Administrators Guide trata como organizar ymantener un sistema Linux y The Linux Kernel Hackers Guide que explica como modificarLinux The Linux Network Administrator Guide6 muestra como instalar configurar yutilizar una conexioacuten de red

142 COMOs

Ademaacutes de los libros el Proyecto de Documentacioacuten de Linux7 ha realizado una serie depequentildeos documentos que describen como configurar alguacuten aspecto particular de Linux Porejemplo el SCSIshyCOMO describe algunas de las complicaciones que aparecen al utilizarSCSI (que es una manera estaacutendar de comunicarse con ciertos dispositivos) y Linux

Estos COMOs estaacuten disponibles en varios formatos en un libro como The Linux Bible o DrLinux en el foro de discusioacuten composlinuxanswers o en varios lugares de la WWW Elsitio central de la informacioacuten acerca de Linux es httpwwwlinuxorg

143 iquestQueacute es el Proyecto de Documentacioacuten de Linux

Como casi todo lo asociado con Linux el Proyecto de Documentacioacuten de Linux consiste enun conjunto de gente que trabaja alrededor del mundo Originalmente organizado por LarsWirzenius el Proyecto estaacute coordinado en la actualidad por Matt Welsh con la ayuda deMichael K Johnson

Se espera que el Proyecto de Documentacioacuten de Linux provea los libros que satisfagantodas las necesidades de documentacioacuten de Linux en alguacuten momento Por favor diacuteganos sihemos tenido eacutexito o queacute es lo que debemos mejorar Puede contactar al autor enleg+andrewcmuedu a Matt Welsh en mdwcscornelledu8

15 Sistemas operativos

El propoacutesito principal de un sistema operativo es dar el soporte que necesitan losprogramas que hacen un trabajo de intereacutes para el usuario Por ejemplo Ud puede estarutilizando un editor si quiere crear un documento Ese editor no puede realizar sutrabajo sin la ayuda del sistema operativo _necesitaraacute esta ayuda para interactuar con laterminal los archivos y el resto de la computadora

Si todo lo que hace el sistema operativo es dar soporte a las aplicaciones que Ud deseautilizar iquestpor queacute se necesita todo un libro soacutelo para hablar del sistema operativoExiste un montoacuten de actividades de mantenimiento de rutina (ademaacutes de los programas queutilizaraacute principalmente) que Ud tambieacuten necesitaraacute realizar En el caso de Linux elsistema operativo contiene ademaacutes un montoacuten de minishyaplicaciones para ayudarle arealizar de manera maacutes eficiente su trabajo El conocimiento del sistema operativo leseraacute de ayuda si su trabajo no se centra en alguna aplicacioacuten monoliacutetica

_____________________________________________

5 N del T Disponible en castellano como Linux Instalacioacuten y Primeros Pasos Vea elapeacutendice D

6 N del T Disponible en castellano como Guiacutea de Administracioacuten de Redes con Linux Veael apeacutendice D

7 N del T El grupo INSFLUG ha traducido varios de los documentos HOWTO acuntildeando elteacutermino COMO Vea el apeacutendice E

8 N del T y al coordinador de esta traduccioacuten Ceacutesar Ballardini en cballardsantafecomar

Los sistemas operativos (SO para abreviar) pueden ser simples y miacutenimos como DOS ograndes y complejos como OS2 o VMS Unix trata de estar en un punto medio A la vez queproporciona maacutes recursos y hace maacutes que los primitivos SO no trata de hacer todo Unixse disentildeoacute originalmente como una simplificacioacuten de un sistema operativo que se denominoacuteMultics

La filosofiacutea original de disentildeo de Unix fue la de distribuir la funcionalidad en pequentildeaspartes los programas9 De esta forma el usuario puede obtener nueva funcionalidad ynuevas caracteriacutesticas de una manera relativamente sencilla mediante las diferentescombinaciones de pequentildeas partes (programas) Ademaacutes en el caso de que aparezcan nuevasutilidades (y de hecho aparecen) puede Ud integrarlas en su espacio de trabajo Cuandoescribo este documento por ejemplo utilizo activamente los siguientes programas fvwmpara manejar mis ventanas emacs para editar el texto LATEX para darle forma xdvipara ver una presentacioacuten preliminar dvips para prepararlo para la impresioacuten y luegolpr para imprimirlo Si mantildeana llegara a conseguir otro programa de presentacioacutenpreliminar de archivos dvi podriacutea utilizarlo en lugar del xdvi sin cambiar el resto delos programas que uso En el momento actual mi sistema estaacute corriendo treinta y ocho

programas simultaacuteneamente (Gran parte de ellos son programas del sistema que duermenhasta que tienen alguacuten trabajo especiacutefico para realizar)

Cuando utilice un sistema operativo desearaacute minimizar la cantidad de trabajo que tieneque llevar a cabo para concluir su tarea Unix proporciona varias herramientas que puedenayudarle pero para ello debe conocer que es lo que hacen No es muy productivo perderseuna hora intentando poner a andar alguna cosa y al final tener que abandonar todo Estelibro le ensentildearaacute queacute herramientas debe Ud utilizar en queacute situacioacuten y como combinaresas herramientas entre siacute

La parte clave de un sistema operativo se denomina nuacutecleo10 En muchos sistemasoperativos como Unix OS2 o VMS el nuacutecleo proporciona las funciones necesarias paralos programas que estaacuten corriendo y los planifica para su ejecucioacuten Esto significabaacutesicamente que el programa A puede tomar una cierta cantidad de tiempo el programa B lamisma cantidad etc El nuacutecleo siempre estaacute funcionando es el primer programa quearranca cuando se enciende el sistema y el uacuteltimo programa que hace algo cuando se apagael equipo

_____________________________________________

9 Este disentildeo estuvo determinado por el hardware sobre el cual funcionoacute originalmenteUnix Por alguna extrantildea razoacuten el sistema operativo resultante fue muy uacutetil sobre otrasplataformas de hardware El disentildeo baacutesico fue tan bueno que auacuten veinticinco antildeos despueacutessigue usaacutendose

10 N del T nuacutecleo del ingleacutes kernel

Capiacutetulo 2

A propoacutesito iquestqueacute es Unix

Ken Thompson tiene un automoacutevil en cuyo proyecto de disentildeo trabajoacute A diferencia de otrosautomoacuteviles eacuteste no tiene velociacutemetro nivel de combustible ni ninguna de las estuacutepidasluces que importunan al conductor moderno En su lugar si el conductor comete alguacutenerror se enciende un enorme en el centro del tablero El conductor experimentadodice sabraacute usualmente que es lo que anda mal

21 La historia de Unix

En 1965 los Bell Telephone Laboratories (Bell Labs una divisioacuten de ATampT) estabatrabajando con General Electric y el Proyecto MAC del MIT para escribir un sistemaoperativo llamado Multics

Para hacer maacutes corta una historia de por siacute larga Bell Labs decidioacute que el proyecto noestaba yendo a ninguna parte y disolvioacute el grupo Esto sin embargo dejoacute a la Bell sinun buen sistema operativo

Ken Thompson y Dennis Ritchie decidieron esbozar un sistema operativo que supliera lasnecesidades de la Bell Labs Cuando Thompson llegoacute a necesitar un entorno de desarrollo(1970) que corriera en una PDPshy7 aprovechoacute para poner en praacutectica sus ideas BrianKernighan le dioacute el nombre de Unix como un juego de palabras contra Multics

Un tiempo despueacutes Dennis Ritchie inventoacute el lenguaje de programacioacuten C En 1973 sereescribioacute el sistema operativo Unix en C en lugar del ensamblador original1 En 1977se movioacute Unix a una nueva maacutequina distinta de las PDP en las que habiacutea corridopreviamente mediante un proceso que se denomina migracioacuten El hecho de que Unix estabaescrito en C facilitoacute la migracioacuten pues gran parte del coacutedigo ya escrito necesitoacute soacutelouna simple recompilacioacuten y no una reescritura

Al final de los 70 ATampT teniacutea prohibido competir en la industria de la computacioacuten porlo que otorgoacute licencias econoacutemicas de Unix a varios colegios y universidades Unix sedifundioacute lentamente fuera de las instituciones acadeacutemicas pero pronto tambieacuten se hizopopular en el aacutembito comercial

El Unix de la actualidad es distinto del Unix de 1970 Existen dos corrientesprincipales System V de los Unix System Laboratories (USL) que es una subsidiaria deNovell2 y BSD Berkeley Software Distribution La versioacuten USL estaacute ahora por su cuartaversioacuten o SVR43 mientras que la uacuteltima BSD es la 44 Sin embargo existen muchasdiferentes versiones de Unix entre estas dos La mayoriacutea de las versiones de Unix sondesarrolladas por compantildeiacuteas de software y derivan de uno de los dos agrupamientos Lasversiones que se utilizan actualmente incorporan caracteriacutesticas de ambas variaciones

Las versiones actuales de Unix para PC Intel cuestan entre $500 y $2000

_____________________________________________

1 Lenguaje ensamblador es un lenguaje de computadoras muy elemental y que estaacuteindisolublemente ligado a un tipo particular de ordenador

22 La historia de Linux

El autor primario de Linux es Linus Torvalds A partir de la versioacuten original ha sidomejorado por incontables personas de todo el mundo Se trata de un clon del sistemaoperativo Unix escrito desde cero Ni USL ni la Universidad de California Berkeleytuvieron participacioacuten en la escritura de Linux Una de las cosas maacutes interesantes deLinux es que el desarrollo ocurre simultaacuteneamente alrededor del mundo La gente hacontribuiacutedo desde Australia a Finlandia y esperamos que lo siga haciendo

Linux comenzoacute como un proyecto para explorar el chip 386 Uno de los primeros proyectosde Linus fue un programa que pueda alternar entre la impresioacuten de AAAA y BBBB Esto luegoevolucionoacute hacia Linux

Linux ha sido registrado bajo los teacuterminos de la Licencia Puacuteblica General GNU (GNUGeneral Public License) o GPL Esta licencia escrita por la Free Software Foundation(FSF) estaacute disentildeada para evitar que alguna persona restrinja la distribucioacuten desoftware En pocas palabras dice que aunque Ud cobre a alguien por entregarle unacopia no podraacute impedir que ese alguien la regale Tambieacuten significa que debe estardisponible el coacutedigo fuente4 Esto es uacutetil para los programadores

Cualquiera puede modificar Linux y auacuten distribuir sus modificaciones siempre quemantenga el coacutedigo bajo la misma licencia

En Linux puede correr la mayoriacutea del software popular en Unix incluyendo el Sistema deVentanas X X se desarrolloacute en el Instituto Tecnoloacutegico Massachusetts para permitir alos sistemas Unix la creacioacuten de ventanas graacuteficas y la coacutemoda interaccioacuten con lasmismas En la actualidad el sistema X se usa en todas las versiones disponibles de Unix

Ademaacutes de las dos variaciones de Unix System V y BSD existe un conjunto de documentosde estandarizacioacuten publicados por la IEEE denominados POSIX Linux antes que nadasatisface los documentos POSIXshy1 y POSIXshy2 Su apariencia se asemeja mucho a la de BSD enciertas partes mientras que es parecido a System V en otras Es una combinacioacuten (y parala mayoriacutea de las personas una buena) de los tres estaacutendares

Algunas de las utilidades incluiacutedas con las distribuciones de Linux proceden de la FreeSoftware Foundation y son parte del proyecto GNU El proyecto GNU es un esfuerzo paraescribir un avanzado sistema operativo portable con el estilo de Unix Portablesignifica que pueda correr en una variedad de maacutequinas distintas no soacutelo en PCs IntelMacintoshes o lo que sea El sistema operativo del Proyecto GNU se llama Hurd Laprincipal diferencia entre el Linux y el GNU Hurd no se encuentra en la interfaz delusuario sino en la del programador el Hurd es un sistema operativo moderno mientrasque Linux es maacutes parecido al disentildeo original de Unix

_____________________________________________

2 Recientemente vendida a Novell antes era propiedad de ATampT

3 Una manera criacuteptica de decir System five Revision four

4 El coacutedigo fuente de un programa es lo que el programador lee y escribe Luego setraduce a un coacutedigo de maacutequina ilegible para las personas que es el que la computadorainterpreta

La historia precedente de Linux olvida mencionar otra persona maacutes allaacute de Linus TorvaldsPor ejemplo H J Lu se ha ocupado de mantener gcc y la biblioteca C de Linux (doselementos necesarios para todos los programas en Linux) casi desde el principio de lavida del sistema operativo Ud puede encontrar una lista de personas que merecenreconocimiento por su trabajo en cada sistema Linux en el archivousrsrclinuxCREDITS

221 Linux aquiacute y ahora

La primer cifra en el nuacutemero de versioacuten de Linux indica revisiones realmente importantesen alcance

Este nuacutemero cambia muy lentamente y para la eacutepoca en que esto se escribe (febrero de1996) soacutelo estaacute disponible la versioacuten 115 La segunda cifra indica revisiones de menorenvergadura

Los segundos nuacutemeros cuando son pares representan versiones maacutes estables en las que unopuede confiar plenamente cuando son impares indican versiones en desarrollo que son maacutespropensas a contener errores La uacuteltima cifra es el nuacutemero menor de lanzamiento cada vezque se libera una nueva versioacuten que tal vez soacutelo arregla unos pocos problemas o agregaunas pocas caracteriacutesticas se incrementa en uno este nuacutemero En febrero de 1996 lauacuteltima versioacuten estable es la 1211 y la uacuteltima en desarrollo es la 1361

Linux es un sistema grande y desafortunadamente contiene errores que los desarrolladoresreparan al encontrarlos Auacuten cuando algunas personas puedan experimentarmalfuncionamientos regularmente esto se debe normalmente a causa de piezas de hardwareque no son estaacutendares o que estaacuten defectuosas los errores6 que afectan a todos losusuarios son escasos y no se dan seguido

Por supuesto eacutesos son los errores del nuacutecleo Los errores pueden presentarse en casicada aspecto del sistema y los usuarios de poca experiencia tienen problemas paradiferenciar los distintos programas entre siacute Por ejemplo cierto problema puede hacerque todos los caracteres aparezcan como un galimatiacuteas iquestes un error o unacaracteriacutestica Sorpresivamente es una caracteriacutestica existen ciertas secuencias decontrol que al aparecer provocan el galimatiacuteas Espero que este libro le sea de ayudapara poder identificar esas situaciones

222 Unas pocas preguntas y respuestas

Antes de embarcarnos para nuestra larga travesiacutea repasemos las cuestiones ultrashyimportantes

Pregunta iquestCoacutemo se pronuncia Linux

Respuesta De acuerdo con Linus debe pronunciarse con un sonido corto ih como prIntmInImal etc Linux debe rimar con Minix que es otro clon de Unix No debe pronunciarsecomo la pronunciacioacuten (americana) de Peanuts en Linus sino maacutes bien como LIHshynucksY la u es cortante como en rule no suave como en ducks Linux debe al menos rimarcon cynics

_____________________________________________

5 N del T La traduccioacuten se hace en febrero de 1997 y ya la versioacuten 2 es cosa detodos los diacuteas

6 N del T error del ingleacutes bug

Pregunta iquestPor queacute trabajar en Linux

Respuesta iquestPor queacute no Linux es generalmente maacutes barato que los otros sistemasoperativos (o al menos no maacutes caro) y con frecuencia es menos problemaacutetico que algunossistemas comerciales Puede que no sea el mejor sistema para sus aplicaciones enparticular pero para alguien que estaacute interesado en utilizar las aplicaciones Unixdisponibles para Linux se trata de un sistema de alta performance

223 Software comercial en Linux

Existe un montoacuten de software comercial disponible para Linux Comenzando con Motif quees una interfaz para el sistema X Window que vagamente nos recuerda a Microsoft WindowsLinux tiene cada vez maacutes software comercial En estos tiempos Ud puede adquirircualquier cosa desde WordPerfect (el popular procesador de palabras) hasta Maple que esun paquete que realiza complejas manipulaciones simboacutelicas para Linux

Para aquellos lectores interesados en las cuestiones legales esto estaacute permitido por lalicencia de Linux A la vez que la licencia GNU General Public License (que se reproduceen el Apeacutendice B) cubre el nuacutecleo de Linux la licencia GNU Library General PublicLicense (que se puede ver en el Apeacutendice C) cubre la mayor parte del coacutedigo del cualdependen las aplicaciones Esto permite que los proveedores de software comercial puedanvender sus aplicaciones y reservarse el coacutedigo fuente de las mismas

Debe Ud percatarse de que los dos documentos antes nombrados son notificaciones dederechos de autor Ellos no regulan como utiliza Ud el software solamente indican bajocuales circunstancias Ud puede copiar dicho software o sus productos derivados Para laFree Software Foundation eacutesta es una distincioacuten muy importante Linux no involucraninguna licencia estilo pitoacuten que lo envolveraacute y asfixiaraacute sino que estaacute protegidopor la misma ley que le impide a Ud fotocopiar un libro

Capiacutetulo 3

En el principio

This login session $1399 but for you $1188

Tal vez ha tenido experiencia con MSshyDOS u otro sistema operativo monousuario como OS2o el de Macintosh En esos sistemas operativos Ud no tiene que identificarse frente ala computadora antes de poder utilizarla siempre se supone que es el uacutenico usuario en elsistema y que puede acceder a todo lo que quiera Por el contrario Unix es un sistemaoperativo multiusuario no soacutelo puede utilizarlo maacutes de una persona a la vez sino quelas distintas personas recibiraacuten distinto trato

Para poder identificar las personas Unix necesita un usuario para que el procesodenominado ingreso1 pueda identificarlo o identificarla2 Apenas se enciende unacomputadora tiene lugar un complejo proceso antes que la misma esteacute lista para serusada Como esta guiacutea estaacute orientada a Linux les direacute que es lo que sucede durante lasecuencia de arranque3

Debe advertir Ud que si estaacute utilizando Linux en alguna clase de ordenador distinto auna PC Intel algunos temas de este capiacutetulo no se aplicaraacuten a su caso En su mayoriacuteadichos temas se encontraraacuten en la Seccioacuten 31

Si Ud estaacute interesado uacutenicamente en utilizar su computadora puede saltearse toda lainformacioacuten de este capiacutetulo excepto la de la Seccioacuten 33

31 La computadora despierta

Lo primero que sucede cuando se conecta la alimentacioacuten a su computadora es la ejecucioacutende un programa denominado BIOS Su nombre proviene de las iniciales de Basic InputOutputSystem que significa Sistema de EntradaSalida Baacutesico Este programa estaacute almacenado demanera permanente dentro de la computadora en chips que normalmente son del tipo delectura solamente Para nuestros propoacutesitos el BIOS es un programa que nunca se puedecambiar Al funcionar realiza ciertas comprobaciones miacutenimas y luego se fija si hay undisquete en la primer disquetera Si encuentra alguno mira en su sector de arranque ycomienza a ejecutar su coacutedigo si lo hay Si hay un disquete pero no contiene un sectorde arranque el BIOS mostraraacute el siguiente mensaje

Nonshysystem disk or disk error

_____________________________________________

1 N del T ingreso en ingleacutes logging in

2 Desde ahora en adelante utilizareacute los pronombres masculinos para identificar a todaslas personas Esta es la convencioacuten estaacutendar en ingleacutes (N del T y en castellano) ycon esto no quiero decir que soacutelo los hombres pueden utilizar computadoras

3 N del T arranque del ingleacutes bootshyup

Si quitamos el disquete y apretamos una tecla el proceso de arranque continuaraacute Si noexiste un disquete en la disquetera el BIOS se fija si existe un registro maestro dearranque (MBR master boot record) en el disco riacutegido Si es asiacute comienza a ejecutar elcoacutedigo que alliacute encuentra que se ocupa de cargar el sistema operativo En los sistemasLinux el cargador se llama LILO (por LInux LOader) puede ocupar el MBR y en ese casocargaraacute el Linux (La distribucioacuten en particular que esteacute utilizando puede manejar elarranque desde el disco riacutegido de otra manera asiacute que debe controlar esto en ladocumentacioacuten que se incluye con la distribucioacuten Otra buena referencia es ladocumentacioacuten de LILO [1 ])

32 Linux despierta

Luego que el BIOS le pasa el control a LILO LILO a su vez le pasa el control al nuacutecleode Linux El nuacutecleo es el programa central del sistema operativo que controla a todoslos demaacutes Lo primero que hace Linux una vez que comienza su ejecucioacuten es cambiar la CPUa modo protegido El procesador 803864 que controla su computadora tiene dos modos que sedenominan modo real y modo protegido El sistema operativo DOS corre en modo real aligual que el BIOS Sin embargo los sistemas operativos maacutes avanzados necesitan correr enmodo protegido Por ello cuando Linux arranca descarta el BIOS

Los procesadores distintos al 386 llegan a este estado de manera diferente Ninguacuten otroprocesador necesita cambiar a modo protegido y soacutelo unos pocos tienen un contexto tanpesado de carga como LILO y el BIOS Una vez que arranca el nuacutecleo Linux trabaja caside la misma manera

A continuacioacuten Linux mira que clase de hardware tiene debajo Necesita saber que clasede discos riacutegidos tiene si hay o no un ratoacuten de bus si estaacute conectado a una red yotras trivialidades como esas Linux no puede recordar ciertas cosas luego de apagado demanera que las pregunta cada vez que arranca Afortunadamente no se las pregunta a Udiexclse las pregunta al hardware Durante el arranque el nuacutecleo de Linux muestra unoscuantos mensajes aunque con ciertas variaciones

Puede leer acerca de esos mensajes en la Seccioacuten 34 Este proceso de consulta puedecausar algunos problemas con el sistema pero si lo hace lo haraacute probablemente cuandoinstale Linux por primera vez Si tiene problemas consulte la documentacioacuten de ladistribucioacuten

El nuacutecleo solamente se ocupa de administrar los otros programas entonces cuando estaacutesatisfecho con que todo anda bien debe arrancar otro programa para que haga los trabajosuacutetiles El programa que el nuacutecleo arranca se llama init_____________________________________________

4 Cuando hable del 80386 tambieacuten hago referencia a computadoras basadas en 80486Pentium y Pentium Pro a menos que especiacuteficamente indique lo contrario Ademaacutesabreviareacute 80386 mediante el teacutermino 386

Figura 31 El camino que sigue un PC Intel hasta que nos muestra el indicativo delinteacuterprete de comandos Init puede o no arrancar X Si lo hace corre xdm Si no corregetty

Una vez que el nuacutecleo arranca init no lanza ninguacuten otro programa El nuacutecleo setransforma asiacute en un administrador y proveedor no en un programa activo

Por lo tanto para saber que es lo que hace la computadora luego que el nuacutecleo arrancadeberemos examinar init La complicada secuencia de arranque por la que atraviesa init noes ideacutentica en todas las computadoras Para Linux existen varias versiones de init ycada una hace las cosas a su manera Ademaacutes tambieacuten influye si su maacutequina estaacute en red e

incluso cual distribucioacuten utilizoacute para instalar Linux Algunas de las cosas que puedensuceder cuando init arranca son

o El control de integridad del sistema de archivos iquestPero queacute es un sistema de archivosse estaraacute preguntando Ud Un sistema de archivos es la disposicioacuten de los archivos enel disco riacutegido Ademaacutes permite que Unix sepa cuales partes del disco riacutegido estaacutenocupadas y cuales no Desafortunadamente ciertos factores como los cortes en elsuministro de energiacutea hacen que la informacioacuten que el sistema de archivos tiene sobre ladisposicioacuten en el disco de los archivos no coincida con la disposicioacuten real En estoscasos se ve la utilidad de un programa llamado fsck que es capaz de encontrar estassituaciones y (con suerte) corregirlas

o Se lanzan programas especiales de encaminamiento para las redes Estos programasinforman a su computadora coacutemo se supone que puede comunicarse con las otras

o Se borran los archivos temporales que crean ciertos programas

o Se actualiza correctamente el reloj del sistema Esto es maacutes complicado de lo que puedeparecer pues Unix de manera predeterminada necesita la hora en UCT (UniversalCoordinated Time) tambieacuten conocido como hora de Greenwich y el reloj de la CMOS (que esalimentado por una bateriacutea dentro de la computadora) muy probablemente estaraacute configuradocon la hora local Esto significa que debe tener alguacuten programa que lea la hora del relojde la CMOS y la corrija transformaacutendola en hora UCT

Despueacutes que init termina con sus actividades de arranque comienza con sus tareasplanificadas

init se convierte asiacute en el padre de todos los procesos del sistema Unix Un proceso essimplemente un programa que estaacute corriendo como cualquier programa puede correr maacutes deuna vez entonces puede haber maacutes de un proceso para un programa dado en particular

En Unix los procesos (instancias de un programa) se crean mediante una llamada alsistema5 (que es un servicio provisto por el nuacutecleo) denominada fork (Se lo llama forko bifurcacioacuten pues un proceso se bifurca en dos independientes) init forkea (bifurca)unos cuantos procesos los que a su vez forkean6 otros En su sistema Linux con todaseguridad init corre varias instancias de un programa llamado getty getty es el programaque le permitiraacute iniciar el ingreso al usuario y que a continuacioacuten lanzaraacute el programalogin

33 La actuacioacuten del usuario

331 El ingreso

Lo primero que hay que hacer para poder utilizar una maacutequina con Unix es identificarsefrente a la misma Este proceso conocido en ingleacutes como logging in (registro deingreso) es la manera que tiene Unix de saber cuales son los usuarios autorizados parautilizar el sistema Durante el ingreso se le preguntaraacute un nombre de cuenta y unacontrasentildea7 Los nombres de las cuentas son por lo general parecidos a los nombres de laspersonas y se lo asignaraacute el administrador del sistema Si Ud es el administrador delsistema deberaacute crearse una cuenta para poder trabajar sin los cuidados especiales querequiere la cuenta root (La informacioacuten necesaria para llevar a cabo dicha tarea podraacuteencontrarla en Installation and Getting Started 8 o en The Linux System AdministratorsGuide)

Luego de que tenga lugar la secuencia de procedimientos durante el arranque Ud veraacute enla pantalla algo como lo que se muestra a continuacioacuten (la primer liacutenea es meramente unsaludo (podriacutea ser alguna advertencia legal o cualquier otra cosa)

Welcome to the mousehouse Please have some cheese

mousehouse login

Sin embargo puede ser que lo que el sistema le presente al arrancar no se parezca aesto Por ejemplo puede que en lugar de una aburrida pantalla de texto nos muestre unapantalla graacutefica Auacuten en este caso la computadora le pediraacute sus datos al ingreso y maacutes omenos de la misma manera Si eacuteste es el caso en su sistema entonces el entorno detrabajo que utilizaraacute es el sistema X El X Window

System es un sistema de ventanas y en el capiacutetulo 5 se discutiraacuten algunas de lasdiferencias con las que se enfrentaraacute De cualquier manera el proceso de ingreso seraacutesimilar en ambos casos

_____________________________________________

5 N del T llamada al sistema del ingleacutes system call

6 N del T Mis disculpas por el teacutermino prometo no usarlo maacutes shy)

7 N del T contrasentildea palabra clave del ingleacutes password

8 N del T Puede consultar la versioacuten en castellano ya existente

Esta es por supuesto la invitacioacuten que Ud buscaba para ingresar (login) A lo largo deeste manual utilizaremos el usuario ficticio (o no tan ficticio dependiendo de sumaacutequina) larry9 Donde Ud vea larry debe poner el nombre de su propia cuenta Losnombres de las cuentas se basan en general en los nombres reales los sistemas Unix maacutesgrandes y serios tienen cuentas que usan el apellido del usuario alguna combinacioacuten denombre y apellido y auacuten se da el caso que deban agregarle algunos diacutegitos Por ejemplonombres de cuentas posibles para Larry Greenfield podriacutean ser larry greenfie lgreenfilg19

mousehouse seraacute de la misma manera el nombre de la maacutequina sobre la que trabajareacute

Es posible que cuando Ud instale Linux se le pregunte el nombre que desea asignarleEsto no es demasiado importante pero cada vez que haga falta utilizareacute mousehouse o maacutesraramente lionsden cuando necesite de un segundo sistema por razones de claridad o decontraste

Luego de teclear larry y apretar |_Intro_| nos encontramos con lo siguiente

mousehouse login larry

Password

Linux estaacute solicitando su contrasentildea10 Cuando escriba su contrasentildea no podraacute ver lo queestaacute tecleando en razoacuten de la privacidad necesaria a dicha palabra Escribacuidadosamente puede borrar caracteres pero no podraacute ver lo que estaacute editando Noescriba muy despacio si hay gente miraacutendole podriacutean llegar a descubrirla En cualquiercaso si se equivoca no se haga problemas pues el sistema le daraacute otra oportunidad deingresar

Luego que ingrese correctamente su nombre de cuenta o nombre de usuario y su contrasentildeaapareceraacute un corto mensaje denominado mensaje del diacutea11 que se obtiene del archivoetcmotd

Este archivo se utiliza para dar a conocer cualquier clase de informacioacuten a los usuarioscon respecto al estado del sistema y es responsabilidad del administrador del sistemafijar su contenido Despueacutes de todo esto aparece un prompt Un prompt es un siacutembolo que

nos indica que la computadora estaacute lista para recibir un comando Debe parecerse a lasiguiente figura

homelarry$

Si Ud estaacute utilizando X Window el prompt apareceraacute en alguna de las ventanas que hayen pantalla (Las ventanas son simples cajas rectangulares) Para escribir en elprompt mediante el ratoacuten mueva el cursor del mismo (probablemente se ve como una granX o una flecha) dentro de la ventana

332 Al abandonar la computadora

iexclNo apague la computadora directamente iexclSe arriesga a perder valiosos datos

A diferencia de la mayoriacutea de las versiones de DOS no es una buena idea apagar la llavede alimentacioacuten de la computadora asiacute como asiacute cuando termine de utilizarla Si reiniciala maacutequina (con el botoacuten de reset) sin antes tomar las debidas precauciones seraacute igual depernicioso Linux tiene una antememoria o cacheacute que mejora el rendimiento del disco Estosignifica que temporalmente guarda en RAM informacioacuten perteneciente al sistema dealmacenamiento permanente12

_____________________________________________

9 N del T He dejado aquiacute sin traducir ni cambiar el nombre del autor de la versioacuten eningleacutes y lo mismo vale para otros nombres como el de la maacutequina etc

10N del T contrasentildea del ingleacutes password

11N del T mensaje del diacutea del ingleacutes Message Of The Day(motd)

Las diferencias entre lo que Linux cree que hay en el disco y lo que efectivamente estaacutealmacenado en el disco se sincronizan cada 30 segundos Si desea apagar o reiniciar lacomputadora necesitaraacute ejecutar alguacuten procedimiento que indique a Linux que debe detenerel sistema de cacheacute y actualizar la informacioacuten en el disco

Si ya ha terminado sus tareas con la computadora pero auacuten estaacute dentro del sistema (yatecleoacute su nombre de usuario y su palabra clave) lo primero que debe hacer es registrarla salida (logout) del sistema Para ello teclee el comando logout Todos los comandosse enviacutean oprimiendo la tecla marcada como |_Enter_| |_Return_| oacute |_Intro_| Hasta queno aprieta |_Intro_| no pasa nada y por lo tanto puede borrar lo que escribioacute yrecomenzar

homelarry$ logout

Welcome to the mousehouse Please have some cheese

mousehouse login

Ahora puede ingresar otro usuario

333 Como apagar la computadora

Si el suyo se trata de un sistema en el cual trabaja un uacutenico usuario (Ud shy)) puededesear apagar la computadora cuando haya finalizado su trabajo con ella13 Para bajar elsistema14 o sea apagarlo ordenadamente deberaacute ingresar a una cuenta especialdenominada root La cuenta del root es la cuenta del administrador del sistema y puedeacceder a todos los archivos que existen en el sistema Si desea apagar la computadoraprimero debe bajar el sistema y para ello deberaacute obtener la palabra clave que utiliza eladministrador del sistema Por favor ingrese Ud Entonces como root

mousehouse login root

Password

Linux version 1355 (rootmousehouse) 1 Sun Jan 7 145626 EST 1996

shutdown now

Why fin del dia de trabajo

URGENT message from the sysadmin

System going down NOW

fin del dia de trabajo

Now you can turn off the power

_____________________________________________

12 La diferencia entre RAM y un disco riacutegido es como la diferencia entre la memoria decorto plazo y la de largo plazo Al quitar la alimentacioacuten de la computadora es como sile dieacuteramos un fortiacutesimo golpe en la cabeza olvidaraacute todo lo que teniacutea en la memoria decorto plazo Pero las cosas guardadas en la memoria de largo plazo el disco riacutegidoestaraacuten bien El disco es miles de veces maacutes lento que la RAM

13 Para evitar el debilitamiento prematuro de ciertos componentes de hardware es mejorque apague la computadora soacutelo cuando ya no la vaya a utilizar por el resto del diacuteaEncender y apagar una vez al diacutea la computadora probablemente es el mejor compromisoentre ahorrar energiacutea y machacar el sistema

14 N del T bajar el sistema del ingleacutes shutdown

El comando shutdown now prepara al sistema para que pueda apagarse o reiniciarse Debeesperar por el mensaje que dice que es seguro apagar o reiniciar el sistema (Cuando elsistema le pregunta Why15 soacutelo le estaacute preguntando una razoacuten para decirle a los otrosusuarios Como no hay otra persona utilizando el sistema cuando Ud lo baja puederesponderle con lo que se le ocurra o con nada)

Un pequentildeo dato para el perezoso como alternativa al enfoque de logoutlogin se puedeutilizar el comando su Mientras estaacute trabajando con su nombre de cuenta habitual (larrya nuestros efectos) escriba su y luego |_Intro_| Se le solicitaraacute la palabra clave deladministrador del sistema y si la ingresa correctamente tendraacute a partir de dicho momentolos privilegios que le corresponden al mismo Ahora con estos privilegios agregadospodraacute bajar el sistema mediante el comando shutdown now

34 Mensajes del nuacutecleo

Cuando se conecta la alimentacioacuten a su computadora aparece una serie de mensajes en lapantalla que describe el hardware conectado al ordenador Estos mensajes son producto dela actividad del nuacutecleo de Linux En esta seccioacuten intentaremos describir y explicar esosmensajes

Naturalmente estos mensajes variacutean de maacutequina a maacutequina Describireacute entonces losmensajes que aparecen en la miacutea El siguiente ejemplo contiene todos los mensajesestaacutendar y algunos especiacuteficos (En general la maacutequina sobre la que voy a realizar ladescripcioacuten estaacute miacutenimamente configurada no veraacute por lo tanto mucha informacioacutenrelacionada con la configuracioacuten de dispositivos)

Se utilizoacute Linux versioacuten 1355 uno de los maacutes recientes al momento de escribir

1 Lo primero que hace Linux es decidir que clase de tarjeta de viacutedeo y pantalla tieneconectado de manera de seleccionar un tamantildeo de letra apropiado (Cuanto maacutes pequentildeo esel tamantildeo maacutes caben en una pantalla a la vez) Linux puede consultarle si desea alguacutentipo de letra en particular o puede que tenga una seleccioacuten ya compilada en suinterior16

Console 16 point font 400 scans Console colour VGA+ 80x25 1 virtualconsole (max 63)

En este ejemplo el duentildeo de la maacutequina decidioacute al momento de compilar que utilizariacuteael tipo de letra estaacutendar tamantildeo grande Ademaacutes notaraacute que la palabra color estaacute malescrita Evidentemente Linus aprendioacute la versioacuten incorrecta de idioma ingleacutes17

_____________________________________________

15 N del T why significa iquestpor queacute

16 Compilada se refiere al proceso mediante el cual un programa de computadora escritopor una persona se traduce a algo que entiende la computadora Si una caracteriacutestica seha compilado en su interior significa que estaacute incluida en el programa

17 N del T colour es la variante ortograacutefica del ingleacutes insular y color lanorteamericana

2 La proacutexima tarea del nuacutecleo es informar acerca de la velocidad de su sistema medidaen BogoMIPS Un MIP equivale a un milloacuten de instrucciones por cada segundo mientrasque un BogoMIP es un bogus MIP18 cuantas veces la computadora puede hacerabsolutamente nada por cada segundo (Como este bucle no hace nada en realidad el nuacutemerocalculado no es tampoco una medida de la velocidad del sistema) Linux utiliza estenuacutemero cuando necesita esperar por alguacuten dispositivo de hardware

Calibrating delay loop ok shy 3328 BogoMIPS

3 El nuacutecleo de Linux tambieacuten nos comenta acerca de la utilizacioacuten de la memoria

Memory 23180k24576k available (544k kernel code 384k reserved 468k data)

Esto significa que la maacutequina tiene 24 megabytes de memoria Parte de esta memoria estaacutereservada por el nuacutecleo El resto puede ser utilizada por los programas Eacuteste es el lugartemporal conocido como RAM que se utiliza soacutelo como almacenamiento de corto plazo Sucomputadora tambieacuten dispone de una memoria permanente denominada disco riacutegido El

contenido del disco riacutegido se mantiene intacto auacuten luego de quitar la alimentacioacuten delordenador

4 A lo largo del proceso de arranque Linux controla distintas partes del hardware y nosmuestra mensajes indicativos de las mismas

This processor honours the WP bit even when in supervisor mode Good

5 Ahora Linux pasa a la configuracioacuten de red Lo que veremos a continuacioacuten estaacute mejorexplicado en The Linux Networking Guide19 y estaacute fuera del alcance de este documento

Swansea University Computer Society NET3033 for Linux 1350

IP Protocols ICMP UDP TCP

6 Linux soporta la FPU la unidad de punto flotante20 Eacutesta es un chip especial (o partede un chip en el caso del procesador 80486DX) que se ocupa de la aritmeacutetica con nuacutemerosno enteros

Algunos de esos chips no estaacuten en buenas condiciones y cuando Linux trata deidentificarlos la maacutequina se cuelga21 La maacutequina deja de funcionar Si esto sucedeUd veraacute en su pantalla lo siguiente

Checking 386387 coupling

Sino el mensaje seraacute

Checking 386387 coupling Ok fpu using exception 16 error reporting

si estaacute utilizando un 486DX Si tiene un 386 con un 387 le apareceraacute

Checking 386387 coupling Ok fpu using irq13 error reporting

_____________________________________________

18 N del T bogus significa espurio (para los argentinos trucho)

19 N del T Disponible en castellano Vea el apeacutendice D

20 N del T unidad de punto flotante del ingleacutes Floating Point Unit

21 N del T se cuelga del ingleacutes crashes

7 Y ahora se controla la instruccioacuten halt

Checking hlt instruction Ok

8 Luego de esta configuracioacuten inicial Linux escribe una liacutenea identificaacutendose a siacutemismo En ella explica cual es la versioacuten del nuacutecleo la del compilador de C de GNU quese utilizoacute para compilarlo y la fecha de dicha compilacioacuten

Linux version 1355 (rootmousehouse) (gcc version 270) 1 Sun Jan 7145626 EST 1996

9 El controlador serie comienza a consultar acerca del hardware instalado Uncontrolador es una parte del nuacutecleo que controla un dispositivo normalmente unperifeacuterico Se hace responsable por los detalles de la comunicacioacuten entre la CPU y eldispositivo Esto permite que la gente que escribe aplicaciones de usuario se puedaconcentrar en la aplicacioacuten pues no tiene que preocuparse por como trabaja exactamentela computadora

Serial driver version 411 with no serial options enabled

tty00 at 0x03f8 (irq = 4) is a 16450

tty01 at 0x02f8 (irq = 3) is a 16450

tty02 at 0x03e8 (irq = 4) is a 16450

Aquiacute vemos que ha encontrado tres puertos serie Un puerto serie es el equivalente delpuerto COM en DOS es el dispositivo que se utiliza normalmente para comunicarse conmodems y ratones

Lo que significan las liacuteneas anteriores es que el puerto serie 0 (COM1) tiene ladireccioacuten 0x03f8

Cuando dicho puerto interrumpe al nuacutecleo usualmente para decir que tiene datos listosutiliza la IRQ 422 Las IRQ son un medio que tienen los perifeacutericos de hablarse con elsoftware Cada puerto serie tambieacuten tiene un chip controlador que usualmente se denomina16450 aunque tambieacuten puede ser el 8250 o el 16550

10 A continuacioacuten viene el puerto paralelo que normalmente se conecta a la impresoraLos puertos paralelos en Linux tienen nombres que comienzan con lp lp son las inicialesde Line Printer23 aunque en los tiempos actuales parece maacutes apropiado usar las inicialesde Laser Printer (Sin embargo Linux se comunica sin problemas con cualquier clase deimpresora conectada al puerto paralelo de matriz de puntos chorro de tinta o laser)

lp0 at 0x03bc (polling)

Este mensaje dice que ha encontrado un puerto paralelo y que usaraacute el controlador dedispositivo estaacutendar

_____________________________________________

22 N del T IRQ Interrupt ReQuest (peticioacuten de interrupcioacuten)

23 N del T Impresora de liacuteneas

11 Linux identifica luego las unidades de disco riacutegido En el sistema que le estoymostrando mousehouse tengo instalados dos unidades de disco riacutegido IDE

hda WDC AC2340 325MB w127KB Cache CHS=10101255

hdb WDC AC2850F 814MB w64KB Cache LBA CHS=8273263

12 El nuacutecleo ahora busca las unidades de disco flexible En este ejemplo la maacutequinatiene dos unidades la A es una unidad de 5 1=4 y la B es una de 3 1=2 Linuxdenomina fd0 a la unidad A y fd1 a la unidad B

Floppy drive(s) fd0 is 144M fd1 is 12M

floppy FDC 0 is a National Semiconductor PC87306

13 El proacuteximo controlador que arranca en mi sistema ejemplo es el controlador SLIPEscribe un mensaje acerca de su configuracioacuten

SLIP version 083shyNET3019shyNEWTTY (dynamic channels max=256) (6 bitencapsulation enabled)

CSLIP code copyright 1989 Regents of the University of California

14 El nuacutecleo explora dentro de los discos riacutegidos que ha encontrado Busca las distintasparticiones que tiene cada uno Una particioacuten es una seccioacuten loacutegica de una unidad que seutiliza para evitar que interfieran entre siacute distintos sistemas operativos coexistentesEn este ejemplo la computadora tiene dos discos (hda y hdb) con cuatro y unaparticiones respectivamente

Partition check

hda hda1 hda2 hda3 hda4

hdb hdb1

15 Finalmente Linux monta la particioacuten raiacutez Eacutesta es la particioacuten del disco en la cualreside el sistema operativo Linux Cuando Linux monta esta particioacuten hace que esteacutedisponible para los usuarios

VFS Mounted root (ext2 filesystem) readonly

Capiacutetulo 4

El shell de Unix

Es muy faacutecil crear archivos en el sistema operativo UNIX Por lo tanto los usuariostienden a crear muchos archivos que utilizan una gran cantidad de espacio Se ha dichoque la uacutenica cosa estaacutendar y comuacuten a todos los sistemas UNIX es el mensajeshydelshydiacutea queles pide a los usuarios que borren los archivos que no necesitan

Guiacutea del administrador de System V2

41 Comandos Unix

Cuando ingresa al sistema Unix se enfrenta con algo maacutes o menos como lo que se muestra acontinuacioacuten

homelarry$

Ese algo se denomina prompt1 Como su nombre sugiere le solicita a Ud que ingrese uncomando Todos los comandos Unix consisten de una secuencia de letras nuacutemeros ycaracteres No son vaacutelidos los espacios dentro del nombre del comando Algunos comandosvaacutelidos son mail cat y CMU_is_Numbershy5 Algunos caracteres no estaacuten permitidosvolveremos a este tema maacutes adelante

Unix ademaacutes hace diferencia entre mayuacutesculas y minuacutesculas2 lo que significa que Cat ycat son comandos distintos

El prompt se muestra como resultado del accionar de un programa especial denominadointeacuterprete de comandos3 El inteacuterprete de comandos o shell acepta los comandos queescribe el usuario y los ejecuta Los comandos pueden formar programas en el lenguaje delinteacuterprete de comandos y a dichos programas se los denomina guiones de shell

_____________________________________________

1 N del T prompt significa solicitud

2 La diferenciacioacuten entre mayuacutesculas y minuacutesculas es una cosa muy personal Algunossistemas operativos como OS2 y Windows NT preservan las diferencias pero no las cuentancomo distintas En la praacutectica habitual con Unix se utiliza raramente la diferenciacioacutenLa situacioacuten de tener un par de comandos Cat y cat diferentes no es comuacuten

3 N del T inteacuterprete de comandos del ingleacutes shell

Los shell en Unix se clasifican en dos grandes grupos los tipo Bourne y los tipo C Losshell tipo Bourne toman su nombre a partir de su inventor Steven Bourne Steven Bourneescribioacute el shell original de Unix denominado sh a partir de entonces la mayoriacutea delos shells tienen un nombre con el sufijo sh para indicar que son extensiones de la ideaoriginal Existen varias implementaciones de este shell que colectivamente llevan elnombre de shells Bourne Tambieacuten son comunes los shells tipo C cuyo original fueimplementado por Bill Joy Tradicionalmente los shell Bourne se han utilizado para los

scripts de shell y por razones de compatibilidad con el sh original mientras que losshells C han sido maacutes comunes en su aplicacioacuten interactiva (Los C tienen ventajas encuanto a sus mejores caracteriacutesticas interactivas aunque son maacutes difiacuteciles deprogramar)

Linux viene con un shell Bourne denominado bash escrito por la organizacioacuten FreeSoftware Foundation4 El nombre bash proviene de Bourne Again SHell uno de los tantosjuegos de palabras en Unix Se trata de un shell Bourne avanzado tiene las capacidadesestaacutendar de programacioacuten que se encuentran en todos los shells Bourne y ademaacutes varias delas caracteriacutesticas interactivas que se encuentran en los shells C bash es el shellpredeterminado cuando uno usa Linux

Apenas ingresa por primera vez el prompt que Ud ve es producto de la accioacuten de bash enotras palabras estaacute Ud corriendo su primer programa Unix el shell bash Mientras esteacuteconectado el shell bash estaraacute permanentemente funcionando

411 Un comando Unix tiacutepico

El primer comando que debe conocer es cat Para utilizarlo escriba cat y luego oprima|_Intro_|

homelarry$ cat

Si tiene ahora el cursor posicionado en una liacutenea nueva entonces lo que ha hecho estaacutebien Existen unas cuantas variantes que podriacutea haber tecleado algunas funcionaraacutenotras no

o Si tuvo alguacuten error de tecleo al escribir cat deberiacutea haber visto algo maacutes o menosasiacute

homelarry$ ct

ct command not found

homelarry$

Por lo tanto el shell le informa que no pudo encontrar un programa denominado ct yle ofrece otro prompt para seguir trabajando Recuerde que Unix hace diferencia entremayuacutesculas y minuacutesculas CAT estaacute mal escrito

o Puede que Ud haya escrito algunos espacios en blanco antes del comando como5

homelarry$ cat

Sin embargo el resultado es correcto y el programa cat corre sin problemas

_____________________________________________

4 N del T La Fundacioacuten para el Software Libre _tal es la traduccioacuten de su nombre_ seocupa de la produccioacuten y distribucioacuten de software que no tiene limitaciones en su uso yocopia enfrentando de esta manera las praacutecticas de las compantildeiacuteas tradicionales dedesarrollo Que el software sea libre no significa que sea barato la libertad incluye lagratuidad pero es mucho maacutes que ello

5 El indica que el usuario escribioacute un espacio

o Tambieacuten puede que haya oprimido un |_Intro_| en una liacutenea en blanco no se preocupe ycontinuacutee pues no tiene ninguacuten efecto

Doy por sentado que Ud ha corrido con eacutexito cat y estaacute esperando que haga algo que lomaraville Pues bien no no es un juego cat es una muy uacutetil utilidad que no parece muyuacutetil a primera vista Escriba cualquier cosa y luego oprima |_Intro_| Lo que veraacute es

homelarry$ cat

Help Im stuck in a Linux program

Help Im stuck in a Linux program

Lo que parece haber hecho cat es devolver un eco de lo escrito Esto es uacutetil a veces talvez no ahora Asiacute que salgamos de este programa y veamos otros con beneficios maacutes obvios

Para finalizar ciertos comandos Unix teclee |_Ctrlshyd_|6 |_Ctrlshyd_| es el caraacutecter endshyofshyfile7 o EOF para abreviar Puede que en ciertos libros de texto aparezca como endshyofshytext8 Nos referiremos a este caraacutecter como EOF Es un caraacutecter de control que informaa los programas Unix que ha cesado el ingreso de datos Cuando cat ve que no teclea maacutesnada termina

Para ver otro ejemplo parecido pruebe el programa sort Como su nombre lo indica sortes un programa de clasificacioacuten Si Ud teclea unas cuantas liacuteneas y luego oprime |_Ctrlshyd_| sort las mostraraacute a la salida de manera ordenada Esta clase de programas sedenominan filtros porque toman texto desde su entrada lo filtran y lo vierten a susalida modificado de alguna manera Tanto cat como sort son filtros inusuales cat esinusual pues lee el texto de entrada y no lo cambia

sort es inusual porque lee todas las liacuteneas de entrada hasta el EOF antes de emitir susalida La mayoriacutea de los filtros trabajan sobre la base de liacutenea por liacutenea leen unaliacutenea de la entrada realizan cierto coacutemputo y escriben una liacutenea diferente de salida

42 Autoayuda

El comando man muestra las paacuteginas de la guiacutea de referencia para un comando dado9 Porejemplo

homelarry$ man cat

cat(1) cat(1)

NAME

cat shy Concatenates or displays files

SYNOPSIS

cat [shybenstuvAET] [shyshynumber] [shyshynumbershynonblank] [shyshysqueezeshyblank]

[shyshyshowshynonprinting] [shyshyshowshyends] [shyshyshowshytabs] [shyshyshowshyall]

[shyshyhelp] [shyshyversion] [file]

DESCRIPTION

This manual page documents the GNU version of cat

________________________________________________

6 Mantenga oprimida la tecla etiquetada |_Ctrl|_y aprete |_d_| luego suelte ambas

7 N del T fin de archivo

8 N del T fin de texto

9 man tambieacuten puede mostrar informacioacuten acerca de las llamadas al sistema subrutinasformatos de archivos etc En la versioacuten original de Unix el comando mostraba lainformacioacuten exactamente igual a la que apareciacutea en la documentacioacuten impresa Por ahoraes probable que Ud soacutelo esteacute interesado en obtener ayuda acerca de los comandos

Hay aproximadamente una paacutegina completa de informacioacuten sobre cat10 Pruebe correr manen este momento No espere entender la paacutegina de manual que se le muestra Las paacuteginas demanual suponen un cierto conocimiento de Unix conocimiento que tal vez Ud no tenga eneste momento

Cuando termine de leer la paacutegina es probable que vea un bloque en video inverso al finalde la paacutegina parecido a shyshymoreshyshy o a Line 1 Se trata del pedido de maacutes(informacioacuten) que pronto le seraacute muy familiar

En lugar de dejar escapar el texto fuera de los liacutemites de la pantalla man se detiene alfinal de cada paacutegina y espera para ver que ha decidido hacer Ud Si desea seguirleyendo oprima |_Barra espaciadora_| y avanzaraacute una paacutegina Si desea terminar con lalectura de la paacutegina del manual oprima |_q_| Regresaraacute entonces al prompt del shellque esperaraacute hasta que Ud escriba otro comando

man provee ademaacutes una funcioacuten de buacutesqueda de palabras clave Por ejemplo digamos que Udestaacute interesado en el tema PostScript el lenguaje de control de impresoras desarrolladopor Adobe Si escribe man shyk ps o man shyk Postscript recibiraacute como resultado unalista de todos los comandos llamadas al sistema y otras partes documentadas de Unix quecontengan la palabra ps (o Postscript) en su nombre o descripcioacuten breve Esto puedellegar a ser muy uacutetil cuando quiere buscar una herramienta para hacer algo pero noconoce su nombre o si existe

43 Almacenaje de la informacioacuten

Los filtros son muy uacutetiles cuando Ud se ha transformado en un usuario experimentadopero tienen un pequentildeo problema Coacutemo almacena Ud la informacioacuten Seguramente iexclno seespera que Ud teclee todas las cosas cada vez que desea utilizar el programa Porsupuesto que no Unix provee archivos y directorios

Un directorio es como una carpeta contiene hojas de papel o archivos Una carpetasuficientemente grande puede contener otras carpetas puede haber directorios dentro dedirectorios En Unix se denomina sistema de archivo a la coleccioacuten de archivos ydirectorios Inicialmente en el sistema de archivo soacutelo existe un directorio denominadoroot11 Dentro de este directorio hay maacutes directorios y dentro de ellos hay archivosy auacuten maacutes directorios12

_____________________________________________

10 N del T El ejemplo se ha mantenido en ingleacutes pues es muy probable que Ud tengainstaladas las paacuteginas de manual en dicho idioma de manera predeterminada Pruebe maacutestarde de instalar el conjunto de paacuteginas de manual que estaacuten disponibles en castellano

11 N del T directorio raiacutez

Cada archivo y cada directorio tiene un nombre Nos referiremos a su nombre corto13 quepuede coincidir con el de otro archivo yo directorio en alguna otra parte del sistema dearchivo y al nombre largo14 que es uacutenico Un nombre corto para un archivo puede serjoe mientras que su nombre completo podriacutea ser homelarryjoe El nombre completo sedenomina usualmente trayectoria15 La trayectoria puede decodificarse como una secuenciade directorios Por ejemplo veremos como se lee homelarryjoe

homelarryjoe

La barra inicial indica el directorio raiacutez

Aquiacute esta el directorio denominado home Estaacute dentro del directorio raiacutez

Este es el directorio larry el cual estaacute dentro de home

joe estaacute dentro de larry Una trayectoria puede referirse tanto a un directorio como a unnombre de archivo asiacute que joe podriacutea ser cualquiera de ellos Todos los items antes delnombre corto deben ser directorios

Una manera sencilla de visualizar todo esto es mediante un diagrama en aacuterbol Para ver eldiagrama de un sistema tiacutepico Linux mire la Figura 41 Debe Ud notar que dichodiagrama no estaacute completo (iexclun sistema Linux completo tiene maacutes de 8000 archivos) y soacutelomuestra algunos de los directorios estaacutendar Por lo tanto puede haber algunosdirectorios del diagrama que no esteacuten en su sistema y de hecho su sistema tendraacutedirectorios que no aparecen en la figura

431 Miremos los directorios con ls

Ahora que ya sabe de la existencia de archivos y directorios debe haber tambieacuten unamanera de manipularlos Por supuesto El comando ls es uno de los maacutes importantes y loque hace es listar los archivos Si prueba a correr el comando ls entonces veraacute

homelarry$ ls

homelarry$

Estaacute bien no se preocupe por no ver nada Unix es intencionalmente callado si no hayarchivos para mostrar no muestra nada (ni siquiera un no hay archivos) Por lo tantola ausencia de salida es la manera de ls de decir que no encontroacute ninguacuten archivo

Pero hace un momento dije que hay maacutes de 8000 archivos por alliacute iquestdoacutende estaacuten Acaba deencontrar el concepto de directorio actual Como puede ver en el prompt su directorioactual es homelarry y alliacute no hay archivos Si desea la lista de archivos de undirectorio maacutes poblado pruebe con el directorio raiacutez

homelarry$ ls

bin etc install mnt root user var

dev home lib proc tmp usr vmlinux

homelarry$

_____________________________________________

12 Puede haber o no un liacutemite a la profundidad a la cual puede llegar el sistema dearchivo (En mi caso nunca la alcanceacute uno faacutecilmente puede tener directorios de 10niveles de profundidad)

13 N del T Nombre relativo del archivo o directorio

14 N del T Nombre completo o absoluto

15 N del T trayectoria del ingleacutes path

___________________________________________________________________________________________Figura 41 Tiacutepico aacuterbol (podado) de directorios Unix

________||bin

|___dev

|

|___etc

|

|___home ________larry

| |

| |___sam

|___lib

|

|___proc

|

|___tmp

|

|___usr________||X11R6

|

|___bin

|

|___emacs

|

|___etc

|

|___g++shyinclude

|

|___include

|

|___lib

|

|___

| local

| ||_bin

| |___emacs

| |

| |___etc

| |

| |___lib

|

|___man

|

|___spool

|

|___src________linux

|

|___tmp

En el comando anterior ls el directorio ( ) es lo que se denomina un paraacutemetroLa primer palabra de un comando es el nombre del comando y cualquier cosa que le sigason sus paraacutemetros Los paraacutemetros generalmente modifican la forma en la que actuacutea unprograma para ls el paraacutemetro le dice de cual directorio desea Ud la lista de archivosAlgunos comandos tienen paraacutemetros especiales denominados opciones o interruptores16 Paraver esto pruebe

homelarry$ ls shyF

bin etc install mnt root user var

dev home lib proc tmp usr vmlinux

homelarry$

_____________________________________________

16 N del T interruptores del ingleacutes switches

El shyF es una opcioacuten Las opciones son clases especiales de paraacutemetros que comienzan conun guioacuten y modifican el funcionamiento del programa Para ls shyF es una opcioacuten que lepermite a Ud ver cuales de las entradas son directorios cuales son archivos especialescuales programas y cuales son archivos normales Cualquiera que termina con una barra esun directorio Trataremos con maacutes detalle las caracteriacutesticas de ls maacutes adelante iexclEs unprograma sorprendentemente complejo

Por ahora hay dos lecciones que se deben aprender Primero debe aprender que es lo quehace ls Pruebe unos cuantos otros directorios de los que se muestran en el aacuterbol de laFigura 41 y fiacutejese en su contenido Naturalmente algunos estaraacuten vaciacuteos y otrostendraacuten muchos archivos dentro Le sugiero que utilice ls con y sin la opcioacuten shyF Por ejemplo ls usrlocal debe aparecer maacutes o menos asiacute

homelarry$ ls usrlocal

archives bin emacs etc ka9q lib tcl

homelarry$

La segunda leccioacuten es maacutes general Muchos comandos Unix son como ls Tienen opciones queen general consisten de un caraacutecter precedido por un guioacuten y tienen paraacutemetros Adiferencia de ls algunos comandos requieren ciertos paraacutemetros yu opciones Paramostrar como se usan los comandos utilizaremos el siguiente formato

ls [shyaRF] [directorio]

En general y desde ahora en adelante utilizareacute plantillas de comandos como la mostradaantes de introducir comandos nuevos para Ud La primer palabra es el comando (en estecaso ls) A continuacioacuten del comando siguen todos los paraacutemetros Los paraacutemetrosopcionales se encerraraacuten entre corchetes ([ y ]) Las metashyvariables estaacuteninclinadas_son palabras que toman el lugar de los paraacutemetros reales (Por ejemplo maacutesarriba puede Ud ver que dice directorio lo cual debe ser reemplazado por el nombre deun directorio real)

Las opciones son un caso especial Estaacuten encerradas entre corchetes pero Ud puedeutilizar una sola de ellas sin necesidad de emplear todas juntas Por ejemplo con lastres opciones enumeradas maacutes arriba para el caso de ls Ud tiene ocho maneras posiblesde correr el comando con o sin cada una de las opciones (Contraste ls shyR con ls shyF)

432 El directorio actual y cd

shy pwd

El uso de los directorios puede ser insoportable si se tiene que teclear la trayectoriacompleta cada vez que se quiere acceso a un directorio En lugar de ello los shell deUnix tienen una caracteriacutestica denominada directorio actual presente o detrabajo Es muy probable que su configuracioacuten de shell muestre dicho directorio como

parte del prompt homelarry Si no lo hace pruebe el comando pwd que proviene de lasigla de las palabras present working directory17 (Algunas veces el prompt muestra elnombre de la maacutequina Esto soacutelo es uacutetil realmente en un entorno de red en el cual hay unagran cantidad de maacutequinas diferentes)

mousehousegtpwd

homelarry

mousehousegt

Como puede Ud ver pwd le dice cuaacutel es su directorio actual18_ se trata de un comandomuy simple La mayoriacutea de los comandos actuacutea de forma predeterminada sobre eldirectorio actual

shy cd [directorio]

Podemos cambiar nuestro directorio actual mediante el comando cd Por ejemplo pruebe

homelarry$ cd home

home$ ls shyF

larry sam shutdown steve user1

home$

Si Ud omite el paraacutemetro opcional directorio se lo retornaraacute a su directorio raiacutezpersonal o directorio original De otro modo cd lo cambiaraacute al directorio especificadoPor ejemplo

home$ cd

homelarry$ cd

$ cd home

home$ cd usr

usr$ cd localbin

usrlocalbin$

Como puede ver cd le permite expresar el directorio de destino con trayectoriasabsolutas o relativas Una trayectoria absoluta comienza con una y especifica todoslo directorios que existen antes del archivo que Ud desea Una trayectoria relativa estaacutereferida a su directorio actual En el ejemplo anterior cuando estaba en usr hice unmovimiento relativo a localbin local es un directorio que existe bajo usr ybin es un directorio bajo local (cd home tambieacuten fue un cambio de directoriorelativo)

Existen dos directorios que se utilizan solamente para trayectorias relativas y El directorio se refiere al directorio actual y es el directorio

anterior son abreviaturas de directorio y existen en todos los directorios aunque nocuadran bien en la metaacutefora de carpeta dentro de carpeta Auacuten el directorio raiacutez tieneun directorio anterior eacutel es su propio directorio anterior

_____________________________________________

17 N del T Directorio de trabajo actual

18 En este libro veraacute todos los teacuterminos en uso directorio de trabajo presentedirectorio actual o directorio de trabajo Prefiero directorio actual aunque a vecesrecurra a las otras formas a causa de razones de estilo

El archivo chaptershy1 viene a ser el archivo chaptershy1 que estaacute en el directorio actualOcasionalmente seraacute necesario que Ud coloque expliacutecitamente el para que ciertoscomandos funcionen aunque esto es raro En la mayoriacutea de los casos daraacute igual ponerchaptershy1 o chaptershy1

El directorio es maacutes uacutetil cuando queremos retroceder

usrlocalbin$ cd

usrlocal$ ls shyF

archives bin emacs etc ka9q lib tcl

usrlocal$ ls shyF src

cweb linux xmris

usrlocal$

En este ejemplo me cambieacute al directorio anterior mediante cd y luego listeacute eldirectorio usrsrc desde usrlocal utilizando el nombre src Debe advertir que sihubiese estado en homelarry ejecutar el comando ls shyF src no me habriacutea servido alpropoacutesito de ver lo que hay en usrsrc

El directorio ~ es un alias para su directorio personal

usrlocal$ ls shyF ~

usrlocal$

Puede ver que auacuten no hay nada en su directorio personal ~ seraacute maacutes uacutetil a medida queaprendamos maacutes acerca de como manipular los archivos

433 Creacioacuten y borrado de directorios

shy mkdir directorio1 [directorio2 directorioN]

En Unix crear directorios es extremadamente simple y puede ser una muy uacutetil herramientade organizacioacuten Para crear un nuevo directorio utilice el comando mkdir Por supuestomkdir viene de make directory19

Con un pequentildeo ejemplo veamos como funciona esto

homelarry$ ls shyF

homelarry$ mkdir reportshy1993

homelarry$ ls shyF

reportshy1993

homelarry$ cd reportshy1993

homelarryreportshy1993$

mkdir puede tomar maacutes de un paraacutemetro a los que interpreta como nombres de directoriosque debe crear Puede especificarlos mediante su nombre relativo o absoluto reportshy1993es un caso de ejemplo con trayectoria relativa

homelarryreportshy1993$ mkdir homelarryreportshy1993chap1 ~reportshy1993chap2

homelarryreportshy1993$ ls shyF

chap1 chap2

homelarryreportshy1993$

_____________________________________________

19 N del T Crear directorio

shy rmdir directorio1 [directorio2 directorioN]

El opuesto de mkdir es rmdir (remove directory20) rmdir trabaja exactamente igual quemkdir Un ejemplo de rmdir es

homelarryreportshy1993$ rmdir chap1 chap3

rmdir chap3 No such file or directory

homelarryreportshy1993$ ls shyF

chap2

homelarryreportshy1993$ cd

homelarry$ rmdir reportshy1993

rmdir reportshy1993 Directory not empty

homelarry$

Como puede apreciar rmdir se niega a borrar un directorio que no existe y tampocopermite eliminar directorios que tengan algo dentro (Recuerde que reportshy1993 tiene un

subdirectorio chap2 dentro de eacutel) Existe un tema interesante para pensar entoncesiquestqueacute pasa si intenta eliminar su directorio actual Averiguumleacutemoslo

homelarry$ cd reportshy1993

homelarryreportshy1993$ ls shyF

chap2

homelarryreportshy1993$ rmdir chap2

homelarryreportshy1993$ rmdir

rmdir Operation not permitted

homelarryreportshy1993$

Otra situacioacuten del mismo estilo es que sucede si intenta eliminar el directorio anterioral directorio actual Bien esto no es un problema nuevo el directorio anterior alactual no estaacute vaciacuteo (existe el actual en eacutel) asiacute que no puede ser borrado

44 Informacioacuten en movimiento

Todos este asunto de los directorios estaacute muy lindo pero no son de ninguna ayuda amenos que Ud tenga alguacuten sitio donde almacenar sus datos Los dioses del Unix vieroneste problema y lo solucionaron haciendo que los usuarios tengan archivos21

_____________________________________________

20 N del T Eliminar directorio

21N del T Tambieacuten denominados ficheros

Aprenderemos maacutes acerca de la creacioacuten y edicioacuten de archivos en los proacuteximos capiacutetulos

Los comandos baacutesicos para manipular archivos en Unix son cp mv y rm Sus nombresprovienen de copy22 move23 y remove24 respectivamente

441 cp como un monje

shy cp [shyi] fuente destino

shy cp [shyi] archivo1 archivo2 archivoN directorioshydeshydestino25

cp es una utilidad muy praacutectica en Unix y ademaacutes muy poderosa Permite que una personapueda copiar maacutes informacioacuten en un segundo que lo que podiacutea copiar un monje del siglo XIVen todo un antildeo

Debe ser muy cuidadoso con cp si no dispone de una cantidad importante de espacio endisco A nadie le hace gracia ver el mensaje Disk full26 cuando estaacute trabajando conarchivos importantes

cp tambieacuten puede sobreescribir archivos existentes sin previo aviso trataremos este temamaacutes adelante

Bien hablaremos primero acerca de la primer liacutenea en la plantilla del comando El primerparaacutemetro de cp es el nombre del archivo que hay que copiar el segundo es el lugar dondese desea depositar la copia Puede obtener una copia con un nombre distinto o una en undirectorio diferente Veamos algunos ejemplos

homelarry$ ls shyF etcpasswd

etcpasswd

homelarry$ cp etcpasswd

homelarry$ ls shyF

passwd

homelarry$ cp passwd frog

homelarry$ ls shyF

frog passwd

homelarry$

El primer comando cp que corriacute tomoacute el archivo etcpasswd que contiene los nombres detodos los usuarios en un sistema Unix y lo copioacute en mi directorio raiacutez cp no borra elarchivo fuente asiacute que no hice nada que pudiera dantildear el sistema O sea que ahoraexisten dos copias del contenido del archivo etcpasswd ambas se denominan passwd perouna estaacute en el directorio etc y la otra en homelarry

_____________________________________________

22 N del T Copiar

23 N del T Mover

24 N del T Quitar borrar

25 cp necesita de dos renglones en su plantilla porque el significado del segundoparaacutemetro depende de la cantidad de paraacutemetros

26 N del T Disco lleno

Luego creamos una tercera copia de etcpasswd cuando tecleamos cp passwd frog ahorahay tres copias etcpasswd homelarrypasswd y homelarryfrog El contenido de esostres archivos es el mismo sus nombres de archivo difieren

cp puede copiar archivos entre directorios si el primer paraacutemetro es un archivo y elsegundo es un directorio En este caso el nombre simple (sin el path) de destinocoincidiraacute con el original para cada archivo

Tambieacuten se puede copiar un archivo y cambiar su nombre de destino en una sola operacioacutencaso que se da cuando ambos paraacutemetros son nombres de archivo Aquiacute reside uno de lospeligros de cp Si tecleara cp etcpasswd etcgroup el comando cp creariacuteanormalmente un archivo nuevo con el contenido ideacutentico al de etcpasswd y con el nombre

etcgroup Por lo tanto si etcgroup ya existiera cp destruiriacutea el contenido delantiguo sin darle la oportunidad de guardarlo (Ni siquiera escribiraacute un mensaje en elcual le advierta que estaacute por destruir un archivo al copiarle otro encima) Echemos unamirada a otro ejemplo de cp

homelarry$ ls shyF

frog passwd

homelarry$ mkdir passwd_version

homelarry$ cp frog passwd passwd_version

homelarry$ ls shyF

frog passwd passwd_version

homelarry$ ls shyF passwd_version

frog passwd

homelarry$

iquestCoacutemo useacute cp en este caso Evidentemente cp puede tomar maacutes de dos paraacutemetros como sepuede apreciar en la segunda liacutenea de plantillas del comando Lo que el comando anteriorrealizoacute es copiar los archivos que aparecen listados (frog y passwd) al directoriopasswd_version De hecho cp puede tomar cualquier nuacutemero de paraacutemetros interpreta losprimeros n shy 1 como los nombres de archivo que debe copiar y el neacutesimoparaacutemetro como elnombre del directorio al cual se deben copiar los anteriores

No puede renombrar archivos cuando copia maacutes de uno a la vez siempre mantienen su nombresimple Esto nos lleva a una pregunta interesante iquestQueacute es lo que pasariacutea si tecleamoscp frog passwd toad donde frog y passwd existen y toad no es un directorioInteacutentelo y lo sabraacute

442 La poda con rm

shy rm [shyi] archivo1 archivo2 archivoN

Ahora que hemos aprendido como crear millones de archivos con cp (y creacuteame muy prontoencontraraacute nuevas maneras de crear maacutes archivos) seriacutea uacutetil aprender la manera deborrarlos De hecho es muy simple el comando que anda necesitando es rm y funcionacomo Ud se lo esperariacutea a cualquier archivo cuyo nombre se pasa como paraacutemetro a rm selo borra Por ejemplo

homelarry$ ls shyF

frog passwd passwd_version

homelarry$ rm frog toad passwd

rm toad No such file or directory

homelarry$ ls shyF

passwd_version

homelarry$

Como puede Ud apreciar rm es extremadamente espartano No soacutelo no pide su confirmacioacutensino que borra cosas auacuten en el caso en que haya errores en la liacutenea de comandos Estobien puede ser peligroso Considere la diferencia entre estos dos comandos

homelarry$ ls shyF

toad frog

homelarry$ ls shyF frog

toad

homelarry$ rm frogtoad

homelarry$

y este otro

homelarry$ rm frog toad

rm frog is a directory

homelarry$ ls shyF

frog

homelarry$

Como puede ver la diferencia en un caracter hace una diferencia importante en la salidadel comando iexclEs vital que Ud controle lo que ha escrito en sus liacuteneas de comando antesde presionar |_Intro_|

443 Seriacutea interesante tener un rastrillo

shy mv [shyi] nombreshyviejo nombreshynuevo

shy mv [shyi] archivo1 archivo2 archivoN nuevoshydirectorio

Por uacuteltimo el otro comando del que debe cuidarse es mv mv se parece un montoacuten a cpexcepto que borra el archivo original despueacutes de copiarlo Se puede entender como lautilizacioacuten conjunta de cp y rm Veamos que podemos hacer

homelarry$ cp etcpasswd

homelarry$ ls shyF

passwd

homelarry$ mv passwd frog

homelarry$ ls shyF

frog

homelarry$ mkdir report

homelarry$ mv frog report

homelarry$ ls shyF

report

homelarry$ ls shyF report

frog

homelarry$

Como puede ver mv renombra un archivo (que es el primer paraacutemetro) si el segundoparaacutemetro es un archivo Si el segundo paraacutemetro es un directorio mv moveraacute el archivoal nuevo directorio manteniendo el mismo nombre simple

Debe Ud ser muy cuidadoso con mv el comando no controla si el archivo ya existe yborraraacute cualquier archivo que hubiera con el nombre de destino Por ejemplo si ya tengoun archivo de nombre frog existente en mi directorio report el comando mv frog reportborraraacute el archivo reportfrog y lo reemplazaraacute con frog

De hecho existe una manera de lograr que tanto rm cp y mv le consulten a Ud antes deeliminar archivos Los tres comandos nombrados aceptan la opcioacuten shyi a tal efecto SiUd utiliza un alias puede hacer que el shell ejecute rm shyi automaacuteticamente cuandoteclee rm Aprenderaacute maacutes de estos temas luego en la Seccioacuten 913 en la paacutegina 92

Capiacutetulo 5

El sistema de ventanas X

Lo mejor de los estaacutendares es que haya tantos para elegir Andrew S Tanenbaum

Este capiacutetulo soacutelo es aplicable para aquellos que usen el sistema de ventanas X Si seencuentra con una pantalla con muacuteltiples ventanas colores o un cursor que soacutelo se muevecon el ratoacuten estaacute usted usando X (Si su pantalla contiene caracteres blancos sobrefondo negro no estaacute usando X Para arrancarlo refieacuterase a la Seccioacuten 51)

51 Ejecucioacuten y salida del sistema de ventanas X

511 Ejecucioacuten de X

Incluso cuando X no arranque de forma automaacutetica durante el ingreso en el sistema esposible arrancarlo desde la liacutenea de comandos del inteacuterprete en modo texto Hay doscomandos que arrancan X bien startx o bien xinit Debe intentar startx primero Si elinteacuterprete de comandos se queja de que ese comando no existe entonces pruebe con xinit aver si arranca X de ese modo Si no funciona ninguno de los comandos anteriores puedeque no tenga X instalado en su sistema refieacuterase a la documentacioacuten local de sudistribucioacuten

Si el comando se ejecuta pero regresa al inteacuterprete en modo texto tras un rato X estaacuteinstalado pero no ha sido configurado todaviacutea En ese caso debe consultar ladocumentacioacuten que acompantildeaba su distribucioacuten en lo referente a como configurar X

512 Saliendo de X

Dependiendo de coacutemo se haya configurado X puede haber dos modos diferentes de salir deX El primero es que su gestor de ventanas controle la ejecucioacuten de X En ese casodeberaacute salir de X usando un menuacute (ver Seccioacuten 548 en la paacutegina 41) Para ver el menuacutebasta apretar un botoacuten del ratoacuten sobre el fondo

La entrada del menuacute que busca debe ser algo asiacute como Exit Window Manager1 o Exit X2Trate de encontrar esa entrada (puede que haya maacutes de un menuacute intente usar diferentesbotones) y eliacutejala

El otro meacutetodo utiliza una ventana xterm especial para controlar X En este casoseguramente existiraacute una ventana cuyo tiacutetulo sea login3 o system xterm4 Para salirde X mueva el cursor a esa ventana y escriba exit5

Si X arrancoacute automaacuteticamente tras su ingreso en el sistema uno de estos meacutetodosprobablemente le sacaraacute de eacutel Basta conectarse de nuevo para regresar a eacutel Si ejecutoacute Xde forma manual al salir volveraacute al interprete de comandos en modo texto (Si quieresalir del sistema bastaraacute con escribir logout )

52 iquestQueacute es el sistema de ventanas X

El Sistema de Ventanas X es un meacutetodo de trabajo graacutefico y distribuido desarrolladoprincipalmente en el Instituto Tecnoloacutegico de Massachusetts Actualmente estaacute a cargo deun consorcio de fabricantes (debidamente llamado El Consorcio X) y es mantenido porellos

El Sistema de Ventanas X (que a partir de ahora abreviaremos como X6 tiene revisionescada pocos antildeos conocidas como lanzamientos La uacuteltima revisioacuten ha sido X11R6 o sextolanzamiento7

El nuacutemero 11 indica la versioacuten oficial pero no ha habido cambios en los uacuteltimos antildeos ytampoco hay planes para cambiarla en un futuro proacuteximo

Al ser cliente y servidores programas diferentes es posible ejecutar cada uno en enmaacutequinas completamente diferentes Ademaacutes de constituir un meacutetodo estaacutendar paraaplicaciones graacuteficas es posible ejecutar un programa en una maacutequina remota (iexclincluso alotro lado del paiacutes si quiere) y que los resultados aparezcan en la estacioacuten de trabajoque tiene enfrente suyo

Un tercer concepto con el que debe familiarizarse es el de gestor de ventanas El gestorde ventanas es un cliente especial que le dice al servidor en que posicioacuten debencolocarse las diferentes ventanas y permite al usuario moverlas El servidor por siacutemismo no interacciona con el usuario Se trata de un medio que conecta el usuario y elcliente

53 iquestQueacute es esto que hay en mi pantalla

Al arrancar X varios programas son ejecutados Primero arranca el servidor Luegogeneralmente arrancan varios clientes Desgraciadamente no hay un estaacutendar comuacuten entrelas diferentes distribuciones Es bastante probable que entre los clientes se encuentreun gestor de ventanas bien fvwm o twm un inteacuterprete de comandos xterm y un relojxclock

_____________________________________________

1 NT En ingleacutes salir del gestor de ventanas

2 NT En ingleacutes salir de X

3 NT En ingleacutes ingreso en el sistema o autenticacioacuten

4 NT En ingleacutes xterm del sistema o terminal X del sistema

5 NT En ingleacutes salir

6 Existen varias formas de referirse al Sistema de Ventanas X Una forma que aunque comuacutenes incorrecta es X Window o Ventanas X

7 NT La palabra inglesa es release Por ello los lanzamientos se diferencianantildeadiendo una R y el nuacutemero correspondiente

531 XClock

shy xclock [shydigital] [shyanalog] [shyupdate segundos] [shyhands color]

Primero explicaremos el maacutes simple xclock funciona exaacutectamente como se puede esperarMarca los segundos minutos y horas en una ventana pequentildea

Ni usar los botones del ratoacuten ni escribir en la ventana xclock produce efecto algunoshyeso es todo lo que hace iquestO quizaacute no En realidad hay varias opciones diferentes quepermiten hacer que el programa se comporte de modos diferentes Asiacute por ejemplo xclockshydigital crea un reloj digital xclock shyupdate 1 hace que el segundero se mueva cadasegundo y xclock shyupdate 5 hace que se mueva cada cinco segundos

Para obtener maacutes informacioacuten sobre las opciones de xclock puede consultar la paacutegina delmanual correspondiente man xclock Si piensa ejecutar varias copias de xclockprobablemente deberiacutea consultar la Seccioacuten 64 (Multitarea) para saber como se ejecutan ala vez que sus otros programas

(Si ejecuta una copia de xclock en primer plano que es la forma usual en la que seejecuta un programa y quiere salir de eacutel basta teclear |_Ctrlshyc_|)

532 XTerm

La ventana que muestra el prompt del inteacuterprete de comandos (podraacute ver algo parecido ahomelarry$) es controlada por un programa llamado xterm xterm es un programaengantildeosamente complicado A primera vista no parece que haga mucho pero realmente hacemuchiacutesimo trabajo xterm emula una terminal de forma que las aplicaciones de modo textode Unix funcionen correctamente Tambieacuten mantiene en memoria informacioacuten de forma que sepueden consultar comandos usados previamente (Para ver como hace uso de esto refieacuterasea la Seccioacuten 563)

Gran parte de este libro estaacute dedicada a aprender como usar el interprete de comandos deUnix que se encuentra dentro de la ventana xterm Para poder escribir en la xtermgeneralmente es necesario mover el cursor (que posiblemente aparece en forma de X o deflecha) al interior de la ventana xterm De todos modos este comportamiento esdependiente del gestor de ventanas

Uno de los modos en los que se puede arrancar un programa bajo X es a traveacutes de unaxterm Al tratarse los programas X de programas Unix estaacutendar pueden ser arrancados atraveacutes de un inteacuterprete de comandos como el de las xterms Para evitar bloquear la xtermejecutando un programa largo desde ella generalmente se prefiere arrancar los programasX en segundo plano Para consultar este tema puede referirse a la Seccioacuten 64

54 Gestores de ventanas

Bajo Linux los gestores de ventanas maacutes comunes son dos El primero llamado twm queviene de Tab Window Manager Es un programa mayor que el segundo fvwm (fvwm viene deF() Virtual Window Manager el autor nunca explicoacute que significaba la f8) Ambosgestores de ventanas son altamente configurables lo cual impide dar instruccionesespeciacuteficas sobre que teclas usar para hacer algo en particular

Si le interesa saber algo sobre la configuracioacuten de twm refieacuterase a la Seccioacuten 921 Laconfiguracioacuten de fvwm se describe en la Seccioacuten 922

541 Cuando se crean nuevas ventanas

Hay tres tipos de cosas que un gestor de ventanas puede hacer cuando se crea una nuevaventana Es posible configurar el gestor de ventanas de manera que aparezca la forma dela ventana permitieacutendole colocarla en la posicioacuten que prefiera en la pantalla Este modose llama colocacioacuten manual Si ve aparecer la forma de la ventana puede moverla con elratoacuten y colocarla presionando el botoacuten izquierdo

_____________________________________________

8 N del T En el Linux Journal No 43 Noviembre 1997 hay una entrevista a RobertNation paacutegs 46shy47 y eacuteste dice que la F estaacute por Feeble (Gracias Joseacute Luis Gurpeguipor la aclaracioacuten)

A veces es posible que el gestor de ventanas las coloque por siacute mismo Se trata de lacolocacioacuten aleatoria

Finalmente a veces la aplicacioacuten pregunta por el lugar preciso en el que el quiere quese situacutee Tambieacuten el gestor de ventanas puede configurarse de forma que siempre situacutee lasventanas de ciertas aplicaciones en lugares fijos (Asiacute por ejemplo se puede especificarque xclock siempre aparezca en la esquina superior derecha de la pantalla)

542 Foco

El gestor de ventanas controla otras cosas importantes Lo que probablemente le interesamaacutes es el foco El foco del servidor determina que ventana recibe los caraacutecteresintroducidos mediante el teclado Generalmente en X el foco es determinado por laposicioacuten del cursor del ratoacuten Si mueve el cursor del ratoacuten dentro de una ventana xterm9esa xterm recibe los caracteres tecleados Se trata de un comportamiento diferente al deotros sistemas de ventanas como Windows de Microsoft OS2 o Macintosh donde debepinchar con el ratoacuten en una ventana para que adquiera el foco

Generalmente bajo X si el cursor del ratoacuten se sale de una ventana se pierde el foco yle resultaraacute imposible escribir en ella

Debe notar sin embargo que es posible configurar tanto twm como fvwm de forma que paracambiar el foco necesite pinchar la ventana correspondiente y pinchar fuera paradesenfocarla de forma que se comporten igual que Windows de Microsoft Una de dos tratede averiguar como funciona su gestor de ventanas probando o consulte la documentacioacutenlocal

543 Moviendo ventanas

Otro aspecto de X que es altamente configurable es el meacutetodo para mover ventanas Yotengo configurados tres meacutetodos para mover ventanas en twm El maacutes obvio es mover elcursor del ratoacuten sobre la barra del tiacutetulo y arrastrar la ventana Desgraciadamente laconfiguracioacuten permite definir el movimiento usando cualquiera de los tres botones10 (Paraarrastrar situacutee el cursor sobre la barra del tiacutetulo y mantenga presionado el botoacuten delratoacuten correspondiente mientras se mueve) Lo maacutes probable es que su configuracioacuten use elbotoacuten izquierdo para mover ventanas

Otra forma de mover ventanas puede ser manteniendo una tecla pulsada mientras mueve elratoacuten Asiacute en mi caso si mantengo pulsada la tecla |_Alt_| y muevo el cursor sobre unaventana puedo arrastrarla usando el botoacuten izquierdo de mi ratoacuten

Por supuesto para ver como funciona en su caso puede probar igual que antes o referirsea la documentacioacuten local Alternativamente si quiere tratar de interpretar los ficherosde configuracioacuten de los gestores de ventanas puede referirse a la Seccioacuten 921 para twmo 922 para fvwm

_____________________________________________

9 iexclPuede ejecutar varias copias de xterm al mismo tiempo

10 Muchos ratones de PCs tienen dos botones uacutenicamente En este caso generalmente esposible emular el botoacuten central presionando ambos botones simultaacuteneamente

544 Profundidad

Dado que las ventanas pueden solaparse en X necesitamos el concepto de profundidad Apesar de que tanto las ventanas como la pantalla son bidimensionales unas ventanaspueden estar delante de otras de forma que cubren total o parcialmente aquella situadadetraacutes

Existen varias operaciones que manejan la profundidad

o Subir o poner una ventana delante Generalmente se hace pinchando con alguno de losbotones en la barra de tiacutetulo de la ventana en cuestioacuten El botoacuten usado depende de laconfiguracioacuten del gestor de ventanas (Es posible que sean varios los botones queproduzcan este efecto)

o Bajar o empujar una ventana hacia atraacutes Generalmente se hace pinchando igualmente enla barra de tiacutetulo pero usando otro botoacuten Tambieacuten es posible configurar el gestor deventanas de forma que pinchar traiga la ventana hacia delante siempre que haya algoencima de ella y la lleve hacia atraacutes si no hay nada delante

o Alzar en ciclo de forma que el gestor de ventanas va alzando las ventanas una a unaen orden

545 Iconizar

Existen otras operaciones que pueden tapar ventanas o hacerlas desaparecer completamenteLa primera es iconizacioacuten Dependiendo del gestor de ventanas que use este procesopuede realizarse de varias formas Con twm muchas personas configuran un gestor deiconos Se trata de una ventana especial que contiene una lista con las demaacutes ventanas enuso en la pantalla Pinchando con el ratoacuten en uno de los nombres (o dependiendo de laconfiguracioacuten en uno de los botones) la ventana desaparece es iconizada La ventana estaacuteauacuten activa pero no puede verse Pinchando otra vez en el gestor de iconos la ventanavuelve a aparecer en la pantalla

Se trata de algo muy uacutetil Se podriacutea por ejemplo tener xterm remotas en diferentesmaacutequinas que use ocasionalmente al mismo tiempo Dado sin embargo que soacutelo las usararamente puede mantenerlas iconizadas mientras trabaja con un pequentildeo grupo El uacutenicoproblema es que resulta faacutecil perder alguna ventana Generalmente eso lleva a crearnuevas ventanas que dupliquen la funcionalidad de las que estaacuten iconizadas

Otros gestores de ventanas crean verdaderos iconos en la parte inferior de la pantalla osimplemente en la ventana raiacutez

546 Variando el tamantildeo

Existen diversos meacutetodos para variar el tamantildeo de las ventanas bajo X De nuevo estodepende de su gestor de ventanas y de coacutemo haya sido configurado El meacutetodo al que estaacutenacostumbrados los usuarios de Windows de Microsoft consiste en pinchar en el borde de laventana y arrastrarlo Si las ventanas que produce su gestor tienen un borde gordo quehace que el cursor del ratoacuten cambie al pasar por encima de eacutel seguramente tambieacuten puedeusar ese meacutetodo

Otra forma es crear un botoacuten de variacioacuten de tamantildeo en la barra del tiacutetulo Es el botoacutenvisible en la parte derecha de las barras de los tiacutetulos de la Figura 53 Para usarlopinche con el botoacuten izquierdo del ratoacuten en eacutel y mantenieacutendolo presionado mueacutevalo fuerade la ventana para variar el tamantildeo Para fijar el nuevo tamantildeo basta soltar el botoacuten delratoacuten

547 Maximizacioacuten

La mayoriacutea de los gestores de ventanas soportan maximizacioacuten En twm por ejemplo puedemaximizar la altura de una ventana su ancho o ambos a la vez Aunque twm llama a esteproceso zooming yo prefiero usar maximizacioacuten Las aplicaciones pueden responder demodo diferente a un cambio de tamantildeo (Por ejemplo xterm no cambia el tamantildeo de letrapero aumenta el espacio de trabajo)

Desgraciadamente no hay un modo estaacutendar de maximizar ventanas

548 Menuacutes

Los gestores de ventanas tambieacuten proporcionan al usuario un sistema de menuacutes pararealizar tareas de forma raacutepida una y otra vez Por ejemplo podriacutea tener una opcioacuten queejecute Emacs de forma automaacutetica o una xterm adicional De ese modo no tendriacutea queejecutar el comando dentro de una xterm iexclesto es especialmente bueno si no hay ningunaxterm ejecutaacutendose en la que pueda escribir para ejecutar un programa nuevo

De forma general se puede acceder a los menuacutes pinchando en la ventana raiacutez que es unaventana inmoacutevil que siempre estaacute debajo de las demaacutes Por defecto esta ventana es decolor gris pero puede tener cualquier aspecto11 Si quiere probar a ver un menuacute pinchey mantenga cualquier botoacuten del ratoacuten sobre la ventana raiacutez Deberiacutea aparecer un menuacutePara seleccionar una opcioacuten mantenga presionado el botoacuten y mueva el ratoacuten hasta marcarla opcioacuten deseada Entonces suelte el botoacuten

55 Atributos X

Hay muchos programas que usan X Algunos como emacs puede ejecutarse tanto en modotexto como en una ventana X que eacutel mismo crea automaacuteticamente Pero en general lamayoriacutea de los programas para X soacutelo funcionan bajo X

551 Geometriacutea

Existe una serie de cosas que son comunes a todos los programas que se ejecutan bajo XEn X el concepto de geometriacutea engloba el lugar y el tamantildeo de la ventana La geometriacutea deuna ventana tiene cuatro componentes a saber

_____________________________________________

11 Un programa divertido que puede probar se llama xfishtank Este programa crea unpequentildeo acuario en el fondo de su pantalla

o La dimensioacuten horizontal generalmente medida en pixels (Un pixel es la unidad maacutespequentildea que puede colorearse y representarse en la pantalla Muchas configuraciones X enPCs basados en un procesador Intel tienen una resolucioacuten de 1024 pixels horizontalmentepor 768 pixels verticalmente) Algunas aplicaciones como xterm o emacs miden su tamantildeoen caracteres (Por ejemplo ochenta caracteres por liacutenea)

o La dimensioacuten vertical tambieacuten medida en pixels generalmente Al igual que antes enalgunos casos se puede medir en liacuteneas

o La distancia horizontal a uno de los bordes de la pantalla Por ejemplo +35 significaa treinta y cinco pixels desde la izquierda Sin embargo shy50 significa que el extremoderecho de la ventana estaacute a cincuenta pixels del borde derecho de la pantallaGeneralmente no es posible lanzar una ventana fuera de la pantalla aunque si se puedemover fuera (La principal excepcioacuten es cuando la ventana es demasiado grande)

o La distancia vertical desde la parte superior o inferior de la pantalla la distanciase mide desde la parte superior si es positiva o desde la inferior si es negativa

Los cuatro componentes se unen formando la cadena de geometriacutea 503x73shy78+0 (Esto marcala geometriacutea de una ventana de 503 pixels de largo 73 pixels de alto situada cerca dela esquina superior derecha de la pantalla) O de otro modo tendremos tamantildeoh x tamantildeovshysituacioacutenh + situacioacutenv

552 Presentacioacuten

Toda aplicacioacuten X tiene asociada una presentacioacuten Eacutesta determina cuaacutel es la pantallacontrolada por el servidor X La presentacioacuten estaacute formada por tres elementos

o El nombre de la maacutequina en la que se ejecuta el servidor En el caso de sistemas Linuxaislados el nombre de la maacutequina que ejecuta el servidor coincide con la que ejecuta losclientes En ese caso se puede omitir el nombre por completo

o El nuacutemero del servidor de dicha maacutequina que debe responder a las peticiones de losclientes Dado que una maacutequina puede estar corriendo diferentes servidores a la vez (esalgo improbable pero posible en maacutequinas Linux) cada uno tiene que tener un nuacutemeropropio

o El nuacutemero del monitor X permite que un servidor controle maacutes de un monitor a la vezPor ejemplo puede que alguien quiera tener maacutes espacio de forma que use dos monitores ala vez Para evitar que el rendimiento de la maacutequina sea muy malo en vez de tener dosservidores hacen que sea el mismo servidor el que controle las dos maacutequinas

Si ponemos estas tres cosas juntas obtendremos maacutequinanuacutemeroshydeshyservidornuacutemeroshydeshypantalla Por ejemplo en mousehouse todas mis aplicaciones tienen la presentacioacutenfijada en 00 lo que significa que la salida aparece en la primera pantalla del primerservidor local Sin embargo si uso una computadora remota tendriacutea que sermousehouse00

Figura 51 Opciones Estaacutendar para Programas X

Nombre Seguido de Ejemplo

shygeometry Geometriacutea de la ventana xterm shygeometry 80x24+0+90

shydisplay A doacutende quiere que el programa enviacutee lasalida

xterm shydisplay lionsden00

shyfg Color primario en primer plano xterm shyfg yellow

shybg Color primario en el segundo plano xterm shybg blue

Por defecto la presentacioacuten se toma de una variable de entorno (ver Seccioacuten 914)llamada DISPLAY12 pero puede ser fijada mediante una opcioacuten desde el inteacuterprete decomandos (ver Figura 52) Para ver cuaacutel es el valor de la variable DISPLAY bastaejecutar echo $DISPLAY

56 Caracteriacutesticas comunes

A pesar de que X es una interfaz graacutefica de usuario se trata de una interfaz muydesequilibrada

Resulta imposible predecir como va a comportarse cualquier elemento del sistema porque sepueden reconfigurar cambiar o incluso sustituir muy faacutecilmente Eso significa que es muydifiacutecil explicar como se han de usar los distintos elementos de la interfaz Una de lasrazones que ya conocemos es la posibilidad de utilizar diferentes gestores de ventanasque a su vez son altamente configurables

Otra explicacioacuten para el desequilibrio de la interfaz es que las aplicaciones X se puedenconstruir mediante conjuntos de chismes13 La distribucioacuten X estaacutendar incluye loswidgets Athena desarrollados en el MIT Las aplicaciones gratuitas suelen hacer uso deeste conjunto Tienen la desventaja de que su aspecto no es particularmente atrayente yresultan algo maacutes difiacuteciles de usar en un programa que los otros

Otro conjunto de widget popular es Motif Motif es un conjunto no gratuito similar a lainterfaz de usuario usada por Windows de Microsoft Muchas aplicaciones comerciales asiacutecomo algunas gratuitas usan el conjunto de widget Motif El popular Browser de World WideWeb netscape por ejemplo usa Motif

Veamos cuales son algunas de las cosas maacutes habituales que puede encontrar

561 Botones

Los botones son generalmente los componentes de la interfaz maacutes faacuteciles de usar Un botoacutense invoca situando el cursor del ratoacuten sobre el botoacuten en cuestioacuten y pinchando (pulsando ysoltando inmediatamente) el botoacuten izquierdo Los botones Athena y Motif sonfuncionalmente equivalentes pero tienen diferencias de apariencia

_____________________________________________

12 NT DISPLAY significa presentacioacuten en ingleacutes

13 NT Se trata de la traduccioacuten de la palabra inglesa widget

562 Barras de menuacute

Una barra de menuacute es una coleccioacuten de comandos accesibles mediante el ratoacuten Cada palabraes la cabecera de una categoriacutea File14 contiene comandos que permiten cargar o grabarficheros Por convencioacuten esta categoriacutea incluye tambieacuten el comando que termina laaplicacioacuten

Para utilizar un comando mueva el cursor del ratoacuten sobre la categoriacutea correspondiente(como por ejemplo File) y apriete el botoacuten izquierdo Sin soltarlo arrastre el ratoacutenhacia abajo para ver los diferentes comandos de esa categoriacutea Para seleccionar unomueva el cursor sobre el mismo y suelte el botoacuten del ratoacuten Algunas barras de menuacute lepermiten pinchar sobre la categoriacutea si este es su caso pinche sobre la categoriacutea paraver el menuacute que se mantendraacute hasta que pinche de nuevo para seleccionar un comando otromenuacute o pinche fuera (indicando que no estaacute interesado en ninguacuten comando en particular)

563 Barras de desplazamiento

Una barra de desplazamiento es un meacutetodo que permite ver soacutelo una parte de un documentomientras que mantiene el resto fuera de la pantalla Por ejemplo en la Figura 54 la

ventana de xterm soacutelo presenta el tercio inferior del texto disponible Es muy faacutecil vercual parte del texto es el que se puede ver en cualquier momento la franja oscura de labarra estaacute situada y tiene una longitud relativa a la porcioacuten de texto que se puede verCuando no hay maacutes que lo que se puede ver toda la barra aparece de color oscuro Si setrata de la mitad seraacute la mitad la que aparezca oscurecida

Puede tener una barra de desplazamiento vertical a la derecha o la izquierda de su textoy una horizontal en la parte superior o inferior dependiendo de la aplicacioacuten de que setrate

Barras de desplazamiento Athena

Las barras de desplazamiento Athena funcionan de forma diferente a las de otros sistemasde ventanas Cada uno de los tres botones del ratoacuten tiene una funcioacuten diferente Paradesplazarse hacia arriba (es decir para que ver el material situado por encima de lo quese puede ver en ese momento) puede pinchar en cualquier lugar de la barra con el botoacutenderecho Para desplazarse hacia abajo puede usar el botoacuten izquierdo de forma anaacuteloga

Tambieacuten puede saltar a cualquier lugar en particular usando el botoacuten central del ratoacuten ypinchando en el lugar de la barra que corresponde a la posicioacuten del texto que leinteresa Esto hace a la ventana presentar el material situado en ese punto deldocumento

_____________________________________________

14 NT Del ingleacutes fichero o archivo

Barras de desplazamiento Motif

Una barra Motif actuacutea de un modo maacutes parecido al acostumbrado en Windows de Microsoft oen un Macintosh La parte derecha de la Figura 54 muestra un ejemplo Debe notar queademaacutes de la barra en siacute misma hay unas flechas tanto en la parte superior como en lainferior Estas flechas se pueden usar para ajuste fino de la pantalla pinchando tantoel botoacuten izquierdo como el central mueve la ventana ligeramente (por ejemplo una liacutenea)el botoacuten derecho no hace nada

El comportamiento asociado a pinchar en la barra de desplazamiento es completamentediferente en las barras Motif del que exhiben las barras Athena El botoacuten derecho notiene efecto Asociado al botoacuten izquierdo la ventana se moveraacute hacia arriba si pinchasobre la posicioacuten actual o hacia abajo en el caso contrario Si pincha sobre la barra enel lugar actual y la arrastra podraacute moverse a cualquier posicioacuten a voluntad Al soltar elbotoacuten se fija cual es la posicioacuten final de la ventana

Pinchando el botoacuten central en cualquier lugar de la barra hace que la ventana se desplacehacia ese lugar de forma inmediata igual que ocurre en barras Athena Sin embargo elpunto elegido se convierte en el centro de la nueva pantalla de datos

Capiacutetulo 6

Trabajando con Unix

A UNIX saleslady Lenore

Enjoys work but she likes the beach more

She found a good way

To combine work and play

She sells C shells by the seashore

Unix es un potente sistema para aquellos que saben coacutemo dominar su poder En estecapiacutetulo intentareacute describir varias maneras de usar el shell de Unix bash maacuteseficientemente

61 Comodines

En el capiacutetulo anterior se ensentildearon los comandos para mantener ficheros cp mv y rm Aveces se querraacute tratar con maacutes de un fichero a la vez en realidad con muchos a la vezPor ejemplo se quiere copiar todos los ficheros que empiecen por data en un directoriollamado backup Se podriacutea hacer esto ejecutando muchos comandos cp o escribiendo cadafichero en una liacutenea de comando Estos dos meacutetodos llevan mucho tiempo incluso setienen muchas posibilidades de cometer errores

Una buena manera de hacer este trabajo es teclear

homelarryreport$ ls shyF

1993shy1 1994shy1 data1 data5

1993shy2 datashynew data2

homelarryreport$ mkdir ~backup

homelarryreport$ cp data ~backup

homelarryreport$ ls shyF ~backup

datashynew data1 data2 data5

homelarryreport$

Como se puede observar el asterisco indica a cp que tome todos los ficheros que empiecenpor data y los copie a backup iquestQueacute cree que cp dw backup puede haber hecho

611 iquestQueacute ocurre realmente

Buena pregunta De hecho hay un par de caracteres especiales interceptados por el shellbash El caraacutecter un asterisco dice cambia esta palabra con todos los ficherosque se ajusten a esta especificacioacuten Asiacute el comando cp data backup como el dearriba cambia a cp datashynew data1 data2 data5 backup antes de ejecutarse

Para ilustrar esto introducireacute un comando nuevo echo echo es un comando extremadamentesimple repite o muestra cualquier paraacutemetro De este modo

homelarry$ echo Hola

Hola

homelarry$ echo Como se encuentra

Como se encuentra

homelarry$ cd report

homelarryreport$ ls shyF

1993shy1 1994shy1 data1 data5

1993shy2 datashynew data2

homelarryreport$ echo 199

1993shy1 1993shy2 1994shy1

homelarryreport$ echo 4

1994shy1

homelarryreport$ echo 2

1993shy2 data2

homelarryreport$

Como se puede ver el shell expande el comodiacuten y pasa todos los ficheros al programa quese va a ejecutar Esto plantea una pregunta interesante iquestqueacute ocurre si no hay ficherosque se ajusten a la especificacioacuten del comodiacuten Pruebe echo rcfrog y bash pasaraacuteliteralmente la especificacioacuten del comodiacuten al programa

Otros shells como tcsh en vez de pasar el comodiacuten literalmente contestaraacuten No matchAquiacute estaacute el mismo comando ejecutado bajo tcsh

mousehousegtecho rcfrog

echo No match

mousehousegt

La uacuteltima pregunta que podriacutea hacerse es iquestqueacute pasa si quisiera mostrar data en vez dela lista de nombres Bien tanto en bash como en tcsh soacutelo se debe incluir la cadenaentre comillas

homelarryreport$ echo data mousehousegtecho data

data Oacute bien data

homelarryreport$ mousehousegt

612 El signo de interrogacioacuten

Ademaacutes del asterisco el shell tambieacuten interpreta un signo de interrogacioacuten como uncaraacutecter especial

Un signo de interrogacioacuten coincidiraacute con un caraacutecter y soacutelo uno Por ejemplo ls etc

mostraraacute todos los ficheros de dos letras en el directorio etc

62 Ganar tiempo con bash

621 Editando la liacutenea de comandos

A veces escribe un comando largo a bash y antes de pulsar |_Intro_| se da cuenta deque ha cometido un error al escribirlo Se puede simplemente borrar todo y volver ateclear correctamente pero iexcles demasiado esfuerzo En cambio se pueden usar las flechaspara moverse borrar ellos caraacutecteres incorrectos y escribir la informacioacutencorrectamente

Hay muchas teclas especiales que ayudan a editar la liacutenea de comandos muchas de ellassimilares a los comandos usados en GNU Emacs Por ejemplo |_Cshyt_| intercambia doscaraacutecteres adyacentes1

Se pueden encontrar muchos de los comandos en el capiacutetulo sobre Emacs Capiacutetulo 8

622 Completamiento de comandos y nombres de fichero

Otra peculiaridad de bash es la ejecucioacuten automaacutetica de las liacuteneas de comando Porejemplo veamos el siguiente ejemplo de un comando cp tiacutepico

homelarry$ ls shyF

estoshyesshyunshyficheroshylargo

homelarry$ cp estoshyesshyunshyficheroshylargo corto

homelarry$ ls shyF

corto estoshyesshyunshyficheroshylargo

homelarry$

Es una gran molestia tener que teclear cada letra de estoshyesshyunshyficheroshylargo cada vezque se quiere acceder a eacutel sucede lo mismo si queremos crear estoshyesshyunshyficheroshylargocopiando en eacutel etcpasswd2 Ahora aprenderemos a escribir el anterior comando cp maacutesraacutepidamente y con menos posibilidad de error

En vez de teclear el nombre del fichero entero se escribe cp es se pulsa y suelta latecla |_Tab_| Por arte de magia el resto del nombre del fichero aparece en la liacutenea decomandos y se puede escribir corto Desgraciadamente bash no pude leer lospensamientos por lo que se debe teclear corto

Cuando se pulsa |_Tab_| bash mira lo que hay escrito y busca un fichero que empiece comoeso Por ejemplo si tecleo usrbinema y luego pulso |_Tab_| bash encontraraacuteusrbinemacs ya que es el uacutenico fichero que empieza por usrbinema en mi sistema Encambio si tecleo usrbinld y pulso |_Tab_| bash me avisaraacute Eso es porque tresficheros usrbinld usrbinldd y usrbinld86 empiezan por usrbinld en misistema

Si se intenta un completamiento y bash avisa se puede pulsar inmediatamente |_Tab_| otravez para conseguir una lista de todos los ficheros que coincidan con el patroacuten De estemodo si no se estaacute seguro del nombre exacto del fichero podemos teclear los primeroscaracteres del nombre y buscarlo en una lista maacutes pequentildea de ficheros

______________________________________________

1 |_Cshyt_|significa mantener pulsada la tecla marcada como Ctrl y apretar la tecla tLuego soltar ambas

2 cp etcpasswd estoshyesshyunshyficheroshylargo

63 La entrada estaacutendar y La salida estaacutendar

Intentemos abordar un problema simple conseguir un listado del directorio usrbin Sihacemos ls usrbin algunos de los nombres de los ficheros saldraacuten por arriba de lapantalla iquestComo se pueden ver todos los ficheros

631 Algunos conceptos de Unix

El sistema operativo Unix facilita mucho a los programas el uso del terminal Cuando unprograma escribe algo en la pantalla estaacute usando algo llamado salida estaacutendar Salidaestaacutendar en ingleacutes standard output o stdout es la manera que tiene el programa deescribirle cosas al usuario El nombre por el que se indica un programa es entradaestaacutendar (stdin) Es posible que un programa se comunique con el usuario sin usar laentrada o salida estaacutendar pero la mayoriacutea de los comandos que se tratan en este librousan stdin y stdout

Por ejemplo el comando ls imprime una lista de los directorios en la salida estaacutendarque estaacute normalmente conectada al terminal Un comando interactivo como el shellbash lee los comandos de la entrada estaacutendar

Un programa tambieacuten puede escribir en el error estaacutendar ya que es muy faacutecil hacer que lasalida estaacutendar apunte a cualquier lugar aparte del terminal El error estaacutendar (stderr)estaacute casi siempre conectado al terminal para que alguna persona pueda leer el mensaje

En esta seccioacuten examinaremos tres modos de enredarse con la entrada y salida estaacutendarredireccionar la salida redireccionar la entrada y las tuberiacuteas

632 Redireccionar la salida

Un aspecto muy importante de Unix es la posibilidad de redireccionar la salida Estopermite que en vez de ver los resultados de un comando los salvemos en un fichero o losenviemos directamente a una impresora Por ejemplo para redireccionar la salida delcomando ls usrbin se coloca un signo gt al final de la liacutenea y se indica elfichero donde dejar la salida

homelarry$ ls

homelarry$ ls shyF usrbin gt listado

homelarry$ ls

listado

homelarry$

Como se puede ver en vez de escribir los nombres de todos los ficheros el comando creaun fichero totalmente nuevo en el directorio actual Echemos un vistazo a este ficherousando el comando cat

Si se recuerda cat era un comando bastante inuacutetil que copiaba lo que se escribiacutea(entrada estaacutendar) al terminal (salida estaacutendar) cat tambieacuten imprime un fichero en lasalida estaacutendar si se indica el fichero como paraacutemetro

homelarry$ cat listado

homelarry$

La salida exacta del comando ls usrbin aparece en el contenido de listado Por ahoratodo bien sin embargo no resuelve el problema original3

A pesar de todo cat hace algunas cosas interesantes cuando se redirecciona su salidaiquestQueacute hace el comando cat listado gt fichero Normalmente el gt fichero dice coge todala salida del comando y ponla en fichero La salida del comando cat listado es elfichero listado Asiacute hemos inventado un nuevo (y no tan eficiente) meacutetodo de copiarficheros

iquestQueacute ocurre con el comando cat gt zorro cat lee cada liacutenea escrita en el terminal(entrada estaacutendar) y la imprime de vuelta (salida estaacutendar) hasta que lee |_Ctrlshyd_| Eneste caso la salida estaacutendar se ha redireccionado al fichero zorro Ahora cat sirve comoun editor rudimentario

homelarry$ cat gt zorro

El rapido zorro marron salta sobre el descuidado perro

pulsa Ctrlshyd

Ahora se ha creado el fichero zorro que contiene la frase El rapido zorro marron saltasobre el descuidado perro Un uacuteltimo uso del versaacutetil comando cat es concatenarficheros cat imprimiraacute cada fichero dado como paraacutemetro uno despues de otro El comandocat listado zorro imprimiraacute el listado del directorio usrbin y luego la tonta fraseAsiacute el comando cat listado zorro gt listyzorro crearaacute un nuevo fichero conteniendo loscontenidos de listado y zorro

633 Redireccionar la entrada

Asiacute como cuando se redirecciona la salida estaacutendar es posible redireccionar la entradaEn lugar de que un programa lea su entrada desde el teclado la leeraacute desde un ficheroComo redireccionar la entrada estaacute relacionado con redireccionar la salida parecenatural que lt sea el caraacutecter para redireccionar la entrada Eacuteste tambieacuten se usadespueacutes del comando que se desee ejecutar

Esto es generalmente uacutetil si se tiene un fichero de datos y un comando que espera susdatos desde la entrada estaacutendar Muchos comandos permiten especificar un fichero sobre elcual operar asiacute que en las actividades diarias el lt no se usa tanto como otrasteacutecnicas

634 Las tuberiacuteas

Muchos comandos Unix producen gran cantidad de informacioacuten Por ejemplo es normal que uncomando como ls usrbin produzca maacutes salida que la que se puede ver en pantalla Paraque se pueda ver toda la informacioacuten de un comando como ls usrbin es necesario usarotro comando Unix llamado more4 more pararaacute cada vez que la pantalla se llene deinformacioacuten Por ejemplo more lt etcrc mostraraacute el fichero etcrc como lo hariacutea catetcrc excepto que more permite leerlo more tambieacuten admite el comando more etcrc y esa es la forma normal de invocarlo

_____________________________________________

3 Para lectores impacientes el comando que se debe usar es more Sin embargo hay quehablar un poco sobre algo maacutes antes de llegar ahiacute

4 Se llama more porque ese es el indicador que originalmente mostraba shyshymoreshyshy Envarias versiones de Linux el comando more es identico a un comando maacutes avanzado que hacetodo lo que more puede hacer y maacutes auacuten Como demostracioacuten de que los programadores deordenadores son malos coacutemicos llamaron a este nuevo programa less

Sin embargo eso no ayuda al problema de que ls usrbin muestre maacutes informacioacuten de laque se pueda ver more lt ls usrbin no funciona iexclla redireccioacuten de entrada soacutelofunciona con ficheros no comandos Se podriacutea hacer esto

homelarry$ ls usrbin gt tempshyls

homelarry$ more tempshyls

homelarry$ rm tempshyls

Pero Unix propone una forma maacutes limpia de hacerlo Se puede usar el comando ls usrbin_ more El caraacutecter _ es una tuberiacutea Como una tuberiacutea de agua una tuberiacutea Unixcontrola el flujo En vez de agua se controla el flujo de informacioacuten

Los filtros son programas muy uacutetiles para usarse en conjuncioacuten con las tuberiacuteas Unfiltro es un programa que lee la entrada estaacutendar la cambia de alguna manera y la sacapor la salida estaacutendar

more es un filtro lee los datos que coge de la entrada estaacutendar y los muestra por lasalida estaacutendar pantalla a pantalla permitiendo leer el fichero more no es un granfiltro porque su salida no se puede enviar a otro programa

Otros filtros incluyen los programas cat sort head y tail Por ejemplo si se quiereleer soacutelo las primeras diez liacuteneas de la salida de ls se puede usar ls usrbin _ head

64 Multitarea

641 Usando el control de trabajos

Control de trabajos se refiere a la habilidad de poner procesos (esencialmente otrapalabra para programas) en background (segundo plano) y ponerlos de vuelta en foreground(primer plano)

Esto es como decir que se quiere ser capaz de ejecutar algo mientras se hacen otrascosas pero que esteacuten ahiacute otra vez cuando se les quiera decir algo o pararlos En Unixla principal herramienta para el control de procesos es el shell seguiraacute la pista de losprocesos por usted si se aprende como hablar su lenguaje

Las dos palabras maacutes importantes en ese lenguaje son fg para primer plano y bg parasegundo plano Para entender como funcionan use el comando yes en el indicador delsistema

homelarry$ yes

Esto produce el maravilloso efecto de desplazar una larga columna de yes por la parteizquierda de la pantalla tan raacutepido que no se pueden seguir5 Para pararlo se podriacuteapulsar |_Ctrlshyc_| y matarlo pero esta vez Ud oprimiraacute |_Ctrlshyz_| Parece habersedetenido pero habraacute un mensaje antes del indicador de sistema maacutes o menos parecido aeste

[1]+ Stopped yes

_____________________________________________

5 Hay buenas razones para que este extrantildeo comando exista Ciertos comandos esperan unaconfirmacioacuten un si ([y]es en ingleacutes) a una pregunta El comando yes permite alprogramador automatizar la respuesta a esas preguntas

Significa que el trabajo yes se ha suspendido en el segundo plano Se puede hacer quesiga ejecutaacutendose tecleando fg en el indicador de sistema que lo pondraacute en primer planootra vez Si se desea se pueden hacer otras cosas antes mientras estaacute suspendidoPruebe unos cuantos ls o algo antes de ponerlo en primer plano nuevamente

Una vez que ha vuelto al primer plano las yes empezaraacuten a salir otra vez tan raacutepidocomo antes

No hay que preocuparse de que si mientras ha estado suspendido ha almacenado maacutes yespara enviarlas a la pantalla cuando un trabajo se suspende el programa entero no seejecuta hasta que se lo vuelva de vuelta a la vida (Ahora pulse |_Ctrlshyc_| para matarlode veras)

Pongamos aparte el mensaje que obtuvimos del shell

[1]+ Stopped yes

El nuacutemero entre corchetes es el nuacutemero de trabajo de este proceso y se usaraacute cuando senecesite referenciarlo especiacuteficamente (Naturalmente desde el momento que tengamos enejecucioacuten muacuteltiples trabajos se necesita un modo de acceder a cada uno) El +siguiente indica que eacutese es el trabajo actual esto es el proceso maacutes reciente que seha movido del primer plano al segundo

Si se tecleara fg se pondriacutea el trabajo con el + en primer plano otra vez (Maacutessobre esto despueacutes cuando se discuta la ejecucioacuten de muacuteltiples trabajos a la vez) Lapalabra Stopped significa que el trabajo estaacute parado El trabajo no estaacute muerto peroactualmente no se ejecuta Linux lo ha guardado en un estado especial de suspendidolisto para saltar a la accioacuten cuando alguien lo solicite Finalmente el yes es el nombredel trabajo que se ha detenido

Antes de seguir adelante matemos este trabajo y lo arrancamos otra vez de formadiferente El comando se llama kill y se usa del siguiente modo

homelarry$ kill 1

[1]+ Stopped yes

homelarry$

Ese mensaje sobre el proceso que indica parado otra vez induce a error Para saber siauacuten estaacute vivo (eso es tanto en ejecucioacuten como congelado en un estado suspendido) tecleejobs

homelarry$ jobs

[1]+ Terminated yes

homelarry$

Ahora ya lo sabe iexclel trabajo ha terminado (Es posible que el comando jobs no muestrenada lo que simplemente significa que no hay trabajos ejecutaacutendose en segundo plano Sise acaba de matar un trabajo y al teclear jobs no muestra nada se tiene la seguridad deque el comando kill se ha ejecutado correctamente Normalmente indicaraacute que el trabajo haterminado)

Ahora ejecute yes de nuevo de esta forma

homelarry$ yes gt devnull

Si lee la seccioacuten sobre la redireccioacuten de entrada y salida sabraacute que se estaacute enviando lasalida de yes a un fichero especial llamado devnull devnull es un agujero negro quecome cualquier salida que se le enviacutee (se puede imaginar ese torrente de yes saliendo pordetraacutes del ordenador y perforando un agujero en la pared si eso le hace feliz)

Despueacutes de teclear esto no se recuperaraacute el indicador de sistema pero tampoco saldraacuteesa columna de yes Sin embargo la salida se estaacute enviando a devnull el trabajo auacuten seejecuta en primer plano Como siempre se puede suspender pulsando |_Ctrlshyz_| Haacutegaloahora para volver al indicador del sistema

homelarry$ yes gt devnull

[yes se ejecuta y solamente se ha pulsado Ctrlshyz]

[1]+ Stopped yes gtdevnull

homelarry$

Hmm iquesthay alguna forma de ponerlo en ejecucioacuten en segundo plano mientras deja elindicador del sistema para trabajar de forma interactiva El comando para hacer eso esbg

homelarry$ bg

[1]+ yes gtdevnull amp

homelarry$

Ahora deberaacute tener confianza en miacute sobre esto despueacutes de teclear bg el trabajo yes gtdevnull habraacute continuado con su ejecucioacuten otra vez pero esta vez en segundo plano Dehecho si hace alguna cosa en el prompt como ls u otros se daraacute cuenta que su maacutequinase ha ralentizado un poco (iexclgenerar y descargar continuamente una cadena preparada deyes lleva algo de tiempo al fin y al cabo) Aparte de esto no hay ninguacuten otro efectoSe puede hacer lo que se desee en el indicador del sistema y yes continuaraacute felizmenteenviando su salida al agujero negro

Ahora hay dos formas diferentes de matarlo con el comando kill que ya se explicoacute oponiendo el trabajo en primer plano de nuevo e interrumpirlo con una interrupcioacuten|_Ctrlshyc_| Probemos la segunda forma soacutelo para entender la relacioacuten entre fg y bg unpoco mejor

homelarry$ fg

yes gtdevnull

[ahora esta en primer plano Imagine que pulso Ctrlshyc para terminarlo]

homelarry$

Bueno se acaboacute Ahora ejecute unos cuantos trabajos simultaacuteneamente como estos

homelarry$ yes gt devnull amp

[1] 1024

homelarry$ yes _ sort gt devnull amp

[2] 1026

homelarry$ yes _ uniq gt devnull

[y aqui pulse Ctrlshyz para suspenderlo por favor]

[3]+ Stopped yes _ uniq gtdevnull

homelarry$

La primera cosa que le debe llamar la atencioacuten de estos comandos es la terminacioacuten amp alfinal de los dos primeros Poner un amp despueacutes del comando indica al shell que losejecute en segundo plano desde el principio (Es una forma de evitarse tener que ejecutarel programa pulsar |_Ctrlshyz_| y luego teclear bg ) Asiacute estos dos comandos hanempezado a ejecutarse en segundo plano El tercero estaacute suspendido e inactivo en estemomento Se puede dar cuenta de que la maacutequina se ha vuelto maacutes lenta ya que los que seestaacuten ejecutando requieren un poco de tiempo de CPU

Cada uno indica su nuacutemero de trabajo Los dos primeros tambieacuten muestran sus nuacutemeros deidentificacioacuten de proceso o PID despueacutes del nuacutemero de trabajo Los PIDs normalmente noson algo que se necesite conocer pero a veces viene bien

Matemos el segundo ya que creo que estaacute ralentizando su maacutequina Se puede teclear kill2 pero eso seriacutea demasiado faacutecil Por el contrario haga esto

homelarry$ fg 2

yes _ sort gtdevnull

[pulse Ctrlshyc para matarlo]

homelarry$

Como esto demuestra fg toma paraacutemetros empezando con De hecho se podriacutea teclearsoacutelo esto

homelarry$ 2

yes _ sort gtdevnull

[pulse Ctrlshyc para matarlo]

homelarry$

Esto funciona por que el shell automaacuteticamente interpreta un nuacutemero de trabajo como unapeticioacuten para poner ese trabajo en primer plano Se puede indicar los nuacutemeros de trabajocon otros nuacutemeros precedidos por un Ahora teclee jobs para ver cuaacuteles trabajosquedan en ejecucioacuten

homelarry$ jobs

[1]shy Running yes gtdevnull amp

[3]+ Stopped yes _ uniq gtdevnull

homelarry$

El shy indica que ese trabajo nuacutemero 1 es segundo en la lista para ser puesto en elprimer plano si soacutelo se teclea fg sin dar paraacutemetros El + indica que el trabajoespecificado es el primero en la lista un fg sin paraacutemetros pondraacute al trabajo nuacutemero 3en el primer plano Sin embargo se puede acceder a eacutel llamaacutendolo si se desea mediante

homelarry$ fg 1

yes gtdevnull

[ahora pulse Ctrlshyz para suspenderlo]

[1]+ Stopped yes gtdevnull

homelarry$

Al cambiar al trabajo nuacutemero 1 y luego suspenderlo han cambiado las prioridades de todoslos trabajos de usuario Esto se puede ver con el comando jobs

homelarry$ jobs

[1]+ Stopped yes gtdevnull

[3]shy Stopped yes _ uniq gtdevnull

homelarry$

Ahora los dos estaacuten parados (porque los dos se han suspendido con |_Ctrlshyz_|) y elnuacutemero 1 es el siguiente en la lista a entrar en el primer plano por defecto Esto es asiacuteporque se le puso en el primer plano manualmente y luego fue suspendido El + siemprese refiere al trabajo maacutes reciente que ha sido suspendido del primer plano Se puedecontinuar con su ejecucioacuten otra vez

homelarry$ bg

[1]+ yes gtdevnull amp

homelarry$ jobs

[1]shy Running yes gtdevnull

[3]+ Stopped yes _ uniq gtdevnull

homelarry$

Fiacutejese que ahora estaacute en ejecucioacuten y el otro trabajo se ha movido en la lista y tiene el+ Ahora mateacutemoslos para que el sistema no esteacute permanentemente ralentizado porprocesos que no hacen nada

homelarry$ kill 1 3

[3] Terminated yes _ uniq gtdevnull

homelarry$ jobs

[1]+ Terminated yes gtdevnull

homelarry$

Apareceraacuten varios mensajes sobre la terminacioacuten de los trabajos nada mueretranquilamente al parecer La figura 61 de la paacutegina 59 muestra un breve resumen de loque se debe saber acerca del control de trabajos

642 Teoriacutea del control de trabajos

Es importante entender que el control de procesos lo hace el shell No hay ninguacutenprograma en el sistema llamado fg por eso fg bg amp jobs y kill son internos alshell6 (A veces kill es un programa independiente en el shell bash usado por Linuxpertenece al shell) Esto es una forma loacutegica de hacerlo ya que cada usuario quiere supropio espacio de control de trabajos y cada usuario ya tiene su propio shell es maacutesfaacutecil que el shell siga la pista de los trabajos usuario Por otro lado cada nuacutemero detrabajo de usuario soacutelo tiene significado para ese usuario mi trabajo nuacutemero [1] y sutrabajo nuacutemero [1] son probablemente dos procesos totalmente diferentes De hecho si seestaacute conectado maacutes de una vez cada uno de los shells tendraacute datos uacutenicos sobre elcontrol de trabajos asiacute como tambieacuten un usuario puede tener dos trabajos diferentes conel mismo nuacutemero ejecutaacutendose en dos shells diferentes

_____________________________________________

6 N del T En el original pone shellshybuiltins eso es que se compilan dentro delshell

La manera segura de referenciarlos es usar el nuacutemero IDentificador de Proceso (PID)Estos nuacutemeros abarcan todo el sistema cada proceso tiene su propio (y uacutenico) nuacutemero Dosusuarios diferentes pueden referenciar un proceso por su PID y saber que estaacuten hablandosobre el mismo proceso (iexclasumiendo que estaacuten conectados en la misma maacutequina)

Echeacutemosle un vistazo a un comando maacutes para entender que son los PIDs El comando ps listatodos los procesos en ejecucioacuten incluyendo el shell Prueacutebelo Tiene tambieacuten unascuantas opciones de las cuales las maacutes importantes (para mucha gente) son a u yx La opcioacuten a lista los procesos pertenecientes a alguacuten usuario no soacutelo los suyos

propios La x lista los procesos que no tienen un terminal asociado a ellos7Finalmente la u da informacioacuten adicional sobre los procesos que es frecuentementeuacutetil

Para hacerse una idea de lo que realmente estaacute haciendo el sistema se ponen todosjuntos ps shyaux Se pueden ver los procesos que usan maacutes memoria mirando la columnaMEM y maacutes CPU mirando a la columna CPU (La columna TIME lista la cantidad total detiempo de CPU usado)

Otra nota raacutepida sobre los PIDs kill aparte de tomar opciones de la forma no_trabajotoma opciones de los PIDs en crudo Esto es si pone un yes gt devnull en segundoplano se ejecuta ps y se busca el yes Luego se teclea kill PID 8

Si empieza a programar en C con su sistema Linux pronto aprenderaacute que el control detrabajos del shell es soacutelo una versioacuten interactiva de las llamadas a las funciones fork yexecl Esto es demasiado complejo para explicarlo aquiacute pero seriacutea uacutetil recordarlodespueacutes cuando se esteacute programando y se quieran ejecutar muacuteltiples procesos desde unsimple programa

65 Consolas virtuales como estar en varios lugares a la vez

Linux soporta consolas virtuales Son una manera de hacer que su simple maacutequina aparezcacomo muacuteltiples terminales todos conectados al mismo nuacutecleo Linux Por fortuna usar lasconsolas virtuales es una de las cosas maacutes simples en Linux hay hot keys9 para cambiarentre las consolas raacutepidamente Para probarlo hay que conectarse al sistema pulsar latecla |_Alt_| izquierda y pulsar |_F2_| (esto es la tecla de funcioacuten nuacutemero 2)10 11

_____________________________________________

7 Esto soacutelo tiene sentido para ciertos programas que no tienen que hablar con el usuarioa traveacutes del teclado

8 En general es maacutes faacutecil matar el nuacutemero del trabajo en vez de usar PIDs

9 NT No he creido apropiado traducir este teacutermino ya que muchos usuarios saben a loque se refiere De todas formas para el que no lo sepa esto es una simple combinacioacutende teclas que hace un cierto trabajo

Se encontraraacute con otro indicador para conectarse No se alarme ahora estaacute en la consolavirtual (VC) nuacutemero 2 Coneacutectese y haga algunas cosas unos cuantos ls o lo que sea paraconfirmar que es un shell real Ahora puede volver a la VC nuacutemero 1 pulsando el |_Alt_|izquierdo y |_F1_| O se puede mover a una tercera VC de la forma obvia (|_AltshyF3_|)

Generalmente los sistemas Linux vienen con cuatro VC activadas por defecto Esto se puedeincrementar a ocho estos temas se cubriraacuten en The Linux System Administrators GuideEllo implica editar uno o dos ficheros en el directorio etc Sin embargo cuatro debenser suficientes para la mayoriacutea de las personas

Una vez las haya usado las VC probablemente se convertiraacuten en una herramientaindispensable para tener varias cosas ejecutaacutendose a la vez Por ejemplo yo normalmenteejecuto Emacs en la VC 1 (y hago la mayor parte de mi trabajo ahiacute) mientras tengo unprograma de comunicaciones en la VC 3 (asiacute puede coger o dejar ficheros via modemmientras trabajo o ejecutar programas en maacutequinas remotas) y mantengo un shell en la VC2 soacutelo en caso de que tenga que ejecutar algo sin involucrar a la VC 1

_____________________________________________

10 Hay que asegurarse de que esto se hace desde consolas en modo texto si se estaacuteejecutando X Window u otra aplicacioacuten graacutefica probablemente no funcionaraacute sin embargo

corre el rumor de que pronto se podraacute cambiar entre las consolas virtuales en X Window deLinux

11 N del T De hecho al momento de la traduccioacuten la combinacioacuten es |_CtrlshyAltshyteclashydeshyfuncioacuten_|

Figura 61 Resumen de comandos y teclas usados para el control de trabajos

Comando Explicacioacuten

fg nordm_trabajo Este es un comando del shell que devuelve un trabajo alprimer plano Para saber cuaacutel es eacuteste por defecto se tecleajobs y se busca el que tiene el +

Paraacutemetros nuacutemero de trabajo opcional El trabajo pordefecto se identifica con el +

amp Cuando se antildeade un amp al final de la liacutenea de comandosindica al comando que se ejecute en segundo planoautomaacuteticamente Este trabajo estaacute entonces sujeto a todoslos meacutetodos usuales para el control de trabajos aquiacutedetallados

bg nordm_trabajo Este es un comando del shell que manda a un trabajosuspendido ejecutarse en segundo plano Para saber cual eseacuteste por defecto se teclea jobs y se busca el que tieneel +

Paraacutemetros nuacutemero de trabajo opcional El trabajo pordefecto se identifica con el +

kill nordm_trabajo PID Este es un comando del shell que obliga a un trabajo ensegundo plano ya sea suspendido o en ejecucioacuten a terminarSe debe siempre especificar el nuacutemero de trabajo o PID y sise estaacuten usando nuacutemeros de trabajo no hay que olvidar ponerel

Paraacutemetros El nuacutemero de trabajo (a continuacioacuten del ) o elPID (no es necesario el ) Se puede especificar maacutes de unproceso o trabajo en una liacutenea

jobs Este comando del shell lista informacioacuten sobre los trabajosque estaacuten en ese momento en ejecucioacuten o suspendidos A vecestambieacuten dice cuaacuteles son los que acaban de salir o hanterminado

|_Ctrlshyc_| Este es el caraacutecter geneacuterico de interrupcioacuten Normalmentesi se pulsa mientras un programa se estaacute ejecutando enprimer plano mataraacute al programa (puede que haya que hacerlovarias veces) Sin embargo no todos los programasresponderaacuten a este meacutetodo de terminacioacuten

|_Ctrlshyz_| Esta combinacioacuten de teclas normalmente suspende un programapuede que algunos programas lo ignoren Una vez suspendidoel trabajo se puede reiniciar en el segundo plano o se puedematar

Capiacutetulo 7

Pequentildeos programas potentes

better pout cry

better watchout

lpr why

santa claus ltnorth pole gttown

cat etcpasswd gtlist

ncheck list

ncheck list

cat list _ grep naughty gtnogiftlist

cat list _ grep nice gtgiftlist

santa claus ltnorth pole gt town

who _ grep sleeping

who _ grep awake

who _ egrep bad_good

for (goodness sake) shy

be good

71 El poder de Unix

El poder de Unix1 se esconde en pequentildeos comandos que no parecen ser muy uacutetiles cuando seutilizan por separado pero combinados con otros (directa o indirectamente) proporcionanun entorno mucho maacutes potente y flexible que la mayoriacutea de los otros sistemas operativosLos comandos de los que hablaremos en este capiacutetulo son entre otros sort grep morecat wc spell diff head y tail

Veremos lo que cada una de las utilidades hace por separado y luego daremos algunosejemplos de como utilizarlos conjuntamente2

_____________________________________________

1 N del T El cookie de apertura de este capiacutetulo es la traduccioacuten a comandos Unix deuna cancioacuten de navidad

Santa Claus is coming to town (escrita por H Gillespie J F Coots)

2 Noacutetese que los resuacutemenes de los comandos en este capiacutetulo no son extensos Para masinformacioacuten vea la paacutegina del manual correspondiente con el comando man

72 Trabajando con ficheros

Junto a comandos como cd mv y rm que ya se vieron en el Capiacutetulo 4 hay otros comandosque trabajan con ficheros pero no con los datos contenidos en ellos Estos son touchchmod du y df

Ninguno de ellos se preocupa por lo que contiene el fichero simplemente modificanalgunas de las informaciones que Unix guarda acerca del fichero

Estos comandos manipulan

o Los registros de tiempo Todo fichero tiene tres fechas asociadas a eacutel3 Las tresfechas son las siguientes creacioacuten del fichero uacuteltima modificacioacuten (cuando se produjoel uacuteltimo cambio en el fichero) y uacuteltimo acceso (cuando se produjo la uacuteltima lectura delfichero)

o El duentildeo Cada fichero en Unix pertenece a un uacutenico propietario

o El grupo Cada fichero tiene tambieacuten asociados un grupo de usuarios El grupo maacutes usualpara los ficheros de usuario se denomina users que es al cual por lo generalpertenecen todos los usuarios con cuenta en el sistema

o Los permisos Cada fichero tiene ciertos permisos (tambieacuten llamados privilegios)asociados a eacutel que indican a Unix quieacuten puede acceder a ese fichero cambiarlo o en elcaso de ser un programa ejecutarlo Cada uno de estos permisos puede ser establecido porseparado para el duentildeo el grupo y el resto de usuarios

shy touch fichero1 fichero2 ficheroN

touch actualiza los registros de fecha y hora con la fecha y hora actual de los ficherosindicados en la linea de comandos Si el fichero no existe touch lo crearaacute Tambieacuten esposible especificar la fecha y hora a registrar en la informacioacuten de losficheros_consulte la paacutegina del manual (comando man) para maacutes informacioacuten sobre touch

shy chmod [shyRfv] modo fichero1 fichero2 ficheroN

El comando que se utiliza para modificar los permisos de un fichero es el chmod4 Antesde

meternos en como utilizar este comando veamos primero que permisos hay en Unix Cadafichero tiene asociados un grupo de permisos Estos permisos le indican al sistemaoperativo quien puede leer escribir o ejecutar como programa el fichero (Acontinuacioacuten se explica como puede un usuario hacer estas cosas Un programa ejecutadopor un usuario puede hacer las mismas cosas que las que le esteacuten permitidas al propiousuario esto puede suponer un problema de seguridad si se desconoce lo que hace cadaprograma en particular)

_____________________________________________

3 Los antiguos sistemas de ficheros de Linux soacutelo almacenaban una fecha ya que derivabande Minix Si se utiliza alguno de estos sistemas de ficheros parte de la informacioacuten noestaraacute disponible y las operaciones que se realicen sobre ellas seraacuten inuacutetiles

4 N del T Abreviatura de change mode cambiar modo

Unix reconoce tres tipos diferentes de individuos primero el propietario del fichero (yla persona que puede utilizar el comando chmod sobre ese fichero) Segundo el grupoEl grupo de la mayoriacutea de los ficheros normales de un usuario del sistema seraacute users(Para ver el grupo de un fichero en particular utilizar ls shyl fichero ) Por uacuteltimoestaacute el resto que no son ni propietarios ni pertenecen al grupo denominados otros5

De esta forma por ejemplo un fichero puede tener permisos de lectura y escritura parael propietario permiso de lectura para el grupo y ninguacuten tipo de permisos para otros Opor alguna razoacuten un fichero puede tener permisos de lecturaescritura para el grupo yotros pero iexclninguacuten privilegio para el propietario

Veamos algunos ejemplos de como cambiar permisos utilizando chmod Primero creamos unfichero utilizando cat emacs o cualquier otro programa Por defecto son posibles lasoperaciones de lectura y de escritura sobre el fichero (Los permisos dados a otrosusuarios dependen de coacutemo esteacuten establecidas las variables del sistema y de la cuenta delusuario) Podemos asegurarnos de que tenemos permiso de lectura utilizando el comandocat a continuacioacuten eliminamos el privilegio de lectura para nosotros mismos utilizandochmod ushyr fichero 6 Ahora si intentamos leer el fichero obtendremos el mensaje deerror Permission denied Devolvemos el privilegio de lectura utilizando chmod u+rfichero

Los permisos de directorio utilizan las tres mismas ideas anteriores leer escribir yejecutar pero con ligeras variaciones El privilegio de lectura permite al usuario (o algrupo o a otros) leer el directorio listar los nombres de los ficheros El permiso deescritura permite antildeadir o borrar ficheros El permiso de ejecucioacuten permite al usuarioacceder a ficheros en el directorio o a cualquier subdirectorio (Si un usuario no tienepermisos de ejecucioacuten para un directorio entonces no puede siquiera hacer un cd almismo)

Para utilizar chmod reemplazar el modo por el usuario grupo otro o todos (all) y laoperacioacuten a realizar (Es decir utilizar un signo maacutes + para antildeadir privilegios y unmenos shy para quitarlos

Un signo igual = indica los mismos permisos para los usuarios involucrados en el modo)Los permisos posibles son lectura (read) escritura (write) y ejecucioacuten (execute)

La opcioacuten shyR al utilizar chmod cambiaraacute los permisos de un directorio de todos losficheros contenidos en eacutel y de forma recursiva los permisos del aacuterbol de subdirectoriosa partir de eacutel La opcioacuten shyf fuerza a que chmod intente cambiar los permisos incluso siel usuario no es el duentildeo del fichero (Si se utiliza el paraacutemetro f al ejecutar chmodno se mostraraacute un mensaje de error en caso de que no pueda cambiar los permisos delfichero) por uacuteltimo la opcioacuten v hace que la ejecucioacuten del chmod informe de todo loque hace

_____________________________________________

5 N del T En ingles owner (con u de user) group and othersrespectivamente

6 N del T El paraacutemetro ushyr indica user minus read es decir usuario menos lectura

73 Estadiacutesticas del sistema

Los comandos de esta seccioacuten son de utilidad a la hora de mostrar las estadiacutesticas delsistema operativo o de una parte de eacutel

shy du [shyabs] [trayectoria1 trayectoria2 trayectoriaN]

El comando du7 contabilizaraacute el espacio de disco ocupado por un subdirectorio y todos sussubdirectorios El uso de este comando sin utilizar paraacutemetros devolveraacute una lista decuanto disco consume cada subdirectorio del directorio actual y al final del informecuanto disco utiliza el directorio (y todos sus subdirectorios) Si se le pasa uno o maacutesparaacutemetros devolveraacute la cantidad de espacio utilizado por esos ficheros o directorios enlugar de la del directorio actual

La opcioacuten a mostraraacute ademaacutes del espacio de los directorios el de los ficherosUtilizando b como opcioacuten presentaraacute el total en bytes en lugar de kilobytes (1kilobyte = 1024 caracteres)8

Finalmente el paraacutemetro s informaraacute soacutelo acerca de los directorios expliciacutetos en lalinea de comando y no de sus subdirectorios

shy df

El comando df9 resume la cantidad de espacio utilizada en el disco Para cada sistema deficheros (recuerde que sistemas de ficheros diferentes son o bien unidades fiacutesicas oparticiones diferentes) muestra el espacio total de disco la cantidad utilizada lacantidad disponible y la capacidad total del sistema de ficheros que se utiliza

Un caso extrantildeo que puede darse es la posibilidad de tener una capacidad superior al100 o que la cantidad utilizada maacutes la disponible no sea igual a la total Esto esdebido a que Unix reserva parte del espacio de cada sistema de ficheros para eldirectorio raiacutez De esta forma aunque alguacuten usuario accidentalmente sature el disco elsistema todaviacutea tendraacute un poco de espacio para seguir operativo

Este comando no ofrece opciones que puedan ser de utilidad al usuario

shy uptime

El comando uptime10 informa sobre el tiempo en el que el sistema ha estado activo esdecir el tiempo transcurrido desde que Unix arrancoacute por uacuteltima vez

Este comando tambieacuten devuelve la hora actual y el promedio de carga que soporta elsistema El promedio de carga es el nuacutemero medio de procesos esperando a ejecutar en undeterminado periodo de tiempo uptime muestra el promedio de carga del uacuteltimo minuto y delos cinco y diez uacuteltimos minutos Si este promedio de carga se aproxima a cero indica queel sistema ha estado relativamente desocupado por el contrario si el promedio es cercanoal uno indica que el sistema ha estado casi completamente utilizado pero en ninguacutenmomento sobrecargado Los promedios de carga altos son el resultado de la ejecucioacutensimultaacutenea de varios programas

Extraordinariamente uptime es uno de los pocos comandos de Unix que iexclno tienen opciones

_____________________________________________

7 N del T Abreviatura de disk usage utilizacioacuten del disco

8 Un byte es el equivalente de una letra en un documento de texto

9 N del T Abreviatura de disk filling espacio disponible en el disco

10 N del T Tiempo en estado activo

shy who

El comando who muestra los usuarios activos en ese momento en el sistema y cuando haniniciado su respectiva sesioacuten Si le damos los paraacutemetros am i (es decir who am i) nos devuelve la informacioacuten relativa a nosotros mismos11

shy w [shyf] [nombre_usuario]

El programa w devuelve los usuarios actuales del sistema y que estaacuten haciendo(Baacutesicamente combina la funcionalidad de uptime y who La cabecera del informe quepresenta w es exactamente la misma que uptime siendo la informacioacuten de cada una de lasliacuteneas la siguiente el nombre del usuario hora de inicio de la sesioacuten (y cuanto tiempoha estado ocioso) JCPU es la cantidad total de tiempo de CPU utilizada por ese usuariomientras que PCPU es la cantidad total de tiempo utilizada por sus tareas actuales

Si al comando se le pasa la opcioacuten f mostraraacute los sistemas remotos desde los que losusuarios acceden si los hay Puede indicarse un nombre de usuario como paraacutemetro paramostrar soacutelo informacioacuten relativa a eacutel

74 iquestQueacute hay en un fichero

Principalmente hay dos comandos en Unix para listar ficheros cat y more Sobre ambos yase habloacute en el Capiacutetulo 6

shy cat [shynA] [fichero1 fichero2 ficheroN]

cat no es un comando de uso amigable no espera a que el usuario acabe de leer elfichero y se utiliza generalmente en contextos de tuberiacuteas Aunque pueden utilizarsealgunas opciones muy uacutetiles del comando por ejemplo n numera todas las liacuteneas delfichero y A mostraraacute los caraacutecteres de control como caraacutecteres normales en lugar dehacer (posiblemente) cosas extrantildeas en la pantalla

(Recuerde que para ver las opciones maacutes curiosas y quizaacute menos uacutetiles utilice elcomando man man cat Si no se especifican ficheros en la liacutenea de comandos cataceptaraacute la entrada desde stdin12

_____________________________________________

11 N del T literalmente es como preguntar al sistema iquestquieacuten soy yo

shy more [shyl] [+nuacutemero_liacutenea] [fichero1 fichero2 ficheroN]

more es maacutes uacutetil y ademaacutes es el comando recomendado para ver ficheros de texto ASCII Lauacutenica opcioacuten interesante es l que indica al comando que no se desea interpretar elcaraacutecter |_CtrlshyL_| como caraacutecter de nueva paacutegina El comando comenzaraacute en la liacuteneanuacutemero_liacutenea especificada

Al ser more un comando interactivo hemos resumido a continuacioacuten las oacuterdenes maacutescomunes

|_Barrashyespaciadora_| Pasar a la siguiente pantalla de texto

|_d_| Pasar 11 liacuteneas de pantalla o aproximadamente la mitad de una pantallanormal 25 liacuteneas

|__|Busca una expresioacuten regular La construccioacuten de una expresioacuten regularpuede ser muy complicada por lo que es recomendable teclear simplemente eltexto a buscar Por ejemplo sapo |_Intro_| buscaraacute la primera ocurrencia desapo en el fichero a partir de la posicioacuten actual

La misma tecla seguida por un |_Intro_| buscaraacute la siguiente ocurrencia de lauacuteltima expresioacuten buscada

|_n_| Buscaraacute la proacutexima aparicioacuten de la expresioacuten regular especificada

|__||_n_| Pasar al siguiente fichero en caso de que se especifique maacutes deun fichero en la liacutenea de comandos

|__||_p| Pasar al fichero anterior

|_q_| Terminar more

shy head [shyliacuteneas] [fichero1 fichero2 ficheroN]

head mostraraacute las primeras diez liacuteneas de los ficheros especificados o las primeras diezliacuteneas de la stdin si no se especifica ninguacuten fichero en la liacutenea de comandos Cualquieropcioacuten numeacuterica se tomaraacute como el nuacutemero de liacuteneas a mostrar por ejemplo head shy15 ranamostraraacute las primeras quince liacuteneas del fichero rana

shy tail [shyliacuteneas] [fichero1 fichero2 ficheroN]

Como head tail mostraraacute solo una parte del fichero en este caso el final del ficherolas uacuteltimas diez liacuteneas del fichero o que provengan de la stdin tail tambieacuten acepta laopcioacuten de especificar el nuacutemero de liacuteneas como en el caso anterior

_____________________________________________

12 N del T standard input entrada estaacutendar generalmente entrada de datos porteclado

shy file [fichero1 fichero2 ficheroN]

El comando file intenta identificar que tipo de formato tiene un fichero en particularDebido a que no todos los ficheros tienen extensioacuten o otras formas de identificarlosfaacutecilmente este comando realiza algunas comprobaciones rudimentarias para intentarcomprender exactamente que contiene el fichero

Hay que tener cuidado ya que es bastante posible que file realice una identificacioacutenincorrecta

75 Comandos de edicioacuten

Esta seccioacuten trata de los comandos que alteran un fichero realizando sobre el ficherooperaciones concretas o mostrando estadiacutesticas del mismo

shy grep [shynvwx] [shynuacutemero] expresioacuten [fichero1 fichero2 ficheroN ]

Uno de los comandos maacutes uacutetiles de Unix es el grep13 utilizado para buscar expresiones enun fichero de texto La forma maacutes sencilla de usarlo es

homelarry$ cat animales

Los animales son unas criaturas muy interesantes Uno de mis animalesfavoritos es el tigre una temible bestia con grandes colmillos

Tambien me gusta el leonshyshyshy realmente increible

homelarry$ grep igre animales

el tigre una temible bestia con grandes colmillos

homelarry$

Una de los problemas de esta forma de usarlo es que simplemente muestra las liacuteneas quecontienen la palabra a buscar no aporta informacioacuten acerca de donde buscar en elfichero es decir el nuacutemero de liacutenea Pero dependiendo de lo que se pretenda puede serhasta maacutes que suficiente por ejemplo si se buscan los errores de la salida de unprograma se puede probar aout _ grep error donde aout es el nombre del programa

Cuando es necesario conocer donde estaacuten las palabras a buscar es decir el nuacutemero deliacutenea hay que utilizar la opcioacuten n Si lo que se desea es ver todas las liacuteneas dondeno se encuentra la expresioacuten especificada entonces utilice la opcioacuten v

Otra posibilidad que ofrece el grep es la buacutesqueda de partes de una palabra como en elejemplo anterior que igre se equiparoacute con tigre Para buscar soacutelo palabras completashay que pasarle al grep la opcioacuten w y para liacuteneas completas la opcioacuten es x

Si no se especifica ninguacuten fichero (por ejemplo grep igre ) grep examinaraacute la stdin

_____________________________________________

13 N del T Abreviatura de generalized regular expression parser analizador general deexpresiones regulares

shy wc [shyclw] [fichero1 fichero2 ficheroN ]

El comando wc14 simplemente cuenta el nuacutemero de palabras liacuteneas y caracteres en losficheros pasados como paraacutemetros Si no se especifica ninguacuten fichero operaraacute sobre lastdin Los tres paraacutemetros clw indican el elemento a contar caracteres liacuteneas yw para palabras

Por ejemplo wc shycw contaraacute el nuacutemero de caracteres y palabras pero no el nuacutemero deliacuteneas Si no se indica ninguacuten paraacutemetro wc cuenta todo palabras liacuteneas y caracteres

Se puede utilizar wc para saber el nuacutemero de ficheros de un directorio ls _ wc shyw Sise desea saber el nuacutemero de ficheros que acaban en c entonces ejecute ls c _ wc shyw

shy spell [fichero1 fichero2 ficheroN]

spell es el corrector ortograacutefico maacutes sencillo de Unix generalmente para ingleacutesamericano15

spell es un filtro igual que la mayoriacutea de los comandos que hemos comentado antes quetoma el fichero de texto ASCII y devuelve todas las palabras que considera erroacuteneasspell opera sobre los ficheros especificados y si no se incluye ninguno entoncesutiliza la stdin

Tambieacuten es posible que esteacute disponible en su maacutequina ispell que es un correctorortograacutefico un poco maacutes sofisticado ispell ofrece diversos vocabularios y un menuacute maacutesmanejable en caso de ejecutarlo con un fichero en la liacutenea de comandos Tambieacuten puedeejecutarse como un filtro si no se especifica ninguacuten fichero

La forma de trabajar con ispell es bastante obvia pero si necesita maacutes ayuda consulte lapaacutegina del manual correspondiente man ispell

shy cmp fichero1 [fichero2]

cmp compara dos ficheros El primero debe ser obligatoriamente pasado como paraacutemetromientras que el segundo puede ser pasado como un segundo paraacutemetro o leiacutedo desde laentrada estaacutendar cmp es muy sencillo y simplemente dice donde se diferencian los dosficheros

shy diff fichero1 fichero2

Uno de los comandos estaacutendar maacutes complejos de Unix es el diff La versioacuten GNU de difftiene hasta iexclveinte opciones en la liacutenea de comandos Es una versioacuten mucho maacutes potenteque cmp y muestra cuales son las diferencias en lugar de decir simplemente donde estaacute laprimera

Ya que una buena parte de las opciones del diff estaacuten maacutes allaacute del alcance de estemanual simplemente hablaremos del funcionamiento baacutesico Brevemente diff toma dosparaacutemetros y muestra las diferencias entre ellos liacutenea a liacutenea Por ejemplo

homelarry$ cat rana

Los animales son una criaturas muy interesantes Uno de mis animalesfavoritos es el tigre una temible bestia con grandes colmillos

Tambien me gusta el leonshyshyshy realmente increible

homelarry$ cp rana sapo

homelarry$ diff rana sapo

homelarry$ cat perro

Los animales son una criaturas muy nteresantes Uno de mis animales favoritoses

el tigre una temible bestia con grandes colmillos

Tambien me gusta el leonshyshyshy realmente increible

homelarry$ diff rana perro

1c12

lt Los animales son una criaturas muy interesantes Uno de mis animalesfavoritos es

shyshyshyshy

gt Los animales son una criaturas muy nteresantes Uno de mis animalesfavoritos es

gt

3c4

lt Tambien me gusta el leonshyshyshy realmente increible

shyshyshyshy

gt Tambien me gusta el leonshyshyshy realmente increible

homelarry$

_____________________________________________

14 N del T Abreviatura de word count contar palabras

15 Aunque hay versiones del corrector para diversas lenguas europeas la copia que puedeencontrarse en su maacutequina Linux es con toda probabilidad para ingleacutes americano

Como puede observarse diff no devuelve nada cuando los dos ficheros son iguales Perocuando hemos comparado dos ficheros diferentes se muestra una cabecera de seccioacuten1c12 indicando que ha comparando la liacutenea 1 del fichero de la izquierda rana con lasliacuteneas 1shy2 de perro y las diferencias que ha encontrado Luego ha comparado la liacutenea 3 derana con la liacutenea 4 de perro

Aunque pueda parecer extrantildeo que compare diferentes nuacutemeros de liacutenea es bastanteeficiente ya que es posible que pueda haber alguacuten retorno de liacutenea de maacutes en alguno delos ficheros

shy gzip [shyv] [fichero1 fichero2 ficheroN]

shy gunzip [shyv] [fichero1 fichero2 ficheroN]

shy zcat [fichero1 fichero2 ficheroN]

Estos tres programas se utilizan para comprimir y descomprimir datos gzip o GNU Zip esun programa que lee de los ficheros originales y devuelve ficheros maacutes pequentildeos borralos ficheros especificados en la liacutenea de comandos y los reemplaza con ficheros quetienen el mismo nombre pero con gz antildeadido a su nombre

shy tr cadena1 cadena2

El comando de traduccioacuten de caracteres opera sobre la entrada estaacutendar no acepta unnombre de fichero como paraacutemetro Reemplaza todas las ocurrencias de cadena1 en laentrada con la cadena2 En comparacioacuten con llamadas tan sencillas como tr rana sapo tr puede aceptar comandos maacutes complejos Por ejemplo hay una forma raacutepida de convertirlos caracteres en minuacutescula por otros en mayuacutescula

homelarry$ tr shylower] [upper]

Esta es una frase RARA

ESTA ES UNA FRASE RARA

tr es relativamente complejo y se usa normalmente en pequentildeos programas shell comofiltro

Capiacutetulo 8

Editando archivos con Emacs

FUNNY SOMETHING OR OTHER

81 iquestQueacute es Emacs

Para obtener algo en una computadora necesita una forma de introducir texto en losarchivos y una manera de cambiar el texto que ya estaacute en los archivos Un editor es unprograma para este tipo de tareas emacs es uno de los editores maacutes populares en parteporque es muy faacutecil para un principiante hacer trabajos con eacutel (El editor de Unixclaacutesico el vi se trata en el Apeacutendice A)

Para aprender emacs tiene que encontrar un archivo de texto (letras nuacutemeros etc)coacutepielo a su directorio de usuario 1 (no queremos modificar el archivo original si eacutestecontiene informacioacuten importante) y luego llame a Emacs con el archivo

homelarry$ emacs LEAME

(Por supuesto si decide copiar etcrc etcinittab o cualquier otro archivosustituya ese nombre de archivo por LEAME Por ejemplo si cp etcrc ~rc entoncesemacs rc)

Llamar a Emacs puede tener efectos diferentes dependiendo en doacutende lo haga Desde unaconsola que muestra soacutelo caracteres de texto Emacs se apoderaraacute de toda la consola Si lollama desde X Emacs abriraacute su propia ventana Asumireacute que lo estaacute haciendo desde unaconsola de texto pero todo sucede de la misma manera en la versioacuten de X loacutegicamentesimplemente sustituya la palabra ventana en los lugares en donde lea pantallaiexclAdemaacutes recuerde que debe mover el puntero del ratoacuten a la ventana de Emacs paraescribir

Su pantalla (o ventana si estaacute usando X) deberiacutea parecerse a la Figura 81 La mayorparte de la pantalla contiene su documento de texto pero las dos uacuteltimas liacuteneas sonespecialmente interesantes si estaacute tratando de aprender Emacs La penuacuteltima liacutenea (la quetiene una cadena larga de guiones) se denomina liacutenea de modo (mode line en ingleacutes)

_____________________________________________

1 Por ejemplo cp usrsrclinuxLEAME LEAME

En mi liacutenea de modo ve Top Deberiacutea decir All y puede haber otras pequentildeasdiferencias

(A muchas personas les aparece la hora actual en la liacutenea de modo) La liacuteneainmediatamente inferior a la liacutenea de modo se denomina minibuffer o a veces el aacuterea deeco Emacs usa el minibuffer para enviar mensajes al usuario y ocasionalmente cuando esnecesario para leer informacioacuten que introduce el usuario De hecho ahora mismo Emacs leestaacute diciendo Para obtener informacioacuten acerca del Proyecto GNU y sus objetivos teclee

Cshyh Cshyp (soacutelo que en ingleacutes) Ignoacuterelo por ahora no vamos a usar mucho el minibufferpor un tiempo

Antes de realizar cualquier cambio en el texto del archivo necesita aprender coacutemomoverse El cursor deberaacute estar al principio del archivo en la esquina superiorizquierda de la pantalla

Para avanzar presione |_Cshyf_| (reteniendo la tecla |_Control_| mientras presiona fpara forward (avanzar) Avanzaraacute un caraacutecter cada vez y si retiene ambas teclas larepeticioacuten automaacutetica de teclas de su sistema deberaacute surtir efecto en medio segundoaproximadamente Notaraacute como cuando llega al fin de la liacutenea el cursor automaacuteticamentese mueve a la proacutexima liacutenea |_Cshyb_| (para backward (retroceder) tiene elcomportamiento opuesto Y ya que estamos en ello |_Cshyn_| y ||_Cshyp_|| le llevan a lasliacuteneas siguiente y anterior respectivamente 2

Usar las teclas de control es comuacutenmente la manera maacutes raacutepida de moverse cuando estaacuteeditando

El objetivo de Emacs es mantener sus manos sobre las teclas alfashynumeacutericas del tecladodonde se realiza la mayoriacutea del trabajo Sin embargo si quiere las teclas de movimientodeberaacuten funcionar tambieacuten

De hecho cuando usa X deberiacutea ser capaz de ubicar el puntero del ratoacuten y hacer clickcon el botoacuten izquierdo para mover el cursor donde quiera Sin embargo esto es muy lentoiexcltiene que mover la mano hasta el ratoacuten La mayoriacutea de la gente que usa Emacs usaprincipalmente el teclado para moverse por el texto

_____________________________________________

2 En caso de que auacuten no lo haya notado muchos de los comandos de movimiento de emacsconsisten en combinar |_Control_| con una uacutenica letra mnemoteacutecnica

Use ||_Cshyp_|| y |_Cshyb_| para ir a la esquina superior izquierda Ahora mantenga |_Cshyb_|un poco maacutes

Deberiacutea oiacuter un sonido molesto de campana y ver el mensaje Beginning of buffer(Principio del buffer) que aparece en el minibuffer En este punto se puede preguntariquestPero queacute es un buffer Cuando Emacs trabaja sobre un archivo no trabaja realmentesobre el archivo en siacute En vez de eso copia los contenidos del archivo en un aacuterea detrabajo especial de Emacs llamada buffer donde puede modificar el contenido Cuando haacabado de trabajar debe decirle a Emacs que guarde los buffers en otras palabras queescriba el contenido de los buffers en el archivo correspondiente

Hasta que haga esto el archivo permanece sin cambiar y el contenido de los buffersexiste uacutenicamente dentro de Emacs

Con esto en mente prepaacuterese a insertar su primer caraacutecter en el buffer Hasta ahoratodo lo que hemos hecho ha sido no destructivo este es un gran momento Puede escogercualquier caraacutecter que quiera pero si quiere hacer esto con estilo yo sugiero usar unabonita y soacutelida X mayuacutescula

Mientras lo teclea eche un vistazo al principio de la liacutenea de modo al pie de lapantalla Cuando cambia los buffer de modo que sus contenidos no sean iguales que los delarchivo sobre el disco Emacs muestra dos asteriscos a principios de la liacutenea de modopara hacerle saber que el buffer ha sido modificado

shyshyshy Emacs algun_archivotxt (Fundamental)shyshyTopshyshyshyshyshyshyshyshyshyshyshyshyshyshyshyshyshyshyshyshyshyshyshyshy

Estos dos asteriscos se muestran tan pronto como modifica el buffer y permanecenvisibles hasta que guarde el buffer Puede guardar los buffer muchas veces durante unasesioacuten de edicioacuten el comando para hacerlo es simplemente |_Cshyx_Cshys_| (presione|_Control_| y pulse x y s mientras la mantiene apretada iexclprobablemente ya se loimaginoacute) Es deliberadamente faacutecil de escribir porque lo mejor es salvar sus buffers alprincipio y frecuentemente

Ahora voy a enumerar maacutes comandos ademaacutes de los que ya ha aprendido y los puedepracticar del modo que prefiera Yo sugiero familiarizarse con ellos antes de proseguir

Cshyf Avanza un caraacutecter

Cshyb Retrocede un caraacutecter

Cshyn Va a la proacutexima liacutenea

Cshyp Va a la liacutenea anterior

Cshya Va al comienzo de la liacutenea

Cshye Va al final de la liacutenea

Cshyv Va a la proacutexima paacuteginapantalla de texto

Cshyl Redibuja la pantalla con la liacutenea actual en el centro

Cshyd Borra este caraacutecter (practica este)

Cshyk Borra el texto desde aquiacute hasta el fin de liacutenea

Cshyx Cshys Salva el buffer en su archivo correspondiente

|_Retroceso_| Borra el caraacutecter anterior (el uacuteltimo que escribiste)

82 Comenzar raacutepidamente en X

Si estaacute interesado en editar unos archivos raacutepidamente un usuario de X no tiene que irmucho maacutes allaacute de los menuacutes en la parte superior de la pantalla Estos menuacutes no estaacutendisponibles en el modo texto

Cuando ejecute por primera vez Emacs habraacute cuatro menuacutes en la parte superior de lapantalla Buffers File Edit y Help Para usar un menuacute simplemente mueva el punterodel ratoacuten sobre el nombre (como File haga click y retenga el botoacuten izquierdo) Entoncesmueva el puntero a la accioacuten que quiere y libere el botoacuten del ratoacuten Si cambia de idearetire el puntero del ratoacuten del menuacute y libere el botoacuten

El menuacute Buffers enumera los diferentes archivos que han sido editados en esta instanciade Emacs

El menuacute Files muestra un grupo de comandos para cargar y guardar archivos muchos deellos se describiraacuten maacutes adelante El menuacute Edit muestra algunos comandos para editar unbuffer y el menuacute Help deberiacutea dar la documentacioacuten en liacutenea

Notaraacute que las equivalencias del teclado se enumeran junto a las opciones del menuacutePuesto que a largo plazo eacutestas seraacuten maacutes raacutepidas podriacutea quererlas aprender Tambieacutenpara bien o para mal la mayoriacutea de la funcionalidad de Emacs estaacute uacutenicamente disponiblemediante el teclado asiacute que puede que le interese leer el resto de este capiacutetulo

83 Editando varios archivos al mismo tiempo

Emacs puede trabajar sobre maacutes de un de archivo a la vez De hecho el uacutenico liacutemite sobrecuantos buffers puede contener Emacs es la cantidad real de memoria disponible en lamaacutequina El comando para traer un nuevo archivo a un buffer de Emacs es |_Cshyx_Cshyf_|Cuando lo teclee se le pediraacute un nombre de archivo en el minibuffer

Find file (Buscar archivo)~

La sintaxis aquiacute es la misma que la usada para especificar archivos desde la liacutenea decomandos las barras representan subdirectorios ~ es su directorio de usuario Tambieacutenconsigue terminacioacuten automaacutetica de nombre de archivo significa que si ha escritosuficiente de un nombre de archivo en la liacutenea de comandos para identificar el archivosingularmente puede simplemente presionar |_Tab_| para completarlo (o para ver lasterminaciones posibles si hay maacutes de una) ||_Espacio_|| tambieacuten tiene un papel en laterminacioacuten automaacutetica de nombres de ficheros en el minibuffer parecido a |_Tab_| perodejareacute que experimente para que averiguumle coacutemo difieren las dos Una vez que tiene elnombre completo en el minibuffer presione |_Intro_| y Emacs crearaacute un buffer mostrandoel archivo En Emacs este proceso es conocido como encontrar un archivo Siga adelante ybusque ahora alguacuten otro archivo de texto sin importancia y traacuteigalo a Emacs (haga estodesde nuestro buffer original algun_archivotxt) Ahora tiene un nuevo buffer Supondreacuteque se llama otro_archivotxt ya que no puedo ver su liacutenea de modo

Su buffer original parece haber desaparecido (probablemente) se pregunta doacutende fue Estaacutetodaviacutea dentro de Emacs y puede volver a eacutel con |_Cshyx_b_| Cuando teclee esto veraacute queen el minibuffer le pide el nombre un buffer al que cambiar y nombra uno por defecto Elbuffer por defecto lo consigue soacutelo con presionar |_Intro_| en la liacutenea de comandos sinescribir un nombre de buffer El buffer por defecto al que cambiar es siempre el maacutesrecientemente usado para que cuando esteacute haciendo mucho trabajo entre dos buffers |_Cshyx_b_| tenga por defecto el otro buffer (salvaacutendole de tener que escribir el nombre delbuffer) Incluso si el buffer por defecto es el que quiere deberiacutea probar a teclear sunombre de todos modos

Note que consigue el mismo tipo de terminacioacuten automaacutetica que obtuvo al buscar unarchivo al pulsar |_Tab_| completa todo lo que puede del nombre de un buffer y asiacutesucesivamente Cada vez que se le pida algo en el minibuffer es una buena idea ver siEmacs hace terminacioacuten automaacutetica

Aprovechando la terminacioacuten automaacutetica cuando se le ofrezca ahorraraacute teclear muchoEmacs comuacutenmente hace la terminacioacuten automaacutetica cuando elige un elemento de alguna listapredefinida

Todo lo que ha aprendido para moverse y editar texto en el primer buffer se aplica a losnuevos Siga adelante y cambie alguacuten texto en el nuevo buffer pero no lo guarde (esdecir no teclee |_Cshyx_Cshys_|)

Deacutejeme asumir que quiere desechar los cambios sin guardarlos en el archivo El comandopara esto es Cshyx k que mata (kill) el buffer Tecleacuteelo ahora Primero se le preguntaraacutequeacute buffer matar pero por defecto es el buffer actual y casi siempre es el que sequiere matar simplemente presione |_Intro_| Entonces le preguntaraacute si realmente quierematar el buffer Emacs siempre controla antes de matar un buffer que tiene cambios sinsalvar Simplemente escriba yes (siacute) y presione |_Intro_| si quiere matarlo

Siga adelante y practique cargar archivos modificarlos guardarlos y matar sus buffersPor supuesto cercioacuterese de no modificar ninguacuten archivo de sistema importante de unaforma que cause problemas 3 pero trate de tener por lo menos cinco buffers abiertos almismo tiempo para que se pueda dar el gusto de moverse entre ellos

84 Terminando una sesioacuten de edicioacuten

Cuando haya hecho su trabajo en Emacs aseguacuterese de que se guarden todos los buffers quedeben guardarse y salga de Emacs con |_Cshyx_Cshyc_|

A veces |_Cshyx_Cshyc_| le haraacute una pregunta o dos en el minibuffer antes de dejarle salirno se alarme simplemente conteste en las maneras obvias Si piensa que podriacutea volver aEmacs luego no use |_Cshyx_Cshyc_| use |_Cshyz_| que suspenderaacute Emacs Puede volver luegocon el comando fg del shell

Esto es maacutes eficiente que detener a Emacs y comenzar varias veces especialmente si tieneque editar los mismos archivos nuevamente

Bajo X presionar |_Cshyz_| reduciraacute a icono la ventana Mire la seccioacuten sobre minimizar enel Capitulo 5 Esto le da dos formas de minimizar Emacs la manera normal que ofrece elgestor de ventanas y |_Cshyz_| Recuerde cuando minimice un simple fg no traeraacute laventana anterior tendraacute que usar el gestor de ventanas

_____________________________________________

3 De cualquier manera si no es el usuario root de la maacutequina no deberiacutea ser capaz dedantildear el sistema pero tenga cuidado igualmente

85 La tecla Meta

Ha aprendido ya sobre una tecla modificadora en Emacs la tecla |_Control_| Hay unasegunda llamada la tecla Meta que se usa casi tan frecuentemente Sin embargo no todoslos teclados tienen su tecla Meta en el mismo lugar y algunos ni siquiera la tienen Loprimero que necesita hacer es encontrar doacutende se encuentra su tecla Meta Es probable quelas teclas |_Alt_| de su teclado sean tambieacuten teclas Meta si usa un PC IBM o alguacuten otroteclado que tenga una tecla |_Alt_|

La forma de probar esto es mantener presionada una tecla que crea que puede ser una teclaMeta y teclear x Si ve que un pequentildeo prompt aparece en el minibuffer (como esto |_Mshyx_|) entonces la ha encontrado Para librarse del prompt y regresar al buffer de Emacsteclee ||_Cshyg_||

Si no consigue un prompt entonces todaviacutea queda una solucioacuten Puede usar la tecla||_Escape_|| como una tecla Meta Pero en vez de mantenerla pulsada mientras teclea laproacutexima letra tiene que pulsarla y soltarla raacutepidamente y entonces teclee la letraEste meacutetodo funcionaraacute tenga o no una tecla Meta verdadera tambieacuten es la manera maacutessegura para hacerlo Intente ahora pulsar ligeramente ||_Escape_|| y entonces teclee xDeberiacutea conseguir otra vez ese pequentildeo prompt

Simplemente use ||_Cshyg_|| para salir ||_Cshyg_|| es la manera general en Emacs para salirde alguacuten lugar donde no quiere estar Los fastidiosos y comunes pitidos son para hacerlesaber que ha interrumpido algo pero estaacute bien porque es lo que queriacutea hacer cuandotecleoacute ||_Cshyg_||4

La notacioacuten |_Mshyx_| es anaacuteloga a |_Cshyx_| (ponga cualquier caraacutecter en el lugar de lax) Si ha encontrado una verdadera tecla Meta use eacutesta de otra manera simplemente usela tecla ||_Escape_|| Yo escribireacute simplemente |_Mshyx_| y ud tendraacute que usar su propiatecla Meta

86 Cortar pegar destruir y tirar

Emacs como cualquier buen editor le permite cortar y pegar bloques de texto A fin dehacer esto necesita una forma de definir el comienzo y fin del bloque En Emacs se haceesto estableciendo dos ubicaciones en el buffer conocidas como marca y puntero Paracolocar la marca vaya al lugar donde quiere que comience el bloque y teclee |_CshySPC_|(SPC significa ||_Espacio_|| por supuesto)

Deberiacutea ver el mensaje Mark set (Marca establecida) que aparece en el minibuffer5Ahora la marca ha sido establecida en ese lugar No habraacute ninguacuten indicador especialdestacando este hecho pero Ud sabe doacutende la ha puesto y eso es lo que importa

iquestY queacute hay del puntero Bien resulta que ha colocado un puntero cada vez que ha movidoel cursor porque puntero simplemente se refiere a su ubicacioacuten actual en el buffer Enteacuterminos formales el puntero es el punto donde se insertaraacute el texto si escribe algo Alcolocar la marca y luego moverse al final del bloque ha definido un bloque de textoEste bloque es conocido como la regioacuten La regioacuten siempre significa el aacuterea entre lamarca y el puntero

El soacutelo hecho de definir la regioacuten no la deja disponible para pegar Tiene que decirle aEmacs que lo copie para poder ser capaz de pegarlo Para copiar la regioacuten aseguacuterese deque la marca y el puntero estaacuten correctamente establecidos y teclee |_Mshyw_| Ahora hasido grabada por Emacs Para pegarlo en alguna otra parte simplemente vaya alliacute y teclee||Cshyy_|| Esto es conocido como tirar el texto en el buffer

______________________________________________

4 Ocasionalmente un Cshyg no es suficiente para persuadir a emacs que realmente quiereinterrumpir lo que hace Simplemente insista y normalmente Emacs volveraacute a un modo maacutescuerdo

5 Sobre algunos terminales |_CshySPC_| no funciona Para estas maacutequinas debe usar |_Cshy_|

Si quiere mover el texto de la regioacuten a alguna otra parte teclee |_Cshyw_| en vez de |_Mshyw_| Esto mataraacute la regioacuten todo el texto dentro de ella desapareceraacute De hecho se haguardado del mismo modo que si hubiera usado |_Mshyw_| Puede tirar de nuevo con ||_Cshyy_||como siempre El lugar donde emacs guarda todo este texto es conocido como el ciacuterculo demuerte Algunos editores lo llaman el porta papeles o el buffer de pegado

Existe otra manera para cortar y pegar cuando usa |_Cshyk_| para matar hasta el final deuna liacutenea el texto matado se guarda en el ciacuterculo de muerte Si mata maacutes de una liacuteneaseguida se guardaraacuten todas juntas en el ciacuterculo de muerte para que la proacutexima tiradapegue todas las liacuteneas al mismo tiempo Por ello casi siempre es maacutes raacutepido usarrepetidas veces |_Cshyk_| para matar alguacuten texto que establecer la marca y el puntero yusar |_Cshyw_| Sin embargo de una u otra manera funcionaraacute Es realmente una cuestioacuten depreferencia personal coacutemo lo hace

87 Buscar y reemplazar

Hay varias maneras para buscar texto en Emacs Muchas son maacutes bien complejas y no merecela pena tratarlas aquiacute La maacutes faacutecil y la maacutes entretenida es usar isearch

Isearch se refiere a incremental search (buacutesqueda incremental) Supongamos que quierebuscar la cadena taacutebano en el siguiente buffer

Yo estaba temeroso que nos quedaacuteramos sin gasolina cuando mi taacutecito pasajero

exclamoacute ``Auch un aguijoacuten Hay un taacutebano aquiacute dentro

Deberiacutea moverse al comienzo del buffer o por lo menos a alguacuten punto que sabe que estaacuteantes de la primera aparicioacuten de la palabra taacutebano y teclear |_Cshys_| Eso le pondraacuteen el modo de buacutesqueda isearch Ahora comience a escribir la palabra que estaacute buscandotaacutebano Pero tan pronto como escribe la t ve que Emacs ha saltado a la primeraaparicioacuten de t en el buffer Si la cita de arriba es todo el contenido del buffer

entonces la primera t es de la palabra temeroso Ahora escriba la aacute de taacutebano yEmacs saltaraacute sobre taacutecito que contiene la primer ocurrencia de taacute Y finalmenteb consigue taacutebano sin haber tenido que escribir la palabra entera

Lo que hace en una isearch es definir una cadena para buscarla Cada vez que agrega uncaraacutecter al final de la cadena el nuacutemero de posibles cadenas se reduce hasta que hayaescrito lo suficiente para definir la cadena singularmente Una vez que ha encontrado lapalabra puede salir de la buacutesqueda con |_Intro_| o cualquiera de los comandos normalesde movimiento Si piensa que la cadena que buscas esta atraacutes en el buffer entoncesdeberiacutea usar |_Cshyr_| que hace isearch hacia atraacutes

Si encuentra una palabra pero no es la que buscaba entonces presione |_Cshys_| nuevamentemientras todaviacutea esteacute en la buacutesqueda Esto le moveraacute hasta la proacutexima palabracoincidente cada vez que lo haga Si no existe una proacutexima palabra diraacute que la buacutesquedafracasoacute pero si presiona |_Cshys_| nuevamente en este punto la buacutesqueda volveraacute acomenzar desde el principio del buffer Se puede decir lo opuesto de |_Cshyr_| comienza alfinal del buffer

Intente introducir un buffer de texto en ingleacutes y haga un isearch para la cadena thePrimero teclee todos los the que quiera y luego use |_Cshys_| para ir a todas lasapariciones Note que tambieacuten apareceraacuten palabras como them dado que tambieacuten contienela subcadena the Para buscar un uacutenico the deberaacute agregar un espacio al final de lacadena de buacutesqueda Puede agregar nuevos caracteres a la cadena en cualquier punto de labuacutesqueda despueacutes tiene que presionar |_Cshys_| repetidamente para encontrar las proacuteximaspalabras coincidentes Puede usar tambieacuten la |_Retroceso_| o ||_Supr_|| para quitarcaracteres de la cadena en cualquier punto de la buacutesqueda y presionando |_Intro_| salede la buacutesqueda dejaacutendole en la uacuteltima coincidencia

Emacs tambieacuten permite reemplazar todas las apariciones de una cadena con alguna nuevacadena esto es conocido como queryshyreplace (preguntarshyreemplazar) Para invocarloteclee queryshyreplace y |_Intro_|

Como se hace terminacioacuten automaacutetica sobre el nombre del comando una vez que has escritoqueryshyre puede simplemente presionar |_Tab_| para terminarlo Digamos que deseareemplazar todas las ocurrencias de taacutebano por mosca En el prompt Query replace (preguntarshyreemplazar) escriba taacutebano y presione |_Intro_| Entonces apareceraacute elprompt nuevamente y deberaacute introducir mosca Entonces Emacs recorreraacute el bufferparando a cada aparicioacuten de la palabra taacutebano y preguntando si quiere reemplazarlaSimplemente presione en cada instancia y o n por Yes o No hasta que termineSi no entiende esto mientras lo lee prueacutebelo

88 iquestQueacute es lo que ocurre realmente

Realmente todas estas teclas ligadas que ha aprendido son los atajos a funciones deEmacs Por ejemplo ||_Cshyp_|| es una manera abreviada de decirle a Emacs que ejecute lafuncioacuten interna previousshyline (liacutenea_previa) Sin embargo todas estas funciones internaspueden ser llamadas por el nombre usando |_Mshyx_| Si olvida que previousshyline estaacuteligado a ||Cshyp_|| puede escribir simplemente |_Mshyx_| previousshyline |_Intro_| y semoveraacute una liacutenea hacia arriba Pruebe esto ahora para que comprenda como |_Mshyx_|previousshyline y ||_Cshyp_ || son realmente la misma cosa

El disentildeador de Emacs comenzoacute desde la base hacia arriba primero definioacute un lotecompleto de funciones internas y entonces les asocioacute o ligoacute ciertas teclas a las maacutescomuacutenmente usadas A veces es maacutes faacutecil llamar a una funcioacuten expliacutecitamente con |_Mshyx_|que recordar a queacute tecla estaacute ligada

La funcioacuten queryshyreplace por ejemplo estaacute ligada a ||_Mshy_|| en algunas versiones deEmacs Pero iquestquieacuten puede recordar tan rara combinacioacuten A menos que use queryshyreplace muyfrecuentemente es maacutes faacutecil simplemente llamarla con |_Mshyx_|

La mayoriacutea de las teclas que pulsa son letras cuya funcioacuten es ser insertadas en el textodel buffer Cada una de esas teclas estaacute ligada a la funcioacuten selfshyinsertshycommand que no

hace nada maacutes que insertar la letra en el buffer Las combinaciones que usan la tecla|_Control_| con una letra generalmente estaacuten ligadas a funciones que hacen otras cosascomo mover el cursor Por ejemplo |_Cshyv_| estaacute ligada a una funcioacuten llamada scrollshyup(avanzar paacutegina) que mueve el buffer una pantalla hacia arriba (lo que quiere decir quesu posicioacuten en el buffer se mueve hacia abajo por supuesto)

Si alguna vez quisiera realmente insertar un caraacutecter de Control en el buffer entoncesiquestcoacutemo lo hariacutea Despueacutes de todo los caracteres de Control son caracteres ASCII aunquerara vez usados y puede querer tenerlos en un archivo Hay una manera para_impedir_quelos caracteres de Control sean interpretados como comandos por Emacs La tecla ||_Cshyq_||6estaacute ligada a una funcioacuten especial llamada quotedshyinsert (insertar lo citado) Todo loque quotedshyinsert hace es leer la proacutexima tecla e insertarla literalmente en el buffersin tratar de interpretarla como un comando Asiacute es coacutemo puede poner los caracteres deControl en sus archivos usando Emacs iexclNaturalmente la manera de insertar un Cshyq espresionar ||Cshyq_|| dos veces

Emacs tambieacuten tiene muchas funciones que no estaacuten ligadas a ninguna tecla Por ejemplosi escribe un mensaje largo y no quiere tener que presionar |_Intro_| al final de cadaliacutenea Puede hacer que emacs lo haga por Ud (de hecho puede hacer que Emacs hagacualquier cosa por Ud) el comando para hacerlo se llama autoshyfillshymode (modo de autollenado pero no estaacute ligado a ninguna tecla por defecto A fin de invocar este comandodebe escribir Mshyx autoshyfillshymode

Mshyx es la tecla usada para llamar a funciones por el nombre Podriacutea usarlo para llamara funciones como nextshyline y previousshyline pero eso seriacutea muy ineficaz ya que esasfunciones estaacuten ligadas a |_Cshyn_| y ||_Cshyp_||

A propoacutesito si mira su liacutenea de modo despueacutes de invocar autoshyfillshymode notaraacute que lapalabra Fill se ha agregado al lado derecho Mientras esteacute alliacute Emacs llenaraacute(rellenaraacute) el texto automaacuteticamente Puede desactivarlo escribiendo Mshyx autoshyfillshymodenuevamente es un comando de palanca

La incomodidad de escribir largos nombres de funcioacuten en el minibuffer disminuye porqueEmacs hace terminacioacuten automaacutetica en los nombres de funciones de la misma manera que lohace en los nombres de archivo Por lo tanto rara vez deberiacutea encontrarse escribiendo elnombre entero de la funcioacuten letra a letra Si no estaacute totalmente seguro de si puede o nousar la terminacioacuten automaacutetica simplemente presione |_Tab_| No puede hacer dantildeo lopeor que puede suceder es que consiga un caraacutecter Tab y si es afortunado resultaraacute quepuede usar la terminacioacuten automaacutetica

89 Pidiendo ayuda a Emacs

Emacs tiene extensas facilidades de ayuda tan extensas de hecho que soacutelo podemoscomentarlas un poco aquiacute A las facilidades de ayuda maacutes baacutesicas se accede tecleando |_Cshyh_| y luego una uacutenica letra Por ejemplo |_Cshyh_k_| muestra la ayuda sobre una tecla (lepide que presiones una tecla y entonces le dice lo que esa tecla hace) |_Cshyh_t_| abreun breve manual sobre Emacs Maacutes importante auacuten |_Cshyh_Cshyh_Cshyh_| le da ayuda sobre laayuda para decirle que estaacute disponible una vez que ha tecleado |_Cshyh_| por primera vezSi sabe el nombre de una funcioacuten de Emacs (saveshybuffer (grabar el buffer) por ejemplo)pero no puede recordar cuaacutel es la combinacioacuten de teclas a la que estaacute ligada use |_Cshyh_w_| para whereshyis (doacutende estaacute) y escriba el nombre de la funcioacuten O si quiereconocer queacute hace una funcioacuten con detalle use |_Cshyh_f_| que preguntaraacute por un nombre defuncioacuten

______________________________________________

6 Llamamos a Cshyq una tecla aunque se produce manteniendo presionada la tecla Controlypresionando q porque es un uacutenico caraacutecter ASCII

Recuerde que como Emacs hace terminacioacuten automaacutetica del nombre de la funcioacuten realmenteno tiene que estar seguro de coacutemo se llama para pedir ayuda sobre ella Si piensa quepuedes adivinar la palabra con la que podriacutea comenzar teclee eacutesa y presione |_Tab_ |paraver si se completa Si no vuelva atraacutes e intente otra cosa Lo mismo ocurre con losnombres de archivo auacuten cuando no pueda recordar del todo como nombroacute cierto archivo alque no ha accedido en tres meses puede probar y usar la terminacioacuten automaacutetica paraaveriguar si estaacute en lo cierto Usa la terminacioacuten automaacutetica como una forma depreguntar y no soacutelo como una manera de teclear menos

Hay otros caracteres que puede pulsar despueacutes de |_Cshyh_| y con cada uno consigue ayudade una manera diferente Los que usaraacute maacutes frecuentemente son |_Cshyh_k_| |_Cshyh_w_| y|_Cshyh_f_| Una vez que esteacute maacutes familiarizado con Emacs otra para probar es |_Cshyh_a_|que le pregunta por una cadena y le comenta todas las funciones que tienen esa cadenacomo parte de su nombre (la a seriacutea para apropos [a propoacutesito] o about[acerca])

Otra fuente de informacioacuten es el lector de documentacioacuten Info Info es demasiado complejopara tratarlo aquiacute pero si estaacute interesado en explorarlo por si mismo teclee |_Cshyh_i_|y lea el paacuterrafo en la parte superior de la pantalla Le diraacute coacutemo conseguir maacutes ayuda

810 Especializando buffers Modos

Los buffers de Emacs tienen modos asociados7 La razoacuten para esto es que sus necesidadescuando escribe un mensaje de correo son muy diferentes de sus necesidades cuando porejemplo escribe un programa Mejor que tratar de crear un editor que satisfaga cadanecesidad particular en todo momento (que seriacutea imposible) el disentildeador de Emacs8 eligioacutehacer que Emacs se comporte de manera diferente dependiendo de queacute hace Ud en cadabuffer individual Asiacute los buffers tienen modos cada uno disentildeado para alguna actividadespeciacutefica Los aspectos principales que distinguen un modo de otros son lascombinaciones de teclas pero tambieacuten pueden existir otras diferencias

El modo maacutes baacutesico es el modo Fundamental que realmente no tiene ninguacuten comandoespecial

De hecho esto es todo lo que Emacs dice sobre el Modo Fundamental

Modo Fundamental

Modo mayor no especializado para nada en particular Los otros modos mayoresson definidos por comparacioacuten con este

Obtuve asiacute esa informacioacuten Teclee |_Cshyx_b_| que es switchshytoshybuffer (cambiar albuffer) e introduje foo cuando se me preguntoacute por un nombre de buffer al que cambiarComo no habiacutea anteriormente ninguacuten buffer llamado foo Emacs creoacute uno y me cambio a eacutelEstaba en el modo fundamental por defecto pero si no lo hubiese estado podriacutea habertecleado Mshyx fundamentalshymode para que estuviese Todos los nombres de modo tienen uncomando llamado ltnombreshydeshymodogtshymode que pone el buffer actual en ese modo Entoncespara averiguar maacutes sobre este modo mayor tecleeacute |_Cshyh_m_| que consigue ayuda sobre elmodo mayor actual del buffer en que estaacute

_____________________________________________

7 para colmo de males hay Modos Mayores y Modos Menores pero en este momento nonecesita conocer nada acerca de esto

8 Richard Stallman a veces tambieacuten conocido como rms porque es su login

Hay un modo ligeramente maacutes uacutetil llamado textshymode (modo texto que tiene los comandosespeciales |_MshyS_| para centrar paacuterrafo y |_Mshys_| que invoca centrar liacutenea |_MshyS_| apropoacutesito significa exactamente lo que piensa mantenga pulsadas la |_Meta__|y la tecla|_Shift_| y presiona S

Pero no me tome la palabra en esto cree un nuevo buffer poacutengalo en modo texto y teclee|_Cshyh_m_| Puede que no entienda todo lo que Emacs le diga cuando lo haga pero deberiacuteaser capaz de conseguir sacar alguna informacioacuten uacutetil de ello

Esto es una introduccioacuten a algunos de los modos maacutes comuacutenmente usados Si los usaaseguacuterese de que teclea en cada uno |_Cshyh_m_| alguna vez para averiguar maacutes sobre cadamodo

811 Modos de programacioacuten

8111 Modo C

Si usa Emacs para programar en el lenguaje C puede conseguir que eacutel le haga toda laindentacioacuten automaacuteticamente Los archivos cuyos nombres terminan en c o h se abriraacutenautomaacuteticamente en el modo C Esto significa que ciertos comandos especiales de edicioacutenuacutetiles para escribir programas en C estaacuten disponibles En el modo C |_Tab_| estaacute ligadoa cshyindentshycommand (indentar comandos C) Esto significa que presionando la tecla |_Tab_|no inserta realmente un caraacutecter de Tabulacioacuten En cambio si presiona |_Tab_| encualquier parte de una liacutenea Emacs automaacuteticamente indenta esta liacutenea correctamente parasu ubicacioacuten en el programa Esto implica que Emacs sabe algo sobre la sintaxis de C(aunque nada sobre semaacutentica (iexclno puede asegurar que su programa no tenga errores)

Para hacer esto asuma que las liacuteneas anteriores estaacuten indentadas correctamente Estosignifica que si en la liacutenea anterior falta un pareacutentesis un punto y coma llaves ocualquier otra cosa Emacs indentaraacute la liacutenea actual de una manera peculiar inesperadaCuando vea que hace esto sabraacute que debe buscar un error de puntuacioacuten en la liacuteneaanterior

Puede usar esta caracteriacutestica para verificar que ha puntuado correctamente susprogramas

en vez de leer el programa entero_buscado_problemas simplemente comience a indentar lasliacuteneas desde arriba hasta abajo con |_Tab_| y cuando alguna se indenta de forma raraverifique las liacuteneas inmediatamente anteriores En otras palabras iexcldeje a Emacs hacer eltrabajo por Ud

8112 Modo Scheme

Este es un modo mayor que no le serviraacute de nada a menos que tenga un compilador o uninterprete para el lenguaje de programacioacuten Scheme en su sistema Tener uno no es tannormal como digamos un compilador de C pero se estaacute haciendo cada vez maacutes comuacuten asiacuteque lo trataremos tambieacuten

Mucho de lo que es cierto para el modo Scheme es tambieacuten cierto para el modo Lisp siprefiere escribir en Lisp

Bien para complicar las cosas Emacs viene con dos modos Scheme diferentes porque lagente no podiacutea decidir coacutemo queriacutean que funcionara El que estoy describiendo se llamacmuscheme y luego en la seccioacuten personalizando a Emacs hablareacute de coacutemo puede haber dosmodos Scheme diferentes y queacute hacer acerca de ello Por ahora no se preocupe si lascosas en su Emacs no coinciden con las que yo digo aquiacute Un editor personalizablesignifica un editor impredecible iexcly no hay vuelta de hoja

Puede ejecutar un proceso Scheme interactivo en Emacs con el comando Mshyx runshyscheme Estocrea un buffer llamado scheme que tiene el prompt habitual de Scheme Puede teclearexpresiones de Scheme en el prompt presionar |_Intro_| y Scheme las evaluaraacute y mostraraacutela respuesta Asiacute a fin de interactuar con el proceso de Scheme podraacute simplementeescribir todas sus aplicaciones y definiciones de funcioacuten en el prompt Es posible quehaya escrito previamente coacutedigo fuente Scheme en un alguacuten archivo y seriacutea maacutes faacutecilhacer su trabajo en el archivo y enviar las definiciones al buffer de proceso Schemeseguacuten sea necesario

Si el archivo fuente termina en ss o scm automaacuteticamente se abriraacute en el modo Schemecuando lo encuentre con |_Cshyx_Cshyf_| Si por alguna razoacuten no surge en el modo Schemepuede hacerlo a mano con Mshyx schemeshymode Este modo scheme no es lo mismo que el bufferque ejecuta el proceso Scheme maacutes bien el que el buffer de coacutedigo fuente esteacute en modoscheme significa que tiene comandos especiales para comunicar con el buffer de proceso

Si estaacute dentro de la definicioacuten de una funcioacuten en el buffer de coacutedigo fuente Scheme yteclea |_Cshyc_Cshye_| entonces esa definicioacuten seraacute enviada al buffer de procesoexactamente como si lo hubiera tecleado Ud mismo |_Cshyc_Mshye_| enviacutea la definicioacuten yentonces le lleva al buffer de proceso para hacer algo de trabajo interactivo |_Cshyc_Cshyl_| carga un archivo de coacutedigo Scheme (eacuteste funciona desde el buffer de proceso o elbuffer de coacutedigo fuente) Y como otros modos de lenguajes de programacioacuten al presionar|_Tab_| en cualquier lugar de una liacutenea de coacutedigo se indentaraacute correctamente esa liacutenea

Si estaacute en el prompt del buffer de proceso puede usar ||_Mshyp_|| y |_Mshyn_| para moverseentre sus comandos anteriores (tambieacuten conocido como la historia de entrada) Asiacute que siestaacute depurando la funcioacuten rotar y ya lo ha aplicado a los argumentos en el buffer deproceso como

gt(rotar (a b c d e))

entonces puede recuperar ese comando anterior tecleando ||_Mshyp_||en el prompt Aquiacute nodeberiacutea ser necesario volver a escribir expresiones largas en el prompt de Schemehabituacuteese a usar la historia de entrada y ahorraraacute mucho tiempo

Emacs conoce bastantes lenguajes de programacioacuten C C++ Lisp y Scheme son simplementealgunos Generalmente sabe coacutemo indentarlos de forma intuitiva

8113 Modo de correo

Tambieacuten puede editar y enviar correo en Emacs Para entrar en un buffer de correo teclee|_Cshyx_m_| Necesita llenar los campos To (A) y Subjet (Asunto) y entonces use |_Cshyn_| para ir por debajo de la liacutenea de separacioacuten al cuerpo del mensaje (que estaacute vaciacuteocuando comienza por primera vez) No cambie o borre la liacutenea de separacioacuten o sino Emacsno seraacute capaz de enviar su correo use esa liacutenea para distinguir el encabezamiento delcorreo que le dice doacutende enviar el correo de los contenidos del mensaje

Puede escribir lo que quiera por debajo de la liacutenea de separacioacuten Cuando esteacute listo paraenviar el mensaje simplemente teclee |_Cshyc_Cshyc_| y Emacs lo enviaraacute y haraacute que elbuffer de correo desaparezca

812 Como ser maacutes eficiente auacuten

Los usuarios experimentados de Emacs son fanaacuteticos de la eficiencia ltDe hechofrecuentemente acaban derrochando mucho tiempo buscando formas para ser maacutes eficientesNo quiero que le suceda esto aunque hay algunas cosas faacuteciles con las que puede llegar aser un mejor usuario de Emacs A veces los usuarios experimentados hacen que los novatos

se sientan tontos por no saber todos estos trucos por alguna razoacuten la gente llega ahacerse religiosas sobre el uso correcto de Emacs Allaacute vamos

Cuando se mueve de un lado a otro usa los medios maacutes raacutepidos disponibles Ud sabe que|_Cshyf_| es forwardshychar (un caraacutecter hacia adelante) iquestsuponiacutea que |_Mshyf_| es forwardshyword(una palabra hacia delante) |_Cshyb_| es backwardshychar (un caraacutecter hacia atraacutes) iquestSuponequeacute hace |_Mshyb_| Sin embargo esto no es todo puede avanzar una frase cada vez con |_Mshye_ | siempre que escriba sus frases de modo que haya siempre dos espacios despueacutes delpunto final (de otra manera Emacs no puede distinguir donde termina una frase y comienzala siguiente) |_Mshya_| es backwardshysentence (una frase atraacutes)

Si ve que usa repetidamente |_Cshyf_| para llegar al final de la liacutenea averguumleacutencese yaseguacuterese de usar |_Cshye_| en su lugar y |_Cshya_| para ir al principio de la liacutenea Si usamuchos |_Cshyn_| para bajar pantallas de texto averguumleacutencese mucho y usa |_Cshyv_| siempreSi usa repetidamente ||_Cshyp_|| para avanzar pantallas no se atreva a ensentildear la cara yuse |_Mshyv_| en su lugar

Si se estaacute acercando al final de una liacutenea y se da cuenta de que hay una palabra maltecleada o de que se ha olvidado alguna en alguacuten lugar anterior de la liacutenea no use la|_Retroceso_| o ||_Supr_|| para volver a ese punto Eso requeririacutea volver a escribirporciones enteras de texto perfecto En vez de eso use combinaciones de |_Mshyb_| |_Cshyb_| y |_Cshyf_| para moverse a la ubicacioacuten precisa del error arreacuteglelo y entonces use|_Cshye_| para moverse al fin de la liacutenea nuevamente

Cuando tiene que escribir un nombre de archivo nunca teclee el nombre completoSolamente escriba lo suficiente para identificarlo singularmente y deje que Emacstermine el trabajo presionando |_Tab_| o ||_Espacio_|| iquestPor queacute teclear de maacutes cuandopuede derrochar ciclos de CPU en su lugar

Si escribe alguacuten tipo de texto simple y de alguacuten modo su autoshyllenando (autoshyfilling)loha fastidiado use |_|Mshyq_|| que es rellenado de paacuterrafo en los modos de texto comunesEsto ajustaraacute el paacuterrafo en el que estaacute como si hubiese sido llenado liacutenea a liacuteneapero sin tener que liarse hacieacutendolo a mano ||_Mshyq_|| trabajaraacute desde dentro delpaacuterrafo o desde su comienzo o final

A veces es uacutetil usar |_Cshyx_u_| (undo [deshacer]) que trataraacute de deshacer el (los)uacuteltimo(s) cambio(s) que hizo Emacs decidiraacute cuanto deshacer habitualmente decide muyinteligentemente

Llamaacutendolo repetidamente desharaacute maacutes y maacutes hasta que Emacs no pueda recordar queacute cambiosse hicieron

813 Personalizando Emacs

Emacs es tan grande y tan complejo que de hecho tiene iexclsu propio lenguaje deprogramacioacuten No bromeo para personalizar Emacs ajustaacutendolo a sus necesidades tieneque escribir programas en este lenguaje Se llama Emacs Lisp y es un dialecto de Lispasiacute que si tiene experiencia previa en Lisp le pareceraacute bastante amistoso Si no no sepreocupe no voy a profundizar mucho porque definitivamente se aprende mejorpracticando Para aprender realmente a programar Emacs deberaacute consultar las paacuteginas deinformacioacuten de Emacs Lisp y leer mucho coacutedigo fuente de Emacs Lisp

La mayor parte de la funcionalidad de Emacs estaacute definida en archivos de coacutedigo de EmacsLisp9 La mayoriacutea de estos archivos se distribuyen con Emacs y colectivamente sonconocidos como la Biblioteca de Emacs Lisp La ubicacioacuten de esta biblioteca depende decoacutemo se instaloacute Emacs en su sistema son ubicaciones comunes usrlibemacslispusrlibemacs1919lisp etc

El 1919 es el nuacutemero de versioacuten de Emacs y podriacutea ser diferente en su sistema

No necesita hurgar por su sistema de archivos buscando la biblioteca de lisp porqueEmacs tiene la informacioacuten almacenada internamente en una variable llamada loadshypath(trayectoria de carga) Para averiguar el valor de esta variable es necesario evaluarlaesto es hacer que el inteacuterprete de lisp de Emacs consiga su valor Hay un modo especialpara evaluar las expresiones de Lisp en Emacs llamado modo lisp interactivo (lispshyinteractionshymode) Comuacutenmente hay un buffer llamado scratch que estaacute ya en estemodo Si no lo puede encontrar cree un nuevo buffer con cualquier nombre y escriba Mshyxlispshyinteractionshymode dentro de eacutel

Ahora tiene un espacio de trabajo para interactuar con el inteacuterprete Lisp de EmacsTeclee esto

loadshypath

y entonces presione ||_Cshyj_|| al finalizar En el modo Lisp interactivo ||_Cshyj_|| estaacuteligado a evalshyprintshylastshysexp (evaluarshyimprimirshyuacuteltimashysexp) Una sexp es una sshyexpresion lo que significa un grupo balanceado de pareacutentesis incluido el caso de queno haya ninguno Bueno esto es simplificarlo un poco pero iraacute entendiendo que son seguacutenprograme con Emacs Lisp De cualquier manera al evaluar loadshypath deberiacutea conseguir algocomo esto

loadshypath ||_Cshyj_||

(usrlibemacssiteshylispvmshy535 homekfogelelithp

usrlibemacssiteshylisp usrlibemacs1919lisp)

Por supuesto no tendraacute el mismo aspecto en cada sistema puesto que es dependiente decoacutemo se instaloacute Emacs El ejemplo de arriba viene de mi PC 386 que funciona con LinuxComo indica lo anterior loadshypath es una lista de cadenas Cada cadena nombra undirectorio que podriacutea contener archivos de Emacs Lisp Cuando Emacs necesita cargar unarchivo de coacutedigo Lisp va buscaacutendolo en cada uno de estos directorios en orden Si undirectorio se nombra pero no existe en el sistema de archivos Emacs simplemente loignora

_____________________________________________

9 A veces llamados no oficialmente Elisp

Cuando Emacs arranca automaacuteticamente trata de cargar el archivo emacs desde sudirectorio de usuario Por lo tanto si quiere hacer personalizaciones en Emacs deberaacuteponerlas en emacs La personalizacioacuten maacutes comuacuten son las teclas ligadas asiacute que aquiacuteestaacute coacutemo hacerlo

(globalshysetshykey Cshycl gotoshyline)

globalshysetshykey (fijar teclas globalmente) es una funcioacuten de dos argumentos la tecla a laque ha de ser ligada y la funcioacuten a la que ligarla La palabra global significa queesta tecla ligada tendraacute efecto en todos los modos mayores (hay otra funcioacuten localshysetshykey (fijar teclas localmente) que liga una tecla en un uacutenico buffer) Arriba he ligado|_Cshyc_l_| a la funcioacuten gotoshyline (ir a tal liacutenea)

La tecla se describe usando una cadena La sintaxis especial Cshyltcaraacutectergt significamantener pulsada la tecla |_Control_| mientras se presiona ltcaraacutectergt Asiacute mismo Mshyltcaraacutectergt indica la tecla |_Meta_|

Todo eso estaacute muy bien iquestpero coacutemo supe que el nombre de la funcioacuten era gotoshylinePuedo saber que quiero ligar |_Cshyc_l_| a alguna funcioacuten que pregunta por un nuacutemero deliacutenea y mueve el cursor a esa liacutenea pero iquestcoacutemo hice para averiguar el nombre de esafuncioacuten

Aquiacute es donde intervienen las facilidades de ayuda de Emacs Una vez que ha decidido queacutetipo de funcioacuten busca puede usar Emacs para rastrear su nombre exacto He aquiacute unamanera raacutepida y sucia para hacerlo puesto que Emacs completa los nombres de funcioacutensimplemente escriba |_Cshyh_f_| (que es describeshyfunction (describir funcioacuten) recueacuterdelo)y entonces presione |_Tab_| sin escribir nada maacutes Esto pide a Emacs que complete lacadena vaciacutea _en otras palabras iexclla terminacioacuten automaacutetica se corresponderaacute con cada unade las funciones Puede tardar un momento en construir la lista de funciones ya queEmacs tiene muchas funciones internas pero mostraraacute todo lo que entre en la pantallacuando esteacute listo

En este momento presione ||_Cshyg_|| para abandonar la funcioacuten describir funcioacuten Habraacute unbuffer llamado Completions que contiene la lista de terminaciones automaacuteticas queacaba de generar

Cambie a este buffer Ahora puede usar |_Cshys_| isearch para buscar las funcionesprobables Por ejemplo es una suposicioacuten segura que una funcioacuten que pregunta por unnuacutemero de liacutenea y entonces va a esa liacutenea contendraacute la cadena line (liacutenea) en sunombre Por lo tanto simplemente comience buscando la cadena line y acabaraacuteencontrando lo que busca

Si quiere otro meacutetodo puede usar |_Cshyh_a_| commandshyapropos para mostrar todas lasfunciones cuyos nombres se ajustan a la cadena dada La salida de commandshyapropos es unpoco maacutes difiacutecil de clasificar que simplemente buscar una lista de terminacioacutenautomaacutetica en mi opinioacuten pero puede encontrar que tiene distintas sensaciones Pruebeambos meacutetodos y a ver que opina

Siempre existe la posibilidad de que Emacs no tenga ninguna funcioacuten predefinida parahacer lo que estaacute buscando En esta situacioacuten tiene que escribir la funcioacuten Ud mismoNo voy a hablar de coacutemo hacer eso deberiacutea buscar en la biblioteca de Emacs Lisp ejemplosde definiciones de funcioacuten y leer las paginas Info sobre Emacs Lisp Si resulta queconoce a un guruacute local de Emacs preguacutentele coacutemo hacerlo Definir sus propias funcionesde Emacs no es un gran asunto para darle una idea yo he escrito 131 de ellas durantemaacutes o menos el uacuteltimo antildeo Requiere un poco de praacutectica pero la curva de aprendizaje noes empinada

Otra cosa que la gente hace a menudo en su emacs es asignar a ciertas variables losvalores preferidos Por ejemplo ponga esto en su emacs y entonces inicie un nuevoEmacs

(setq inhibitshystartupshymessage t)

Emacs verifica el valor de la variable inhibitshystartupshymessage (bloquear mensaje dearranque) para decidir si muestra la informacioacuten sobre la versioacuten y la falta de garantiacuteacuando arranca La expresioacuten de Lisp de arriba usa el comando setq para asignar a esavariable el valor `t que es un valor especial de Lisp que significa true (verdadero)Lo contrario de `t es `nil (nada o nulo) que es el valor false (falso) designado enEmacs Lisp He aquiacute dos cosas que estaacuten en mi |_emacs_| que podriacutea encontrar uacutetiles

(setq caseshyfoldshysearch nil) causa la insensibilidad a mayuacutesculas yminuacutesculas para la buacutesqueda

Hacer indentar los programas C de la manera que me gusta

(setq cshyindentshylevel 2)

La primera expresioacuten hace que las buacutesquedas (incluyendo isearch) sean insensibles amayuacutesculas y minuacutesculas esto es la buacutesqueda encontraraacute versiones de un mismo caraacutectersea mayuacutescula o minuacutescula aunque la cadena de buacutesqueda contenga uacutenicamente la versioacuten enminuacutescula La segunda expresioacuten establece que la indentacioacuten por defecto para lassentencias en lenguaje C sea un poco menor de lo normal esto es solamente unapreferencia personal encuentro que esto hace el coacutedigo C maacutes legible

El caraacutecter de comentario en Lisp es Emacs ignora cualquier cosa que siga a uno deeacutestos a menos que aparezca dentro de una cadena literal como esta

estas dos liacuteneas son ignoradas por el inteacuterprete de Lisp pero la

sshyexpression que le sigue se evaluaraacute totalmente

(setq algunashycadenashyliteral Una pausa torpe sin ninguacuten propoacutesito)

Es una buena idea comentar sus cambios en los archivos Lisp porque seis meses despueacutes nose acordaraacute en queacute estaba pensando cuando los modificoacute Si el comentario aparece soacutelo enuna liacutenea preceacutedalo con dos punto y coma Esto ayuda a Emacs a indentar los archivosLisp correctamente

Puede encontrar informacioacuten sobre las variables internas de Emacs de las mismas formasque con las funciones Use |_Cshyh_v_| describeshyvariable para hacer una lista determinacioacuten automaacutetica o use |_Cshyh_Cshya_| apropos Apropos difiere de |_Cshyh_a_|commandshyapropos en que muestra variables y funciones en vez de solamente funciones

La extensioacuten por defecto para los archivos de Emacs Lisp es el como en cshymodeel Sinembargo para hacer que el coacutedigo Lisp se ejecute maacutes raacutepido Emacs permite que sea byteshycompiled (compilado a un formato interno) y estos archivos de coacutedigo Lisp compiladoterminan en elc en vez de el La excepcioacuten a esto es su archivo emacs que no necesitala extensioacuten el porque Emacs sabe buscarlo para arrancar

Para cargar un archivo de coacutedigo Lisp interactivamente use el comando Mshyx loadshyfile(cargar archivo) Le preguntaraacute por el nombre del archivo Para cargar archivos Lispdesde dentro de otros archivos Lisp haga esto

(load cshymode)fuerza a Emacs a cargar el contenido de cshymodeel o elc

Emacs antildeadiraacute la extensioacuten elc al nombre del archivo e intentaraacute encontrarlo en alguacutenlugar del loadshypath Si falla lo intenta con la extensioacuten el si falla esto usa lacadena literal tal y como es pasada a load Puede compilar (byteshycompile) un archivo conel comando Mshyx byteshycompileshyfile pero si modifica el archivo a menudo probablemente nomerezca la pena Sin embargo no deberiacutea compilar de esa manera su emacs ni siquieradarle la extensioacuten el

Despueacutes de que emacs se ha cargado Emacs busca un archivo llamado defaultel paracargarlo

Comuacutenmente se ubica en un directorio en la trayectoria de carga (loadshypath) llamado siteshylisp o localshyelisp o algo parecido (ver el ejemplo loadshypath que di hace un rato) Lagente que mantiene Emacs en un sistema multiusuario usa defaultel para hacer cambios queafectaraacuten los Emacs de todos puesto que todos los Emacs lo cargan despueacutes de los emacspersonales defaultel no deberiacutea ser compilado ya que tiende a ser modificadofrecuentemente

Si el emacs de una persona contiene alguacuten error Emacs no intentaraacute cargar defaultelsino que simplemente se detendraacute destellando un mensaje diciendo Error in init file(Error en el archivo de inicio) o algo similar Si ve este mensaje probablemente algovaya mal con su emacs

Hay un tipo maacutes de expresioacuten que a menudo va en un emacs La libreria de Emacs Lisp aveces ofrece muacuteltiples paquetes para hacer lo mismo de diferentes formas Esto significaque tiene que especificar cuaacutel quiere usar (o tendraacute el paquete por defecto que no essiempre el mejor para todos los propoacutesitos) Un aacuterea donde esto sucede es en lascaracteriacutesticas de interaccioacuten del Scheme de Emacs Hay dos interfaces diferentes deScheme distribuidos con Emacs (al menos en la versioacuten 19) xscheme y cmuscheme

promptgt ls usrlibemacs1919lispscheme

usrlibemacs1919lispcmuschemeel

usrlibemacs1919lispcmuschemeelc

usrlibemacs1919lispschemeel

usrlibemacs1919lispschemeelc

usrlibemacs1919lispxschemeel

usrlibemacs1919lispxschemeelc

Resulta que el interfaz ofrecido por cmuscheme me gusta mucho maacutes que el que ofrecexscheme pero el que Emacs usaraacute por defecto es xscheme iquestCoacutemo puedo hacer que Emacsactuacutee de acuerdo con mi preferencia Puse esto en mi emacs

note coacutemo la expresioacuten puede quebrarse en dos liacuteneas Lisp

ignora los espacios en blanco generalmente

(autoload runshyscheme cmuscheme

Corre un Scheme inferior de la forma que me gusta t)

La funcioacuten autoload (auto carga) toma el nombre de una funcioacuten (citada con porrazones que tienen que ver con coacutemo funciona Lisp) y le dice a Emacs que esta funcioacutenestaacute definida en un determinado archivo El archivo es el segundo argumento una cadena(sin la extensioacuten el o elc) indicando el nombre del archivo a buscar en la trayectoriade carga loadshypath

Los argumentos restantes son opcionales pero necesarios en este caso el tercerargumento es una cadena de documentacioacuten para la funcioacuten de modo que si llama adescribeshyfunction (describirshyfuncioacuten) consigue alguna informacioacuten uacutetil El cuartoargumento le dice a Emacs que esta funcioacuten autocargable puede ser llamadainteractivamente (esto es usando |_Mshyx_|) Esto es muy importante en este caso porqueuno deberiacutea poder teclear Mshyx runshyscheme para comenzar un proceso de scheme que seejecuta bajo Emacs

Ahora que runshyscheme ha sido definido como una funcioacuten autocargable iquestqueacute sucede cuandotecleo Mshyx runshyscheme Emacs mira la funcioacuten runshyscheme ve que estaacute establecida paraser autocargable y carga el archivo nombrado por la autocarga (en este caso cmuscheme)El archivo compilado cmuschemeelc existe asiacute que Emacs lo cargaraacute Ese archivo debedefinir la funcioacuten runshyscheme o habraacute un error de autocarga Por suerte define runshyscheme asiacute que todo va sin tropiezos y consigo mi interfaz preferida de Scheme10

Una autocarga es como una promesa a Emacs de que cuando llegue el momento puedeencontrar la funcioacuten especificada en el archivo en el que le dice que mire A cambioconsigue alguacuten control sobre lo que se carga Tambieacuten la autocarga ayuda a reducir eltamantildeo de Emacs en la memoria al no cargar ciertas caracteriacutesticas hasta que se pidan

Muchos comandos no estaacuten definidos realmente como funciones cuando Emacs se inicia Maacutesbien estaacuten simplemente preparados para autocargarse desde cierto archivo Si nuncainvoca el comando nunca se carga Este ahorro de espacio es vital para el funcionamientode Emacs si cargara todos los archivos disponibles en la biblioteca Lisp Emacs tomariacuteaveinte minutos simplemente para arrancar y una vez hecho podriacutea ocupar la mayor partede la memoria disponible en su maacutequina No se preocupe no tiene que establecer todasestas autocargas en su emacs ya se tomaron en cuenta cuando Emacs se desarrolloacute

814 Averiguando maacutes

No le he contado todo lo que se puede saber sobre Emacs De hecho no creo haberlecontado siquiera un 1 de lo que se puede saber sobre Emacs Aunque sabe suficiente paraproseguir todaviacutea hay montones de comodidades y trucos que ahorran tiempo que deberiacuteaaveriguar La mejor forma de hacerlo es esperar hasta que vea que necesita algo y buscarentonces una funcioacuten que lo haga

La importancia de estar coacutemodo con las facilidades de ayuda en liacutenea de Emacs no puedeenfatizarse lo suficiente Por ejemplo suponga que quiere poder insertar los contenidosde alguacuten archivo en un buffer que ya estaacute trabajando sobre un archivo diferente para queel buffer contenga a ambos Si intuyese que hay un comando llamado insertshyfile (insertararchivo) tendriacutea razoacuten Para verificar su acertada suposicioacuten teclee Cshyh f En elprompt del minibuffer introduzca el nombre de una funcioacuten sobre la que quiera ayudaPuesto que sabe que hay terminacioacuten automaacutetica en los nombres de funciones_y_puedesuponer que el comando que busca comienza con insert escriba insert y presiona|_Tab_| Esto le muestra todos los nombres de funcioacuten que comienzan con insert einsertshyfile es uno de ellos

De este modo completa el nombre de funcioacuten y lee sobre como trabaja y entonces usa Mshyxinsertshyfile_Si se estaacute preguntando si tambieacuten estaacute ligado a una tecla escribe Cshyh winsertshyfile |_Intro_| y averiacuteguumlelo Cuanto maacutes sepa de las facilidades de ayuda deEmacs maacutes faacutecilmente podraacute hacer preguntas a Emacs acerca de siacute mismo La capacidad dehacerlo combinada con un espiacuteritu de exploracioacuten y un deseo de aprender nuevas formas dehacer las cosas puede acabar por ahorrarle mucho tecleado

_____________________________________________

10 A propoacutesito cmuscheme era la interfaz de la que hablaba antes en la seccioacuten sobre eltrabajo con Scheme asiacute que si quiere usar algo de este manual necesita asegurarse deque ejecuta cmuscheme

Para pedir una copia del manual de usuario de Emacs (Emacs users manual) yo el manualde Programacioacuten en Emacs Lisp (Emacs Lisp Programming manual) debe escribir a

Free Software Foundation

675 Mass Ave

Cambridge MA 02139

USA

Ambos manuales se distribuyen electroacutenicamente con Emacs en una forma legible usando ellector de documentacioacuten Info (Cshyh i) pero puede encontrar maacutes faacutecil tratar con freewareque con las versiones en liacutenea Ademaacutes sus precios son bastantes razonables y el dinerova a una buena causa iexclsoftware gratuito de calidad En alguacuten momento deberiacutea teclear

Cshyh Cshyc para leer las condiciones de copyright de Emacs Es maacutes interesante de lo quepuede pensar y le ayudaraacute a aclarar el concepto de software libre Si cree que eltermino free software simplemente significa que el programa no cuesta nada por favoriexcllea el copyright en cuanto tenga tiempo

Capiacutetulo 9

iexclTengo que ser yo mismo

Si Dios hubiera sabido que necesitariacuteamos previsioacuten nos la habriacutea dado

91 Personalizacioacuten del bash

Una de las cosas que distinguen la filosofiacutea de Unix es que los disentildeadores de sistemasno intentaron predecir cada necesidad que los usuarios podriacutean tener en lugar de esointentaron hacer faacutecil para cada usuario individual la configuracioacuten del entorno a susnecesidades particulares Esto se consigue principalmente a traveacutes de ficheros deconfiguracioacuten Tambieacuten son conocidos como ficheros de inicio ficheros rc (por runcontrol control de arranque) o incluso ficheros punto (dot files) porque losnombres de los ficheros siempre empiezan con Recordemos que los ficheros queempiezan por no se visualizan normalmente con ls

Los ficheros de configuracioacuten maacutes importantes son los usados por el shell El shell pordefecto de Linux es el bash y eacuteste es el shell que cubre este capiacutetulo Antes de empezara explicar coacutemo personalizar el bash tenemos que saber cuales son los archivos que mira

911 Arranque del shell

Hay diferentes modos de funcionamiento del bash Puede funcionar como shell de ingresoque es el modo en que arranca cuando se ingresa por primera vez El shell de ingresodeberiacutea ser el primer shell que vea

Otro modo en que puede funcionar bash es como shell interactivo Este es un shell quepresenta un prompt a un humano y espera una entrada de datos Un shell de ingreso tambieacutenes un shell interactivo Una manera de conseguir un shell interactivo sin ingresar en elsistema es por ejemplo un shell dentro de xterm Cualquier shell que sea creado porotro medio distinto del ingreso registrado en el sistema es un shell de noshyingreso

Finalmente hay shells no interactivos Estos shells se usan para ejecutar un archivo decomandos muy parecidos a los ficheros de procesamiento por lotes del MSshyDOS losarchivos que acaban en BAT Estas macros de shell funcionan como minishyprogramas Aunqueson usualmente mucho maacutes lentos que un programa normal compilado suele ser ciertotambieacuten que son mucho maacutes faacuteciles de escribir Dependiendo del tipo de shell se usaraacutendistintos tipos de archivo al arrancarlo

Tipo de Shell Accioacuten

Ingreso interactivo Se lee y ejecuta el archivo bash_profile

Interactivo Se lee y ejecuta el archivo bashrc

No_interactivo Se lee y ejecuta la macro de shell

912 Ficheros de arranque

Como muchos usuarios quieren tener mayormente el mismo entorno sin importar que tipo deshell interactivo acaben teniendo y sea o no un shell de ingreso empezaremos nuestraconfiguracioacuten poniendo un comando muy simple en nuestro archivo bash_profile source~bashrc El comando source ordena al shell que interprete el argumento como una macrode shell Lo que significa para nosotros es que cada vez que bash_profile se ejecutatambieacuten se ejecuta bashrc Ahora soacutelo antildeadiremos comandos a nuestro archivo bashrc Sialguna vez queremos que se ejecute un comando uacutenicamente cuando hemos hecho un ingresoregistrado lo antildeadiremos a nuestro bash_profile

913 Creando alias

iquestCuales son algunas de las cosas que interesariacutea personalizar Esto es algo que creo queel 90 de los usuarios de Bash han puesto en su bashrc

alias ll=ls shyl

Este comando define un alias de shell llamado ll que expande el comando normal de shellls shyl cuando se invoca por el usuario De modo que asumiendo que Bash ha leiacutedo estecomando del fichero bashrc podemos teclear ll para conseguir el efecto de ls__shyl_ consolo la mitad de pulsaciones Lo que ocurre es que cuando tecleamos ll y pulsamos|_Intro_| Bash lo intercepta lo reemplaza por ls shyl y ejecuta eacuteste en su lugar Nohay ninguacuten programa llamado ll en el sistema pero el shell automaacuteticamente traduce elalias a un programa vaacutelido

Hay algunos alias de ejemplo en la figura 913 Puede ponerlos en su propio bashrc Unoespecialmente interesante es el primero Con eacutel cada vez que alguien teclea ls automaticamente tiene una opcioacuten shyF antildeadida (El alias no intenta expandirse a siacute mismootra vez) Este es un modo muy comuacuten de antildeadir opciones que se usan constantemente alllamar a un programa

Noacutetese los comentarios con el caracter en la figura 913 Cada vez que aparece un el shell ignora el resto de la liacutenea

Quizaacute haya notado unas cuantas cosas sueltas sobre los ejemplos Primero me he dejadolas comillas en algunos de los alias como pu Estrictamente hablando las comillas no sonnecesarias cuando soacutelo se tiene una palabra a la derecha del signo igual

Figura 91 Algunos alias de ejemplo para bash

Alias Comentario

alias ls=ls shyF

alias ll=ls shyl

alias la=ls shya

alias ro=rm ~ rm ~

alias rd=rmdir

alias md=mkdir

alias pu=pushd

muestra los caracteres al final del listado

ls especial

este borra las copias de seguridad creadas por Emacs

ahorra teclas

pushd popd y dirs no estan incluidos en este

alias po=popd

alias ds=dirs

manualshyshyshyquiza quiera echarles un vistazo

en la pagina man de Bash

alias to=telnet csoberlinedu

alias ta=telnet altairmcsanlgov

alias tg=telnet wombatgnuaimitedu

alias tko=tpalk koldcsoberlinedu

alias tjo=talk jimbcsoberlinedu

alias mroe=more

alias moer=more

alias email=emacs shyf rmail

alias ed2=emacs shyd floss0 shyfg grey95shybg grey50

estos solo son atajos de teclado

correcion ortografica

mi lector de correo

asi llamo a Emacs

Pero no hace dantildeo poner comillas asiacute que no me dejeacuteis crearos malos haacutebitos Ciertamentehabraacute que usarlas si se va a crear un alias de un comando con opciones yo argumentos

alias rf=refrobnicate shyverbose shyprolix shywordy shyo fooout

Ademaacutes el uacuteltimo alias tiene alguacuten entrecomillado gracioso

alias ed2=emacs shyd floss0 shyfg grey95 shybg grey50

Como es faacutecil suponer he querido pasar entrecomillados dentro de las opciones asiacute quetengo que anteponerles una contrabarra para que bash no crea que ya ha llegado al finaldel alias

Finalmente he creado dos alias de dos errores de escritura comunes mroe y moerapuntando al comando que pretendiacutea escribir more Los alias no interfieren con el pasode argumentos a un programa Lo siguiente funciona bien

homelarry$ mroe hurdtxt

De hecho saber como crear sus propios alias es probablemente por lo menos la mitad delas personalizaciones que haraacute jamaacutes Experimente un poco descubra cuaacuteles son loscomandos largos que teclea frecuentemente y cree alias para ellos De esta manera leresultaraacute maacutes confortable trabajar con el prompt del shell

914 Variables de entorno

Otra cosa que uno hace frecuentemente en bashrc es definir variables de entorno Y gtqueacuteson las variables de entorno Vamos a mirarlo desde otra direccioacuten Supongamos que estaacuteleyendo la documentacioacuten del programa fruggle y se encuentra con una de estasexpresiones

Fruggle normalmente busca su fichero de configuracioacuten frugglerc en el directorio raiacutezdel usuario Sin embargo si la variable de entorno FRUGGLEPATH indica un nombre dearchivo diferente miraraacute ahiacute en su lugar

Cada programa se ejecuta en un entorno y ese entorno es definido por el shell que llamoacuteal programa1 Se puede decir que el entorno existe dentro del shell Los programadorestienen una rutina especial para interrogar al entorno y el programa fruggle usa esarutina Comprueba el valor de la variable de entorno FRUGGLEPATH Si esa variable no estaacutedefinida sencillamente usaraacute el archivo frugglerc del directorio raiacutez Si estaacutedefinida usaraacute el valor de esa variable (que debe ser el nombre de un archivo quefruggle pueda usar) en lugar del archivo por defecto frugglerc Asiacute es como se puedecambiar el entorno en bash

homelarry$ export PGPPATH=homelarrysecretspgp

Hay que pensar en el comando export con este significado Por favor exporta estavariable fuera del entorno donde estareacute llamando programas de modo que su valor seavisible para ellos Realmente hay razones para llamarlo export como se veraacute despueacutes

Esta variable en particular es usada por el infame programa de encriptacioacuten medianteclave puacuteblica de Phil Zimmerman pgp Por defecto pgp usa el directorio raiacutez como lugarpara encontrar determinados archivos que necesita (que contienen claves de encriptacioacuten)y tambieacuten un lugar para guardar archivos temporales que crea mientras estaacute en marcha Aldarle este valor a la variable PGPPATH le he dicho que use el directoriohomelarrysecretspgp en lugar de homelarry

He tenido que leer el manual de pgp para encontrar el nombre exacto de la variable y loque hace pero es bastante estaacutendar el uso del nombre del programa en mayuacutesculas seguidodel sufijo PATH Tambieacuten es uacutetil saber como preguntar al entorno

homelarry$ echo $PGPPATH

homelarrypgp

homelarry$

Noacutetese el $ se precede la variable de entorno con un signo de doacutelar para extraer elvalor de la variable Si lo hubiera escrito sin el signo de doacutelar echo simplementehabriacutea mostrado su(s) argumento(s)

homelarry$ echo PGPPATH

PGPPATH

homelarry$

El $ se usa para evaluar variables de entorno pero soacutelo lo hace dentro del contextodel shell o sea cuando el shell estaacute interpretando iquestCuando estaacute el shellinterpretando Bueno cuando se escriben comandos en el prompt o cuando bash estaacuteleyendo comandos de un archivo como bashrc se puede decir que estaacute interpretando loscomandos

_____________________________________________

1 Ahora se puede comprobar porqueacute los shells son tan importantes ltNo hay que andarpasando un entorno completo a mano cada vez que se llame a un programa

Figura 92 Algunas variables de entorno importantes

Nombre Contenido Ejemplo

HOME Directorio principal del usuario homelarry

TERM Tipo de terminal del usuario xterm vt100 o console

SHELL Path del shell del usuario binbash

USER Nombre de ingreso larry

PATH Lista de buacutesqueda de programas binusrbinusrlocalbinusrbinX11

Hay otro comando muy uacutetil para preguntar al entorno env env ensentildearaacute un listado detodas las variables de entorno Es posible especialmente si se usa X que la lista sesalga de la pantalla

Si esto ocurre hay que canalizar env a traveacutes de more env _ more

Unas cuantas de estas variables pueden ser muy uacutetiles asiacute que las comentaremos Mire laFigura 914 Estas cuatro variables estaacuten definidas automaacuteticamente cuando se ingresa enel sistema no se definen en bashrc o bash_login

Vamos a echar un vistazo maacutes de cerca a la variable TERM Para comprenderla vamos amirar hacia atraacutes en la historia del Unix El sistema operativo necesita conocer ciertosdatos sobre su consola para poder realizar funciones baacutesicas como escribir un caraacutecteren la pantalla mover el cursor a la liacutenea siguiente etc En los primeros diacuteas de losordenadores los fabricantes estaban continuamente antildeadiendo nuevas caracteriacutesticas a susterminales primero el viacutedeo inverso luego quizaacutes juegos de caracteres europeoseventualmente incluso primitivas funciones de dibujo (hay que recordar que eacutestos eran lostiempos anteriores a los sistemas de ventanas y el ratoacuten) Pero todas estas funcionesrepresentaban un problema para los programadores iquestCoacutemo iban a saber lo que un terminalpodiacutea soportar y lo que no Y iquestcoacutemo podiacutean emplear nuevas caracteriacutesticas sin convertirlos viejos terminales en inservibles

En Unix la respuesta a estas cuestiones fue etctermcap etctermcap es una lista detodos los terminales que un sistema conoce y como controlan el cursor Si unadministrador de sistema consigue un terminal nuevo todo lo que tiene que hacer esantildeadir una entrada para ese terminal en etctermcap en lugar de recompilar todo el UnixA veces es incluso maacutes simple Al pasar el tiempo el vt100 de Digital EquipmentCorporation se convirtioacute en un pseudoshyestaacutendar y muchos nuevos terminales fueronconstruidos para que pudieran emularlo o comportarse como si fueran un vt100

Bajo Linux el valor de TERM es a veces console un cloacutenico de vtshy100 con algunascaracteriacutesticas antildeadidas

Otra variable PATH es tambieacuten crucial para el funcionamiento correcto del shell Aquiacuteestaacute la miacutea

homelarry$ env _ grep ^PATH

PATH=homelarrybinbinusrbinusrlocalbinusrbinX11usrTeXbin

homelarry$

El PATH es una lista separada por el caraacutecter dos puntos de los directorios dondeel shell buscaraacute el nombre del programa a ejecutar Cuando yo tecleo ls y pulso|_Intro_| por ejemplo Bash primero busca en homelarrybin un directorio que he hechopara guardar los programas que escribo Pero yo no he escrito ls (de hecho iexclcreo que seescribioacute antes de que yo naciera) Como no lo encuentra en homelarrybin Bash miradespueacutes en bin iexcly ahiacute hay una coincidencia binls existe y es ejecutable de modo queBash deja de buscar un programa llamado ls y lo arranca Podriacutea haber habidoperfectamente otro ls esperando en el directorio usrbin pero bash nunca lo ejecutaraacutesi no lo pido especificando una ruta de directorios expliacutecita

homelarry$ usrbinls

La variable PATH existe para no tener que teclear rutas de directorio completas para cadacomando Cuando se escribe un comando Bash lo busca en los directorios nombrados en elPATH en orden y si lo encuentra lo ejecuta Si no lo encuentra devuelve un descorteacutesmensaje de error

homelarry$ clubly

clubly command not found

Notar que en mi PATH no existe el directorio actual Si estuviera tendriacutea esteaspecto

homelarry$ echo $PATH

homelarrybinbinusrbinusrlocalbinusrbinX11usrTeXbin

homelarry$

Esto es asunto de debate en los ciacuterculos de Unix (de los cuales ahora es miembro leguste o no) El problema es que tener el directorio actual en el path puede ser unagujero en la seguridad Supongamos que entramos en un directorio en el que alguien hadejado un Caballo de Troya llamado ls y hacemos un ls como es natural despueacutes deentrar en un directorio nuevo Como el directorio actual viene primero en nuestroPATH el shell encontraraacute esta versioacuten de ls y la ejecutaraacute Sea cual sea el dantildeo quehayan puesto en ese programa lo acabamos de activar (y puede ser un montoacuten de dantildeo)Quien fuera no necesita permisos de root para hacerlo soacutelo hace falta permisos deescritura en el directorio donde se encuentra el falso ls Incluso podriacutea ser su propiodirectorio home si sabe que vamos a estar husmeando por ahiacute en alguacuten momento

En su propio sistema es muy improbable que las personas se esteacuten dejando trampas unas aotras Pero en un gran sistema multiusuario (como muchos ordenadores de universidades)hay un montoacuten de programadores hostiles con los que nunca se ha encontrado Que quieratentar a la suerte o no teniendo en el path depende de la situacioacuten no voy a serdogmaacutetico en ninguacuten sentido soacutelo quiero informar de los riesgos impliacutecitos2 Lossistemas multiusuario son verdaderas comunidades donde la gente puede hacerles cosas alos demaacutes en todo tipo de maneras nunca vistas

El modo en que he dejado mi PATH incluye la mayoriacutea de lo que se ha aprendido hasta ahorasobre variables de entorno Esto es lo que hay actualmente en mi bashrc

export PATH=$shyPATH$shyHOMEbinbinusrbinusrlocalbinusrbinX11usrTeXbin

_____________________________________________

2 Recueacuterdese que siempre se puede ejecutar un programa en el directorio actual siendoexpliacutecito pej foo

Me aprovecho de que la variable HOME se activa antes de que Bash lea el fichero bashrcusando su valor en la construccioacuten del PATH Las llaves () son un nivel antildeadido decita delimitan el tamantildeo de lo que va a evaluar $ de modo que el shell no se confundapor culpa del texto inmediatamente posterior (bin en este caso) Aquiacute hay otro ejemplodel efecto que tienen

homelarry$ echo $shyHOMEfoo

homelarryfoo

homelarry$

Sin las llaves no connseguiriacutea nada porque no hay ninguna variable de entorno llamadaHOMEfoo

homelarry$ echo $HOMEfoo

homelarry$

Quisiera aclarar una cosa en este path el significado de $PATH Lo que hace es incluirel valor de cualquier variable PATH previamente activada en mi nuevo PATH iquestDoacutende sehabraacute activado la variable anterior El archivo etcprofile sirve como una especie debash_profile global comuacuten a todos los usuarios Tener un archivo centralizado como estehace maacutes sencillo para el administrador del sistema antildeadir un directorio nuevo al PATH detodo el mundo sin que cada uno tenga que hacerlo individualmente Si se incluye el pathantiguo en el nuevo no se perderaacuten ninguno de los directorios que el sistema ya hayapreparado

Tambieacuten se puede controlar como aparece el prompt Esto se consigue mediante la variablede entorno PS1 Personalmente quiero un prompt que me indique el path del directorioactual asiacute es como lo hago en mi bashrc

export PS1=$PWD$

Como se puede ver en realidad se usan dos variables La que se activa es PS1 y toma elvalor de PWD que puede ser interpretada como Print Working Directory (imprime eldirectorio de trabajo) o Path to Working Directory(trayectoria al directorio detrabajo) Pero la evaluacioacuten de PWD tiene lugar entre apoacutestrofos agudos Estos apoacutestrofossirven para evaluar la expresioacuten en su interior la cual a su vez evaluacutea la variable PWDSi soacutelo hubieacuteramos hecho export PS1=$PWD nuestro prompt nos habriacutea mostradoconstantemente el path del directorio de trabajo en el momento en que PS1 fue activadaen lugar de actualizarse constantemente mientras cambiamos de directorios Bueno es unpoco confuso y no muy importante en realidad Soacutelo hay que tener en cuenta que senecesita esa clase de apoacutestrofos si se quiere mostrar el directorio actual en el prompt

Quizaacute se prefiera export PS1=$PWDgt o incluso el nombre del sistema

export PS1=`hostname`gt

Diseccionemos este ejemplo un poco maacutes Aquiacute se usa un nuevo tipo de literal elapoacutestrofo grave Esta clase de literal no protege nada de hecho hostname no apareceen ninguna parte del prompt cuando intentamos arrancarlo Lo que sucede realmente es quese evaluacutea el comando dentro de los apoacutestrofos graves y el resultado se guarda en lugardel nombre del comando entrecomillado

Probemos con echo `ls` o wc `ls` A medida que se consiga maacutes experiencia usando elshell esta teacutecnica se hace maacutes y maacutes potente

Hay mucho maacutes por comentar de como se configura el fichero bashrc y aquiacute no haybastante espacio para hacerlo Se puede aprender maacutes leyendo la paacutegina man de bash opreguntando a usuarios experimentados Aquiacute hay un bashrc completo para poderestudiarlo es razonablemente estaacutendar aunque el path es un poco largo

Algunas cosas al azar

ulimit shyc unlimited

export history_control=ignoredups

export PS1=$PWDgt

umask 022

paths especiacuteficos de aplicaciones

export MANPATH=usrlocalmanusrman

export INFOPATH=usrlocalinfo

export PGPPATH=$shyHOMEpgp

PATH principal

homepath=$shyHOME~bin

stdpath=binusrbinusrlocalbinusrucbetcusretcusrgames

pubpath=usrpublicbinusrgnusoftbinusrlocalcontribsbin

softpath=usrbinX11usrlocalbinX11usrTeXbin

export PATH=$shyhomepath$shystdpath$shypubpath$shysoftpath

Teacutecnicamente las llaves no eran necesarias porque los dos puntos son

delimitadores vaacutelidos pero las llaves son una buena costumbre

y no hacen dantildeo

alias

alias ls=ls shyCF

alias fg1=fg 1

alias fg2=fg 2

alias tba=talk sussmanternmcsanlgov

alias tko=talk koldcsoberlinedu

alias tji=talk jimbtotorobioindianaedu

alias mroe=more

alias moer=more

alias email=emacs shyf vm

alias pu=pushd

alias po=popd

alias b=~b

alias ds=dirs

alias ro=rm ~ rm ~

alias rd=rmdir

alias ll=ls shyl

alias la=ls shya

alias rr=rm shyr

alias md=mkdir

alias ed2=emacs shyd floss0 shyfg grey95 shybg grey50

function gco

shy

gcc shyo $1 $1c shyg

92 Los ficheros de inicio de X Window

Mucha gente prefiere trabajar dentro de un entorno graacutefico y para las maacutequinas bajo Unixeso suele significar usar X Si se estaacute acostumbrado al Macintosh o al Microsoft Windowspuede costar un poco acostumbrarse al sistema X Window especialmente al modo en que seconfigura

Con Macintosh o Microsoft Windows se personaliza el entorno desde dentro si se quierecambiar el fondo por ejemplo se pulsa con el ratoacuten sobre el nuevo color en alguacutenprograma graacutefico especial de configuracioacuten En X las opciones por defecto del sistema secontrolan mediante ficheros de texto que se editan directamente en otras palabras seescribe el nombre del color en un fichero para cambiar el color del fondo

No se puede negar que este meacutetodo no es tan llano como el de algunos sistemas de ventanascomerciales Creo que esta tendencia a permanecer basado en texto incluso en un entornograacutefico tiene mucho que ver con el hecho de que X fueacute creado por un puntildeado deprogramadores que simplemente no estaban tratando de escribir un software que pudieranusar sus abuelos Esta tendencia puede cambiar en futuras versiones de X (por lo menosasiacute lo espero3) pero por ahora hay que aprender como entenderse con unos cuantosficheros de texto maacutes Por lo menos nos da un control muy flexible y preciso de nuestraconfiguracioacuten

Aquiacute estaacuten los ficheros maacutes importantes para configurar X

xinitrc Un script arrancado por X cuando se inicia

twmrc Leido por el gestor de X Window twm

fvwmrc Leido por el gestor de X Window fvwm

Todos estos ficheros deberiacutean estar en el directorio $HOME si es que existen

xinitrc es una macro de shell muy simple que se ejecuta cuando invocamos a X Puedehacer cualquiera de las cosas que pueden hacer otras macros de shell pero por supuestosu uso principal es arrancar varios programas de X y establecer paraacutemetros del sistema deventanas El uacuteltimo comando en xinitrc es usualmente el nombre de un gestor de ventanasa ejecutar por ejemplo usrbinX11twm

iquestQueacute tipo de cosas nos gustariacutea poner en xinitrc Quizaacute algunas llamadas al programaxsetroot para hacer que la ventana de fondo (escritorio) y el ratoacuten tengan el aspectoque deseamos Llamadas a xmodmap que informa al servidor4 de como interpretar lassentildeales del teclado

_____________________________________________

3 N del T Yo tambieacuten shy)

4 El servidor soacutelo se refiere al proceso principal en la maacutequina con el que todos losdemaacutes programas de X tienen que comunicar para usar la pantalla Estos otros programas seconocen como clientes y todo el paquete se llama sistema clienteshyservidor

O cualquier otro programa que se quiera iniciar cada vez que se arranque X (por ejemploxclock) Aquiacute estaacute una parte de mi xinitrc el suyo seguramente seraacute distinto asiacute quehay que tomaacuterselo soacutelo como ejemplo

binsh

La primera liacutenea le dice al sistema operativo que shell usar para

interpretar esta macro La macro en siacute misma debe estar marcada como

ejecutable se puede hacer con chmod +x ~xinitrc

xmodmap es un programa que informa al servidor X de como interpretar las

sentildeales del teclado Es definitivamente aconsejable aprender como

funciona Se puede probar con man xmodmap xmodmap shyhelp

xmodmap shygrammar y otras opciones

No garantizo que las expresiones abajo escritas signifiquen nada en tu

sistema (ni siquiera garantizo que signifiquen algo en el miacuteo)

xmodmap shye clear Lock

xmodmap shye keycode 176 = Control_R

xmodmap shye add control = Control_R

xmodmap shye clear Mod2

xmodmap shye add Mod1 = Alt_L Alt_R

xset es un programa para establecer otros paraacutemetros del servidor X

xset m 3 2 amp paraacutemetros del ratoacuten

xset s 600 5 amp preferencias del salvapantallas

xset s noblank amp lo mismo

xset fp+ homelarryxfonts para cxterm

Para aprender maacutes xset shyhelp

Ordena al servidor X que sobreponga fishcursor sobre fishmask y use

el patroacuten resultante como cursor del ratoacuten

xsetroot shycursor homelablarryxfishcursor homelablarryxfishmask amp

Un placentero patroacuten y color de fondo

xsetroot shybitmap homelablarryxpyramidxbm shybg tan

para hacer xrdb aquiacute Y que hay del fichero Xdefaults

Hay que mirar man xsetroot o xsetroot shyhelp para maacutes

informacioacuten sobre el programa usado arriba

Un programa cliente el imponente reloj circular de color de Jim Blandy

usrlocalbincircles amp

Quizaacute os gustariacutea tener un reloj en la pantalla a todas horas

usrbinX11xclock shydigital amp

Permite a programas cliente de X ejecutaacutendose en occscsoberlinedu

mostrarse a siacute mismos aquiacute y lo mismo para jujumcsanlgov

xhost occscsoberlinedu

xhost jujumcsanlgov

Se puede simplemente decirle al servidor X que permita usar aquiacute

a clientes que esteacuten ejecutaacutendose en cualquier otra maacutequina

pero esto es un agujero en la seguridad shyshy ltestos clientes pueden ser

usados por cualquier otro que puede vigilar lo que se teclea cuando se

entra una contrasentildea o algo asiacute

Si se quiere hacerlo de todos modos se puede usar un + para indicar

cualquier nombre de host posible en lugar de un nombre especiacutefico

asiacute

xhost +

Y finalmente arrancar el gestor de ventanas

usrbinX11twm

Alguna gente prefiere otros gestores de ventanas Yo uso twm pero fvwm se

distribuye tambieacuten muchas veces con Linux

usrbinX11fvwm

Noacutetese que algunos comandos son iniciados en segundo plano (pej los que van seguidosde amp) mientras que otros no lo son La distincioacuten estaacute en que algunos programas seiniciaraacuten cuando arranquemos X y seguiraacuten en marcha hasta que salgamos Los otros seejecutan una vez y se cierran inmediatamente xsetroot es uno de eacutestos soacutelo establece laventana principal o el cursor a lo que sea y luego se cierra

Una vez que el gestor de ventanas ha arrancado leeraacute su propio fichero de inicio quecontrola cosas como la composicioacuten de los menuacutes en queacute posiciones se presentan lasventanas cuando se abren control de iconos y otros asuntos terriblemente importantesSi se usa twm el fichero es twmrc en nuestro directorio home Si se usa fvwm elfichero es fvwmrc etc Explicaremos soacutelo estos dos ya que son los gestores de ventanasque maacutes frecuentemente se encontraraacuten con Linux

921 Configuracioacuten de twm

twmrc no es una macro de shell_estaacute escrito en un lenguaje especialmente hecho para twmiexclcreacutealo o no5 Principalmente a la gente en su twmrc le gusta jugar con los estilos dela ventana (colores y demaacutes) y hacer interesantes menuacutes asiacute que ahiacute va un twmrc deejemplo

Indica colores para varias partes de una ventanas Tiene un gran impacto

en la sensacioacuten que transmite el entorno

Color

shy

BorderColor OrangeRed

BorderTileForeground Black

BorderTileBackground Black

TitleForeground black

TitleBackground gold

MenuForeground black

MenuBackground LightGrey

MenuTitleForeground LightGrey

MenuTitleBackground LightSlateGrey

MenuShadowColor black

IconForeground DimGray

IconBackground Gold

IconBorderColor OrangeRed

IconManagerForeground black

IconManagerBackground honeydew

Espero que no tengas un sistema monocromo pero si lo tienes

Monochrome

shy

BorderColor black

BorderTileForeground black

BorderTileBackground white

TitleForeground black

TitleBackground white

He creado beifangbmp con el programa bitmap Aquiacute le digo a twm

que lo use como el patroacuten por defecto para destacar las barras de

tiacutetulo de las ventanas

Pixmaps

shy

TitleHighlight homelarryxbeifangbmp

No os preocupeacuteis por estas cosas son soacutelo para usuarios avanzados shy)

BorderWidth 2

TitleFont shyadobeshynew century schoolbookshyboldshyrshynormalshyshy14shy140shy75shy75shypshy87shyiso8859shy1

MenuFont 6x13

IconFont lucidasansshyitalicshy14

ResizeFont fixed

Zoom 50

RandomPlacement

Estos programas no tendraacuten una barra de tiacutetulo por defecto

NoTitle

shy

stamp

xload

xclock

xlogo

xbiff

xeyes

oclock

xoid

AutoRaise significa que una ventana aparece al frente cuando el ratoacuten

entra en ella Lo encuentro desconcertante asiacute que lo he desactivado

Como puedes ver he heredado mi twmrc de otra gente a quien tampoco le

gustaba Autoraise

AutoRaise

shy

nothing No me gusta autoshyraise Ni a mi A mi tampoco

Aquiacute es donde se define la funcioacuten de los botones del mouse

Noacutetese el patroacuten Un botoacuten del ratoacuten pulsado en la ventana

principal si no se estaacute pulsando ninguna tecla modificadora siempre

hace aparecer un menuacute Otras posiciones usualmente producen

modificaciones de la ventana en alguacuten modo y las teclas modificadoras

se usan junto con los botones del ratoacuten para acceder a las funciones

maacutes avanzadas de manipulacioacuten de ventanas

No hay porqueacute seguir este patroacuten en twmrc shyshy el coacutemo

establecer el entorno es un asunto totalmente personal

Button = KEYS CONTEXT FUNCTION

shyshyshyshyshyshyshyshyshyshyshyshyshyshyshyshyshyshyshyshyshyshyshyshyshyshyshyshyshyshyshyshyshyshy

Button1 = root fmenu main

Button1 = title fraise

Button1 = frame fraise

Button1 = icon ficonify

Button1 = m window ficonify

Button2 = root fmenu stuff

Button2 = icon fmove

Button2 = m window fmove

Button2 = title fmove

Button2 = frame fmove

Button2 = s frame fzoom

Button2 = s window fzoom

Button3 = root fmenu x

Button3 = title flower

Button3 = frame flower

Button3 = icon fraiselower

Puedes escribir tus propias funciones esta se usa en el menuacute

windowops cerca del final de este fichero

Function raiseshynshyfocus

shy

fraise

ffocus

Muy bien abajo estaacuten los menuacutes a los que me referiacutea en la

seccioacuten de los botones del ratoacuten Noacutetese que muchas de estas

entradas de menuacute llaman a submenuacutes a su vez Se pueden tener tantos

niveles como se quiera pero no se pueden tener menuacutes recursivos Ya

lo he probado

menu main

shy

Vanilla ftitle

Emacs fmenu emacs

Logins fmenu logins

Xlock fmenu xlock

Misc fmenu misc

Esto me permite llamar a emacs desde varias maacutequinas diferentes Ver

la seccioacuten sobre ficheros rhosts para maacutes informacioacuten sobre

como funciona

menu emacs

shy

Emacs ftitle

here usrbinemacs amp

fnop

phylo rsh phylo emacs shyd floss0 amp

geta rsh geta emacs shyd floss0 amp

darwin rsh darwin emacs shyd floss0 amp

ninja rsh ninja emacs shyd floss0 amp

indy rsh indy emacs shyd floss0 amp

oberlin rsh csoberlinedu emacs shyd flosslifeuiucedu0 amp

gnu rsh gateshy1gnuaimitedu emacs shyd flosslifeuiucedu0 amp

Esto me permite llamar a xterms desde varias maacutequinas diferentes Ver

la seccioacuten sobre ficheros rhosts para maacutes informacioacuten sobre

como funciona

menu logins

shy

Logins ftitle

here usrbinX11xterm shyls shyT `hostname` shyn `hostname` amp

phylo rsh phylo xterm shyls shydisplay floss0 shyT phylo amp

geta rsh geta xterm shyls shydisplay floss0 shyT geta amp

darwin rsh darwin xterm shyls shydisplay floss0 shyT darwin amp

ninja rsh ninja xterm shyls shydisplay floss0 shyT ninja amp

indy rsh indy xterm shyls shydisplay floss0 shyT indy amp

El salvapantallas xlock llamado con varias opciones (cada una de

ellas da una bonita imagen)

menu xlock

shy

Hop xlock shymode hop amp

Qix xlock shymode qix amp

Flame xlock shymode flame amp

Worm xlock shymode worm amp

Swarm xlock shymode swarm amp

Hop NL xlock shymode hop shynolock amp

Qix NL xlock shymode qix shynolock amp

Flame NL xlock shymode flame shynolock amp

Worm NL xlock shymode worm shynolock amp

Swarm NL xlock shymode swarm shynolock amp

Programas de todo tipo que uso ocasionalmente

menu misc

shy

Xload usrbinX11xload amp

XV usrbinX11xv amp

Bitmap usrbinX11bitmap amp

Tetris usrbinX11xtetris amp

Hextris usrbinX11xhextris amp

XRoach usrbinX11xroach amp

Analog Clock usrbinX11xclock shyanalog amp

Digital Clock usrbinX11xclock shydigital amp

Esto es para lo que uso el botoacuten central del ratoacuten

menu stuff

shy

Chores ftitle

Sync binsync

Who who _ xmessage shyfile shy shycolumns 80 shylines 24 amp

Xhost + usrbinX11xhost + amp

Rootclear homelarrybinrootclear amp

Funciones de X que a veces conviene usar

menu x

shy

X Stuff ftitle

Xhost + xhost + amp

Refresh frefresh

Source twmrc ftwmrc

(De)Iconify ficonify

Move Window fmove

Resize Window fresize

Destroy Window fdestroy

Window Ops fmenu windowops

fnop

Kill twm fquit

Este es un submenuacute del de arriba

menu windowops

shy

Window Ops ftitle

Show Icon Mgr fshowiconmgr

Hide Icon Mgr fhideiconmgr

Refresh frefresh

Refresh Window fwinrefresh

twm version fversion

Focus on Root funfocus

Source twmrc ftwmrc

Cut File fcutfile

(De)Iconify ficonify

DeIconify fdeiconify

Move Window fmove

ForceMove Window fforcemove

Resize Window fresize

Raise Window fraise

Lower Window flower

Raise or Lower fraiselower

Focus on Window ffocus

RaiseshynshyFocus ffunction raiseshynshyfocus

Destroy Window fdestroy

Kill twm fquit

_____________________________________________

5 Eacuteste es uno de los problemas de los ficheros de configuracioacuten normalmente usan supropio lenguaje de comandos Esto significa que los usuarios se vuelven muy buenos a lahora de aprender lenguajes nuevos raacutepidamente Supongo que habriacutea estado bien que losprimeros programadores de Unix se hubieran puesto de acuerdo en alguacuten estaacutendar de ficherode inicio pero para ser justo es difiacutecil de predecir que tipo de informacionesnecesitaraacuten los programas

iexclGuau Creedme este no es el twmrc maacutes largo que he llegado a ver Es probable que convuestra versioacuten de X vinieran algunos ejemplos de archivos twmrc bastante decentes Sepueden buscar dentro del directorio usrlibX11twm o en usrX11libX11twm

Un defecto de programa que hay que vigilar en los ficheros twmrc es no olvidarse deponer el amp despueacutes de un comando en un menuacute Si se nota que X se cuelga cuando se usanciertos comandos lo maacutes probable es que eacutesta sea la causa Hay que salir de X con|_Ctrl_|shy|_Alt_|shy|_Retroceso_| editar twmrc y probar otra vez

922 Configuracioacuten de fvwm

Si se usa fvwm el directorio usrlibX11fvwm (o usrX11libX11fvwm) tiene algunosejemplos de ficheros de configuracioacuten

[Compantildeeros No seacute nada sobre fvwm aunque supongo que sacareacute algo en claro de losficheros de ejemplo igual que el lector shy) Ademaacutes dado el pequentildeo pero decentesystemtwmrc en el directorio arriba mencionado me pregunto si vale la pena que de estelargo ejemplo con mi propio twmrc De momento estaacute aquiacute pero no seacute si lo dejaremos onoshyKarl]

93 Otros ficheros de inicio

Otros ficheros de inicio dignos de mencioacuten son

emacs Leiacutedo por el editor de texto Emacs cuando arranca

netrc Da los nombres y contrasentildeas por defecto para ftp

rhosts Hace una cuenta accesible remotamente

forward Para redireccioacuten automaacutetica del correo

931 El fichero de configuracioacuten de Emacs

Si se usa emacs como editor principal entonces el fichero emacs es muy importante Sediscute con extensioacuten en el Capiacutetulo 8

932 Configuracioacuten por defecto del FTP

El fichero netrc permite tener ciertas configuraciones por defecto cada vez que searranca ftp Aquiacute hay un pequentildeo netrc de ejemplo

machine flosslifeuiucedu login larry password fishSticks

machine darwinlifeuiucedu login larry password fishSticks

machine getalifeuiucedu login larry password fishSticks

machine phylolifeuiucedu login larry password fishSticks

machine ninjalifeuiucedu login larry password fishSticks

machine indylifeuiucedu login larry password fishSticks

machine clonemcsanlgov login fogel password doorm

machine ospreymcsanlgov login fogel password doorm

machine ternmcsanlgov login fogel password doorm

machine altairmcsanlgov login fogel password doorm

machine dalekmcsanlgov login fogel password doorm

machine jujumcsanlgov login fogel password doorm

machine sunsiteuncedu login anonymous password larrycsoberlinedu

Cada liacutenea de netrc especifica un nombre de maacutequina un nombre de cuenta de acceso ausar por defecto con esa maacutequina y una contrasentildea Esto es muy uacutetil si se usa ftpcontinuamente y se estaacute harto de teclear el nombre de acceso y la contrasentildea en cada unoEl programa de ftp intentaraacute acceder automaacuteticamente usando los datos del fichero netrcsi se hace ftp a una de las maacutequinas listadas alliacute

Se puede obligar a ftp a ignorar el fichero netrc y no intentar acceder de maneraautomaacutetica arrancaacutendolo con la opcioacuten shyn ftp shyn

Hay que asegurarse de que el fichero netrc soacutelo es legible por el usuario Se puede usarel programa chmod para establecer los permisos de lectura Si otra gente puede leerlosignifica que pueden encontrar su contrasentildea de acceso a varios otros ordenadores Estoes un agujero en la seguridad tan grande como uno pueda tenerlo Como recomendacioacuten paraser cuidadoso ftp y otros programas que miran el fichero netrc no funcionaraacuten si lospermisos de lectura del fichero son incorrectos

Hay mucho maacutes sobre el fichero netrc de lo que se ha explicado aquiacute Cuando se tenga unaoportunidad hay que probar man netrc o man ftp

933 Permitiendo un acceso remoto sencillo a su cuenta

Si tiene un fichero rhosts en su directorio $HOME le permitiraacute usar programas en estamaacutequina de forma remota Por ejemplo se puede estar registrado en la maacutequinacsoberlinedu pero con un rhosts correctamente configurado en flosslifeuiucedu sepuede usar un programa en floss y presentar el resultado en cs sin tener que registrarseo teclear una contrasentildea frente a floss

El archivo rhosts se ve maacutes o menos asiacute

frobnozzcsknowledgeedu jsmith

aphroditeclassicshahvaahdedu wphilps

frobbohoolacom trixie

El formato es muy directo un nombre de maacutequina seguido de un nombre de usuarioSupongamos que este ejemplo es en realidad mi archivo rhosts en flosslifeuiuceduEsto significariacutea que puedo usar programas en floss y ver el resultado en cualquiera delas maacutequinas listadas siempre y cuando yo esteacute tambieacuten registrado como el usuariocorrespondiente a cada maacutequina cuando intento ejecutar el programa

El mecanismo exacto con el que uno usa un programa remoto es normalmente el programa rshSignifica remote shell(shell remoto) y lo que hace es iniciar un shell en la maacutequinaremota y ejecutar el comando especificado Por ejemplo

frobbo$ whoami

trixie

frobbo$ rsh flosslifeuiucedu ls ~

footxt mbox urlps snaxtxt

frobbo$ rsh flosslifeuiucedu more ~snaxtxt

[snaxtxt aparece pagina a pagina aqui]

El usuario trixie en flosslifeuiucedu que teniacutea el fichero rhosts de ejemplomostrado antes permite expliacutecitamente a trixie en frobbohoolacom usar programascomo si fuera trixie de floss

No hay porqueacute tener el mismo nombre de usuario en todas las maacutequinas para que rhostsfuncione Se puede usar la opcioacuten shyl con rsh para especificar a la maacutequina remota cualnombre de usuario se quiere usar para registrarse Si ese nombre existe en la maacutequinaremota y tiene un fichero rhosts con el nombre de la maacutequina local y el nombre deusuario correspondiente entonces la orden incluida con rsh se ejecutaraacute

frobbo$ whoami

trixie

frobbo$ rsh shyl larry flosslifeuiucedu ls ~

[Inserta aqui un listado de mi directorio en floss]

Esto funcionaraacute si el usuario larry en flosslifeuiucedu tiene un fichero rhostsque permite a trixie de frobbohooplacom usar programas en su cuenta Si son o no lamisma persona es irrelevante la uacutenica cosa importante son los nombres de usuario losnombres de las maacutequinas y la fila referente a floss en el rhosts de Larry Noacutetese queel fichero rhosts de Trixie en frobbo no importa soacutelo cuenta el de la maacutequina remota

Hay otras combinaciones que se pueden poner en un fichero rhosts por ejemplo se puededejar en blanco el nombre de usuario detraacutes del nombre de una maacutequina remota parapermitir a cualquier usuario de esa maacutequina que ejecute programas en la maacutequina localEsto es por supuesto un riesgo en la seguridad alguien podriacutea ejecutar remotamente unprograma que borre mis archivos por el simple hecho de tener una cuenta en ciertamaacutequina Si se va a hacer cosas como esta entonces hay que asegurarse de que el ficherorhosts es legible soacutelo por el usuario implicado y por nadie maacutes

934 Redireccioacuten de correo

Tambieacuten se puede tener un fichero forward el cual no es un fichero de configuracioacutenestrictamente hablando Si contiene direcciones de eshymail entonces todo el correo quellegue al usuario se redirigiraacute a esas direcciones Esto es uacutetil cuando se tienen cuentasen varios sistemas pero se quiere leer el correo desde un solo sitio

Hay una gran cantidad de otros ficheros de configuracioacuten posibles La cantidad exactavariaraacute de sistema a sistema y depende de los programas instalados Una manera de sabermaacutes es mirar todos los archivos en el directorio $HOME que empiecen por No es seguroque todos sean ficheros de configuracioacuten pero seguro que la mayoriacutea siacute lo es

94 Veamos algunos ejemplos

El ejemplo definitivo que puedo dar es mostrar un sistema Linux en funcionamiento Asiacuteque si teneacuteis acceso a Internet estaacuteis invitados a hacer telnet a flosslifeuiuceduRegistraacuteos como guest contrasentildea explorer y husmead por dentro Muchos de losarchivos de ejemplo se pueden encontrar en homekfogel pero tambieacuten hay otrosdirectorios de usuarios Sois libres de copiar cualquier cosa que se pueda leer Porfavor tened cuidado floss no es un sitio terriblemente seguro y ciertamente se puedeconseguir acceso como root si uno lo intenta lo suficiente Prefiero creer en laconfianza maacutes que en la vigilancia constante para mantener la seguridad

Capiacutetulo 10

Hablando con los demaacutes

Una nocioacuten fundamental de Usenet es que es una cooperativa

Cuando ya van para diez los antildeos que llevo en Usenet discrepo con loanterior La nocioacuten fundamental de Usenet es el insulto airado

Chuq Von Rospach

Los modernos sistemas operativos tipo Unix son muy buenos a la hora de hablar con otrasmaacutequinas y funcionar en red Dos maacutequinas Unix diferentes pueden intercambiar informacioacutende muchas muchas maneras distintas Este capiacutetulo va a intentar contar coacutemo se puedesacar provecho de esta gran facilidad para la comunicacioacuten

Trataremos de cubrir el correo electroacutenico las noticias de Usenet y diversas utilidadesbaacutesicas de comunicaciones de Unix

101 Correo electroacutenico

Una de las facilidades maacutes populares que ofrece Unix de forma estaacutendar es el correoelectroacutenico

Con eacutel evitamos el habitual folloacuten de buscar un sobre una hoja de papel un laacutepiz unsello y un servicio postal A cambio debemos enfrentarnos al folloacuten de pelear con elordenador

1011 Enviar correo

Todo lo que hay que hacer es teclear mail nombre y escribir el mensaje

Por ejemplo supongamos que queremos enviar correo a un usuario que se llama sam

homelarry$ mail sam

Subject Documentacion del usuario

Solo estoy probando el sistema de correo

[Ctrlshyd]

homelarry$

homelarry$

El programa mail es muy simple Como cat acepta texto de la entrada estaacutendar liacutenea aliacutenea hasta que recibe un caraacutecter de finshydeshytexto como uacutenico caraacutecter en una liacutenea|_Ctrlshyd_| Asiacute para enviar nuestro mensaje tuvimos que pulsar |_Intro_| y despueacutes|_Ctrlshyd_| Usar mail es la manera maacutes raacutepida de mandar correo y es bastante uacutetil cuandose usa con redireccioacuten de entrada yo salida Por ejemplo si quisieacuteramos enviar porcorreo electroacutenico el fichero report1 a Sam podriacuteamos escribir mail sam lt report1 o incluso sort report1 _ mail sam

Sin embargo la desventaja de usar mail para enviar correo es su primitiviacutesimo editoriexclNo se puede cambiar ni una liacutenea una vez se ha pulsado |_Intro_| Asiacute que yo recomiendomandar correo (cuando no se use redireccioacuten) con el modo mail del Emacs El tema se trataen la Seccioacuten 810

1012 Leer el correo

shy mail [nombre]

El programa mail ofrece una forma algo liosa de leer el correo Si se teclea mail sinparaacutemetros apareceraacute lo siguiente

homelarry$ mail

No mail for larry

homelarry$

No mail for larry significa No hay correo para larry

Me voy a enviar correo a miacute mismo para poder utilizar el lector

homelarry$ mail larry

Subject Sapos

Y ranas

EOT

homelarry$ echo culebras _ mail larry

homelarry$ mail

Mail version 55 6190 Type for help

usrspoolmaillarry 2 messages 2 new

gtN 1 larry Tue Aug 30 1811 10211 Sapos

N 2 larry Tue Aug 30 1812 9191

amp

El siacutembolo peticioacuten de oacuterdenes del programa mail es un et a la inglesa (amp) Acepta unpar de oacuterdenes sencillas y muestra una breve pantalla de ayuda si se pulsa seguidode |_Intro_| Las oacuterdenes baacutesicas de mail son

t listashydeshymensajes Mostrar los mensajes en la pantalla

d listashydeshymensajes Borrar los mensajes

s listashydeshymensajes fichero Guardar los mensajes en fichero

r listashydeshymensajes Responder a los mensajes_esto es comenzar a escribir unnuevo mensaje dirigido a quien fuera que envioacute los mensajes referidos

q Salir y guardar los mensajes que no hayan sido borrados en un ficherollamado mbox en el directorio raiacutez del usuario

iquestQueacute es una listashydeshymensajes Consiste en una lista de nuacutemeros separados por espacios oincluso un rango de los mismos como 2shy4 (lo que es equivalente a 2 3 4) Asiacute mismo sepuede introducir el nombre del remitente de este modo la orden t sam mostraraacute todos losmensajes provenientes de Sam Si se omite la listashydeshymensajes se supone que la orden serefiere al uacuteltimo mensaje mostrado

Leer el correo con el programa mail presenta varios inconvenientes El primero es que siun mensaje es maacutes largo que la pantalla iexclel programa mail no se detiene Habraacute queguardar el mensaje en un fichero y usar more sobre eacutel despueacutes El segundo es que noofrece una buena interfaz para manejar el correo antiguo cuando se quiere guardar elcorreo para leerlo maacutes tarde

Emacs tambieacuten permite leer el correo con rmail pero este libro no lo cubreAdicionalmente la mayoriacutea de los sistemas Linux vienen con algunos lectores de correoadicionales ademaacutes de mail como elm o pine

102 Noticias maacutes que de sobra

103 Localizar a la gente

El programa finger permite obtener informacioacuten de otros usuarios del sistema y de todo elmundo Sin duda el programa finger recibioacute este nombre por los anuncios de la ATampT queexhortaban a la gente a salir y tocar a alguien Dado que el Unix tiene sus oriacutegenes enla ATampT probablemente eso le hiciera gracia al autor

shy finger [shyslpm] [usuario][maquina]

Los paraacutemetros opcionales de finger pueden resultar algo liosos La verdad es que no estan difiacutecil Se puede solicitar informacioacuten de un usuario local (sam) informacioacuten deotra maacutequina (lionsden) informacioacuten sobre un usuario remoto (samlionsden) osimplemente informacioacuten sobre la maacutequina local (nada)

Otra caracteriacutestica es que si se pide informacioacuten sobre un usuario y no hay ninguacuten nombrede cuenta que coincida exactamente con el dado trataraacute de emparejar el nombre real conlo que se haya especificado Eso significa que si ejecutamos finger Greenfield noscontestaraacute que existe la cuenta sam de Sam Greenfield

homelarry$ finger sam

Login sam Name Sam Greenfield

Directory homesam Shell bintcsh

Last login Sun Dec 25 1447 (EST) on tty2

No Plan

homelarry$ finger greenfiegaussrutgersedu

[gaussrutgersedu]

Login name greenfie In real life Greenfie

Directory gaussu1greenfie Shell bintcsh

On since Dec 25 151941 on ttyp0 from tiptopshyslipshy6439

13 minutes Idle Time

No unread mail

Project Debes estar bromeando de que proyecto me hablas

No Plan

homelarry$ finger

Login Name Tty Idle Login Time Office Office Phone

larry Larry Greenfield 1 351 Dec 25 1250

larry Larry Greenfield p0 Dec 25 1251

homelarry$

La opcioacuten shys hace que finger utilice siempre la forma abreviada (la que se obtienenormalmente cuando se hace finger a una maacutequina) y la opcioacuten shyl hace que use siemprela forma larga incluso al hacer finger a una maacutequina La opcioacuten shyp hace que finger nomuestre los ficheros forward plan ni project y la shym hace que cuando se hapedido informacioacuten sobre un usuario soacutelo de informacioacuten de un nombre de cuenta que nointente emparejar el nombre que se le da con un nombre real

1031 Planes y proyectos

Pero iquestqueacute es eso de plan y project Son ficheros que existen en el directorio raiacutez deun usuario y que se muestran cuando se le hace finger Cada uno puede crear sus propiosficheros plan y project la uacutenica restriccioacuten es que soacutelo se muestra la primera liacuteneadel fichero project Ademaacutes todo el mundo debe tener permisos de buacutesqueda (la x deejecucioacuten) del directorio raiacutez del usuario en cuestioacuten (chmod a+x ~) y debe serposible para todo el mundo leer los ficheros plan y project (chmod a+r ~plan~project )

104 Uso remoto de sistemas

shy telnet sistemashyremoto

La forma maacutes habitual de usar un sistema Unix remoto es con telnet telnet es normalmenteun programa muy sencillo de usar

homelarry$ telnet lionsden

Trying 12823641

Connected to lionsden

Escape character is ^]

lionsden login

Como puede verse despues de teclear telnet se nos presenta un mensaje de acceso alsistema remoto Podemos introducir cualquier nombre de usuario (iexclsiempre que conozcamosla contrasentildea) y despueacutes usar el sistema remoto casi como si estuvieacuteramos sentados alliacute

La manera normal de salir de telnet es hacer logout en el sistema remoto Otra forma estecleando la secuencia de escape que (como en el ejemplo de arriba) es habitualmente||_Ctrlshy]_||

Esto nos presenta un nuevo siacutembolo del peticioacuten de oacuterdenes telnetgt Entonces podemosteclear quit y |_Intro_| y la conexioacuten con el otro sistema seraacute cerrada y el programatelnet finalizaraacute (Si cambiaacuteramos de idea simplemente pulsando |_Intro_| volveriacuteamos alsistema remoto)

Si se estaacuten usando las X se puede crear un nuevo xterm para el otro sistema al queestamos saltando Con la orden xterm shytitle lionsden shye telnet lionsden amp crearemosuna nueva ventana xterm que automaacuteticamente ejecute telnet (Si eso se hace confrecuencia probablemente seraacute deseable crear un alias o un programa de shell que lo hagaautomaacuteticamente)

105 Intercambio de ficheros

shy ftp sistemashyremoto

La manera usual de intercambiar ficheros entre sistemas Unix es ftp acroacutenimo queproviene de file transfer protocol (protocolo de transferencia de ficheros) Trasejecutar la orden ftp se nos pediraacute que nos identifiquemos de forma muy parecida a contelnet Despueacutes de hacerlo aparece un siacutembolo de peticioacuten de oacuterdenes especial el siacutemboloftp

La orden cd funciona de la manera habitual pero en el sistema remoto cambia dedirectorio en el otro sistema De la misma forma la orden ls lista los ficheros en elsistema remoto

Las dos oacuterdenes maacutes importantes son get y put get transfiere un fichero del sistemaremoto al local y put lleva un fichero del sistema local al remoto Ambas oacuterdenes tienenefecto en el directorio local en el que se haya arrancado ftp y en el directorio remotoen el que se esteacute en ese momento (que se puede haber cambiado con la orden cd )

Un problema habitual con ftp es la distincioacuten entre ficheros de texto y binarios ftp esun protocolo muy antiguo y antes teniacutea ventajas suponer que los ficheros que setransferiacutean eran de texto El comportamiento por omisioacuten de algunas versiones de ftp eseacutese lo que significa que los programas que se enviacuteen o reciban se corromperaacuten Porseguridad conviene usar la orden binary antes de empezar a transferir ficheros

Para salir de ftp se usa la orden bye

106 Viajando por la telarantildea

La Telarantildea Mundial (World Wide Web) o WWW es un uso muy popular de la InternetConsiste en un conjunto de paacuteginas cada una con su propia URL_Localizador Uniforme deRecursos asociado

Los URLs son simpaacuteticas secuencias de caracteres de la forma lthttpwwwrutgersedugtLas paacuteginas estaacuten por lo general escritas en HTML (Lenguaje de Composicioacuten deHipertexto) El HTML permite al autor de un documento enlazar ciertas palabras frases oimaacutegenes con otros documentos que se hallen en cualquier lugar de la telarantildea Cuando unusuario lee un documento puede moverse raacutepidamente a otro picando en una palabra clave oen un botoacuten y se le mostraraacute el otro documento en cuestioacuten que posiblemente esteacute a milesde kiloacutemetros del primero

shy netscape [url]

El navegador maacutes popular de Linux es netscape se trata de un navegador comercial quevende (y regala) Netscape Communications Corporation netscape soacutelo funciona con las X

netscape trata de ser tan faacutecil de usar como sea posible y utiliza el conjunto de widgetsMotif para lograr una apariencia muy a lo Microsoft Windows El conocimiento baacutesico parapoder usar netscape es que las palabras azules subrayadas son enlaces asiacute como muchas delas imaacutegenes (Se puede averiguar cuales imaacutegenes son enlaces picando en ellas) Picandoen esas palabras con el botoacuten izquierdo del ratoacuten aparece una nueva paacutegina

Linux soporta muchos navegadores maacutes incluyendo el navegador original lynx lynx es unnavegador orientado a texto_no muestra ninguna imagen que es con lo que actualmente serelaciona al Web pero funciona sin las X

shy lynx [url]

Es un poco maacutes complicado aprender a usar lynx pero normalmente se le coge el trucodespueacutes de jugar un rato con las flechas del cursor Las flechas hacia arriba y haciaabajo nos mueven entre los enlaces de una paacutegina La flecha hacia la derecha sigue elenlace seleccionado (resaltado) La flecha hacia la izquierda vuelve a la paacuteginaanterior Para salir de lynx se debe pulsar |_q_| lynx tiene muchas oacuterdenes maacutesconsuacuteltese la paacutegina del manual

Capiacutetulo 11

Comandos divertidos

Bueno la mayoriacutea de la gente que tiene que ver con los comandos de UNIX expuestos eneste capiacutetulo no estaraacuten de acuerdo con este tiacutetulo iexclQue diablos Se me ha ensentildeado queel interfaz del Linux es muy estaacutendar y ahora tenemos un grupo de comandos cada unotrabajando de una manera completamente diferente Nunca recordareacute todas esas opciones iquestydice que son divertidos

Siacute Vd ha visto un ejemplo del humor de los hackers1 Ademaacutes miacuterelo desde el ladopositivo no hay comandos del MSshyDOS equivalentes a eacutestos Si los necesita tiene queadquirirlos por separado y nunca sabraacute como seraacute su interfaz Aquiacute hay un uacutetil (yeconoacutemico) valor antildeadido iexcliexclasiacute que disfruacutetelo

El conjunto de comandos explicados en este capiacutetulo cubre find que permite al usuariobuscar grupos de ficheros especificados dentro del aacuterbol de directorios tar uacutetil paraempaquetar alguacuten archivo para ser enviado o soacutelo salvado dd el multicopista de bajonivel y sort el cual siacute clasifica ficheros Una uacuteltima condicioacuten estos comandosno estaacuten bajo ninguacuten concepto estandarizados y si bien podriacuteamos encontrar un nuacutecleo deopciones comunes en todos los sistemas IX las versiones (de GNU) que se explican maacutesabajo y Vd puede encontrar en su sistema Linux usualmente poseen muchas maacutescapacidades Por tanto si Vd planea usar otros sistemas operativos UNIX por favor noolvide comprobar la paacutegina del manual del sistema en cuestioacuten para aprender las quizaacutes notan pequentildeas diferencias

111 find el buscador de ficheros

1111 Generalidades

Entre los diversos comandos vistos hasta aquiacute habiacutea algunos que permitiacutean al usuariobajar recursivamente el aacuterbol del directorio para llevar a cabo alguna accioacuten losejemplos canoacutenicos son ls shyR y rm shyR Bien find es el comando recursivo Cada vezque piense Bueno tengo que hacer tal cosa con todos esos ficheros en mi propiaparticioacuten hariacutea mejor en pensar en usar find En cierto sentido el hecho que findencuentre ficheros es solo un efecto secundario su ocupacioacuten real es evaluar

_____________________________________________

1 NT La palabra Hacker en este contexto se refiere a una persona con profundosconocimientos de informaacutetica

La estructura baacutesica del comando es como sigue

shy find ruta [ ] expresioacuten [ ]

Esto es al menos en la versioacuten de GNU otras versiones no permiten especificar maacutes queuna ruta y ademaacutes es muy infrecuente la necesidad de hacer tal cosa La explicacioacutenburda de la sintaxis del comando es bastante simple Vd indica desde doacutende quiereempezar la buacutesqueda (la parte de la ruta con el find de GNU puede omitir esto y seraacute

tomado por defecto el directorio en uso ) y que clase de buacutesqueda quiere realizar (laparte de la expresioacuten)

El comportamiento estaacutendar del comando es un poco engantildeoso por lo que maacutes vale tenerloen cuenta Supongamos que en su directorio principal de usuario existe un directoriollamado basura el cual contiene un fichero foobar Vd felizmente escribe find shynamefoobar (lo que como puede adivinar busca ficheros llamados foobar) y obtiene nadamaacutes que otra vez el prompt El problema reside en el hecho de que find es por defecto uncomando silencioso soacutelo devuelve 0 si la buacutesqueda fue completada (con o sin haberencontrado algo) o un valor distinto de cero si hubiera habido alguacuten problema Esto noocurre con la versioacuten que Vd puede encontrar en el Linux pero de todas maneras es uacutetilrecordarlo

1112 Expresiones

La parte de la expresioacuten puede ser dividida en cuatro grupos diferentes de palabrasclave opciones tests acciones y operadores Cada uno de ellos puede devolver un valorverdaderofalso junto con un efecto secundario La diferencia entre los grupos semuestra a continuacioacuten

opciones afecta a la funcioacuten general de find maacutes que al procesamiento de un solofichero Un ejemplo es shyfollow el cual instruye a find para seguir enlaces simboacutelicosen vez de soacutelo presentar el nodoshyi Siempre devuelven verdadero

tests son verdaderos tests (por ejemplo shyempty comprueba si el fichero estaacute vaciacuteo) ypuede devolver verdadero o falso

acciones tienen tambieacuten un efecto secundario sobre el nombre del fichero consideradoPueden asimismo devolver verdadero o falso

operadores no devuelven realmente un valor (convencionalmente pueden ser consideradoscomo verdaderos) y se usan para construir expresiones sinteacuteticas Un ejemplo es shyor el cual hace la OR loacutegica de las dos subexpresiones a su lado Note que cuando seyuxtaponen expresiones estaacute involucrada una shyand

Debe advertir que find depende del inteacuterprete de comandos para tener la liacutenea de comandosanalizada sintaacutecticamente esto significa que todas las palabras clave deben serintroducidas entre espacios en blanco y ademaacutes que hay un montoacuten de caracteres bonitosque deberaacuten precederse de escape si no seriacutean destrozados por el propio inteacuterprete decomandos Cada viacutea de escape (barra invertida simples y dobles comillas) estaacute bien enlos ejemplos las palabras clave de un solo caraacutecter se sentildealizaraacuten en general mediantecon una barra invertida porque es la manera maacutes simple (al menos en mi opinioacuten iexclY soyyo quien estaacute escribiendo estas notas)

1113 Opciones

Aquiacute estaacute la lista de todas las opciones conocidas de la versioacuten GNU de find Recuerdeque siempre devuelven verdadero

shydaystart mide el tiempo transcurrido no desde hace 24 horas si no desde la uacuteltimamedianoche

Un auteacutentico hacker probablemente no entenderaacute la utilidad de tal opcioacuten pero untrabajador que programa de ocho a cinco si lo apreciaraacute

shydepth procesa el contenido de cada directorio antes que el directorio en si A decirverdad no conozco muchos usos de esto aparte de una emulacioacuten del comando rm shyF (por

supuesto Vd no puede borrar un directorio antes de que todos sus ficheros sean borradostambieacuten

shyfollow respeta (es decir sigue) los enlaces simboacutelicos Implica la opcioacuten shynoleaf ver abajo

shynoleaf desactiva una optimizacioacuten que dice Un directorio contiene dos subdirectoriosmenos que su cuenta de enlaces riacutegidos2 Si el mundo fuera perfecto todos losdirectorios seriacutean referenciados por cada uno de sus subdirectorios (a causa de la opcioacuten) como dentro de siacute mismo y por su nombre real desde su directorio padre

Esto significa que cada directorio debe ser referenciado al menos dos veces (una por siacutemismo otra por su directorio padre) y cualquier referencia adicional es porsubdirectorios En la praacutectica sin embargo los enlaces simboacutelicos y los sistemas defichero distribuidos3 pueden alterar esto Esta opcioacuten hace que find funcione ligeramentemaacutes despacio pero debe dar los resultados esperados

shymaxdepth niveles shymindepth niveles donde niveles es un entero no negativo Indicanrespectivamente que a lo sumo o que al menos niveles de directorios deberiacutean explorarseUn par de ejemplos son obligados shymaxdepth 0 indica que el comando deberiacutea realizarsesoacutelo sobre los argumentos de la liacutenea de comandos es decir sin bajar recursivamente elaacuterbol de directorios shymindepth 1 inhibe el procesamiento del comando para losargumentos en la liacutenea de comandos pero se consideran todos los otros ficheros debajo

shyversion imprime la versioacuten en uso del programa

shyxdev el cual es un nombre engantildeoso instruye a find para no cruzarse de dispositivo4es decir no cambiarse de sistema de ficheros Es muy uacutetil cuando se tiene que buscaralgo en el sistema de ficheros raiacutez en muchas maacutequinas es una particioacuten algo pequentildeapero sino iexclun find buscariacutea en la estructura entera Podemos asiacute evitar lossistemas de archivo que no son promisorios

_____________________________________________

2 NT hard link count

3 Los sistemas de fichero distribuidos permiten a los ficheros mostrarse como si fueranlocales a una maacutequina cuando realmente estaacuten situados en alguacuten otro lugar

4 NT to cross device

1114 Test

Los dos primeros test son muy simples de comprender shyfalse siempre devuelve falsomientras que shytrue siempre devuelve verdadero Otros test que no necesitan laespecificacioacuten de un valor son shyempty el cual devuelve verdadero si el fichero estaacutevaciacuteo y el par shynouser shynogroup los cuales devuelven verdadero en el caso queninguna entrada en etcpasswd o etcgroup cuadre con el identificador de usuariogrupodel propietario del fichero Veamos un problema comuacuten en los sistemas multiusuario seborra un usuario pero los ficheros pertenecientes a eacutel permanecen en la parte maacutesextrantildea de los sistemas de ficheros y debido a las leyes de Murphy ocupan mucho espacio

El par de test que hemos visto en uacuteltimo lugar nos permitiraacute encontrar esos archivos Porsupuesto es posible buscar un usuario o grupo especiacutefico Los test son shyuid nn y shygidnn Desafortunadamente no es posible dar directamente el nombre del usuario sino quees necesario usar el identificador numeacuterico nn

Ademaacutes estaacute permitido usar las formas +nn que significa un valor estrictamente maacutesgrande que nn y shynn que significa un valor estrictamente maacutes pequentildeo que nn Estoes bastante estuacutepido en el caso de identificadores de usuario5 pero se volveraacute praacutecticocon otros test

Otra opcioacuten uacutetil es shytype c la cual devuelve verdadero si el fichero es del tipoespecial de caraacutecter Los mnemoacutenicos para las posibles selecciones son las mismas letrasque se encuentran en ls entonces tenemos bloque cuando el fichero es uno especial debloque directorio pipes para tuberiacuteas designadas6 link para enlaces simboacutelicos ysocketssockets7 Los ficheros regulares se indican con file

Un test relacionado es shyxtype que es similar a shytype excepto en el caso de enlacessimboacutelicos

Si se ha proporcionado la opcioacuten shyfollow se examina el enlace en lugar del ficheroal que se apunta El test shyfstype type no tiene nada que ver en este caso lo que seexamina es el tipo del sistema de ficheros Creo que la informacioacuten se consigue delfichero etcmtab el uacutenico que presenta los sistemas de ficheros montados estoy seguroque los tipos nfs tmp msdos y ext2 estaacuten entre los reconocidos

Los test shyinum nn y shylinks nn examinan si el fichero tiene nuacutemero de nodoshyi nn onn enlaces mientras que shysizenn es verdadero si el fichero tiene nn bloques de 512bytes asignados (Bueno no precisamente para ficheros disgregados los bloques noasignados tambieacuten se cuentan)

Como hoy en diacutea el resultado de ls shys no siempre se mide en trozos de 512 bytes (Linuxpor ejemplo usa 1 kbyte como la unidad) es posible adicionar a nn el caracter b elcual significa contar en bytes o k contar en kilobytes

Los bits de permiso son examinados a traveacutes del test shyperm mode Si el modo no estaacuteantecedido por un signo entonces los bits de permiso del fichero deben cuadrarexactamente con ellos

Un shy al principio significa que todos los bits de permiso deben ser puestos a uno perono hace suposiciones sobre los otros un + al principio se satisface soacutelo si cualquierade los bits estaacute a uno

_____________________________________________

5 NT UIDs

6 NT named pipes

7 NT enchufe

iexclUps Olvideacute decir que el modo se escribe en octal o simboacutelicamente como se usa enchmod El proacuteximo grupo de test estaacute relacionado con el tiempo que hace que se hautilizado un fichero por uacuteltima vez Esto viene bien cuando un usuario ha llenado suespacio ya que usualmente hay muchos ficheros que no usaba desde hace antildeos y cuyosignificado ha olvidado El problema es localizarlos y find es la uacutenica esperanza a lavista shyatime nn es verdadero si la uacuteltima vez que se accedioacute al fichero fue hace nndiacuteas shyctime nn si el estado del fichero fue cambiado por uacuteltima vez hace nn diacuteas porejemplo con un chmod y shymtime nn si el fichero fue modificado por uacuteltima vez hace nndiacuteas Algunas veces Vd necesita una marca de tiempo 8 maacutes precisa el test shynewerarchivo se satisface si el fichero considerado ha sido modificado maacutes tarde que elarchivo Por lo tanto Vd soacutelo tiene que usar touch con la fecha deseada y ya estaacute Elfind de GNU antildeade los test shyanewer y shycnewer los cuales se comportan de una manerasimilar y los test shyamin shycmin y shymmin que cuentan el tiempo en minutos en vezde periacuteodos de 24 horas

Por uacuteltimo pero no menos importante el test que yo uso maacutes a menudo shyname patroacuten esverdadero si el nombre del fichero concuerda exactamente con patroacuten el cual es maacutes omenos el uacutenico que se usariacutea en un ls estaacutendar (iquestPor queacute maacutes o menos Porque porsupuesto Vd tiene que recordar que todos los paraacutemetros son procesados por elinteacuterprete de comandos y esos encantadores metacaracteres sufren una expansioacuten Asiacute untest como shyname foo no devolveraacute lo que Vd desea y Vd deberiacutea escribir cualquierade los dos shyname foo o shyname foo Este es probablemente uno de los maacutes comuneserrores cometidos por usuarios descuidados asiacute que escriacutebalo en letras GRANDES en supantalla Otro problema es que como con ls no se reconocen los puntos al principio delnombre del archivo Para hacer frente a esto puede usar el test shypath patroacuten el cualno se preocupa acerca de los puntos y barras inclinadas cuando compara la ruta delfichero considerado con patroacuten

1115 Acciones

Hemos dicho que las acciones son aquellas que realmente hacen algo Bueno shyprune maacutesbien no hace nada es decir al descender el aacuterbol de directorios (a menos que se leagregue shydepth ) Se la encuentra usualmente junto con shyfstype para elegir entrevarios sistemas de ficheros a aquellos que deberiacutean examinarse

Las otras acciones pueden ser divididas en dos amplias categoriacuteas Acciones que imprimenalgo La maacutes obvia de estas y en realidad la accioacuten por defecto de find es shyprintque imprime el nombre del(os) fichero(s) que concuerde(n) con las otras condiciones en laliacutenea de comandos y devuelve verdadero Una variante sencilla de shyprint es shyfprintarchivo en la cual se usa archivo en vez de la salida estaacutendar otra es shyls listael fichero en uso en el mismo formato que ls shydils shyprintfformato se comporta maacuteso menos como la funcioacuten de C printf() para que se pueda especificar que formato deberiacuteatener la salida y shyfprintf archivo formato hace lo mismo pero escribieacutendolo enarchivo Estas acciones tambieacuten devuelven verdadero

_____________________________________________

8 NT timestamp

Acciones que ejecutan algo Su sintaxis es un poco extrantildea y su uso estaacute muy extendidopor lo que por favor consideacuterelas

shyexec comando ejecuta el comando y la accioacuten devuelve verdadero si el estadoretornado por el comando es 0 lo que significa que la ejecucioacuten fue correcta La razoacutenpara el es bastante loacutegica find no sabe donde termina el comando y el truco deponer la accioacuten ejecutable al final del comando no es aplicable Bueno la mejor manerapara sentildealar el final del comando es usar el caracter que usa el inteacuterprete de comandospara este fin que es pero por supuesto un punto y coma solo en la liacutenea decomandos seriacutea comido por el inteacuterprete de comandos y nunca llegariacutea a find asiacute quetienen que ser precedidos de escape La segunda cosa a recordar es como especificar elnombre del fichero en uso dentro del comando ya que probablemente Vd hizo todo elesfuerzo al construir la expresioacuten para hacer algo y no soacutelo para ver la hora Esto sehace por medio de la cadena de caracteres Algunas versiones antiguas de findrequieren que coloque las llaves entre espacios en blanco (no muy praacutectico si Vdnecesita por ejemplo la ruta entera y no soacutelo el nombre del fichero) pero con el findde GNU podriacutea ser cualquier lugar de la cadena de caracteres que compone el comando iquestYno deberiacutea estar precedido de escape o entrecomillado seguramente se estaraacutepreguntando Asombrosamente yo nunca tuve que hacer esto ni bajo tcsh ni bajo bash (shno considera shy y como caraacutecteres especiales asiacute que no es ni mucho menos un problema)Mi idea es que los inteacuterpretes de comandos saben que shy no es una opcioacuten que tengasentido por tanto no intentan expandirlas afortunadamente para find que puede obtenerlaintacta shyok comando se comporta como shyexec con la diferencia que para cadafichero seleccionado se pregunta al usuario que confirme el comando si la respuestaempieza por y o Y se ejecuta de otra manera no y la accioacuten devuelve falso

1116 Operadores

Hay una cierta cantidad de operadores aquiacute hay una lista en orden de prioridaddecreciente

( expr )

Fuerza el orden de prioridad Los pareacutentesis deben por supuesto estar entrecomillas ya que tambieacuten son muy significativos para el inteacuterprete decomandos

expr

shynot expr

Cambia el verdadero valor de la expresioacuten esto es si expr es verdadera sevuelve falsa El signo de exclamacioacuten no tiene que ser precedido de escapeporque estaacute seguido por un espacio en blanco

expr1 expr2

expr1 shya expr2

expr1 shyand expr2

Todas corresponden con la operacioacuten loacutegica AND El caso maacutes comuacuten es elprimero en el cual estaacute impliacutecita expr2 no se evaluacutea si expr1 es falsa

expr1 shyo expr2

expr1 shyor expr2

corresponden a la operacioacuten loacutegica OR expr2 no es evaluada si expr1 esverdadera

expr1 expr2

es la declaracioacuten de lista ambas expr1 y expr2 se evaluacutean (junto con todoslos efectos secundarios iexclpor supuesto) y el valor final de la expresioacuten esel de expr2

1117 Ejemplos

Siacute find tiene demasiadas opciones lo se Pero hay un montoacuten de casos preparados quevalen la pena recordar porque son usados muy a menudo Veamos algunos de ellos

$ find shyname foo shyprint

encuentra todos los nombres de fichero que empiezan con foo Si la cadena de caracteresestaacute incluida en el nombre probablemente tiene maacutes sentido escribir algo como fooen vez de foo

$ find usrinclude shyxtype f shyexec grep foobar

devnull shy

Es un grep ejecutado recursivamente que empieza del directorio usrinclude En estecaso estamos interesados tanto en ficheros regulares como en enlaces simboacutelicos queapuntan a ficheros regulares por tanto el test shyxtype Muchas veces es maacutes simpleevitar especificarlo especialmente si estamos bastante seguros cuales ficheros binariosno contienen la cadena de caracteres deseada

(iquestY por queacute el devnull en el comando Es un truco para forzar al grep a escribir elfichero del nombre donde se ha encontrado un emparejamiento El comando grep se aplica acada fichero con una invocacioacuten diferente y por tanto no cree que sea necesario mostrara la salida el nombre del fichero Pero ahora hay dos ficheros esto es iexclel activo ydevnull Otra posibilidad podriacutea ser redirigir la salida9 del comando a xargs y dejarlellevar a cabo el grep Yo lo intenteacute e hice pedazos completamente mi sistema de ficheros(junto con estas notas que estoy intentando recuperar a mano shy( )

$ find shyatime +1 shyfstype ext2 shyname core

shyexec rm shy

Es un trabajo claacutesico para la tabla de tareas preplaneadas Borra todos los ficherosllamados core en el sistema de ficheros del tipo ext2 al cual no se ha accedido en lasuacuteltimas 24 horas Es posible que alguien quiera usar los ficheros de imagen de memoria10para realizar un volcado post mortem pero nadie podriacutea recordar lo que estuvo haciendodespueacutes de 24 horas

$ find home shyxdev shysize +500k shyls gt piggies

_____________________________________________

9 NT to pipe

10 NT core file

Es uacutetil para ver quieacuten tiene esos archivos que atascan el sistema de ficheros Note eluso de shyxdev como soacutelo estamos interesados en un sistema de ficheros no es necesariodescender otro sistema de ficheros montado bajo home

1118 Una uacuteltima palabra

Tenga en mente que find es un comando que consume mucho tiempo ya que tiene que accedera cada uno de los nodosshyi del sistema para realizar su operacioacuten Por lo tanto es sabiocombinar cuantas operaciones sean posibles en una uacutenica invocacioacuten de find especialmenteen las tareas de mantenimiento interno que usualmente se administran mediante un

trabajo de la tabla de tareas planificadas Un ejemplo informativo es el siguientesupongamos que queremos borrar los ficheros que acaban en BAK y cambiar la proteccioacuten detodos los directorios a 771 y todos los ficheros que acaban en sh a 755 Y quizaacutestengamos montado el sistema de ficheros NFS en un enlace telefoacutenico y no queramosexaminar los ficheros ahiacute (iquestPor queacute escribir tres comandos diferentes La manera maacutesefectiva para realizar la tarea es eacutesta

$ find ( shyfstype nfs shyprune ) shyo

( shytype d shya shyexec chmod 771 shy ) shyo

( shyname BAK shya shyexec binrm shy ) shyo

( shyname sh shya shyexec chmod 755 shy )

Parece feo (iexcly con mucho abuso de barras invertidas) pero miraacutendolo fijamente revelaque la loacutegica subyacente es bastante sencilla Recuerde lo que se hace es una evaluacioacutenverdaderofalso el comando introducido es soacutelo un efecto secundario Pero esto significaque se ejecuta soacutelo si find puede evaluar la parte ejecutable de la expresioacuten esto essoacutelo si la parte izquierda de la subexpresioacuten se evaluacutea como verdadera Asiacute si porejemplo el fichero considerado en el momento es un directorio entonces el primerejecutable se evaluacutea y el permiso del nodoshyi se cambia a 771 de otra manera olvida todoy pasa a la siguiente subexpresioacuten Probablemente es maacutes faacutecil verlo en la praacutectica queescribirlo pero despueacutes de un momento llegaraacute a ser una cosa natural para Vd

112 tar el archivador en cinta

1121 Introduccioacuten

1122 Opciones principales

1123 Modificadores

1124 Ejemplos

113 dd el duplicador de datos

La leyenda dice que allaacute lejos en las nieblas del tiempo cuando el primer UNIX fuecreado sus desarrolladores necesitaron un comando de bajo nivel para copiar datos entredispositivos Como teniacutean prisa decidieron tomar prestada la sintaxis usada en lasmaacutequinas IBMshy360 y desarrollar maacutes tarde un interfaz consistente con la de los otroscomandos El tiempo pasoacute y todos se acostumbraron tanto con la manera extrantildea de usar ddque ya ha quedado asiacute No se si es verdad pero es una bonita historia para contar

1131 Opciones

A decir verdad dd no es totalmente distinto de los otros comandos de UNIX es enrealidad un filtro esto es lee por defecto de la entrada estaacutendar y escribe en lasalida estaacutendar Por tanto si Vd escribe soacutelo dd la terminal se queda quietaesperando una entrada y un |_CtrlshyC_| es la uacutenica cosa con sentido a teclear (paracortarlo)

La sintaxis del comando es como sigue

shy dd [if=archivo_entrada] [of=archivo_salida] [ibs=cant_bytes] [obs=cant_bytes]

[bs=cant_bytes] [cbs=cant_bytes] [skip=cant_bloques]

[seek=cant_bloques] [count=cant_bloques] [conv=ascii ebcdic ibm block

unblock lcase ucase swab noerror notrunc sync]

Todas las opciones son de la forma opcioacuten=valor No se permite ninguacuten espacio ni antes nidespueacutes del signo de igual esto soliacutea ser molesto porque el inteacuterprete de comandos noexpandiacutea un nombre de fichero en esta situacioacuten pero la versioacuten de bash presente enLinux es bastante inteligente asiacute que Vd no tiene que preocuparse por eso Es tambieacutenimportante recordar que todos los valores numerables (cant_bytes y cant_bloques citadosarriba) pueden ser seguidos por un multiplicador

Las opciones posibles son b para bloque el cual multiplica por 512 k para kilobytes(1024) w para palabra (2) y xm que multiplica por m

El significado de las opciones se explica a continuacioacuten

if=archivo_entrada y of=archivo_salida instruye a dd a respectivamente leerde archivo_entrada y escribir a archivo_salida En el uacuteltimo caso el ficherode salida es truncado al valor dado por seek o si la palabra clave noestaacute presente a 0 (esto es borrado) antes de realizar la operacioacuten Miretambieacuten la opcioacuten notrunc

ibs=nn y obs=nn especifican cuantos bytes deben ser leiacutedos o escritos a lavez Creo que por defecto es 1 bloque esto es 512 bytes pero no estoy muyseguro de ello desde luego funciona de esa manera con ficheros planos11Estos paraacutemetros son muy importantes cuando se usa dispositivos especialescomo entrada o salida por ejemplo leer de la red deberiacutea establecer ibs a10 kbyte mientras que una disquetera 12 de 35de alta densidad tiene comotamantildeo natural de bloque 18 kbyte Fallar al establecer estos valores podriacutearepercutir no soacutelo a largo plazo al llevar a cabo el comando sino inclusiveen errores de expiracioacuten de plazo asiacute que tenga cuidado

bs=nn tanto lee y escribe nn bytes a la vez Este no hace caso a las palabrasclave ibs y obs

cbs=nn establece el buffer de conversioacuten a nn bytes Este buffer se usacuando se traduce de ASCII a EBCDIC o desde un dispositivo no ablocado a unoablocado13 Por ejemplo los ficheros creados bajo VMS tienen a menudo untamantildeo de bloque de 512 asiacute que se tiene que poner cbs a 1b cuando se leeuna cinta externa de VMS iexclEspero que Vd no tenga que entretenerse en estascosas

skip=nbl y seek=nbl le dicen al programa que omita nbl bloquesrespectivamente al final de la entrada y al principio de la salida Porsupuesto el uacuteltimo caso tiene sentido si se da la conversioacuten notrunc (verabajo) Cada tamantildeo de bloque es el valor de ibs (obs) Cuidado si noestablece el ibs y escribe skip=1b Vd estaacute realmente omitiendo 512x512bytes esto es 256KB No es precisamente lo que Vd queriacutea iquestno

count=nbl pretende copiar soacutelo nbl bloques de la entrada cada uno de lostamantildeos dados por ibs Esta opcioacuten junto con la previa se vuelve uacutetil sipor ejemplo Vd tiene un fichero corrupto y quiere recuperar cuanto seaposible de eacutel Vd debe omitir la parte ilegible y copiar lo que resta

conv=conversioacuten[conversioacuten ] transforma el fichero de la manera que seespecifica en sus argumentos Transformaciones posibles son ascii queconvierte de EBCDIC a ASCII ebcdic y ibm las cuales realizan unaconversioacuten inversa (iexclsiacute no existe una uacutenica conversioacuten de EBCDIC a ASCII Laprimera es la estaacutendar pero la segunda funciona mejor cuando se imprimenficheros en una impresora IBM) block la cual rellena registros terminadosen nueva liacutenea del tamantildeo de cbs reemplazando los cambios de liacutenea conespacios finales unblock que realiza lo contrario (elimina espaciosfinales y los reemplaza con cambios de liacutenea) lcase y ucase paraconvertir a minuacutesculas y mayuacutesculas respectivamente swab que intercambiacada par de bytes de entrada (por ejemplo para usar un fichero que contieneenteros de tipo short escritos en una maacutequina 680x0 en una maacutequina basada enIntel se necesita dicha conversioacuten) noerror para continuar procesando auacutendespueacutes de encontrar errores sync que rellena los bloques de entrada deltamantildeo de ibs con caracteres NUL finales

_____________________________________________

11 NT plain files

12 NT floppy

13 N del T ablocado se refiere a la caracteriacutestica de agrupamiento en bloques de losdatos en el dispositivo

1132 Ejemplos

El ejemplo canoacutenico es con el uacutenico que Vd probablemente ha chocado hasta ahora cuandointentoacute crear el primer disco de Linux como escribir a un disco sin un sistema deficheros MSshyDOS La solucioacuten es simple

$ dd if=diskimg of=devfd0 obs=18k count=80

Decidiacute no usar ibs porque no se cual es el mejor tamantildeo de bloque para un disco duropero en este caso no habriacutea hecho ninguacuten perjuicio si en vez de obs usara sencillamenteel bs inclusive podriacutea haber sido un poquito maacutes raacutepido Observe la explicacioacuten delnuacutemero de sectores a escribir (18 kbyte es lo que ocupa un sector asiacute que count sepone a 80) y el uso del nombre de bajo nivel del dispositivo de la disquetera

Otra aplicacioacuten uacutetil de dd estaacute relacionada con la copia de seguridad de la redSupongamos que estamos en una maacutequina alfa y que en la maacutequina beta estaacute la unidad decinta devrst0 con un fichero tar que estamos interesados en obtener Tenemos los mismosprivilegios en ambas maacutequinas pero no hay espacio en beta para volcar 14 el fichero tarEn este caso podriacuteamos escribir

$ rsh beta dd if=devrst0 ibs=8k obs=20k _ tar xvBf shy

para hacer en un solo paso la operacioacuten completa En este caso hemos usado lasfacilidades de rsh para realizar la lectura de la cinta Los tamantildeos de entrada y salidaestaacuten establecidos a los valores por defecto por estas operaciones esto es 8 kbyte parala lectura de la cinta y 20 kbyte para la escritura en ethernet desde el punto de vistade la otra cara del tar hay el mismo flujo de bytes el cual podriacutea ser obtenido de la

cinta excepto el hecho de que llega de una manera bastante erraacutetica y la opcioacuten B esnecesaria

iexclAh Casi lo olvidaba No creo para nada que dd sea un acroacutenimo de data duplicatorpero al menos es una manera divertida de recordar su significado

114 sort el clasificador de datos

1141 Introduccioacuten

1142 Opciones

1143 Ejemplos

_____________________________________________

14 NT dump

Capiacutetulo 12

Errores equivocaciones bugs y otras molestias

Unix nunca fue disentildeado para evitar que la gente hiciera cosas estuacutepidas porque esapoliacutetica les habriacutea evitado tambieacuten hacer cosas inteligentes

Doug Gwyn

121 Evitando errores

Muchos usuarios hablan de su frustracioacuten con el sistema operativo Unix en alguna ocasioacutena menudo a causa de lo que ellos mismos han hecho Una caracteriacutestica del sistemaoperativo Unix que muchos usuarios adoran cuando estaacuten trabajando bien y odian despueacutesde una sesioacuten hasta bien avanzada la noche es que muy pocas oacuterdenes piden confirmacioacutenCuando un usuario estaacute despierto y funcionando raramente piensa sobre ello y esto esuna ventaja ya que le permite trabajar maacutes eficientemente

De todos modos hay algunas desventajas rm y mv no piden nunca confirmacioacuten y estoconduce frecuentemente a problemas Por eso veamos una pequentildea lista que puede ayudarlea evitar el desastre total

o iexclTenga copias de seguridad Esto va dirigido especialmente a sistemas de un solousuario iexcltodos los administradores de sistema deben realizar copias de seguridad de susistema regularmente Una vez a la semana es suficiente para salvar muchos ficheros Paramaacutes informacioacuten consulte The Linux System Administrators Guide

o Los usuarios individuales deben tener sus propias copias de seguridad si es posibleSi usa maacutes de una maacutequina regularmente intente mantener copias actualizadas de todos susficheros en cada una de las maacutequinas Si tiene acceso a una unidad de disquetes puedehacer copias de seguridad en disquetes de su material criacutetico En el peor de los casosmantenga copias adicionales del material maacutes importante que haya en su cuenta en undirectorio separado

o Piense sobre las oacuterdenes especialmente las destructivas como mv rm y cp antes deactuar Debe ser tambieacuten cuidadoso con las redirecciones (gt) sobreescribiraacuten susficheros cuando no esteacute prestando atencioacuten Incluso el maacutes inofensivo de los comandospuede convertirse en siniestro

homelarryreport$ cp reportshy1992 reportshy1993 backups

puede convertirse faacutecilmente en desastre

homelarryreport$ cp reportshy1992 reportshy1993

o El autor tambieacuten recomienda a partir de su propia experiencia personal no hacerlimpieza de ficheros a altas horas de la madrugada iquestQue su estructura de directoriosparece un poco desordenada a la 132am Deacutejelo estar un poco de desorden nunca ha dantildeadoun ordenador

o Siacutegale la pista a su directorio actual A veces el prompt que estaacute usando no muestraen que directorio estaacute usted trabajando y el peligro acecha iexclEs triste leer un mensajeen compunixadmin1 sobre un usuario root que estaba en en vez de en tmp Por ejemplo

mousehousegt pwd

etc

mousehousegt ls tmp

passwd

mousehousegt rm passwd

La anterior serie de comandos podriacutea hacer muy infeliz al usuario al ver como eliminaronel fichero de contrasentildeas de su sistema iexclSin eacutel la gente no puede acceder

122 Queacute hacer cuando algo va mal

123 No es fallo tuyo

Por desgracia para los programadores del mundo no todos los problemas son a causa deerrores del usuario Unix y Linux son sistemas complicados y todas las versionesconocidas tienen errores de programacioacuten (bugs2) Algunas veces esos errores sondifiacuteciles de encontrar y soacutelo aparecen bajo ciertas circunstancias

Ante todo iquestqueacute es un error Un ejemplo de error es si le pide al ordenador que calcule5+3 y contesta 7 Aunque este es un ejemplo trivial de que puede ir mal la mayoriacuteade los errores en programas de computadoras se relacionan con la aritmeacutetica en algunaforma extremadamente extrantildea

_____________________________________________

1 Un foro de discusioacuten internacional en Usenet que trata sobre la administracioacuten decomputadoras Unix

2 Bug (polilla fam bicho) Se denomina asiacute a los errores que aparecen en un programaCuenta la leyenda que cuando los ordenadores eran unos monstruos llenos de vaacutelvulas queocupaban habitaciones enteras un teacutecnico que trataba de resolver un error en el Mark IIde Harvard detectoacute que la causa era una polilla de verdad que se habiacutea colado entre lasvaacutelvulas y provocaba pequentildeos cortocircuitos al revolotear de un lado a otro

1231 Cuando hay un error

Si la computadora da una respuesta erroacutenea (iexclcompruebe que la respuesta es erroacutenea) o sebloquea eso es un error Si cualquier programa se bloquea o da un mensaje de error delsistema operativo eso es un error

Si un comando no finaliza nunca su ejecucioacuten puede ser un error pero debe asegurarse deque no le ha pedido que esteacute durante mucho tiempo haciendo lo que usted queriacutea quehiciera Pida ayuda si no sabe lo que haciacutea el comando

Algunos mensajes le alertaraacuten de la existencia de errores Algunos mensajes no sonerrores Revise la seccioacuten 34 y el resto de la documentacioacuten para estar seguro de que noson mensajes informativos normales Por ejemplo mensajes como disk full (disco lleno)o lp0 on fire (lp0 ardiendo) no son problemas de software sino algo incorrecto en suhardware no hay suficiente espacio libre en el disco o la impresora estaacute mal

Si no puede encontrar informacioacuten sobre un programa es un error en la documentacioacuten ydeberiacutea ponerse en contacto con el autor de dicho programa y ofrecerse para escribirlausted mismo Si algo estaacute incorrecto en la documentacioacuten existente3 es un error en esemanual Si algo aparece incompleto o poco claro en el manual eso es un error

Si no puede vencer al gnuchess al ajedrez es un fallo de disentildeo en el algoritmo deajedrez que usted usa pero no necesariamente un error en su cerebro

1232 Notificando un error

Cuando esteacute seguro de haber encontrado un error es importante asegurarse de que suinformacioacuten llega al lugar adecuado Intente encontrar que programa causa el error si nopuede encontrarlo tal vez pueda pedir ayuda en composlinuxhelp o compunixmisc Unavez encuentre el programa intente leer la paacutegina del manual para ver quien lo escribioacute

El meacutetodo preferido para enviar notificaciones de errores en el mundo Linux es viacutea correoelectroacutenico Si no tiene acceso al correo electroacutenico puede ponerse en contacto con lapersona que le suministroacute Linux eventualmente encontraraacute alguien que o bien tienecorreo electroacutenico o vende Linux comercialmente y por tanto quiere eliminar el mayornuacutemero de errores posibles Recuerde en todo caso que nadie estaacute obligado a corregirninguacuten error a menos que tenga un contrato

Cuando enviacutee una notificacioacuten de error incluya toda la informacioacuten que se le ocurraEsto incluye

o Una descripcioacuten de lo que usted piensa que es incorrecto Por ejemplo Obtengo 5cuando calculo 2+2 o Dice segmentation violation shyshy core dumped Es importante decirexactamente que esteacute sucediendo para que el responsable del mantenimiento pueda corregirsu error

o Incluya cualquier variable de entorno relevante

o La versioacuten de su nuacutecleo (mire en el fichero procversion) y sus bibliotecas de sistema(mire en el directorio lib si no puede descifrarlo enviacutee un listado de lib)

o iquestCoacutemo ejecutoacute el programa en cuestioacuten o si era un error del nuacutecleo iquestqueacute estabahaciendo en ese momento

o Toda la informacioacuten complementaria Por ejemplo el comando w puede no mostrar elproceso actual para ciertos usuarios No diga simplemente w no funciona para ciertousuario El error podriacutea ocurrir debido a que el nombre del usuario tiene ochocaracteres de longitud o cuando estaacute accediendo a traveacutes de la red En su lugar diga wno muestra el proceso actual para el usuario greenfie cuando accede a traveacutes de la red

o Y recuerde sea amable La mayoriacutea de la gente trabaja en el software libre por elgusto de hacerlo y porque tienen un gran corazoacuten No los amargue la comunidad Linux hadesilusionado ya a demasiados desarrolladores y auacuten es pronto en la vida del Linux

_____________________________________________

3 iexclEspecialmente en eacutesta

Apeacutendice A

Introduccioacuten a vi

vi (pronunciado vi ai en ingleacutes o uve i) es en realidad el uacutenico editor que se puedeencontrar en praacutecticamente cualquier instalacioacuten de Unix Este editor fue escritooriginalmente en la Universidad de California en Berkeley y se puede encontrar versionesen casi cualquier edicioacuten de Unix incluido Linux Al principio cuesta un pocoacostumbrarse a eacutel pero tiene muchas caracteriacutesticas muy potentes En generalrecomendamos que un nuevo usuario aprenda Emacs que generalmente es maacutes faacutecil de usarSin embargo la gente que usa maacutes de una plataforma o que encuentra que no le gustaEmacs puede estar interesada en aprender vi

Es necesaria una breve resentildea histoacuterica de vi para comprender coacutemo la tecla |_k_| puedesignificar mover el cursor arriba una liacutenea y porqueacute hay tres diferentes modos de uso Sino le apetece aprender a usar el editor los dos tutoriales le llevaraacuten de ser un crudoprincipiante hasta tener el suficiente conocimiento del grupo de comandos que usted puedellegar a usar El capiacutetulo tambieacuten incluye una guiacutea de comandos que sirve de uacutetilreferencia para tenerla cerca del terminal

Incluso si vi no se convierte en su editor de texto normal el conocimiento de su uso noseraacute desperdiciado Es casi seguro que el sistema de Unix que use tendraacute alguna variantedel editor vi

Puede ser necesario usar vi mientras instala otro editor como Emacs Muchas herramientasde Unix aplicaciones y juegos usan un subconjunto del grupo de comandos de vi

A1 Una raacutepida historia de Vi

Los editores de texto en la antiguumledad funcionaban en modo de una liacutenea y se usabantiacutepicamente desde terminales no inteligentes de impresioacuten Un editor tiacutepico que operabaen este modo es Ed El editor es potente y eficiente y usa una cantidad muy pequentildea derecursos del sistema y funcionaba con las pantallas de aquel entonces vi ofrece alusuario una alternativa visual con un grupo de comandos notablemente amplio comparado coned

vi como lo conocemos hoy comenzoacute como el editor de liacutenea ex De hecho ex se ve como unmodo especial de edicioacuten en vi aunque ahora lo contrario es verdad El componente visualde ex puede ser iniciado desde la liacutenea de comando usando el comando vi o desde dentrode ex

El editor exvi fue desarrollado en la universidad de California en Berkeley por WilliamJoy Originalmente se suministraba como una utilidad no soportada hasta su inclusioacutenoficial en la distribucioacuten del Unix ATampT System V Se ha ido haciendo cada vez maacutespopular incluso con la competencia de los modernos editores de pantalla completa

Debido a la popularidad de vi existen muchas variantes cloacutenicas y se pueden encontrarvarias versiones para la mayoriacutea de los sistemas operativos No es el propoacutesito de estecapiacutetulo el incluir todos los comandos disponibles bajo vi o sus variantes Muchos cloneshan aumentado y modificado el comportamiento original de vi La mayoriacutea de los clones nosoportan todos los comandos originales de vi

Si tiene un buen conocimiento de trabajo con ed entonces vi presenta una curva deaprendizaje maacutes suave Aunque usted no tenga ninguna intencioacuten de usar vi como su editorregular el conocimiento baacutesico de vi solamente puede serle una ventaja

A2 Raacutepido tutorial de Ed

El propoacutesito de esta guiacutea es que usted empiece a usar ed ed estaacute disentildeado para ser faacutecilde usar y requiere poco entrenamiento para comenzar La mejor manera de aprender espracticando asiacute que siga las instrucciones y pruebe el editor antes de descontar susventajas praacutecticas

A21 Crear un fichero

ed soacutelo puede editar un fichero a la vez Siga el siguiente ejemplo para crear su primerfichero de texto usando ed

homelarry$ ed

a

Este es mi primer fichero de texto usando Ed

Esto es divertido de verdad

w primerotxt

q

homelarry$

Ahora puede verificar el contenido del fichero usando la utilidad de concatenacioacuten deUnix

homelarry$ cat primerotxt

El ejemplo anterior ha mostrado un nuacutemero de puntos importantes Cuando invoca ed como enel ejemplo tendraacute un fichero vaciacuteo La tecla |_a_| se usa para antildeadir texto al ficheroPara finalizar la sesioacuten de entrada de texto se usa un punto |__| en la primera columnadel texto Para salvar el texto a un fichero la tecla |_w_| se usa en combinacioacuten con elnombre del fichero y finalmente la tecla |_q_| se usa para salir del editor

La observacioacuten maacutes importante es que hay dos modos de operacioacuten Al principio el editorestaacute en modo de comandos Un comando se define por caracteres para asegurarse de cualesson las intenciones del usuario ed usa un modo de texto y un modo de comando

A22 Editar un fichero existente

Para antildeadir una liacutenea de texto a un fichero existente siga el siguiente ejemplo

homelarry$ ed primerotxt

a

Esta es una nueva linea de texto

w

q

Si comprueba el fichero con cat veraacute que hay una nueva liacutenea insertada entre las dosliacuteneas originales iquestCoacutemo supo ed doacutende poner la nueva liacutenea de texto

Cuando ed lee el fichero se acuerda de cual es la liacutenea actual El comando |_a_| antildeadiraacuteel texto despueacutes de la liacutenea actual ed tambieacuten puede poner el texto antes de la liacuteneaactual con la tecla |_i_| El efecto seraacute la insercioacuten del texto antes de la liacuteneaactual

Ahora es faacutecil ver que ed opera en el texto liacutenea por liacutenea Todos los comandos se puedenaplicar a una liacutenea elegida

Para antildeadir una liacutenea de texto al final de un fichero

homelarry$ ed primerotxt

$a

La ultima linea de texto

w

q

El modificador de comandos ||_$_|| le dice a ed que antildeada la liacutenea despueacutes de la uacuteltimaliacutenea Para antildeadir la liacutenea despues de la primera liacutenea el modificador seriacutea |_1_| Ahoratenemos la posibilidad de seleccionar la liacutenea para antildeadir una liacutenea de texto despueacutes delnuacutemero de liacutenea o insertar una liacutenea antes del nuacutemero de liacutenea

iquestCoacutemo sabemos lo que hay en la liacutenea actual El comando |_p_| muestra el contenido de laliacutenea actual Si quiere hacer que la liacutenea actual sea la liacutenea 2 y a la vez quiere verel contenido de esa liacutenea entonces haga lo siguiente

homelarry$ ed primerotxt

2p

q

A23 Nuacutemeros de liacutenea en detalle

Ha visto coacutemo mostrar el contenido de la liacutenea actual usando el comando |_p_| Tambieacutensabemos que hay modificadores del nuacutemero de liacutenea para los comandos Para ver el texto dela segunda liacutenea

2p

Hay algunos modificadores especiales que se refieren a posiciones que pueden cambiardurante el tiempo que edita un fichero El ||_$_||es la uacuteltima liacutenea del texto Para verla uacuteltima liacutenea

$p

El nuacutemero de liacutenea actual usa un siacutembolo de modificador especial ___|_| Para mostrar laliacutenea actual usando un modificador

p

Esto puede parecer innecesario aunque es muy uacutetil en el contexto de los grupos denuacutemeros de liacutenea

Para mostrar el contenido del texto desde la liacutenea 1 a la liacutenea 2 se le debe pasar elalcance

12p

El primer nuacutemero se refiere a la liacutenea de comienzo y el segundo se refiere a la uacuteltimaliacutenea La liacutenea actual seraacute por consiguiente el segundo nuacutemero del grupo de liacuteneas

Si quiere mostrar el contenido del fichero desde el comienzo hasta la liacutenea actual

1p

Para mostrar el contenido desde la liacutenea actual hasta el final del fichero

$p

Todo lo que queda es mostrar el contenido de todo el fichero y esto queda como unejercicio para usted

iquestCoacutemo puede borrar las dos primeras liacuteneas del fichero

12d

El comando |_d_| borra el texto liacutenea por liacutenea Si usted quisiera borrar el contenidocompleto lo hariacutea con

1$d

Si usted ha hecho muchos cambios y no quiere salvar los contenidos del fichero lo mejores salir del editor sin escribir el fichero antes

La mayoriacutea de los usuarios no usan ed como el principal editor Los editores maacutes modernosofrecen una pantalla completa de edicioacuten y grupos de comandos maacutes flexibles ed ofreceuna buena introduccioacuten a vi y ayuda a explicar coacutemo se originaron los comandos de vi

A3 Raacutepido tutorial de Vi

El propoacutesito de este tutorial es que comience a usar el editor vi Este tutorial asumeque no tiene ninguna experiencia con vi asiacute que le mostraremos los diez comandos maacutesbaacutesicos de vi Estos comandos fundamentales son suficientes para realizar la mayoriacutea desus necesidades de edicioacuten y puede expandir su vocabulario de vi cuanto necesite Serecomienda que tenga un ordenador para practicar seguacuten avanza con el tutorial

A31 Ejecutar vi

Para ejecutar vi simplemente tiene que teclear las letras vi seguidas del nombre defichero que desea crear Veraacute una pantalla con una columna de tildes (~) en el ladoizquierdo vi estaacute ahora en modo de comando Cualquier cosa que teclee seraacute interpretadocomo un comando no como texto que usted desea escribir Para introducir texto tiene queteclear un comando Los dos comandos de entrada baacutesicos son los siguientes

i insertar texto a la izquierda del cursor

a antildeadir texto a la derecha del cursor

Dado que estaacute al comienzo de un fichero vaciacuteo no importa cual de estos usar Escriba unode ellos y despueacutes teclee el siguiente texto (un poema de Augustus DeMorgan encontradoen The Unix Programming Environment por BW Kernighan y R Pike)

Las pulgas grandes tienen pequentildeas pulgasltIntrogt

sobre sus espaldas para que les muerdanltIntrogt

Y las pulgas pequentildeas tienen pulgas maacutes pequentildeasltIntrogt

y asiacute hasta el infinitoltIntrogt

Y las pulgas grandes a su vezltIntrogt

tienen pulgas maacutes grandes sobre las que estarltIntrogt

Mientras que estas de nuevo tienen otras maacutes grandes aunltIntrogt

y maacutes grandes aun y asiacuteltIntrogt

ltEscgt

Fiacutejese que tiene que pulsar la tecla |_Esc_| para finalizar la insercioacuten y volver al modode comando

A32 Comandos de movimiento del cursor

h mueve el cursor un espacio a la izquierda

j mueve el cursor un espacio abajo

k mueve el cursor un espacio arriba

l mueve el cursor un espacio a la derecha

Estos comandos se pueden repetir manteniendo la tecla pulsada Intente mover el cursorpor el texto ahora Si intenta un movimiento imposible por ejemplo pulsar la tecla|_k_| cuando el cursor estaacute en la liacutenea superior la pantalla parpadearaacute momentaacuteneamenteo el terminal sonaraacute No se preocupe no muerde y su fichero no saldraacute dantildeado

A33 Borrar texto

x borra el caraacutecter que hay en el cursor

dd borra la liacutenea donde estaacute el cursor

Mueva el cursor a la primera liacutenea y poacutengalo de modo que esteacute bajo la n Pulse la letra|_x_| y la n desapareceraacute Ahora pulse la letra |_i_| para cambiarse al modo deinsercioacuten y vuelva a teclear la n Pulse |_Esc_| cuando haya terminado

A34 Salvar un fichero

w salvar (escribir al disco)

q salir

Aseguacuterese de que estaacute en modo de comando pulsando la tecla |_Esc_| Ahora pulse w Estosalvaraacute su trabajo escribieacutendolo a un fichero de disco

El comando para salir de vi es |_q_| Si quiere combinar el salvar y salir escriba wqTambieacuten hay una abreviacioacuten para wq _ ZZ Dado que gran parte del trabajo deprogramacioacuten consiste en ejecutar un programa encontrar alguacuten problema y llamar elprograma en el editor para hacer alguacuten pequentildeo cambio y luego volver a salir del editorpara ejecutar el programa otra vez ZZ seraacute un comando que usaraacute a menudo (En realidadZZ no es un sinoacutenimo exacto de wq _ si no ha hecho ninguacuten cambio al fichero que estaacuteeditando desde la ultima vez que lo salvo ZZ simplemente saldraacute del editor mientras quewq salvaraacute (redundantemente) el fichero antes de salir)

Si usted se lo ha cargado todo sin esperanzas y simplemente quiere volver a empezarlotodo puede teclear q (recuerde pulsar la tecla |_Esc_| primero) Si omite el vi nole permitiraacute salir sin salvar

A35 iquestQueacute viene a continuacioacuten

Los diez comandos que acaba de aprender deberiacutean ser suficientes para su trabajo Sinembargo solamente ha rozado la superficie del editor vi Hay comandos para copiarmaterial de un lugar del fichero a otro para mover material de un lugar a otro paramover material de un fichero a otro para ajustar el editor a sus gustos personales etcCon todo hay unos 150 comandos

A4 Tutorial avanzado de Vi

La ventaja y la potencia de vi estaacute en la habilidad de usarlo con eacutexito con soacutelo saberunos pocos comandos La mayoriacutea de los usuarios de vi se sienten un poco incoacutemodos alprincipio sin embargo despueacutes de alguacuten tiempo se encuentran aacutevidos de mayor conocimientode los comandos disponibles

El siguiente tutorial asume que el usuario ha completado el tutorial raacutepido (arriba) ypor lo tanto se siente a gusto con vi Este tutorial expone algunas de lascaracteriacutesticas maacutes poderosas de exvi desde copiar texto hasta la definicioacuten de macrosHay una seccioacuten sobre ex y los paraacutemetros para ajustar el editor a su gusto Estetutorial describe los comandos en vez de llevarle grupo por grupo

Se recomienda que usted disponga de alguacuten tiempo para probar los comandos en alguacuten textode ejemplo que se pueda permitir destruir

Este tutorial no expone todos los comandos de vi aunque se cubren los maacutes comuacutenmenteusados y auacuten otros adicionales Aunque usted elija usar otro editor de texto se esperaque apreciaraacute vi y lo que ofrece a quienes deciden usarlo

A41 Movimiento

La funcionalidad maacutes baacutesica de un editor es el mover el cursor por el texto Aquiacute estaacutenlos comandos de movimiento

h mueve el cursor un espacio a la izquierda

j mueve el cursor una liacutenea hacia abajo

k mueve el cursor una liacutenea hacia arriba

l mueve el cursor un espacio a la derecha

Algunas implementaciones tambieacuten permiten el uso de las teclas de cursor para mover elcursor

w mueve al principio de la siguiente palabra

e mueve al final de la siguiente palabra

E mueve al final de la siguiente palabra antes de un espacio

b mueve al principio de la palabra anterior

0 mueve al principio de la liacutenea actual

^ mueve a la primera palabra de la liacutenea actual

$ mueve al final de la liacutenea

ltCRgt mueve al principio de la siguiente liacutenea

shy mueve al principio de la liacutenea anterior

G mueve al final del fichero

1G mueve al principio del fichero

nG mueve a la liacutenea n

ltCntlgt G muestra el nuacutemero de liacutenea actual

va al pareacutentesis correspondiente

H mueve a la liacutenea superior en pantalla

M mueve a la liacutenea de en medio de la pantalla

L mueve al final de la pantalla

n_ mueve el cursor a la columna n

El texto se desplaza automaacuteticamente cuando el cursor alcanza la parte superior oinferior de la pantalla Tambieacuten hay comandos que permiten controlar el desplazamientodel texto

ltCntlgt f desplaza una pantalla hacia delante

ltCntlgt b desplaza una pantalla hacia atraacutes

ltCntlgt d desplaza media pantalla hacia abajo

ltCntlgt u desplaza media pantalla hacia arriba

Los comandos anteriores controlan el movimiento del cursor Algunos de los comandos usanun modificador de comandos en la forma de un nuacutemero que precede al comando Estacaracteriacutestica normalmente repite el comando ese nuacutemero de veces

Para mover el cursor ocho posiciones a la izquierda

8l mueve el cursor 8 posiciones a la izquierda

Si desea introducir un nuacutemero de espacios delante de un texto podriacutea usar el modificadorde comandos con el comando insertar Introduzca el nuacutemero de repeticiones (n) y despueacutes|_i_| seguido por el espacio y luego pulse la tecla |_Esc_|

ni inserta alguacuten texto y lo repite n veces

Los comandos que tratan con liacuteneas usan el modificador para referirse al nuacutemero de liacuteneaEl |_G_| es un buen ejemplo

1G mueve el cursor a la primera liacutenea

vi tiene un voluminoso grupo de comandos que se puede usar para mover el cursor por eltexto

vi tambieacuten puede posicionar el cursor en una liacutenea desde la liacutenea de comandos

vi +10 mi_ficherotex

Este comando abre el fichero llamado mi_ficherotex y pone el cursor 10 liacuteneas maacutes abajodel comienzo del fichero

Pruebe los comandos de esta seccioacuten Muy poca gente los recuerda todos en una solasesioacuten La mayor parte de los usuarios solamente utiliza una parte de estos comandos

Ahora se puede mover pero iquestcoacutemo modificar el texto

A42 Modificacioacuten del texto

El propoacutesito es cambiar el contenido del fichero y vi ofrece un amplio conjunto decomandos para ayudarnos en este proceso

Esta seccioacuten se concentra en antildeadir texto cambiar el texto existente y borrar texto Alfinal de esta seccioacuten usted tendraacute el conocimiento para crear cualquier fichero de textoque desee Las secciones restantes se concentran en comandos maacutes especializados yconvenientes

Cuando usted teclea nuevo texto puede introducir varias liacuteneas usando la tecla |_Intro_|Si hay que corregir un error tipograacutefico mientras introduce texto puede usar la tecla|_Retroceso_| para mover el cursor sobre el texto Las varias implementaciones de vi secomportan de manera diferente Algunas simplemente mueven el cursor hacia atraacutes y eltexto sigue vieacutendose y es aceptado Otras borran el texto cuando pulsa la tecla deborrado Otras versiones incluso permiten usar las teclas de cursores para mover elcursor mientras se estaacute en modo de entrada de texto Este modo de funcionamiento no es elnormal de vi Si el texto es visible y usa la tecla |_Esc_| mientras estaacute en la liacutenea enla que pulsoacute |_Retroceso_| entonces el texto que hay despueacutes del cursor se borraraacute Useel editor para acostumbrarse a este comportamiento

a Antildeadir texto a partir de la posicioacuten actual del cursor

A Antildeadir al final de la liacutenea

i Insertar texto a la izquierda del cursor

I Insertar texto a la izquierda del primer caracter que no sea espacio en laliacutenea actual

o Abrir una nueva liacutenea y antildeade texto debajo de la liacutenea actual

O Abrir una nueva liacutenea y antildeade texto encima de la liacutenea actual

vi tiene un pequentildeo grupo de comandos para borrar texto que se pueden mejorar con el usode modificadores

x Borrar el caraacutecter que estaacute debajo del cursor

dw Borrar desde la posicioacuten actual al final de la palabra

dd Borrar la liacutenea actual

D Borrar desde la posicioacuten actual al final de la liacutenea

Los modificadores se pueden usar para aumentar la potencia de los comandos Lossiguientes ejemplos son un subgrupo de las posibilidades

nx Borrar n caracteres desde el que estaacute bajo el cursor

ndd Borrar n liacuteneas

dnw Borrar n palabras (igual que ndw)

dG Borrar desde la posicioacuten actual hasta el final del fichero

d1G Borrar desde la posicioacuten actual hasta el principio del fichero

d$ Borrar desde la posicioacuten actual al final de la liacutenea (Esto es igual queD)

dn$ Borrar desde la liacutenea actual al final de la eneacutesima liacutenea

La lista de comandos anterior muestra que la operacioacuten de borrado puede ser muy uacutetilEsto se hace patente cuando se aplica en combinacioacuten con los comandos de movimiento decursor Hay que hacer notar que el comando |_D_| ignora los modificadores que se leapliquen

En ocasiones usted puede necesitar deshacer los cambios al texto Los siguientes comandosrecuperan el texto que habiacutea antes de hacer cambios

u Deshacer el uacuteltimo comando

U Deshacer todos los cambios ocurridos en la liacutenea actual

e Editar otra vez Recupera el estado del fichero desde la uacuteltima vez quese salvoacute

vi no soacutelo le permite deshacer cambios tambieacuten puede dar la vuelta al comandodeshacer Por ejemplo si usamos el comando |_5dd_| para borrar 5 liacuteneas se puedenrecuperar usando el comando |_u_| Si usted usa |_u_| una vez maacutes las 5 liacuteneasdesapareceraacuten de nuevo

vi ofrece comandos que permiten que se hagan cambios al texto sin tener que borrar yvolver a escribir

rc Reemplaza del caracter bajo el cursor con la letra c Se Mueve el cursoral modificador de repeticioacuten por ejemplo 2rc

R Sobreescribe el texto con el nuevo texto

cw Cambia el texto de la palabra actual

c$ Cambia el texto desde la posicioacuten actual al final de la liacutenea

cnw Cambia las siguientes n palabras (Igual que ncw)

cn$ Hacer cambios hasta el final de la eneacutesima liacutenea

C Hacer cambios hasta el final de la liacutenea actual

cc Hacer cambios en la liacutenea actual

s Sustituye el texto que escriba por el caracter actual

ns Sustituye el texto que escriba por los siguientes n caracteres

Las series de comandos de cambio que permiten que se introduzca un grupo de caracteres seterminan con la tecla |_Esc_|

El comando |_cw_| empieza en la posicioacuten actual en la palabra y termina al final de lapalabra

Cuando use un comando de cambio que especifica la distancia sobre la que se aplicaraacute elcambio vi pondraacute un $ en la uacuteltima posicioacuten de caraacutecter El nuevo texto puede sobrepasaro no llegar a la longitud original de texto

A43 Copiar y mover bloques de texto

El movimiento de texto supone la combinacioacuten de un nuacutemero de comandos para conseguir elpropoacutesito final Esta seccioacuten introduce los buffers1 con y sin nombre junto a loscomandos que cortan y pegan el texto

La copia de texto se realiza en tres pasos principales

1 Copia del texto a un buffer

2 Movimiento del cursor al lugar de destino

3 Pegar (poner) el texto en el buffer de edicioacuten

El buffer de edicioacuten no es sino el propio fichero en el que usted estaacute trabajando

Para Copiar texto al buffer sin nombre use el comando |_y_|

yy Mueve una copia de la liacutenea actual al buffer sin nombre

Y Mueve una copia de la liacutenea actual al buffer sin nombre

nyy Mueve las siguientes n lineas al buffer sin nombre

nY Mueve las siguientes n liacuteneas al buffer sin nombre

yw Mueve una palabra al buffer sin nombre

ynw Mueve n palabras al buffer sin nombre

nyw Mueve n palabras al buffer sin nombre

y$ Mueve el texto desde la posicioacuten actual al final de la liacutenea al buffer sinnombre

_____________________________________________

1 N del T buffer es una palabra inglesa que se refiere a un espacio reservado enmemoria para guardar alguna informacioacuten temporalmente En este caso se usan buffers paraalmacenar una copia temporal del texto que usted desea copiar o mover

El buffer sin nombre es un buffer temporal que puede ser faacutecilmente afectado por otroscomandos comunes Hay ocasiones en las cuales necesitamos mantener el contenido de unbuffer durante un periacuteodo maacutes extenso de tiempo En este caso se usariacutea un buffer connombre vi tiene 26 buffers con nombre Los buffers usan las letras del alfabeto como elnombre de identificacioacuten Para distinguir un comando de un buffer con nombre vi usa elcaraacutecter |__| Cuando use un buffer con nombre de letra minuacutescula los contenidos sesobre escriben mientras que el uso del nombre en letra mayuacutescula antildeade el nuevo texto alcontenido actual

ayy Mueve la liacutenea actual al buffer con nombre a

aY Mueve la liacutenea actual al buffer con nombre a

byw Mueve la palabra actual al buffer con nombre b

Byw Antildeade la palabra actual al contenido del buffer b

by3w Mueve las siguientes 3 palabras al buffer b

Use el comando |_p_| para pegar el contenido del buffer al buffer de edicioacuten

p Pegar del buffer sin nombre a la DERECHA del cursor

P Pegar del buffer sin nombre a la IZQUIERDA del cursor

nP Pegar n copias del buffer sin nombre a la IZQUIERDA del cursor

aP Pegar del buffer con nombre a a la DERECHA del cursor

b3P Pegar 3 copias del buffer con nombre b a la IZQUIERDA del cursor

Cuando use vi dentro de un xterm tiene otra opcioacuten para copiar texto Marque el bloque detexto que desea copiar arrastrando el cursor del ratoacuten sobre el texto Si mantienepulsado el botoacuten izquierdo del ratoacuten y arrastra el ratoacuten desde el comienzo al finalinvertiraacute el viacutedeo del texto Esta operacioacuten automaacuteticamente coloca el texto en un bufferreservado para el servidor de X Window

Para pegar el texto pulse el botoacuten de enmedio Acueacuterdese de poner vi en modo deinsercioacuten dado que la entrada de texto se podriacutea interpretar como comandos y el resultadoseriacutea cuando menos desagradable Usando la misma teacutecnica se puede copiar una sola palabrahaciendo doble click con el botoacuten izquierdo del ratoacuten sobre la palabra Solamente secopiaraacute esa uacutenica palabra Para pegarla se usa el mismo procedimiento que anteriormenteLos contenidos del buffer soacutelo cambian cuando se marca otro bloque de texto

Para mover un bloque de texto son necesarios tres pasos

1 Borrar el texto para ponerlo en un buffer con o sin nombre

2 Mover el cursor a la posicioacuten de destino

3 Pegar el buffer

El proceso es el mismo que el de copia con un solo cambio en el primer paso para borrarCuando

se usa el comando |_dd_| la liacutenea se borra y se coloca en el buffer sin nombre Luegopuede poner el

contenido del mismo modo que lo hizo cuando copioacute el texto en la posicioacuten deseada

add Borrar la liacutenea y ponerla en el buffer con nombre a

a4dd Borrar cuatro liacuteneas y ponerlas en el buffer con nombre a

dw Borrar una palabra y ponerla en el buffer sin nombre

Vea la seccioacuten sobre el modificado de texto para ver maacutes ejemplos de borrado de texto

En el caso de que el sistema falle el contenido de todos los buffers se pierde exceptoel contenido de los buffers de edicioacuten que se puede recuperar (ver comandos Uacutetiles)

A44 Buacutesqueda y cambio de texto

vi dispone de varios comandos para buacutesqueda Usted puede buscar desde un solo caraacutecterhasta una expressioacuten completa

Los dos comandos principales de buacutesqueda basados en caracteres son |_f_| y |_t_|

fc Encuentra el siguiente caracter c Se mueve a la derecha del siguiente

Fc Encuentra el siguiente caracter c Se mueve a la izquierda del anterior

tc Se mueve a la DERECHA al caracter anterior al siguiente c

Tc Se mueve a la IZQUIERDA al caraacutecter que sigue al c anterior vi(En algunasesto es lo mismo que Fc)

Repite el uacuteltimo comando fFtT

Igual que () pero cambiando la direccioacuten del comando original

Si el caracter que usted buscaba no se encuentra vi emitiraacute un pitido o le daraacute otrotipo de sentildeal (tal vez un parpadeo de toda la pantalla)

vi le permite buscar una cadena de texto en el buffer de edicioacuten

tira Busca hacia la derecha y abajo la siguiente instancia de tira

tira Busca hacia la izquierda y arriba la siguiente instancia de tira

n Repite el uacuteltimo comando o

N Repite el uacuteltimo comando o en la direccioacuten opuesta

Cuando use los comandos ||_||or |__| la uacuteltima liacutenea en la parte baja de la pantallase vaciaraacute

Introduzca en esa liacutenea la tira de caracteres que desea buscar y pulse |_Intro_|

La tira en el comando ||_||or |__|puede ser una expresioacuten regular Una expresioacutenregular puede ser una descripcioacuten de un conjunto de tiras La descripcioacuten se construyeusando texto entremezclado con caracteres especiales Los caracteres especiales de unaexpresioacuten regular son [ ] ^ $

Vale por cualquier caraacutecter excepto el caraacutecter de nueva liacutenea

Tecla de escape para cualquier caracter especial

Vale por 0 o maacutes instancias del caracter anterior

[ ] Busca exactamente uno de los caracteres incluiacutedos entre los corchetes

^ El caracter que sigue a ^ debe estar al principio de la liacutenea

$ El caracter que precede a $ se busca al final de la liacutenea

[^] Busca cualquier cosa que no se encuentre despues de ^ dentro de loscorchetes

[shy] Busca un rango de caracteres

El uacutenico modo de acostumbrarse a usar las expresiones regulares es usaacutendolas Acontinuacioacuten mostramos varios ejemplos de uso

cch Coincide con coche cacho cochera etc

cpe Coincide con cpe cper etc

stop Coincide con stp stop stoop etc

carn Coincide con cartoacuten carrilloacuten carmen etc

xyz Coincide con xyz al final de la liacutenea

^Los Encuentra cualquier liacutenea que empiece con Los

abcdef$ Encuentra cualquier liacutenea que termine con abcdef

^Solo$ Coincide con cualquier liacutenea que soacutelo tenga la palabra Solo

p[aiue]so Coincide con paso piso puso peso

Ver[DshyF] Coincide con VerD VerE VerF

Ver[^1shy9] Coincide con Ver siempre que a continuacioacuten NO haya un nuacutemero

the[ir][re] Coincide con their therr there theie

[AshyZashyz][AshyZashyz] Coincide con cualquier palabra

vi usa el modo de comandos de ex para llevar a cabo buacutesquedas y sustituciones Todos loscomandos que empiezan con dos puntos son comandos en modo ex

Los comandos de buacutesqueda y sustitucioacuten permiten que se usen expresiones regulares sobreun rango de liacuteneas y sustituir la tira de caracteres que se busca El usuario puede pedirconfirmacioacuten antes de que se realice la sustitucioacuten Merece la pena hacer una revisioacuten dela representacioacuten de los nuacutemeros de liacutenea en el tutorial de ed

ltprimgtltultgtsltbuscagtltsustgtg Comando general

1$slosLosg Buscar el fichero entero y sustituir los por Los

stheTheg siginifica el fichero entero (igual que arriba)

5s^g Borra el contenido de la liacutenea actual hasta la quinta

slosLosgc Sustituye los con Los preguntando antes de hacer laoperacioacuten

s^g Borra los primeros cuatro caraacutecteres de cada liacutenea

El comando de buacutesqueda es muy potente cuando se combina con las expresiones regulares Sino se incluye la directiva |_g_| entonces el cambio soacutelo se aplica a la primera instanciaque se encuentre en cada liacutenea

En ocasiones usted quiere usar los caracteres de buacutesqueda en los caracteres desustitucioacuten Se puede reescribir todo el comando en la liacutenea pero vi permite que loscaracteres de sustitucioacuten incluyan algunos caracteres especiales

15sayudaampndog Sustituye ayuda por ayudando en las cinco primeras liacuteneas

s ampampg Duplica el nuacutemero de espacios entre palabras

El uso de la tira de caracteres completa_para buacutesqueda_tiene sus liacutemites y por lo tantovi usa los pareacutentesis en secuencia de escape ||_(_|| y ||_)_||para seleccionar el rangode la sustitucioacuten El uso de un diacutegito en secuencia de escape |_1_| identifica el rangoen el orden de la definicioacuten y la sustitucioacuten se puede hacer

s^()1g Borra todo despues de e incluyendo los dos puntos

s()()21g Da la vuelta a las palabras a los dos lados de losdos puntos

vi ofrece comandos muy potentes que muchos editores de texto modernos no tienen o nopueden ofrecer El coste de esta potencia suele ser tambieacuten el principal argumento encontra de vi Los comandos pueden ser difiacuteciles de aprender y leer Sin embargo lamayoriacutea de las cosas buenas suelen ser un poco extrantildeas al principio Con un poco depraacutectica y tiempo los comandos de vi se convertiraacuten en una segunda naturaleza para Ud

Apeacutendice B

The GNU General Public License

GNU GENERAL PUBLIC LICENSE

Version 2 June 1991

Copyright Oc 1989 1991 Free Software Foundation Inc 675 Mass Ave Cambridge MA 02139USA

Everyone is permitted to copy and distribute verbatim copies of this license documentbut changing it is not allowed

Preamble

The licenses for most software are designed to take away your freedom to share and changeit By contrast the GNU General Public License is intended to guarantee your freedom toshare and change free software to make sure the software is free for all its users ThisGeneral Public License applies to most of the Free Software Foundations software and toany other program whose authors commit to using it (Some other Free Software Foundationsoftware is covered by the GNU Library General Public License instead) You can apply itto your programs too

When we speak of free software we are referring to freedom not price Our GeneralPublic Licenses are designed to make sure that you have the freedom to distribute copiesof free software (and charge for this service if you wish) that you receive source codeor can get it if you want it that you can change the software or use pieces of it in newfree programs and that you know you can do these things

To protect your rights we need to make restrictions that forbid anyone to deny you theserights or to ask you to surrender the rights These restrictions translate to certainresponsibilities for you if you distribute copies of the software or if you modify it

For example if you distribute copies of such a program whether gratis or for a fee youmust give the recipients all the rights that you have You must make sure that they tooreceive or can get the source code And you must show them these terms so they know theirrights

We protect your rights with two steps (1) copyright the software and (2) offer you thislicense which gives you legal permission to copy distribute andor modify the software

Also for each authors protection and ours we want to make certain that everyoneunderstands that there is no warranty for this free software If the software is modifiedby someone else and passed on we want its recipients to know that what they have is notthe original so that any problems introduced by others will not reflect on the originalauthors reputations

Finally any free program is threatened constantly by software patents We wish to avoidthe danger that redistributors of a free program will individually obtain patentlicenses in effect making the program proprietary To prevent this we have made itclear that any patent must be licensed for everyones free use or not licensed at all

The precise terms and conditions for copying distribution and modification follow

Terms and Conditions

0 This License applies to any program or other work which contains a notice placed bythe copyright holder saying it may be distributed under the terms of this General PublicLicense

The Program below refers to any such program or work and a work based on theProgram means either the Program or any derivative work under copyright law that is tosay a work containing the Program or a portion of it either verbatim or withmodifications andor translated into another language (Hereinafter translation isincluded without limitation in the term modification) Each licensee is addressed asyou

Activities other than copying distribution and modification are not covered by thisLicense they are outside its scope The act of running the Program is not restrictedand the output from the Program is covered only if its contents constitute a work basedon the Program (independent of having been made by running the Program) Whether that istrue depends on what the Program does

1 You may copy and distribute verbatim copies of the Programs source code as youreceive it in any medium provided that you conspicuously and appropriately publish oneach copy an appropriate copyright notice and disclaimer of warranty keep intact all thenotices that refer to this License and to the absence of any warranty and give any otherrecipients of the Program a copy of this License along with the Program

You may charge a fee for the physical act of transferring a copy and you may at youroption offer warranty protection in exchange for a fee

2 You may modify your copy or copies of the Program or any portion of it thus forming awork based on the Program and copy and distribute such modifications or work under theterms of Section 1 above provided that you also meet all of these conditions

a You must cause the modified files to carry prominent notices stating that you changedthe files and the date of any change

b You must cause any work that you distribute or publish that in whole or in partcontains or is derived from the Program or any part thereof to be licensed as a whole atno charge to all third parties under the terms of this License

c If the modified program normally reads commands interactively when run you must causeit when started running for such interactive use in the most ordinary way to print ordisplay an announcement including an appropriate copyright notice and a notice that thereis no warranty (or else saying that you provide a warranty) and that users mayredistribute the program under these conditions and telling the user how to view a copyof this License (Exception if the Program itself is interactive but does not normallyprint such an announcement your work based on the Program is not required to print anannouncement)

These requirements apply to the modified work as a whole If identifiable sections ofthat work are not derived from the Program and can be reasonably considered independentand separate works in themselves then this License and its terms do not apply to thosesections when you distribute them as separate works But when you distribute the samesections as part of a whole which is a work based on the Program the distribution of thewhole must be on the terms of this License whose permissions for other licensees extendto the entire whole and thus to each and every part regardless of who wrote it

Thus it is not the intent of this section to claim rights or contest your rights to workwritten entirely by you rather the intent is to exercise the right to control thedistribution of derivative or collective works based on the Program

In addition mere aggregation of another work not based on the Program with the Program(or with a work based on the Program) on a volume of a storage or distribution mediumdoes not bring the other work under the scope of this License

3 You may copy and distribute the Program (or a work based on it under Section 2) inobject code or executable form under the terms of Sections 1 and 2 above provided thatyou also do one of the following

a Accompany it with the complete corresponding machineshyreadable source code which mustbe distributed under the terms of Sections 1 and 2 above on a medium customarily used forsoftware interchange or b Accompany it with a written offer valid for at least threeyears to give any third party for a charge no more than your cost of physicallyperforming source distribution a complete machineshyreadable copy of the correspondingsource code to be distributed under the terms of Sections 1 and 2 above on a mediumcustomarily used for software interchange or

c Accompany it with the information you received as to the offer to distributecorresponding source code (This alternative is allowed only for noncommercialdistribution and only if you received the program in object code or executable form withsuch an offer in accord with Subsection b above)

The source code for a work means the preferred form of the work for making modificationsto it For an executable work complete source code means all the source code for allmodules it contains plus any associated interface definition files plus the scriptsused to control compilation and installation of the executable However as a specialexception the source code distributed need not include anything that is normallydistributed (in either source or binary form) with the major components (compilerkernel and so on) of the operating system on which the executable runs unless thatcomponent itself accompanies the executable

If distribution of executable or object code is made by offering access to copy from adesignated place then offering equivalent access to copy the source code from the sameplace counts as distribution of the source code even though third parties are notcompelled to copy the source along with the object code

4 You may not copy modify sublicense or distribute the Program except as expresslyprovided under this License Any attempt otherwise to copy modify sublicense ordistribute the Program is void and will automatically terminate your rights under thisLicense However parties who have received copies or rights from you under thisLicense will not have their licenses terminated so long as such parties remain in fullcompliance

5 You are not required to accept this License since you have not signed it Howevernothing else grants you permission to modify or distribute the Program or its derivativeworks These actions are prohibited by law if you do not accept this License Thereforeby modifying or distributing the Program (or any work based on the Program) you indicateyour acceptance of this License to do so and all its terms and conditions for copyingdistributing or modifying the Program or works based on it

6 Each time you redistribute the Program (or any work based on the Program) therecipient automatically receives a license from the original licensor to copy distributeor modify the Program subject to these terms and conditions You may not impose anyfurther restrictions on the recipients exercise of the rights granted herein You arenot responsible for enforcing compliance by third parties to this License

7 If as a consequence of a court judgment or allegation of patent infringement or forany other reason (not limited to patent issues) conditions are imposed on you (whetherby court order agreement or otherwise) that contradict the conditions of this Licensethey do not excuse you from the conditions of this License If you cannot distribute soas to satisfy simultaneously your obligations under this License and any other pertinentobligations then as a consequence you may not distribute the Program at all Forexample if a patent license would not permit royaltyshyfree redistribution of the Programby all those who receive copies directly or indirectly through you then the only way youcould satisfy both it and this License would be to refrain entirely from distribution ofthe Program

If any portion of this section is held invalid or unenforceable under any particularcircumstance the balance of the section is intended to apply and the section as a wholeis intended to apply in other circumstances

It is not the purpose of this section to induce you to infringe any patents or otherproperty right claims or to contest validity of any such claims this section has thesole purpose of protecting the integrity of the free software distribution system whichis implemented by public license practices Many people have made generous contributionsto the wide range of software distributed through that system in reliance on consistentapplication of that system it is up to the authordonor to decide if he or she iswilling to distribute software through any other system and a licensee cannot impose thatchoice

This section is intended to make thoroughly clear what is believed to be a consequence ofthe rest of this License

8 If the distribution andor use of the Program is restricted in certain countrieseither by patents or by copyrighted interfaces the original copyright holder who placesthe Program under this License may add an explicit geographical distribution limitationexcluding those countries so that distribution is permitted only in or among countriesnot thus excluded In such case this License incorporates the limitation as if writtenin the body of this License

9 The Free Software Foundation may publish revised andor new versions of the GeneralPublic License from time to time Such new versions will be similar in spirit to thepresent version but may differ in detail to address new problems or concerns

Each version is given a distinguishing version number If the Program specifies a versionnumber of this License which applies to it and any later version you have the optionof following the terms and conditions either of that version or of any later versionpublished by the Free Software Foundation If the Program does not specify a versionnumber of this License you may choose any version ever published by the Free SoftwareFoundation

10 If you wish to incorporate parts of the Program into other free programs whosedistribution conditions are different write to the author to ask for permission Forsoftware which is copyrighted by the Free Software Foundation write to the Free SoftwareFoundation we sometimes make exceptions for this Our decision will be guided by the two

goals of preserving the free status of all derivatives of our free software and ofpromoting the sharing and reuse of software generally

NO WARRANTY

11 BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE THERE IS NO WARRANTY FOR THE PROGRAMTO THE EXTENT PERMITTED BY APPLICABLE LAW EXCEPT WHEN OTHERWISE STATED IN WRITING THECOPYRIGHT HOLDERS ANDOR OTHER PARTIES PROVIDE THE PROGRAM AS IS WITHOUT WARRANTY OFANY KIND EITHER EXPRESSED OR IMPLIED INCLUDING BUT NOT LIMITED TO THE IMPLIEDWARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE THE ENTIRE RISK AS TOTHE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU SHOULD THE PROGRAM PROVEDEFECTIVE YOU ASSUME THE COST OF ALL NECESSARY SERVICING REPAIR OR CORRECTION

12 IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING WILL ANYCOPYRIGHT HOLDER OR ANY OTHER PARTY WHO MAY MODIFY ANDOR REDISTRIBUTE THE PROGRAM ASPERMITTED ABOVE BE LIABLE TO YOU FOR DAMAGES INCLUDING ANY GENERAL SPECIAL INCIDENTALOR CONSEQUENTIAL DAMAGES ARISING OUT OF THE USE OR INABILITY TO USE THE PROGRAM(INCLUDING BUT NOT LIMITED TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSESSUSTAINED BY YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHERPROGRAMS) EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF SUCHDAMAGES

How to Apply These Terms to Your New Programs

If you develop a new program and you want it to be of the greatest possible use to thepublic the best way to achieve this is to make it free software which everyone canredistribute and change under these terms

To do so attach the following notices to the program It is safest to attach them to thestart of each source file to most effectively convey the exclusion of warranty and eachfile should have at least the copyright line and a pointer to where the full notice isfound

one line to give the programs name and an idea of what it does

Copyright Oc 19yy name of author

This program is free software you can redistribute it andor modify it under the termsof the GNU General Public License as published by the Free Software Foundation eitherversion 2 of the License or (at your option) any later version

This program is distributed in the hope that it will be useful but WITHOUT ANY WARRANTYwithout even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSESee the GNU General Public License for more details

You should have received a copy of the GNU General Public License along with thisprogram if not write to the Free Software Foundation Inc 675 Mass Ave Cambridge MA02139

Also add information on how to contact you by electronic and paper mail

If the program is interactive make it output a short notice like this when it starts inan interactive mode

Gnomovision version 69 Copyright Oc 19yy name of author

Gnomovision comes with ABSOLUTELY NO WARRANTY for details type `show w

This is free software and you are welcome to redistribute it under certain conditionstype show c for details

The hypothetical commands show w and show c should show the appropriate parts of theGeneral Public License Of course the commands you use may be called something otherthan show w and show c they could even be mouseshyclicks or menu items whatever suitsyour program

You should also get your employer (if you work as a programmer) or your school if anyto sign a copyright disclaimer for the program if necessary Here is a sample alterthe names

Yoyodyne Inc hereby disclaims all copyright interest in the program `Gnomovision(which makes passes at compilers) written by James Hacker

signature of Ty Coon 1 April 1989

Ty Coon President of Vice

This General Public License does not permit incorporating your program into proprietaryprograms If your program is a subroutine library you may consider it more useful topermit linking proprietary applications with the library If this is what you want to douse the GNU Library General Public License instead of this License

Apeacutendice C

The GNU Library General Public

License

GNU LIBRARY GENERAL PUBLIC LICENSE

Version 2 June 1991

Copyright Oc 1991 Free Software Foundation Inc 675 Mass Ave Cambridge MA 02139 USAEveryone is permitted to copy and distribute verbatim copies of this license documentbut

changing it is not allowed [This is the first released version of the library GPL It isnumbered 2 because it goes with version 2 of the ordinary GPL]

Preamble

The licenses for most software are designed to take away your freedom to share and changeit By contrast the GNU General Public Licenses are intended to guarantee your freedomto share and change free softwareshyto make sure the software is free for all its users

This license the Library General Public License applies to some specially designatedFree Software Foundation software and to any other libraries whose authors decide to useit You can use it for your libraries too

When we speak of free software we are referring to freedom not price Our GeneralPublic Licenses are designed to make sure that you have the freedom to distribute copiesof free software (and charge for this service if you wish) that you receive source codeor can get it if you want it that you can change the software or use pieces of it in newfree programs and that you know you can do these things

To protect your rights we need to make restrictions that forbid anyone to deny you theserights or to ask you to surrender the rights These restrictions translate to certainresponsibilities for you if you distribute copies of the library or if you modify it

For example if you distribute copies of the library whether gratis or for a fee youmust give the recipients all the rights that we gave you You must make sure that theytoo receive or can get the source code If you link a program with the library you mustprovide complete object files to the recipients so that they can relink them with thelibrary after making changes to the library and recompiling it And you must show themthese terms so they know their rights

Our method of protecting your rights has two steps (1) copyright the library and (2)offer you this license which gives you legal permission to copy distribute andor modifythe library

Also for each distributors protection we want to make certain that everyoneunderstands that there is no warranty for this free library If the library is modifiedby someone else and passed on we want its recipients to know that what they have is notthe original version so that any problems introduced by others will not reflect on theoriginal authors reputations

Finally any free program is threatened constantly by software patents We wish to avoidthe danger that companies distributing free software will individually obtain patentlicenses thus in effect transforming the program into proprietary software To preventthis we have made it clear that any patent must be licensed for everyones free use ornot licensed at all

Most GNU software including some libraries is covered by the ordinary GNU GeneralPublic License which was designed for utility programs This license the GNU LibraryGeneral Public License applies to certain designated libraries This license is quitedifferent from the ordinary one be sure to read it in full and dont assume thatanything in it is the same as in the ordinary license

The reason we have a separate public license for some libraries is that they blur thedistinction we usually make between modifying or adding to a program and simply using itLinking a program with a library without changing the library is in some sense simplyusing the library and is analogous to running a utility program or application programHowever in a textual and legal sense the linked executable is a combined work aderivative of the original library and the ordinary General Public License treats it assuch

Because of this blurred distinction using the ordinary General Public License forlibraries did not effectively promote software sharing because most developers did notuse the libraries We concluded that weaker conditions might promote sharing better

However unrestricted linking of nonshyfree programs would deprive the users of thoseprograms of all benefit from the free status of the libraries themselves This LibraryGeneral Public License is intended to permit developers of nonshyfree programs to use freelibraries while preserving your freedom as a user of such programs to change the freelibraries that are incorporated in them (We have not seen how to achieve this as regardschanges in header files but we have achieved it as regards changes in the actualfunctions of the Library) The hope is that this will lead to faster development of freelibraries

The precise terms and conditions for copying distribution and modification follow Payclose attention to the difference between a work based on the library and a work thatuses the library

The former contains code derived from the library while the latter only works togetherwith the library

Note that it is possible for a library to be covered by the ordinary General PublicLicense rather than by this special one

Terms and Conditions for Copying Distribution and Modification

0 This License Agreement applies to any software library which contains a notice placedby the copyright holder or other authorized party saying it may be distributed under theterms of this Library General Public License (also called this License) Each licenseeis addressed as you

A library means a collection of software functions andor data prepared so as to beconveniently linked with application programs (which use some of those functions anddata) to form executables

The Library below refers to any such software library or work which has beendistributed under these terms A work based on the Library means either the Library orany derivative work under copyright law that is to say a work containing the Library ora portion of it either verbatim or with modifications andor translatedstraightforwardly into another language

(Hereinafter translation is included without limitation in the term modification)

Source code for a work means the preferred form of the work for making modifications toit For a library complete source code means all the source code for all modules itcontains plus any associated interface definition files plus the scripts used tocontrol compilation and installation of the library

Activities other than copying distribution and modification are not covered by thisLicense they are outside its scope The act of running a program using the Library isnot restricted and output from such a program is covered only if its contents constitutea work based on the Library (independent of the use of the Library in a tool for writingit) Whether that is true depends on what the Library does and what the program that usesthe Library does

1 You may copy and distribute verbatim copies of the Librarys complete source code asyou receive it in any medium provided that you conspicuously and appropriately publishon each copy an appropriate copyright notice and disclaimer of warranty keep intact allthe notices that refer to this License and to the absence of any warranty and distributea copy of this License along with the Library

You may charge a fee for the physical act of transferring a copy and you may at youroption offer warranty protection in exchange for a fee

2 You may modify your copy or copies of the Library or any portion of it thus forming awork based on the Library and copy and distribute such modifications or work under theterms of Section 1 above provided that you also meet all of these conditions

a The modified work must itself be a software library

b You must cause the files modified to carry prominent notices stating that you changedthe files and the date of any change

c You must cause the whole of the work to be licensed at no charge to all third partiesunder the terms of this License

d If a facility in the modified Library refers to a function or a table of data to besupplied by an application program that uses the facility other than as an argumentpassed when the facility is invoked then you must make a good faith effort to ensurethat in the event an application does not supply such function or table the facilitystill operates and performs whatever part of its purpose remains meaningful

(For example a function in a library to compute square roots has a purpose that isentirely wellshydefined independent of the application Therefore Subsection 2d requiresthat any applicationshysupplied function or table used by this function must be optionalif the application does not supply it the square root function must still compute squareroots)

These requirements apply to the modified work as a whole If identifiable sections ofthat work are not derived from the Library and can be reasonably considered independentand separate works in themselves then this License and its terms do not apply to thosesections when you distribute them as separate works But when you distribute the same

sections as part of a whole which is a work based on the Library the distribution of thewhole must be on the terms of this License whose permissions for other licensees extendto the entire whole and thus to each and every part regardless of who wrote it

Thus it is not the intent of this section to claim rights or contest your rights to workwritten entirely by you rather the intent is to exercise the right to control thedistribution of derivative or collective works based on the Library

In addition mere aggregation of another work not based on the Library with the Library(or with a work based on the Library) on a volume of a storage or distribution mediumdoes not bring the other work under the scope of this License

3 You may opt to apply the terms of the ordinary GNU General Public License instead ofthis License to a given copy of the Library To do this you must alter all the noticesthat refer to this License so that they refer to the ordinary GNU General PublicLicense version 2 instead of to this License (If a newer version than version 2 of theordinary GNU General Public License has appeared then you can specify that versioninstead if you wish) Do not make any other change in these notices

Once this change is made in a given copy it is irreversible for that copy so theordinary GNU General Public License applies to all subsequent copies and derivative worksmade from that copy

This option is useful when you wish to copy part of the code of the Library into aprogram that is not a library

4 You may copy and distribute the Library (or a portion or derivative of it underSection 2) in object code or executable form under the terms of Sections 1 and 2 aboveprovided that you accompany it with the complete corresponding machineshyreadable sourcecode which must be distributed under the terms of Sections 1 and 2 above on a mediumcustomarily used for software interchange

If distribution of object code is made by offering access to copy from a designatedplace then offering equivalent access to copy the source code from the same placesatisfies the requirement to distribute the source code even though third parties arenot compelled to copy the source along with the object code

5 A program that contains no derivative of any portion of the Library but is designedto work with the Library by being compiled or linked with it is called a work that usesthe Library

Such a work in isolation is not a derivative work of the Library and therefore fallsoutside the scope of this License

However linking a work that uses the Library with the Library creates an executablethat is a derivative of the Library (because it contains portions of the Library) ratherthan a work that uses the library The executable is therefore covered by this LicenseSection 6 states terms for distribution of such executables

When a work that uses the Library uses material from a header file that is part of theLibrary the object code for the work may be a derivative work of the Library even thoughthe source code is not Whether this is true is especially significant if the work can belinked without the Library or if the work is itself a library The threshold for this tobe true is not precisely defined by law

If such an object file uses only numerical parameters data structure layouts andaccessors and small macros and small inline functions (ten lines or less in length)

then the use of the object file is unrestricted regardless of whether it is legally aderivative work (Executables containing this object code plus portions of the Librarywill still fall under Section 6)

Otherwise if the work is a derivative of the Library you may distribute the object codefor the work under the terms of Section 6 Any executables containing that work also fallunder Section 6 whether or not they are linked directly with the Library itself

6 As an exception to the Sections above you may also compile or link a work that usesthe Library with the Library to produce a work containing portions of the Library anddistribute that work under terms of your choice provided that the terms permitmodification of the work for the customers own use and reverse engineering for debuggingsuch modifications

You must give prominent notice with each copy of the work that the Library is used in itand that the Library and its use are covered by this License You must supply a copy ofthis License If the work during execution displays copyright notices you must includethe copyright notice for the Library among them as well as a reference directing theuser to the copy of this License Also you must do one of these things

a Accompany the work with the complete corresponding machineshyreadable source code forthe Library including whatever changes were used in the work (which must be distributedunder Sections 1 and 2 above) and if the work is an executable linked with the Librarywith the complete machineshyreadable work that uses the Library as object code andorsource code so that the user can modify the Library and then relink to produce amodified executable containing the modified Library (It is understood that the user whochanges the contents of definitions files in the Library will not necessarily be able torecompile the application to use the modified definitions)

b Accompany the work with a written offer valid for at least three years to give thesame user the materials specified in Subsection 6a above for a charge no more than thecost of performing this distribution

c If distribution of the work is made by offering access to copy from a designatedplace offer equivalent access to copy the above specified materials from the same place

d Verify that the user has already received a copy of these materials or that you havealready sent this user a copy

For an executable the required form of the work that uses the Library must include anydata and utility programs needed for reproducing the executable from it However as aspecial exception the source code distributed need not include anything that is normallydistributed (in either source or binary form) with the major components (compilerkernel and so on) of the operating system on which the executable runs unless thatcomponent itself accompanies the executable

It may happen that this requirement contradicts the license restrictions of otherproprietary libraries that do not normally accompany the operating system Such acontradiction means you cannot use both them and the Library together in an executablethat you distribute

7 You may place library facilities that are a work based on the Library sideshybyshyside ina single library together with other library facilities not covered by this License anddistribute such a combined library provided that the separate distribution of the workbased on the Library and of the other library facilities is otherwise permitted andprovided that you do these two things

a Accompany the combined library with a copy of the same work based on the Libraryuncombined with any other library facilities This must be distributed under the terms ofthe Sections above

b Give prominent notice with the combined library of the fact that part of it is a workbased on the Library and explaining where to find the accompanying uncombined form ofthe same work

8 You may not copy modify sublicense link with or distribute the Library except asexpressly provided under this License Any attempt otherwise to copy modify sublicenselink with or distribute the Library is void and will automatically terminate yourrights under this License

However parties who have received copies or rights from you under this License willnot have their licenses terminated so long as such parties remain in full compliance

9 You are not required to accept this License since you have not signed it Howevernothing else grants you permission to modify or distribute the Library or its derivativeworks These actions are prohibited by law if you do not accept this License Thereforeby modifying or distributing the Library (or any work based on the Library) you indicateyour acceptance of this License to do so and all its terms and conditions for copyingdistributing or modifying the Library or works based on it

10 Each time you redistribute the Library (or any work based on the Library) therecipient automatically receives a license from the original licensor to copydistribute link with or modify the Library subject to these terms and conditions Youmay not impose any further restrictions on the recipients exercise of the rights grantedherein You are not responsible for enforcing compliance by third parties to thisLicense

11 If as a consequence of a court judgment or allegation of patent infringement or forany other reason (not limited to patent issues) conditions are imposed on you (whetherby court order agreement or otherwise) that contradict the conditions of this Licensethey do not excuse you from the conditions of this License If you cannot distribute soas to satisfy simultaneously your obligations under this License and any other pertinentobligations then as a consequence you may not distribute the Library at all Forexample if a patent license would not permit royaltyshyfree redistribution of the Libraryby all those who receive copies directly or indirectly through you then the only way youcould satisfy both it and this License would be to refrain entirely from distribution ofthe Library

If any portion of this section is held invalid or unenforceable under any particularcircumstance the balance of the section is intended to apply and the section as a wholeis intended to apply in other circumstances

It is not the purpose of this section to induce you to infringe any patents or otherproperty right claims or to contest validity of any such claims this section has thesole purpose of protecting the integrity of the free software distribution system whichis implemented by public license practices Many people have made generous contributionsto the wide range of software distributed through that system in reliance on consistentapplication of that system it is up to the authordonor to decide if he or she iswilling to distribute software through any other system and a licensee cannot impose thatchoice

This section is intended to make thoroughly clear what is believed to be a consequence ofthe rest of this License

12 If the distribution andor use of the Library is restricted in certain countrieseither by patents or by copyrighted interfaces the original copyright holder who placesthe Library under this License may add an explicit geographical distribution limitationexcluding those countries so that distribution is permitted only in or among countriesnot thus excluded In such case this License incorporates the limitation as if writtenin the body of this License

13 The Free Software Foundation may publish revised andor new versions of the LibraryGeneral Public License from time to time Such new versions will be similar in spirit tothe present version but may differ in detail to address new problems or concerns

Each version is given a distinguishing version number If the Library specifies a versionnumber of this License which applies to it and any later version you have the option offollowing the terms and conditions either of that version or of any later versionpublished by the Free Software Foundation If the Library does not specify a licenseversion number you may choose any version ever published by the Free SoftwareFoundation

14 If you wish to incorporate parts of the Library into other free programs whosedistribution conditions are incompatible with these write to the author to ask forpermission For software which is copyrighted by the Free Software Foundation write tothe Free Software Foundation we sometimes make exceptions for this Our decision will beguided by the two goals of preserving the free status of all derivatives of our freesoftware and of promoting the sharing and reuse of software generally

NO WARRANTY

11 BECAUSE THE LIBRARY IS LICENSED FREE OF CHARGE THERE IS NO WARRANTY FOR THE LIBRARYTO THE EXTENT PERMITTED BY APPLICABLE LAW EXCEPT WHEN OTHERWISE STATED IN WRITING THECOPYRIGHT HOLDERS ANDOR OTHER PARTIES PROVIDE THE LIBRARY AS IS WITHOUT WARRANTY OFANY KIND EITHER EXPRESSED OR IMPLIED INCLUDING BUT NOT LIMITED TO THE IMPLIEDWARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE THE ENTIRE RISK AS TOTHE QUALITY AND PERFORMANCE OF THE LIBRARY IS WITH YOU SHOULD THE LIBRARY PROVEDEFECTIVE YOU ASSUME THE COST OF ALL NECESSARY SERVICING REPAIR OR CORRECTION

12 IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING WILL ANYCOPYRIGHT HOLDER OR ANY OTHER PARTY WHO MAY MODIFY ANDOR REDISTRIBUTE THE LIBRARY ASPERMITTED ABOVE BE LIABLE TO YOU FOR DAMAGES INCLUDING ANY GENERAL SPECIAL INCIDENTALOR CONSEQUENTIAL DAMAGES ARISING OUT OF THE USE OR INABILITY TO USE THE LIBRARY(INCLUDING BUT NOT LIMITED TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSESSUSTAINED BY YOU OR THIRD PARTIES OR A FAILURE OF THE LIBRARY TO OPERATE WITH ANY OTHERSOFTWARE) EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF SUCHDAMAGES

How to Apply These Terms to Your New Libraries

If you develop a new library and you want it to be of the greatest possible use to thepublic we recommend making it free software that everyone can redistribute and changeYou can do so by permitting redistribution under these terms (or alternatively underthe terms of the ordinary General Public License)

To apply these terms attach the following notices to the library It is safest to attachthem to the start of each source file to most effectively convey the exclusion ofwarranty and each file should have at least the copyright line and a pointer to wherethe full notice is found

one line to give the librarys name and a brief idea of what it does

Copyright (C) year name of author

This library is free software you can redistribute it andor modify it under the termsof the GNU Library General Public License as published by the Free Software Foundationeither version 2 of the License or (at your option) any later version

This library is distributed in the hope that it will be useful but WITHOUT ANY WARRANTYwithout even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSESee the GNU Library General Public License for more details

You should have received a copy of the GNU Library General Public License along with thislibrary if not write to the Free Software Foundation Inc 675 Mass Ave Cambridge MA02139 USA

Also add information on how to contact you by electronic and paper mail

You should also get your employer (if you work as a programmer) or your school if anyto sign a copyright disclaimer for the library if necessary Here is a sample alterthe names

Yoyodyne Inc hereby disclaims all copyright interest in the library `Frob (a libraryfor tweaking knobs) written by James Random Hacker

signature of Ty Coon 1 April 1990

Ty Coon President of Vice

Thats all there is to it

Apeacutendice D

iquestQueacute es LuCAS

El proyecto LuCAS (Linux en CAStellano) comenzoacute como tantas otras cosas ligadas a Linuxen un bar tomando cervezas (reales no virtuales) Era allaacute por marzo de 1995 y ya sehabiacutea comentado en las aacutereas de FidoNet la necesidad de disponer de textos en castellanosobre Linux Fue en aquel bar el bar Ekin de Algorta (Bizkaia) donde nos reuniacuteamos losusuarios de FidoNet todos los domingos donde surgioacute la idea de pasar a la accioacuten Trasdiscutirlo un poco decidimos comenzar por traducir algo que fuese uacutetil para aquellos quecomenzaban a dar sus primeros pasos en linux y creiacutemos que el Installation amp GettingStarted de Matt Welsh era el documento maacutes adecuado Como era mucho trabajo para unasola persona y habiacutea mucha gente que se habiacutea mostrado dispuesta a colaborar habiacutea quehacerlo bien y el trabajo de traducir un libro como eacuteste requeriacutea una labor decoordinacioacuten que inmediatamente asumimos Ramoacuten Gutieacuterrez y yo Alfonso Belloso Yo mehice cargo de coordinar a los traductores para que no hiciesen trabajo repetido y Ramoacutense encargaba de juntar los trabajos y generar el documento final Pedimos permiso alpropio Matt Welsh y asiacute echamos a andar

Hubo que esperar un largo tiempo a tener una primera versioacuten presentable del libro perose consiguioacute Fundamentalmente el hecho de que era una experiencia nueva y ladiversidad de gente que colaboroacute hizo que este primer paso durase casi un antildeo peromerecioacute la pena esperar Hay que decir que a pesar de que todo este movimiento surgioacute deFidoNet y que desde alliacute se sigue muy de cerca al poco de comenzar a trabajar en ellofue cuando conseguiacute mi primera cuenta de Internet y comprobeacute que la forma maacutes praacutecticade coordinarnos era a traveacutes de La Red ya que por Fidonet las comunicaciones se haciacuteandemasiado largas en el tiempo y no siempre eran seguras (para contactar con alguacutencolaborador a veces se podiacutea tardar 2 semanas o no saber nada de eacutel jamaacutes) Y con ellocomenzamos a disponer de maacutes herramientas primero un servidor de ftp luego una lista decorreo un servidor de Web y asiacute hasta hoy Bueno pues una vez terminado este primerlibro nos quedoacute el gusanillo de hacer maacutes y visto que yo acabeacute un poco cansado vinoJuan Joseacute Amor me tomoacute el relevo y comenzamos a traducir la Network AdministratorGuide de Olaf Kirch Esta vez y con la infraestructura ya montada tardamos unos pocosmeses en tener la primera versioacuten

Y despueacutes de eacuteste ya se estaacuten haciendo maacutes Ya esta terminada la traduccioacuten de la LinuxUser Guide (en su fase alfa) y hay alguacuten proyecto maacutes en marcha No quiero dejar demencionar otros proyectos que trabajan en paralelo a eacuteste LuCAS en siacute se ha idodedicando maacutes a la labor de traduccioacuten de textos tipo libro maacutes concretamente a los delLDP y creaciones propias si bien en su origen se ideoacute para traducir cualquier tipo dedocumento e incluso para crear documentos directamente en castellano El SLUG (SpanishLinux User Group) ya existiacutea cuando surgioacute LuCAS o acababa de aparecer Al amparo deLuCAS surgioacute el INSFLUG que se centra en la traduccioacutencreacioacuten de FAQs HOWTOs ydocumentos maacutes pequentildeos Y probablemente existan maacutes grupos haciendo tareas similarespero que ahora no conozco ni soy capaz de recordar

Para contactar con los coordinadores del grupo LuCAS puede hacerlo con Alfonso Belloso

Martiacutenez ltalfonbipv02biehuesgt o en ltalfoniiesesgt y con Juan Joseacute Amor Iglesiasltjjamorlsfiupmesgt

Apeacutendice E

iquestQueacute es INSFLUG

El INSFLUG nacioacute allaacute por marzo del 96 siendo su seno materno el aacuterea echomail deFidoNet R34LINUX Surge ante el entusiasmo de los que empezaacutebamos por aquel entonces aadentrarnos en el mundo del Linux maravillados por como un SO tan potente dedistribucioacuten libre podiacutea haberse hecho realidad gracias al buen hacer generosidad eincreiacuteble colaboracioacuten entre tantas personas dispersas por el globo

Nos sentimos auacuten maacutes maravillados al observar la increiacuteble participacioacuten de la gente quefrecuentaba el aacuterea modeacutelica en FidoNet y por la inestimable ayuda que alliacute seprestaba eso fue (haciendo un poco de psicoacutelogo) lo que produjo la formacioacuten delINSFLUG un inmenso y sincero agradecimiento ademaacutes de enormes ganas de corresponder pornuestra parte aportando nuestro granito de arena a la comunidad Linux en forma detraducciones de Howtos y FAQs documentos que generalmente no superan la decena depaacuteginas y con cuya traduccioacuten ademaacutes de aportar el novel o no tan novel profundiza enel tema del que trate el Howto a medida que lo traduce redundando en beneficio para eacutelmismo shy)

El INSFLUG se centra en la traduccioacuten de Howtos y FAQs (Frecuently Asked Questions algoasiacute como Preguntas de Uso Frecuente PUFs)

Para la traduccioacuten no necesitas maacutes que un editor de texto (En Linux hay muchos) normaly el paquete linuxdocshysgml con el que empleando un lenguaje muy sencillo similar alHTML una vez escrito un soacutelo fuente se podraacuten obtener a partir de eacutel el documento enformatos dvi ps txt lyx rtf info html etc

Cuentas ademaacutes con una guiacutea traducida del uso del linuxdocshysgml en la que se antildeadendetalles de configuracioacuten para el castellano ademaacutes de la facilidad que supone eltraducir editando el fuente original en ingleacutes ya que los coacutedigos etc ya estaacuten noobstante es un lenguaje sencilliacutesimo ademaacutes de ser el formato oficial de todos losHowtos

El INSFLUG colabora estrechamente con LuCAS es maacutes hay varias personas que colaborancon ambos grupos El grupo LuCAS se dedica mayormente a las guiacuteas (guides) los librosmaacutes extensos del LDP o (Linux Documentation Project)

El coordinador de INSFLUG es Francisco J Montilla (email ltpacopepeinamecomgt ircpukka FiDO 234540222) Si desea maacutes informacioacuten puede consultar su paacutegina en WWW enlthttpwwwinsflugnovaesgt y su espacio de FTP en ltftpftpinsflugnovaesgt

Page 4: G.L.U.P.€€Guía€de€Linux€Para€el€Usuariomural.uv.es/~jalto/LINUX.pdf3 En€el€principio€11 3.1€La€computadora€despierta 3.2€Linux€despierta 3.3€La€actuación€del€usuario

3 En el principio 11

31 La computadora despierta

32 Linux despierta

33 La actuacioacuten del usuario

331 El ingreso

332 Al abandonar la computadora

333 Como apagar la computadora

34 Mensajes del nuacutecleo

4 El shell de Unix 21

41 Comandos Unix

411 Un comando Unix tiacutepico

42 Autoayuda

43 Almacenaje de la informacioacuten

431 Miremos los directorios con ls

432 El directorio actual y cd

433 Creacioacuten y borrado de directorios

44 Informacioacuten en movimiento

441 cp como un monje

442 La poda con rm

443 Seriacutea interesante tener un rastrillo

5 El sistema de ventanas X 35

51 Ejecucioacuten y salida del sistema de ventanas X

511 Ejecucioacuten de X

512 Saliendo de X

52 iquestQueacute es el sistema de ventanas X

53 iquestQueacute es esto que hay en mi pantalla

531 XClock

532 XTerm

54 Gestores de ventanas

541 Cuando se crean nuevas ventanas

542 Foco

543 Moviendo ventanas

544 Profundidad

545 Iconizar

546 Variando el tamantildeo

547 Maximizacioacuten

548 Menuacutes

55 Atributos X

551 Geometriacutea

552 Presentacioacuten

56 Caracteriacutesticas comunes

561 Botones

562 Barras de menuacute

563 Barras de desplazamiento

6 Trabajando con Unix 47

61 Comodines

611 iquestQueacute ocurre realmente

612 El signo de interrogacioacuten

62 Ganar tiempo con bash

621 Editando la liacutenea de comandos

622 Completamiento de comandos y nombres de fichero

63 La entrada estaacutendar y La salida estaacutendar

631 Algunos conceptos de Unix

632 Redireccionar la salida

633 Redireccionar la entrada

634 Las tuberiacuteas

64 Multitarea

641 Usando el control de trabajos

642 Teoriacutea del control de trabajos

65 Consolas virtuales como estar en varios lugares a la vez

7 Pequentildeos programas potentes 61

71 El poder de Unix

72 Trabajando con ficheros

73 Estadiacutesticas del sistema

74 iquestQueacute hay en un fichero

75 Comandos de edicioacuten

8 Editando archivos con Emacs 71

81 iquestQueacute es Emacs

82 Comenzar raacutepidamente en X

83 Editando varios archivos al mismo tiempo

84 Terminando una sesioacuten de edicioacuten

85 La tecla Meta

86 Cortar pegar destruir y tirar

87 Buscar y reemplazar

88 iquestQueacute es lo que ocurre realmente

89 Pidiendo ayuda a Emacs

810 Especializando buffers Modos

811 Modos de programacioacuten

8111 Modo C

8112 Modo Scheme

8113 Modo de correo

812 Como ser maacutes eficiente auacuten

813 Personalizando Emacs

814 Averiguando maacutes

9 Tengo que ser yo mismo 91

91 Personalizacioacuten del bash

911 Arranque del shell

912 Ficheros de arranque

913 Creando alias

914 Variables de entorno

92 Los ficheros de inicio de X Window

921 Configuracioacuten de twm

922 Configuracioacuten de fvwm

93 Otros ficheros de inicio

931 El fichero de configuracioacuten de Emacs

932 Configuracioacuten por defecto del FTP

933 Permitiendo un acceso remoto sencillo a su cuenta

934 Redireccioacuten de correo

94 Veamos algunos ejemplos

10 Hablando con los demaacutes 111

101 Correo electroacutenico

1011 Enviar correo

1012 Leer el correo

102 Noticias maacutes que de sobra

103 Localizar a la gente

1031 Planes y proyectos

104 Uso remoto de sistemas

105 Intercambio de ficheros

106 Viajando por la telarantildea

11 Comandos divertidos 117

111 find el buscador de ficheros

1111 Generalidades

1112 Expresiones

1113 Opciones

1114 Test

1115 Acciones

1116 Operadores

1117 Ejemplos

1118 Una uacuteltima palabra

112 tar el archivador en cinta

1121 Introduccioacuten

1122 Opciones principales

1123 Modificadores

1124 Ejemplos

113 dd el duplicador de datos

1131 Opciones

1132 Ejemplos

114 sort el clasificador de datos

1141 Introduccioacuten

1142 Opciones

1143 Ejemplos

12 Errores equivocaciones bugs y otras molestias 129

121 Evitando errores

122 Queacute hacer cuando algo va mal

123 No es fallo tuyo

1231 Cuando hay un error

1232 Notificando un error

A Introduccioacuten a vi 133

A1 Una raacutepida historia de Vi

A2 Raacutepido tutorial de Ed

A21 Crear un fichero

A22 Editar un fichero existente

A23 Nuacutemeros de liacutenea en detalle

A3 Raacutepido tutorial de Vi

A31 Ejecutar vi

A32 Comandos de movimiento del cursor

A33 Borrar texto

A34 Salvar un fichero

A35 iquestQueacute viene a continuacioacuten

A4 Tutorial avanzado de Vi

A41 Movimiento

A42 Modificacioacuten del texto

A43 Copiar y mover bloques de texto

A44 Buacutesqueda y cambio de texto

B The GNU General Public License 147

C The GNU Library General Public License 155

D iquestQueacute es LuCAS 165

E iquestQueacute es INSFLUG 167

Bibliografiacutea

[1] Almesberger Werner LILO Generic Boot Loader for Linux Disponibleelectroacutenicamente tsxshy11mitedu 3 de Julio de 1993

[2] Bach Maurice J The Design of the UNIX Operating System Englewood Cliffs NewJersey PrenticeshyHall Inc 1986

[3] Lamport Leslie LATEX A Document Preparation System Reading MassachusettsAddisonshyWesley Publishing Company 1986

[4] Stallman Richard M GNU Emacs Manual octava edicioacuten Cambridge Massachusetts FreeSoftware Foundation 1993

Capiacutetulo 1

Introduccioacuten

How much does it cost to entice a dopeshysmoking Unix system guru to Dayton

Brian Boyle Unix Worlds First Annual Salary Survey

11 iquestQuieacuten debe leer este libro

iquestEs Ud la persona que debe leer este libro Permiacutetame responder a esta preguntahacieacutendole estas otras iquestAcaba de obtener Linux de alguna fuente lo instaloacute y ahoraquiere saber que puede hacer O iquestes un usuario de computadoras que nunca ha utilizadoUnix y estaacute considerando usar Linux pero quiere saber lo que puede hacer con eacutel

Si tiene este libro la respuesta a esas preguntas probablemente es siacute Cualquiera quetiene Linux (el clon gratuito de Unix escrito por Linus Torvalds) en su PC pero no sabeque hacer despueacutes de la instalacioacuten debe leer este libro Aquiacute encontraraacute explicacionessobre la mayoriacutea de los comandos baacutesicos de Unix e incluso de algunos avanzados Tambieacutentrataremos acerca del potente editor GNU Emacs y de muchas otras aplicaciones importantesen Unix

111 iquestQueacute debe hacer antes de leer este libro

Este libro supone que Ud tiene acceso a un sistema Unix (iexclPara aprender a nadar hay quemojarse) Maacutes importante auacuten el sistema Unix antes mencionado debe ser una PC INTELcorriendo Linux

Este requerimiento no es estrictamente necesario pero cuando las versiones de Unixdifieran en su comportamiento nos ocuparemos de las respuestas que exhiba Linux y no delas otras variantes de Unix

Linux estaacute disponible de distintas maneras llamadas distribuciones Espero que hayaencontrado una distribucioacuten completa como por ejemplo la MCCshyInterim y que la tengainstalada Existen diferencias entre las distintas distribuciones de Linux pero lamayoriacutea de ellas son insignificantes

Ocasionalmente veraacute que en este libro las cosas se ven un poquito distintas a lo que veen su computadora Si le sucede esto es probable que esteacute utilizando una versioacutendistinta de la miacutea estoy interesado en recibir informes de tales casos

Si Ud es el superusuario (el ocupado del mantenimiento el instalador) del sistemadeberaacute crearse una cuenta de usuario normal para Ud mismo Consulte por favor losmanuales de instalacioacuten para obtener la informacioacuten necesaria Si no es el superusuariodeberaacute solicitarle a quien lo sea que le cree una cuenta

Ahora deberaacute tener tiempo y paciencia El aprendizaje de Linux no es faacutecil _la mayoriacutea delas personas encuentran que es maacutes faacutecil aprender el sistema operativo del Macintosh Unavez que aprende Linux las cosas se vuelven mucho maacutes faacuteciles Unix es un sistema muypoderoso y con eacutel es muy faacutecil realizar tareas complejas

Ademaacutes este libro supone que Ud estaacute moderadamente familiarizado con algunos teacuterminoscomputacionales Aunque este requerimiento no es necesario hace maacutes faacutecil la lecturaDebe conocer teacuterminos como `programa o `ejecucioacuten Si no los maneja necesitaraacute de laayuda de alguien maacutes avezado durante su aprendizaje de Unix

12 iquestCoacutemo evitar leer este libro

La mejor manera de aprender el uso de casi cualquier programa de computadora esponieacutendose a trabajar sobre la computadora La mayoriacutea de las personas encuentran de pocobeneficio la lectura de un libro si no utilizan a la vez el programa Por lo tanto lamejor manera de aprender Unix y Linux es utilizaacutendolos Utilice Linux para todo lo quepueda Experimente No tenga miedo es posible que haga algunos liacuteos pero siempre puedevolver a instalar todo Mantenga actualizadas las copias de seguridad y iexcldivieacutertase

Unix no es un sistema operativo tan intuitivamente obvio como algunos otros Por lotanto es probable que deba leer al menos los capiacutetulos 4 5 y el 6 antes de empezar aexperimentar

La manera nuacutemero uno para evitar la lectura de este libro es que utilice la documentacioacutendisponible en liacutenea en Linux Para ello debe aprender a utilizar el comando man sudescripcioacuten estaacute en la Seccioacuten 42

13 iquestCoacutemo leer este libro

La manera sugerida para aprender Unix es leer un poquito luego jugar un poquito Jueguehasta que se sienta coacutemodo con los conceptos y luego puede saltar entre los temas que secubren en el libro Encontraraacute una variedad de temas algunos de los cuales seraacuten de suintereacutes Luego de un tiempo se sentiraacute lo suficientemente confiado como para utilizarcomandos sin saber exactamente que es lo que deberiacutean hacer Esta es una buena sentildeal

Lo que mucha gente asocia con Unix es el shell de Unix se trata de un programa especialque interpreta comandos En la praacutectica eacutesta es una manera conveniente de ver las cosaspero debe saber que Unix es realmente mucho maacutes que el shell o mucho menos _dependiendode como lo mire Este libro le diraacute como utilizar el shell los programas que usualmentevienen con Unix y algunos programas que no son muy comunes (pero que Linux casi siempretrae)

El capiacutetulo actual es un metashycapiacutetulo se discute acerca del libro y de comoaplicarlo para poder hacer nuestro trabajo Los otros capiacutetulos contienen

Capiacutetulo 2 trata del origen y destino de Unix y Linux Tambieacuten se habla de laFree Software Foundation y el proyecto GNU

Capiacutetulo 3 habla de como arrancar y detener su computadora y de lo quesucede durante esas operaciones Gran parte de esto tiene que ver con temasque no es necesario conocer para utilizar Linux pero auacuten asiacute son uacutetiles einteresantes

Capiacutetulo 4 introduce el shell de Unix Es con este programa con el cual laspersonas realizan su trabajo y corren los programas que necesitan Trata delos programas y comandos baacutesicos que necesitaraacute conocer para utilizar Unix

Capiacutetulo 5 cubre el sistema de ventana X2 X es la cara graacutefica principal deUnix e incluso algunas distribuciones lo configuran como opcioacutenpredeterminada

Capiacutetulo 6 analiza algunas de las caracteriacutesticas maacutes avanzadas del shell deUnix El aprendizaje de las teacutecnicas tratadas en este capiacutetulo le ayudaraacute aser maacutes eficiente

Capiacutetulo 7 tiene breves descripciones de muchos de los comandos Unix Cuantomaacutes herramientas sabe utilizar un usuario maacutes raacutepidamente puede concluir sutrabajo

Capiacutetulo 8 describe el editor de textos Emacs Se trata de un programa muyextenso que integra varias de las herramientas de Unix bajo una uacutenicainterfaz

Capiacutetulo 9 trata acerca de las distintas maneras que hay de personalizar unsistema Unix para satisfacer sus gustos personales

Capiacutetulo 10 investiga los medios por los cuales un usuario Unix puedecomunicarse con otras maacutequinas alrededor del mundo incluyendo el correoelectroacutenico y la Red de Alcance Mundial3

Capiacutetulo 11 describe algunos de los comandos con maacutes opciones y maacutes difiacutecilesde utilizar

Capiacutetulo 12 muestra formas sencillas de evitar errores en Unix y Linux

14 Documentacioacuten de Linux

Este libro Guiacutea de Linux Para el Usuario estaacute pensado para el principiante en UnixAfortunadamente el Linux Documentation Project (Proyecto de Documentacioacuten de Linux)tambieacuten estaacute escribiendo libros para los usuarios maacutes experimentados4

_____________________________________________

2 N del T X Window System

3 N del T tambieacuten conocida como WWW o World Wide Web

4 N del T El proyecto LuCAS estaacute ocupaacutendose de traducir parte de la documentacioacuten deLinux al castellano Para obtener informacioacuten actualizada de las traducciones vea elapeacutendice D

141 Otros libros de Linux

Los otros libros incluyen Installation and Getting Started 5 que es una guiacutea paraobtener e instalar Linux The Linux System Administrators Guide trata como organizar ymantener un sistema Linux y The Linux Kernel Hackers Guide que explica como modificarLinux The Linux Network Administrator Guide6 muestra como instalar configurar yutilizar una conexioacuten de red

142 COMOs

Ademaacutes de los libros el Proyecto de Documentacioacuten de Linux7 ha realizado una serie depequentildeos documentos que describen como configurar alguacuten aspecto particular de Linux Porejemplo el SCSIshyCOMO describe algunas de las complicaciones que aparecen al utilizarSCSI (que es una manera estaacutendar de comunicarse con ciertos dispositivos) y Linux

Estos COMOs estaacuten disponibles en varios formatos en un libro como The Linux Bible o DrLinux en el foro de discusioacuten composlinuxanswers o en varios lugares de la WWW Elsitio central de la informacioacuten acerca de Linux es httpwwwlinuxorg

143 iquestQueacute es el Proyecto de Documentacioacuten de Linux

Como casi todo lo asociado con Linux el Proyecto de Documentacioacuten de Linux consiste enun conjunto de gente que trabaja alrededor del mundo Originalmente organizado por LarsWirzenius el Proyecto estaacute coordinado en la actualidad por Matt Welsh con la ayuda deMichael K Johnson

Se espera que el Proyecto de Documentacioacuten de Linux provea los libros que satisfagantodas las necesidades de documentacioacuten de Linux en alguacuten momento Por favor diacuteganos sihemos tenido eacutexito o queacute es lo que debemos mejorar Puede contactar al autor enleg+andrewcmuedu a Matt Welsh en mdwcscornelledu8

15 Sistemas operativos

El propoacutesito principal de un sistema operativo es dar el soporte que necesitan losprogramas que hacen un trabajo de intereacutes para el usuario Por ejemplo Ud puede estarutilizando un editor si quiere crear un documento Ese editor no puede realizar sutrabajo sin la ayuda del sistema operativo _necesitaraacute esta ayuda para interactuar con laterminal los archivos y el resto de la computadora

Si todo lo que hace el sistema operativo es dar soporte a las aplicaciones que Ud deseautilizar iquestpor queacute se necesita todo un libro soacutelo para hablar del sistema operativoExiste un montoacuten de actividades de mantenimiento de rutina (ademaacutes de los programas queutilizaraacute principalmente) que Ud tambieacuten necesitaraacute realizar En el caso de Linux elsistema operativo contiene ademaacutes un montoacuten de minishyaplicaciones para ayudarle arealizar de manera maacutes eficiente su trabajo El conocimiento del sistema operativo leseraacute de ayuda si su trabajo no se centra en alguna aplicacioacuten monoliacutetica

_____________________________________________

5 N del T Disponible en castellano como Linux Instalacioacuten y Primeros Pasos Vea elapeacutendice D

6 N del T Disponible en castellano como Guiacutea de Administracioacuten de Redes con Linux Veael apeacutendice D

7 N del T El grupo INSFLUG ha traducido varios de los documentos HOWTO acuntildeando elteacutermino COMO Vea el apeacutendice E

8 N del T y al coordinador de esta traduccioacuten Ceacutesar Ballardini en cballardsantafecomar

Los sistemas operativos (SO para abreviar) pueden ser simples y miacutenimos como DOS ograndes y complejos como OS2 o VMS Unix trata de estar en un punto medio A la vez queproporciona maacutes recursos y hace maacutes que los primitivos SO no trata de hacer todo Unixse disentildeoacute originalmente como una simplificacioacuten de un sistema operativo que se denominoacuteMultics

La filosofiacutea original de disentildeo de Unix fue la de distribuir la funcionalidad en pequentildeaspartes los programas9 De esta forma el usuario puede obtener nueva funcionalidad ynuevas caracteriacutesticas de una manera relativamente sencilla mediante las diferentescombinaciones de pequentildeas partes (programas) Ademaacutes en el caso de que aparezcan nuevasutilidades (y de hecho aparecen) puede Ud integrarlas en su espacio de trabajo Cuandoescribo este documento por ejemplo utilizo activamente los siguientes programas fvwmpara manejar mis ventanas emacs para editar el texto LATEX para darle forma xdvipara ver una presentacioacuten preliminar dvips para prepararlo para la impresioacuten y luegolpr para imprimirlo Si mantildeana llegara a conseguir otro programa de presentacioacutenpreliminar de archivos dvi podriacutea utilizarlo en lugar del xdvi sin cambiar el resto delos programas que uso En el momento actual mi sistema estaacute corriendo treinta y ocho

programas simultaacuteneamente (Gran parte de ellos son programas del sistema que duermenhasta que tienen alguacuten trabajo especiacutefico para realizar)

Cuando utilice un sistema operativo desearaacute minimizar la cantidad de trabajo que tieneque llevar a cabo para concluir su tarea Unix proporciona varias herramientas que puedenayudarle pero para ello debe conocer que es lo que hacen No es muy productivo perderseuna hora intentando poner a andar alguna cosa y al final tener que abandonar todo Estelibro le ensentildearaacute queacute herramientas debe Ud utilizar en queacute situacioacuten y como combinaresas herramientas entre siacute

La parte clave de un sistema operativo se denomina nuacutecleo10 En muchos sistemasoperativos como Unix OS2 o VMS el nuacutecleo proporciona las funciones necesarias paralos programas que estaacuten corriendo y los planifica para su ejecucioacuten Esto significabaacutesicamente que el programa A puede tomar una cierta cantidad de tiempo el programa B lamisma cantidad etc El nuacutecleo siempre estaacute funcionando es el primer programa quearranca cuando se enciende el sistema y el uacuteltimo programa que hace algo cuando se apagael equipo

_____________________________________________

9 Este disentildeo estuvo determinado por el hardware sobre el cual funcionoacute originalmenteUnix Por alguna extrantildea razoacuten el sistema operativo resultante fue muy uacutetil sobre otrasplataformas de hardware El disentildeo baacutesico fue tan bueno que auacuten veinticinco antildeos despueacutessigue usaacutendose

10 N del T nuacutecleo del ingleacutes kernel

Capiacutetulo 2

A propoacutesito iquestqueacute es Unix

Ken Thompson tiene un automoacutevil en cuyo proyecto de disentildeo trabajoacute A diferencia de otrosautomoacuteviles eacuteste no tiene velociacutemetro nivel de combustible ni ninguna de las estuacutepidasluces que importunan al conductor moderno En su lugar si el conductor comete alguacutenerror se enciende un enorme en el centro del tablero El conductor experimentadodice sabraacute usualmente que es lo que anda mal

21 La historia de Unix

En 1965 los Bell Telephone Laboratories (Bell Labs una divisioacuten de ATampT) estabatrabajando con General Electric y el Proyecto MAC del MIT para escribir un sistemaoperativo llamado Multics

Para hacer maacutes corta una historia de por siacute larga Bell Labs decidioacute que el proyecto noestaba yendo a ninguna parte y disolvioacute el grupo Esto sin embargo dejoacute a la Bell sinun buen sistema operativo

Ken Thompson y Dennis Ritchie decidieron esbozar un sistema operativo que supliera lasnecesidades de la Bell Labs Cuando Thompson llegoacute a necesitar un entorno de desarrollo(1970) que corriera en una PDPshy7 aprovechoacute para poner en praacutectica sus ideas BrianKernighan le dioacute el nombre de Unix como un juego de palabras contra Multics

Un tiempo despueacutes Dennis Ritchie inventoacute el lenguaje de programacioacuten C En 1973 sereescribioacute el sistema operativo Unix en C en lugar del ensamblador original1 En 1977se movioacute Unix a una nueva maacutequina distinta de las PDP en las que habiacutea corridopreviamente mediante un proceso que se denomina migracioacuten El hecho de que Unix estabaescrito en C facilitoacute la migracioacuten pues gran parte del coacutedigo ya escrito necesitoacute soacutelouna simple recompilacioacuten y no una reescritura

Al final de los 70 ATampT teniacutea prohibido competir en la industria de la computacioacuten porlo que otorgoacute licencias econoacutemicas de Unix a varios colegios y universidades Unix sedifundioacute lentamente fuera de las instituciones acadeacutemicas pero pronto tambieacuten se hizopopular en el aacutembito comercial

El Unix de la actualidad es distinto del Unix de 1970 Existen dos corrientesprincipales System V de los Unix System Laboratories (USL) que es una subsidiaria deNovell2 y BSD Berkeley Software Distribution La versioacuten USL estaacute ahora por su cuartaversioacuten o SVR43 mientras que la uacuteltima BSD es la 44 Sin embargo existen muchasdiferentes versiones de Unix entre estas dos La mayoriacutea de las versiones de Unix sondesarrolladas por compantildeiacuteas de software y derivan de uno de los dos agrupamientos Lasversiones que se utilizan actualmente incorporan caracteriacutesticas de ambas variaciones

Las versiones actuales de Unix para PC Intel cuestan entre $500 y $2000

_____________________________________________

1 Lenguaje ensamblador es un lenguaje de computadoras muy elemental y que estaacuteindisolublemente ligado a un tipo particular de ordenador

22 La historia de Linux

El autor primario de Linux es Linus Torvalds A partir de la versioacuten original ha sidomejorado por incontables personas de todo el mundo Se trata de un clon del sistemaoperativo Unix escrito desde cero Ni USL ni la Universidad de California Berkeleytuvieron participacioacuten en la escritura de Linux Una de las cosas maacutes interesantes deLinux es que el desarrollo ocurre simultaacuteneamente alrededor del mundo La gente hacontribuiacutedo desde Australia a Finlandia y esperamos que lo siga haciendo

Linux comenzoacute como un proyecto para explorar el chip 386 Uno de los primeros proyectosde Linus fue un programa que pueda alternar entre la impresioacuten de AAAA y BBBB Esto luegoevolucionoacute hacia Linux

Linux ha sido registrado bajo los teacuterminos de la Licencia Puacuteblica General GNU (GNUGeneral Public License) o GPL Esta licencia escrita por la Free Software Foundation(FSF) estaacute disentildeada para evitar que alguna persona restrinja la distribucioacuten desoftware En pocas palabras dice que aunque Ud cobre a alguien por entregarle unacopia no podraacute impedir que ese alguien la regale Tambieacuten significa que debe estardisponible el coacutedigo fuente4 Esto es uacutetil para los programadores

Cualquiera puede modificar Linux y auacuten distribuir sus modificaciones siempre quemantenga el coacutedigo bajo la misma licencia

En Linux puede correr la mayoriacutea del software popular en Unix incluyendo el Sistema deVentanas X X se desarrolloacute en el Instituto Tecnoloacutegico Massachusetts para permitir alos sistemas Unix la creacioacuten de ventanas graacuteficas y la coacutemoda interaccioacuten con lasmismas En la actualidad el sistema X se usa en todas las versiones disponibles de Unix

Ademaacutes de las dos variaciones de Unix System V y BSD existe un conjunto de documentosde estandarizacioacuten publicados por la IEEE denominados POSIX Linux antes que nadasatisface los documentos POSIXshy1 y POSIXshy2 Su apariencia se asemeja mucho a la de BSD enciertas partes mientras que es parecido a System V en otras Es una combinacioacuten (y parala mayoriacutea de las personas una buena) de los tres estaacutendares

Algunas de las utilidades incluiacutedas con las distribuciones de Linux proceden de la FreeSoftware Foundation y son parte del proyecto GNU El proyecto GNU es un esfuerzo paraescribir un avanzado sistema operativo portable con el estilo de Unix Portablesignifica que pueda correr en una variedad de maacutequinas distintas no soacutelo en PCs IntelMacintoshes o lo que sea El sistema operativo del Proyecto GNU se llama Hurd Laprincipal diferencia entre el Linux y el GNU Hurd no se encuentra en la interfaz delusuario sino en la del programador el Hurd es un sistema operativo moderno mientrasque Linux es maacutes parecido al disentildeo original de Unix

_____________________________________________

2 Recientemente vendida a Novell antes era propiedad de ATampT

3 Una manera criacuteptica de decir System five Revision four

4 El coacutedigo fuente de un programa es lo que el programador lee y escribe Luego setraduce a un coacutedigo de maacutequina ilegible para las personas que es el que la computadorainterpreta

La historia precedente de Linux olvida mencionar otra persona maacutes allaacute de Linus TorvaldsPor ejemplo H J Lu se ha ocupado de mantener gcc y la biblioteca C de Linux (doselementos necesarios para todos los programas en Linux) casi desde el principio de lavida del sistema operativo Ud puede encontrar una lista de personas que merecenreconocimiento por su trabajo en cada sistema Linux en el archivousrsrclinuxCREDITS

221 Linux aquiacute y ahora

La primer cifra en el nuacutemero de versioacuten de Linux indica revisiones realmente importantesen alcance

Este nuacutemero cambia muy lentamente y para la eacutepoca en que esto se escribe (febrero de1996) soacutelo estaacute disponible la versioacuten 115 La segunda cifra indica revisiones de menorenvergadura

Los segundos nuacutemeros cuando son pares representan versiones maacutes estables en las que unopuede confiar plenamente cuando son impares indican versiones en desarrollo que son maacutespropensas a contener errores La uacuteltima cifra es el nuacutemero menor de lanzamiento cada vezque se libera una nueva versioacuten que tal vez soacutelo arregla unos pocos problemas o agregaunas pocas caracteriacutesticas se incrementa en uno este nuacutemero En febrero de 1996 lauacuteltima versioacuten estable es la 1211 y la uacuteltima en desarrollo es la 1361

Linux es un sistema grande y desafortunadamente contiene errores que los desarrolladoresreparan al encontrarlos Auacuten cuando algunas personas puedan experimentarmalfuncionamientos regularmente esto se debe normalmente a causa de piezas de hardwareque no son estaacutendares o que estaacuten defectuosas los errores6 que afectan a todos losusuarios son escasos y no se dan seguido

Por supuesto eacutesos son los errores del nuacutecleo Los errores pueden presentarse en casicada aspecto del sistema y los usuarios de poca experiencia tienen problemas paradiferenciar los distintos programas entre siacute Por ejemplo cierto problema puede hacerque todos los caracteres aparezcan como un galimatiacuteas iquestes un error o unacaracteriacutestica Sorpresivamente es una caracteriacutestica existen ciertas secuencias decontrol que al aparecer provocan el galimatiacuteas Espero que este libro le sea de ayudapara poder identificar esas situaciones

222 Unas pocas preguntas y respuestas

Antes de embarcarnos para nuestra larga travesiacutea repasemos las cuestiones ultrashyimportantes

Pregunta iquestCoacutemo se pronuncia Linux

Respuesta De acuerdo con Linus debe pronunciarse con un sonido corto ih como prIntmInImal etc Linux debe rimar con Minix que es otro clon de Unix No debe pronunciarsecomo la pronunciacioacuten (americana) de Peanuts en Linus sino maacutes bien como LIHshynucksY la u es cortante como en rule no suave como en ducks Linux debe al menos rimarcon cynics

_____________________________________________

5 N del T La traduccioacuten se hace en febrero de 1997 y ya la versioacuten 2 es cosa detodos los diacuteas

6 N del T error del ingleacutes bug

Pregunta iquestPor queacute trabajar en Linux

Respuesta iquestPor queacute no Linux es generalmente maacutes barato que los otros sistemasoperativos (o al menos no maacutes caro) y con frecuencia es menos problemaacutetico que algunossistemas comerciales Puede que no sea el mejor sistema para sus aplicaciones enparticular pero para alguien que estaacute interesado en utilizar las aplicaciones Unixdisponibles para Linux se trata de un sistema de alta performance

223 Software comercial en Linux

Existe un montoacuten de software comercial disponible para Linux Comenzando con Motif quees una interfaz para el sistema X Window que vagamente nos recuerda a Microsoft WindowsLinux tiene cada vez maacutes software comercial En estos tiempos Ud puede adquirircualquier cosa desde WordPerfect (el popular procesador de palabras) hasta Maple que esun paquete que realiza complejas manipulaciones simboacutelicas para Linux

Para aquellos lectores interesados en las cuestiones legales esto estaacute permitido por lalicencia de Linux A la vez que la licencia GNU General Public License (que se reproduceen el Apeacutendice B) cubre el nuacutecleo de Linux la licencia GNU Library General PublicLicense (que se puede ver en el Apeacutendice C) cubre la mayor parte del coacutedigo del cualdependen las aplicaciones Esto permite que los proveedores de software comercial puedanvender sus aplicaciones y reservarse el coacutedigo fuente de las mismas

Debe Ud percatarse de que los dos documentos antes nombrados son notificaciones dederechos de autor Ellos no regulan como utiliza Ud el software solamente indican bajocuales circunstancias Ud puede copiar dicho software o sus productos derivados Para laFree Software Foundation eacutesta es una distincioacuten muy importante Linux no involucraninguna licencia estilo pitoacuten que lo envolveraacute y asfixiaraacute sino que estaacute protegidopor la misma ley que le impide a Ud fotocopiar un libro

Capiacutetulo 3

En el principio

This login session $1399 but for you $1188

Tal vez ha tenido experiencia con MSshyDOS u otro sistema operativo monousuario como OS2o el de Macintosh En esos sistemas operativos Ud no tiene que identificarse frente ala computadora antes de poder utilizarla siempre se supone que es el uacutenico usuario en elsistema y que puede acceder a todo lo que quiera Por el contrario Unix es un sistemaoperativo multiusuario no soacutelo puede utilizarlo maacutes de una persona a la vez sino quelas distintas personas recibiraacuten distinto trato

Para poder identificar las personas Unix necesita un usuario para que el procesodenominado ingreso1 pueda identificarlo o identificarla2 Apenas se enciende unacomputadora tiene lugar un complejo proceso antes que la misma esteacute lista para serusada Como esta guiacutea estaacute orientada a Linux les direacute que es lo que sucede durante lasecuencia de arranque3

Debe advertir Ud que si estaacute utilizando Linux en alguna clase de ordenador distinto auna PC Intel algunos temas de este capiacutetulo no se aplicaraacuten a su caso En su mayoriacuteadichos temas se encontraraacuten en la Seccioacuten 31

Si Ud estaacute interesado uacutenicamente en utilizar su computadora puede saltearse toda lainformacioacuten de este capiacutetulo excepto la de la Seccioacuten 33

31 La computadora despierta

Lo primero que sucede cuando se conecta la alimentacioacuten a su computadora es la ejecucioacutende un programa denominado BIOS Su nombre proviene de las iniciales de Basic InputOutputSystem que significa Sistema de EntradaSalida Baacutesico Este programa estaacute almacenado demanera permanente dentro de la computadora en chips que normalmente son del tipo delectura solamente Para nuestros propoacutesitos el BIOS es un programa que nunca se puedecambiar Al funcionar realiza ciertas comprobaciones miacutenimas y luego se fija si hay undisquete en la primer disquetera Si encuentra alguno mira en su sector de arranque ycomienza a ejecutar su coacutedigo si lo hay Si hay un disquete pero no contiene un sectorde arranque el BIOS mostraraacute el siguiente mensaje

Nonshysystem disk or disk error

_____________________________________________

1 N del T ingreso en ingleacutes logging in

2 Desde ahora en adelante utilizareacute los pronombres masculinos para identificar a todaslas personas Esta es la convencioacuten estaacutendar en ingleacutes (N del T y en castellano) ycon esto no quiero decir que soacutelo los hombres pueden utilizar computadoras

3 N del T arranque del ingleacutes bootshyup

Si quitamos el disquete y apretamos una tecla el proceso de arranque continuaraacute Si noexiste un disquete en la disquetera el BIOS se fija si existe un registro maestro dearranque (MBR master boot record) en el disco riacutegido Si es asiacute comienza a ejecutar elcoacutedigo que alliacute encuentra que se ocupa de cargar el sistema operativo En los sistemasLinux el cargador se llama LILO (por LInux LOader) puede ocupar el MBR y en ese casocargaraacute el Linux (La distribucioacuten en particular que esteacute utilizando puede manejar elarranque desde el disco riacutegido de otra manera asiacute que debe controlar esto en ladocumentacioacuten que se incluye con la distribucioacuten Otra buena referencia es ladocumentacioacuten de LILO [1 ])

32 Linux despierta

Luego que el BIOS le pasa el control a LILO LILO a su vez le pasa el control al nuacutecleode Linux El nuacutecleo es el programa central del sistema operativo que controla a todoslos demaacutes Lo primero que hace Linux una vez que comienza su ejecucioacuten es cambiar la CPUa modo protegido El procesador 803864 que controla su computadora tiene dos modos que sedenominan modo real y modo protegido El sistema operativo DOS corre en modo real aligual que el BIOS Sin embargo los sistemas operativos maacutes avanzados necesitan correr enmodo protegido Por ello cuando Linux arranca descarta el BIOS

Los procesadores distintos al 386 llegan a este estado de manera diferente Ninguacuten otroprocesador necesita cambiar a modo protegido y soacutelo unos pocos tienen un contexto tanpesado de carga como LILO y el BIOS Una vez que arranca el nuacutecleo Linux trabaja caside la misma manera

A continuacioacuten Linux mira que clase de hardware tiene debajo Necesita saber que clasede discos riacutegidos tiene si hay o no un ratoacuten de bus si estaacute conectado a una red yotras trivialidades como esas Linux no puede recordar ciertas cosas luego de apagado demanera que las pregunta cada vez que arranca Afortunadamente no se las pregunta a Udiexclse las pregunta al hardware Durante el arranque el nuacutecleo de Linux muestra unoscuantos mensajes aunque con ciertas variaciones

Puede leer acerca de esos mensajes en la Seccioacuten 34 Este proceso de consulta puedecausar algunos problemas con el sistema pero si lo hace lo haraacute probablemente cuandoinstale Linux por primera vez Si tiene problemas consulte la documentacioacuten de ladistribucioacuten

El nuacutecleo solamente se ocupa de administrar los otros programas entonces cuando estaacutesatisfecho con que todo anda bien debe arrancar otro programa para que haga los trabajosuacutetiles El programa que el nuacutecleo arranca se llama init_____________________________________________

4 Cuando hable del 80386 tambieacuten hago referencia a computadoras basadas en 80486Pentium y Pentium Pro a menos que especiacuteficamente indique lo contrario Ademaacutesabreviareacute 80386 mediante el teacutermino 386

Figura 31 El camino que sigue un PC Intel hasta que nos muestra el indicativo delinteacuterprete de comandos Init puede o no arrancar X Si lo hace corre xdm Si no corregetty

Una vez que el nuacutecleo arranca init no lanza ninguacuten otro programa El nuacutecleo setransforma asiacute en un administrador y proveedor no en un programa activo

Por lo tanto para saber que es lo que hace la computadora luego que el nuacutecleo arrancadeberemos examinar init La complicada secuencia de arranque por la que atraviesa init noes ideacutentica en todas las computadoras Para Linux existen varias versiones de init ycada una hace las cosas a su manera Ademaacutes tambieacuten influye si su maacutequina estaacute en red e

incluso cual distribucioacuten utilizoacute para instalar Linux Algunas de las cosas que puedensuceder cuando init arranca son

o El control de integridad del sistema de archivos iquestPero queacute es un sistema de archivosse estaraacute preguntando Ud Un sistema de archivos es la disposicioacuten de los archivos enel disco riacutegido Ademaacutes permite que Unix sepa cuales partes del disco riacutegido estaacutenocupadas y cuales no Desafortunadamente ciertos factores como los cortes en elsuministro de energiacutea hacen que la informacioacuten que el sistema de archivos tiene sobre ladisposicioacuten en el disco de los archivos no coincida con la disposicioacuten real En estoscasos se ve la utilidad de un programa llamado fsck que es capaz de encontrar estassituaciones y (con suerte) corregirlas

o Se lanzan programas especiales de encaminamiento para las redes Estos programasinforman a su computadora coacutemo se supone que puede comunicarse con las otras

o Se borran los archivos temporales que crean ciertos programas

o Se actualiza correctamente el reloj del sistema Esto es maacutes complicado de lo que puedeparecer pues Unix de manera predeterminada necesita la hora en UCT (UniversalCoordinated Time) tambieacuten conocido como hora de Greenwich y el reloj de la CMOS (que esalimentado por una bateriacutea dentro de la computadora) muy probablemente estaraacute configuradocon la hora local Esto significa que debe tener alguacuten programa que lea la hora del relojde la CMOS y la corrija transformaacutendola en hora UCT

Despueacutes que init termina con sus actividades de arranque comienza con sus tareasplanificadas

init se convierte asiacute en el padre de todos los procesos del sistema Unix Un proceso essimplemente un programa que estaacute corriendo como cualquier programa puede correr maacutes deuna vez entonces puede haber maacutes de un proceso para un programa dado en particular

En Unix los procesos (instancias de un programa) se crean mediante una llamada alsistema5 (que es un servicio provisto por el nuacutecleo) denominada fork (Se lo llama forko bifurcacioacuten pues un proceso se bifurca en dos independientes) init forkea (bifurca)unos cuantos procesos los que a su vez forkean6 otros En su sistema Linux con todaseguridad init corre varias instancias de un programa llamado getty getty es el programaque le permitiraacute iniciar el ingreso al usuario y que a continuacioacuten lanzaraacute el programalogin

33 La actuacioacuten del usuario

331 El ingreso

Lo primero que hay que hacer para poder utilizar una maacutequina con Unix es identificarsefrente a la misma Este proceso conocido en ingleacutes como logging in (registro deingreso) es la manera que tiene Unix de saber cuales son los usuarios autorizados parautilizar el sistema Durante el ingreso se le preguntaraacute un nombre de cuenta y unacontrasentildea7 Los nombres de las cuentas son por lo general parecidos a los nombres de laspersonas y se lo asignaraacute el administrador del sistema Si Ud es el administrador delsistema deberaacute crearse una cuenta para poder trabajar sin los cuidados especiales querequiere la cuenta root (La informacioacuten necesaria para llevar a cabo dicha tarea podraacuteencontrarla en Installation and Getting Started 8 o en The Linux System AdministratorsGuide)

Luego de que tenga lugar la secuencia de procedimientos durante el arranque Ud veraacute enla pantalla algo como lo que se muestra a continuacioacuten (la primer liacutenea es meramente unsaludo (podriacutea ser alguna advertencia legal o cualquier otra cosa)

Welcome to the mousehouse Please have some cheese

mousehouse login

Sin embargo puede ser que lo que el sistema le presente al arrancar no se parezca aesto Por ejemplo puede que en lugar de una aburrida pantalla de texto nos muestre unapantalla graacutefica Auacuten en este caso la computadora le pediraacute sus datos al ingreso y maacutes omenos de la misma manera Si eacuteste es el caso en su sistema entonces el entorno detrabajo que utilizaraacute es el sistema X El X Window

System es un sistema de ventanas y en el capiacutetulo 5 se discutiraacuten algunas de lasdiferencias con las que se enfrentaraacute De cualquier manera el proceso de ingreso seraacutesimilar en ambos casos

_____________________________________________

5 N del T llamada al sistema del ingleacutes system call

6 N del T Mis disculpas por el teacutermino prometo no usarlo maacutes shy)

7 N del T contrasentildea palabra clave del ingleacutes password

8 N del T Puede consultar la versioacuten en castellano ya existente

Esta es por supuesto la invitacioacuten que Ud buscaba para ingresar (login) A lo largo deeste manual utilizaremos el usuario ficticio (o no tan ficticio dependiendo de sumaacutequina) larry9 Donde Ud vea larry debe poner el nombre de su propia cuenta Losnombres de las cuentas se basan en general en los nombres reales los sistemas Unix maacutesgrandes y serios tienen cuentas que usan el apellido del usuario alguna combinacioacuten denombre y apellido y auacuten se da el caso que deban agregarle algunos diacutegitos Por ejemplonombres de cuentas posibles para Larry Greenfield podriacutean ser larry greenfie lgreenfilg19

mousehouse seraacute de la misma manera el nombre de la maacutequina sobre la que trabajareacute

Es posible que cuando Ud instale Linux se le pregunte el nombre que desea asignarleEsto no es demasiado importante pero cada vez que haga falta utilizareacute mousehouse o maacutesraramente lionsden cuando necesite de un segundo sistema por razones de claridad o decontraste

Luego de teclear larry y apretar |_Intro_| nos encontramos con lo siguiente

mousehouse login larry

Password

Linux estaacute solicitando su contrasentildea10 Cuando escriba su contrasentildea no podraacute ver lo queestaacute tecleando en razoacuten de la privacidad necesaria a dicha palabra Escribacuidadosamente puede borrar caracteres pero no podraacute ver lo que estaacute editando Noescriba muy despacio si hay gente miraacutendole podriacutean llegar a descubrirla En cualquiercaso si se equivoca no se haga problemas pues el sistema le daraacute otra oportunidad deingresar

Luego que ingrese correctamente su nombre de cuenta o nombre de usuario y su contrasentildeaapareceraacute un corto mensaje denominado mensaje del diacutea11 que se obtiene del archivoetcmotd

Este archivo se utiliza para dar a conocer cualquier clase de informacioacuten a los usuarioscon respecto al estado del sistema y es responsabilidad del administrador del sistemafijar su contenido Despueacutes de todo esto aparece un prompt Un prompt es un siacutembolo que

nos indica que la computadora estaacute lista para recibir un comando Debe parecerse a lasiguiente figura

homelarry$

Si Ud estaacute utilizando X Window el prompt apareceraacute en alguna de las ventanas que hayen pantalla (Las ventanas son simples cajas rectangulares) Para escribir en elprompt mediante el ratoacuten mueva el cursor del mismo (probablemente se ve como una granX o una flecha) dentro de la ventana

332 Al abandonar la computadora

iexclNo apague la computadora directamente iexclSe arriesga a perder valiosos datos

A diferencia de la mayoriacutea de las versiones de DOS no es una buena idea apagar la llavede alimentacioacuten de la computadora asiacute como asiacute cuando termine de utilizarla Si reiniciala maacutequina (con el botoacuten de reset) sin antes tomar las debidas precauciones seraacute igual depernicioso Linux tiene una antememoria o cacheacute que mejora el rendimiento del disco Estosignifica que temporalmente guarda en RAM informacioacuten perteneciente al sistema dealmacenamiento permanente12

_____________________________________________

9 N del T He dejado aquiacute sin traducir ni cambiar el nombre del autor de la versioacuten eningleacutes y lo mismo vale para otros nombres como el de la maacutequina etc

10N del T contrasentildea del ingleacutes password

11N del T mensaje del diacutea del ingleacutes Message Of The Day(motd)

Las diferencias entre lo que Linux cree que hay en el disco y lo que efectivamente estaacutealmacenado en el disco se sincronizan cada 30 segundos Si desea apagar o reiniciar lacomputadora necesitaraacute ejecutar alguacuten procedimiento que indique a Linux que debe detenerel sistema de cacheacute y actualizar la informacioacuten en el disco

Si ya ha terminado sus tareas con la computadora pero auacuten estaacute dentro del sistema (yatecleoacute su nombre de usuario y su palabra clave) lo primero que debe hacer es registrarla salida (logout) del sistema Para ello teclee el comando logout Todos los comandosse enviacutean oprimiendo la tecla marcada como |_Enter_| |_Return_| oacute |_Intro_| Hasta queno aprieta |_Intro_| no pasa nada y por lo tanto puede borrar lo que escribioacute yrecomenzar

homelarry$ logout

Welcome to the mousehouse Please have some cheese

mousehouse login

Ahora puede ingresar otro usuario

333 Como apagar la computadora

Si el suyo se trata de un sistema en el cual trabaja un uacutenico usuario (Ud shy)) puededesear apagar la computadora cuando haya finalizado su trabajo con ella13 Para bajar elsistema14 o sea apagarlo ordenadamente deberaacute ingresar a una cuenta especialdenominada root La cuenta del root es la cuenta del administrador del sistema y puedeacceder a todos los archivos que existen en el sistema Si desea apagar la computadoraprimero debe bajar el sistema y para ello deberaacute obtener la palabra clave que utiliza eladministrador del sistema Por favor ingrese Ud Entonces como root

mousehouse login root

Password

Linux version 1355 (rootmousehouse) 1 Sun Jan 7 145626 EST 1996

shutdown now

Why fin del dia de trabajo

URGENT message from the sysadmin

System going down NOW

fin del dia de trabajo

Now you can turn off the power

_____________________________________________

12 La diferencia entre RAM y un disco riacutegido es como la diferencia entre la memoria decorto plazo y la de largo plazo Al quitar la alimentacioacuten de la computadora es como sile dieacuteramos un fortiacutesimo golpe en la cabeza olvidaraacute todo lo que teniacutea en la memoria decorto plazo Pero las cosas guardadas en la memoria de largo plazo el disco riacutegidoestaraacuten bien El disco es miles de veces maacutes lento que la RAM

13 Para evitar el debilitamiento prematuro de ciertos componentes de hardware es mejorque apague la computadora soacutelo cuando ya no la vaya a utilizar por el resto del diacuteaEncender y apagar una vez al diacutea la computadora probablemente es el mejor compromisoentre ahorrar energiacutea y machacar el sistema

14 N del T bajar el sistema del ingleacutes shutdown

El comando shutdown now prepara al sistema para que pueda apagarse o reiniciarse Debeesperar por el mensaje que dice que es seguro apagar o reiniciar el sistema (Cuando elsistema le pregunta Why15 soacutelo le estaacute preguntando una razoacuten para decirle a los otrosusuarios Como no hay otra persona utilizando el sistema cuando Ud lo baja puederesponderle con lo que se le ocurra o con nada)

Un pequentildeo dato para el perezoso como alternativa al enfoque de logoutlogin se puedeutilizar el comando su Mientras estaacute trabajando con su nombre de cuenta habitual (larrya nuestros efectos) escriba su y luego |_Intro_| Se le solicitaraacute la palabra clave deladministrador del sistema y si la ingresa correctamente tendraacute a partir de dicho momentolos privilegios que le corresponden al mismo Ahora con estos privilegios agregadospodraacute bajar el sistema mediante el comando shutdown now

34 Mensajes del nuacutecleo

Cuando se conecta la alimentacioacuten a su computadora aparece una serie de mensajes en lapantalla que describe el hardware conectado al ordenador Estos mensajes son producto dela actividad del nuacutecleo de Linux En esta seccioacuten intentaremos describir y explicar esosmensajes

Naturalmente estos mensajes variacutean de maacutequina a maacutequina Describireacute entonces losmensajes que aparecen en la miacutea El siguiente ejemplo contiene todos los mensajesestaacutendar y algunos especiacuteficos (En general la maacutequina sobre la que voy a realizar ladescripcioacuten estaacute miacutenimamente configurada no veraacute por lo tanto mucha informacioacutenrelacionada con la configuracioacuten de dispositivos)

Se utilizoacute Linux versioacuten 1355 uno de los maacutes recientes al momento de escribir

1 Lo primero que hace Linux es decidir que clase de tarjeta de viacutedeo y pantalla tieneconectado de manera de seleccionar un tamantildeo de letra apropiado (Cuanto maacutes pequentildeo esel tamantildeo maacutes caben en una pantalla a la vez) Linux puede consultarle si desea alguacutentipo de letra en particular o puede que tenga una seleccioacuten ya compilada en suinterior16

Console 16 point font 400 scans Console colour VGA+ 80x25 1 virtualconsole (max 63)

En este ejemplo el duentildeo de la maacutequina decidioacute al momento de compilar que utilizariacuteael tipo de letra estaacutendar tamantildeo grande Ademaacutes notaraacute que la palabra color estaacute malescrita Evidentemente Linus aprendioacute la versioacuten incorrecta de idioma ingleacutes17

_____________________________________________

15 N del T why significa iquestpor queacute

16 Compilada se refiere al proceso mediante el cual un programa de computadora escritopor una persona se traduce a algo que entiende la computadora Si una caracteriacutestica seha compilado en su interior significa que estaacute incluida en el programa

17 N del T colour es la variante ortograacutefica del ingleacutes insular y color lanorteamericana

2 La proacutexima tarea del nuacutecleo es informar acerca de la velocidad de su sistema medidaen BogoMIPS Un MIP equivale a un milloacuten de instrucciones por cada segundo mientrasque un BogoMIP es un bogus MIP18 cuantas veces la computadora puede hacerabsolutamente nada por cada segundo (Como este bucle no hace nada en realidad el nuacutemerocalculado no es tampoco una medida de la velocidad del sistema) Linux utiliza estenuacutemero cuando necesita esperar por alguacuten dispositivo de hardware

Calibrating delay loop ok shy 3328 BogoMIPS

3 El nuacutecleo de Linux tambieacuten nos comenta acerca de la utilizacioacuten de la memoria

Memory 23180k24576k available (544k kernel code 384k reserved 468k data)

Esto significa que la maacutequina tiene 24 megabytes de memoria Parte de esta memoria estaacutereservada por el nuacutecleo El resto puede ser utilizada por los programas Eacuteste es el lugartemporal conocido como RAM que se utiliza soacutelo como almacenamiento de corto plazo Sucomputadora tambieacuten dispone de una memoria permanente denominada disco riacutegido El

contenido del disco riacutegido se mantiene intacto auacuten luego de quitar la alimentacioacuten delordenador

4 A lo largo del proceso de arranque Linux controla distintas partes del hardware y nosmuestra mensajes indicativos de las mismas

This processor honours the WP bit even when in supervisor mode Good

5 Ahora Linux pasa a la configuracioacuten de red Lo que veremos a continuacioacuten estaacute mejorexplicado en The Linux Networking Guide19 y estaacute fuera del alcance de este documento

Swansea University Computer Society NET3033 for Linux 1350

IP Protocols ICMP UDP TCP

6 Linux soporta la FPU la unidad de punto flotante20 Eacutesta es un chip especial (o partede un chip en el caso del procesador 80486DX) que se ocupa de la aritmeacutetica con nuacutemerosno enteros

Algunos de esos chips no estaacuten en buenas condiciones y cuando Linux trata deidentificarlos la maacutequina se cuelga21 La maacutequina deja de funcionar Si esto sucedeUd veraacute en su pantalla lo siguiente

Checking 386387 coupling

Sino el mensaje seraacute

Checking 386387 coupling Ok fpu using exception 16 error reporting

si estaacute utilizando un 486DX Si tiene un 386 con un 387 le apareceraacute

Checking 386387 coupling Ok fpu using irq13 error reporting

_____________________________________________

18 N del T bogus significa espurio (para los argentinos trucho)

19 N del T Disponible en castellano Vea el apeacutendice D

20 N del T unidad de punto flotante del ingleacutes Floating Point Unit

21 N del T se cuelga del ingleacutes crashes

7 Y ahora se controla la instruccioacuten halt

Checking hlt instruction Ok

8 Luego de esta configuracioacuten inicial Linux escribe una liacutenea identificaacutendose a siacutemismo En ella explica cual es la versioacuten del nuacutecleo la del compilador de C de GNU quese utilizoacute para compilarlo y la fecha de dicha compilacioacuten

Linux version 1355 (rootmousehouse) (gcc version 270) 1 Sun Jan 7145626 EST 1996

9 El controlador serie comienza a consultar acerca del hardware instalado Uncontrolador es una parte del nuacutecleo que controla un dispositivo normalmente unperifeacuterico Se hace responsable por los detalles de la comunicacioacuten entre la CPU y eldispositivo Esto permite que la gente que escribe aplicaciones de usuario se puedaconcentrar en la aplicacioacuten pues no tiene que preocuparse por como trabaja exactamentela computadora

Serial driver version 411 with no serial options enabled

tty00 at 0x03f8 (irq = 4) is a 16450

tty01 at 0x02f8 (irq = 3) is a 16450

tty02 at 0x03e8 (irq = 4) is a 16450

Aquiacute vemos que ha encontrado tres puertos serie Un puerto serie es el equivalente delpuerto COM en DOS es el dispositivo que se utiliza normalmente para comunicarse conmodems y ratones

Lo que significan las liacuteneas anteriores es que el puerto serie 0 (COM1) tiene ladireccioacuten 0x03f8

Cuando dicho puerto interrumpe al nuacutecleo usualmente para decir que tiene datos listosutiliza la IRQ 422 Las IRQ son un medio que tienen los perifeacutericos de hablarse con elsoftware Cada puerto serie tambieacuten tiene un chip controlador que usualmente se denomina16450 aunque tambieacuten puede ser el 8250 o el 16550

10 A continuacioacuten viene el puerto paralelo que normalmente se conecta a la impresoraLos puertos paralelos en Linux tienen nombres que comienzan con lp lp son las inicialesde Line Printer23 aunque en los tiempos actuales parece maacutes apropiado usar las inicialesde Laser Printer (Sin embargo Linux se comunica sin problemas con cualquier clase deimpresora conectada al puerto paralelo de matriz de puntos chorro de tinta o laser)

lp0 at 0x03bc (polling)

Este mensaje dice que ha encontrado un puerto paralelo y que usaraacute el controlador dedispositivo estaacutendar

_____________________________________________

22 N del T IRQ Interrupt ReQuest (peticioacuten de interrupcioacuten)

23 N del T Impresora de liacuteneas

11 Linux identifica luego las unidades de disco riacutegido En el sistema que le estoymostrando mousehouse tengo instalados dos unidades de disco riacutegido IDE

hda WDC AC2340 325MB w127KB Cache CHS=10101255

hdb WDC AC2850F 814MB w64KB Cache LBA CHS=8273263

12 El nuacutecleo ahora busca las unidades de disco flexible En este ejemplo la maacutequinatiene dos unidades la A es una unidad de 5 1=4 y la B es una de 3 1=2 Linuxdenomina fd0 a la unidad A y fd1 a la unidad B

Floppy drive(s) fd0 is 144M fd1 is 12M

floppy FDC 0 is a National Semiconductor PC87306

13 El proacuteximo controlador que arranca en mi sistema ejemplo es el controlador SLIPEscribe un mensaje acerca de su configuracioacuten

SLIP version 083shyNET3019shyNEWTTY (dynamic channels max=256) (6 bitencapsulation enabled)

CSLIP code copyright 1989 Regents of the University of California

14 El nuacutecleo explora dentro de los discos riacutegidos que ha encontrado Busca las distintasparticiones que tiene cada uno Una particioacuten es una seccioacuten loacutegica de una unidad que seutiliza para evitar que interfieran entre siacute distintos sistemas operativos coexistentesEn este ejemplo la computadora tiene dos discos (hda y hdb) con cuatro y unaparticiones respectivamente

Partition check

hda hda1 hda2 hda3 hda4

hdb hdb1

15 Finalmente Linux monta la particioacuten raiacutez Eacutesta es la particioacuten del disco en la cualreside el sistema operativo Linux Cuando Linux monta esta particioacuten hace que esteacutedisponible para los usuarios

VFS Mounted root (ext2 filesystem) readonly

Capiacutetulo 4

El shell de Unix

Es muy faacutecil crear archivos en el sistema operativo UNIX Por lo tanto los usuariostienden a crear muchos archivos que utilizan una gran cantidad de espacio Se ha dichoque la uacutenica cosa estaacutendar y comuacuten a todos los sistemas UNIX es el mensajeshydelshydiacutea queles pide a los usuarios que borren los archivos que no necesitan

Guiacutea del administrador de System V2

41 Comandos Unix

Cuando ingresa al sistema Unix se enfrenta con algo maacutes o menos como lo que se muestra acontinuacioacuten

homelarry$

Ese algo se denomina prompt1 Como su nombre sugiere le solicita a Ud que ingrese uncomando Todos los comandos Unix consisten de una secuencia de letras nuacutemeros ycaracteres No son vaacutelidos los espacios dentro del nombre del comando Algunos comandosvaacutelidos son mail cat y CMU_is_Numbershy5 Algunos caracteres no estaacuten permitidosvolveremos a este tema maacutes adelante

Unix ademaacutes hace diferencia entre mayuacutesculas y minuacutesculas2 lo que significa que Cat ycat son comandos distintos

El prompt se muestra como resultado del accionar de un programa especial denominadointeacuterprete de comandos3 El inteacuterprete de comandos o shell acepta los comandos queescribe el usuario y los ejecuta Los comandos pueden formar programas en el lenguaje delinteacuterprete de comandos y a dichos programas se los denomina guiones de shell

_____________________________________________

1 N del T prompt significa solicitud

2 La diferenciacioacuten entre mayuacutesculas y minuacutesculas es una cosa muy personal Algunossistemas operativos como OS2 y Windows NT preservan las diferencias pero no las cuentancomo distintas En la praacutectica habitual con Unix se utiliza raramente la diferenciacioacutenLa situacioacuten de tener un par de comandos Cat y cat diferentes no es comuacuten

3 N del T inteacuterprete de comandos del ingleacutes shell

Los shell en Unix se clasifican en dos grandes grupos los tipo Bourne y los tipo C Losshell tipo Bourne toman su nombre a partir de su inventor Steven Bourne Steven Bourneescribioacute el shell original de Unix denominado sh a partir de entonces la mayoriacutea delos shells tienen un nombre con el sufijo sh para indicar que son extensiones de la ideaoriginal Existen varias implementaciones de este shell que colectivamente llevan elnombre de shells Bourne Tambieacuten son comunes los shells tipo C cuyo original fueimplementado por Bill Joy Tradicionalmente los shell Bourne se han utilizado para los

scripts de shell y por razones de compatibilidad con el sh original mientras que losshells C han sido maacutes comunes en su aplicacioacuten interactiva (Los C tienen ventajas encuanto a sus mejores caracteriacutesticas interactivas aunque son maacutes difiacuteciles deprogramar)

Linux viene con un shell Bourne denominado bash escrito por la organizacioacuten FreeSoftware Foundation4 El nombre bash proviene de Bourne Again SHell uno de los tantosjuegos de palabras en Unix Se trata de un shell Bourne avanzado tiene las capacidadesestaacutendar de programacioacuten que se encuentran en todos los shells Bourne y ademaacutes varias delas caracteriacutesticas interactivas que se encuentran en los shells C bash es el shellpredeterminado cuando uno usa Linux

Apenas ingresa por primera vez el prompt que Ud ve es producto de la accioacuten de bash enotras palabras estaacute Ud corriendo su primer programa Unix el shell bash Mientras esteacuteconectado el shell bash estaraacute permanentemente funcionando

411 Un comando Unix tiacutepico

El primer comando que debe conocer es cat Para utilizarlo escriba cat y luego oprima|_Intro_|

homelarry$ cat

Si tiene ahora el cursor posicionado en una liacutenea nueva entonces lo que ha hecho estaacutebien Existen unas cuantas variantes que podriacutea haber tecleado algunas funcionaraacutenotras no

o Si tuvo alguacuten error de tecleo al escribir cat deberiacutea haber visto algo maacutes o menosasiacute

homelarry$ ct

ct command not found

homelarry$

Por lo tanto el shell le informa que no pudo encontrar un programa denominado ct yle ofrece otro prompt para seguir trabajando Recuerde que Unix hace diferencia entremayuacutesculas y minuacutesculas CAT estaacute mal escrito

o Puede que Ud haya escrito algunos espacios en blanco antes del comando como5

homelarry$ cat

Sin embargo el resultado es correcto y el programa cat corre sin problemas

_____________________________________________

4 N del T La Fundacioacuten para el Software Libre _tal es la traduccioacuten de su nombre_ seocupa de la produccioacuten y distribucioacuten de software que no tiene limitaciones en su uso yocopia enfrentando de esta manera las praacutecticas de las compantildeiacuteas tradicionales dedesarrollo Que el software sea libre no significa que sea barato la libertad incluye lagratuidad pero es mucho maacutes que ello

5 El indica que el usuario escribioacute un espacio

o Tambieacuten puede que haya oprimido un |_Intro_| en una liacutenea en blanco no se preocupe ycontinuacutee pues no tiene ninguacuten efecto

Doy por sentado que Ud ha corrido con eacutexito cat y estaacute esperando que haga algo que lomaraville Pues bien no no es un juego cat es una muy uacutetil utilidad que no parece muyuacutetil a primera vista Escriba cualquier cosa y luego oprima |_Intro_| Lo que veraacute es

homelarry$ cat

Help Im stuck in a Linux program

Help Im stuck in a Linux program

Lo que parece haber hecho cat es devolver un eco de lo escrito Esto es uacutetil a veces talvez no ahora Asiacute que salgamos de este programa y veamos otros con beneficios maacutes obvios

Para finalizar ciertos comandos Unix teclee |_Ctrlshyd_|6 |_Ctrlshyd_| es el caraacutecter endshyofshyfile7 o EOF para abreviar Puede que en ciertos libros de texto aparezca como endshyofshytext8 Nos referiremos a este caraacutecter como EOF Es un caraacutecter de control que informaa los programas Unix que ha cesado el ingreso de datos Cuando cat ve que no teclea maacutesnada termina

Para ver otro ejemplo parecido pruebe el programa sort Como su nombre lo indica sortes un programa de clasificacioacuten Si Ud teclea unas cuantas liacuteneas y luego oprime |_Ctrlshyd_| sort las mostraraacute a la salida de manera ordenada Esta clase de programas sedenominan filtros porque toman texto desde su entrada lo filtran y lo vierten a susalida modificado de alguna manera Tanto cat como sort son filtros inusuales cat esinusual pues lee el texto de entrada y no lo cambia

sort es inusual porque lee todas las liacuteneas de entrada hasta el EOF antes de emitir susalida La mayoriacutea de los filtros trabajan sobre la base de liacutenea por liacutenea leen unaliacutenea de la entrada realizan cierto coacutemputo y escriben una liacutenea diferente de salida

42 Autoayuda

El comando man muestra las paacuteginas de la guiacutea de referencia para un comando dado9 Porejemplo

homelarry$ man cat

cat(1) cat(1)

NAME

cat shy Concatenates or displays files

SYNOPSIS

cat [shybenstuvAET] [shyshynumber] [shyshynumbershynonblank] [shyshysqueezeshyblank]

[shyshyshowshynonprinting] [shyshyshowshyends] [shyshyshowshytabs] [shyshyshowshyall]

[shyshyhelp] [shyshyversion] [file]

DESCRIPTION

This manual page documents the GNU version of cat

________________________________________________

6 Mantenga oprimida la tecla etiquetada |_Ctrl|_y aprete |_d_| luego suelte ambas

7 N del T fin de archivo

8 N del T fin de texto

9 man tambieacuten puede mostrar informacioacuten acerca de las llamadas al sistema subrutinasformatos de archivos etc En la versioacuten original de Unix el comando mostraba lainformacioacuten exactamente igual a la que apareciacutea en la documentacioacuten impresa Por ahoraes probable que Ud soacutelo esteacute interesado en obtener ayuda acerca de los comandos

Hay aproximadamente una paacutegina completa de informacioacuten sobre cat10 Pruebe correr manen este momento No espere entender la paacutegina de manual que se le muestra Las paacuteginas demanual suponen un cierto conocimiento de Unix conocimiento que tal vez Ud no tenga eneste momento

Cuando termine de leer la paacutegina es probable que vea un bloque en video inverso al finalde la paacutegina parecido a shyshymoreshyshy o a Line 1 Se trata del pedido de maacutes(informacioacuten) que pronto le seraacute muy familiar

En lugar de dejar escapar el texto fuera de los liacutemites de la pantalla man se detiene alfinal de cada paacutegina y espera para ver que ha decidido hacer Ud Si desea seguirleyendo oprima |_Barra espaciadora_| y avanzaraacute una paacutegina Si desea terminar con lalectura de la paacutegina del manual oprima |_q_| Regresaraacute entonces al prompt del shellque esperaraacute hasta que Ud escriba otro comando

man provee ademaacutes una funcioacuten de buacutesqueda de palabras clave Por ejemplo digamos que Udestaacute interesado en el tema PostScript el lenguaje de control de impresoras desarrolladopor Adobe Si escribe man shyk ps o man shyk Postscript recibiraacute como resultado unalista de todos los comandos llamadas al sistema y otras partes documentadas de Unix quecontengan la palabra ps (o Postscript) en su nombre o descripcioacuten breve Esto puedellegar a ser muy uacutetil cuando quiere buscar una herramienta para hacer algo pero noconoce su nombre o si existe

43 Almacenaje de la informacioacuten

Los filtros son muy uacutetiles cuando Ud se ha transformado en un usuario experimentadopero tienen un pequentildeo problema Coacutemo almacena Ud la informacioacuten Seguramente iexclno seespera que Ud teclee todas las cosas cada vez que desea utilizar el programa Porsupuesto que no Unix provee archivos y directorios

Un directorio es como una carpeta contiene hojas de papel o archivos Una carpetasuficientemente grande puede contener otras carpetas puede haber directorios dentro dedirectorios En Unix se denomina sistema de archivo a la coleccioacuten de archivos ydirectorios Inicialmente en el sistema de archivo soacutelo existe un directorio denominadoroot11 Dentro de este directorio hay maacutes directorios y dentro de ellos hay archivosy auacuten maacutes directorios12

_____________________________________________

10 N del T El ejemplo se ha mantenido en ingleacutes pues es muy probable que Ud tengainstaladas las paacuteginas de manual en dicho idioma de manera predeterminada Pruebe maacutestarde de instalar el conjunto de paacuteginas de manual que estaacuten disponibles en castellano

11 N del T directorio raiacutez

Cada archivo y cada directorio tiene un nombre Nos referiremos a su nombre corto13 quepuede coincidir con el de otro archivo yo directorio en alguna otra parte del sistema dearchivo y al nombre largo14 que es uacutenico Un nombre corto para un archivo puede serjoe mientras que su nombre completo podriacutea ser homelarryjoe El nombre completo sedenomina usualmente trayectoria15 La trayectoria puede decodificarse como una secuenciade directorios Por ejemplo veremos como se lee homelarryjoe

homelarryjoe

La barra inicial indica el directorio raiacutez

Aquiacute esta el directorio denominado home Estaacute dentro del directorio raiacutez

Este es el directorio larry el cual estaacute dentro de home

joe estaacute dentro de larry Una trayectoria puede referirse tanto a un directorio como a unnombre de archivo asiacute que joe podriacutea ser cualquiera de ellos Todos los items antes delnombre corto deben ser directorios

Una manera sencilla de visualizar todo esto es mediante un diagrama en aacuterbol Para ver eldiagrama de un sistema tiacutepico Linux mire la Figura 41 Debe Ud notar que dichodiagrama no estaacute completo (iexclun sistema Linux completo tiene maacutes de 8000 archivos) y soacutelomuestra algunos de los directorios estaacutendar Por lo tanto puede haber algunosdirectorios del diagrama que no esteacuten en su sistema y de hecho su sistema tendraacutedirectorios que no aparecen en la figura

431 Miremos los directorios con ls

Ahora que ya sabe de la existencia de archivos y directorios debe haber tambieacuten unamanera de manipularlos Por supuesto El comando ls es uno de los maacutes importantes y loque hace es listar los archivos Si prueba a correr el comando ls entonces veraacute

homelarry$ ls

homelarry$

Estaacute bien no se preocupe por no ver nada Unix es intencionalmente callado si no hayarchivos para mostrar no muestra nada (ni siquiera un no hay archivos) Por lo tantola ausencia de salida es la manera de ls de decir que no encontroacute ninguacuten archivo

Pero hace un momento dije que hay maacutes de 8000 archivos por alliacute iquestdoacutende estaacuten Acaba deencontrar el concepto de directorio actual Como puede ver en el prompt su directorioactual es homelarry y alliacute no hay archivos Si desea la lista de archivos de undirectorio maacutes poblado pruebe con el directorio raiacutez

homelarry$ ls

bin etc install mnt root user var

dev home lib proc tmp usr vmlinux

homelarry$

_____________________________________________

12 Puede haber o no un liacutemite a la profundidad a la cual puede llegar el sistema dearchivo (En mi caso nunca la alcanceacute uno faacutecilmente puede tener directorios de 10niveles de profundidad)

13 N del T Nombre relativo del archivo o directorio

14 N del T Nombre completo o absoluto

15 N del T trayectoria del ingleacutes path

___________________________________________________________________________________________Figura 41 Tiacutepico aacuterbol (podado) de directorios Unix

________||bin

|___dev

|

|___etc

|

|___home ________larry

| |

| |___sam

|___lib

|

|___proc

|

|___tmp

|

|___usr________||X11R6

|

|___bin

|

|___emacs

|

|___etc

|

|___g++shyinclude

|

|___include

|

|___lib

|

|___

| local

| ||_bin

| |___emacs

| |

| |___etc

| |

| |___lib

|

|___man

|

|___spool

|

|___src________linux

|

|___tmp

En el comando anterior ls el directorio ( ) es lo que se denomina un paraacutemetroLa primer palabra de un comando es el nombre del comando y cualquier cosa que le sigason sus paraacutemetros Los paraacutemetros generalmente modifican la forma en la que actuacutea unprograma para ls el paraacutemetro le dice de cual directorio desea Ud la lista de archivosAlgunos comandos tienen paraacutemetros especiales denominados opciones o interruptores16 Paraver esto pruebe

homelarry$ ls shyF

bin etc install mnt root user var

dev home lib proc tmp usr vmlinux

homelarry$

_____________________________________________

16 N del T interruptores del ingleacutes switches

El shyF es una opcioacuten Las opciones son clases especiales de paraacutemetros que comienzan conun guioacuten y modifican el funcionamiento del programa Para ls shyF es una opcioacuten que lepermite a Ud ver cuales de las entradas son directorios cuales son archivos especialescuales programas y cuales son archivos normales Cualquiera que termina con una barra esun directorio Trataremos con maacutes detalle las caracteriacutesticas de ls maacutes adelante iexclEs unprograma sorprendentemente complejo

Por ahora hay dos lecciones que se deben aprender Primero debe aprender que es lo quehace ls Pruebe unos cuantos otros directorios de los que se muestran en el aacuterbol de laFigura 41 y fiacutejese en su contenido Naturalmente algunos estaraacuten vaciacuteos y otrostendraacuten muchos archivos dentro Le sugiero que utilice ls con y sin la opcioacuten shyF Por ejemplo ls usrlocal debe aparecer maacutes o menos asiacute

homelarry$ ls usrlocal

archives bin emacs etc ka9q lib tcl

homelarry$

La segunda leccioacuten es maacutes general Muchos comandos Unix son como ls Tienen opciones queen general consisten de un caraacutecter precedido por un guioacuten y tienen paraacutemetros Adiferencia de ls algunos comandos requieren ciertos paraacutemetros yu opciones Paramostrar como se usan los comandos utilizaremos el siguiente formato

ls [shyaRF] [directorio]

En general y desde ahora en adelante utilizareacute plantillas de comandos como la mostradaantes de introducir comandos nuevos para Ud La primer palabra es el comando (en estecaso ls) A continuacioacuten del comando siguen todos los paraacutemetros Los paraacutemetrosopcionales se encerraraacuten entre corchetes ([ y ]) Las metashyvariables estaacuteninclinadas_son palabras que toman el lugar de los paraacutemetros reales (Por ejemplo maacutesarriba puede Ud ver que dice directorio lo cual debe ser reemplazado por el nombre deun directorio real)

Las opciones son un caso especial Estaacuten encerradas entre corchetes pero Ud puedeutilizar una sola de ellas sin necesidad de emplear todas juntas Por ejemplo con lastres opciones enumeradas maacutes arriba para el caso de ls Ud tiene ocho maneras posiblesde correr el comando con o sin cada una de las opciones (Contraste ls shyR con ls shyF)

432 El directorio actual y cd

shy pwd

El uso de los directorios puede ser insoportable si se tiene que teclear la trayectoriacompleta cada vez que se quiere acceso a un directorio En lugar de ello los shell deUnix tienen una caracteriacutestica denominada directorio actual presente o detrabajo Es muy probable que su configuracioacuten de shell muestre dicho directorio como

parte del prompt homelarry Si no lo hace pruebe el comando pwd que proviene de lasigla de las palabras present working directory17 (Algunas veces el prompt muestra elnombre de la maacutequina Esto soacutelo es uacutetil realmente en un entorno de red en el cual hay unagran cantidad de maacutequinas diferentes)

mousehousegtpwd

homelarry

mousehousegt

Como puede Ud ver pwd le dice cuaacutel es su directorio actual18_ se trata de un comandomuy simple La mayoriacutea de los comandos actuacutea de forma predeterminada sobre eldirectorio actual

shy cd [directorio]

Podemos cambiar nuestro directorio actual mediante el comando cd Por ejemplo pruebe

homelarry$ cd home

home$ ls shyF

larry sam shutdown steve user1

home$

Si Ud omite el paraacutemetro opcional directorio se lo retornaraacute a su directorio raiacutezpersonal o directorio original De otro modo cd lo cambiaraacute al directorio especificadoPor ejemplo

home$ cd

homelarry$ cd

$ cd home

home$ cd usr

usr$ cd localbin

usrlocalbin$

Como puede ver cd le permite expresar el directorio de destino con trayectoriasabsolutas o relativas Una trayectoria absoluta comienza con una y especifica todoslo directorios que existen antes del archivo que Ud desea Una trayectoria relativa estaacutereferida a su directorio actual En el ejemplo anterior cuando estaba en usr hice unmovimiento relativo a localbin local es un directorio que existe bajo usr ybin es un directorio bajo local (cd home tambieacuten fue un cambio de directoriorelativo)

Existen dos directorios que se utilizan solamente para trayectorias relativas y El directorio se refiere al directorio actual y es el directorio

anterior son abreviaturas de directorio y existen en todos los directorios aunque nocuadran bien en la metaacutefora de carpeta dentro de carpeta Auacuten el directorio raiacutez tieneun directorio anterior eacutel es su propio directorio anterior

_____________________________________________

17 N del T Directorio de trabajo actual

18 En este libro veraacute todos los teacuterminos en uso directorio de trabajo presentedirectorio actual o directorio de trabajo Prefiero directorio actual aunque a vecesrecurra a las otras formas a causa de razones de estilo

El archivo chaptershy1 viene a ser el archivo chaptershy1 que estaacute en el directorio actualOcasionalmente seraacute necesario que Ud coloque expliacutecitamente el para que ciertoscomandos funcionen aunque esto es raro En la mayoriacutea de los casos daraacute igual ponerchaptershy1 o chaptershy1

El directorio es maacutes uacutetil cuando queremos retroceder

usrlocalbin$ cd

usrlocal$ ls shyF

archives bin emacs etc ka9q lib tcl

usrlocal$ ls shyF src

cweb linux xmris

usrlocal$

En este ejemplo me cambieacute al directorio anterior mediante cd y luego listeacute eldirectorio usrsrc desde usrlocal utilizando el nombre src Debe advertir que sihubiese estado en homelarry ejecutar el comando ls shyF src no me habriacutea servido alpropoacutesito de ver lo que hay en usrsrc

El directorio ~ es un alias para su directorio personal

usrlocal$ ls shyF ~

usrlocal$

Puede ver que auacuten no hay nada en su directorio personal ~ seraacute maacutes uacutetil a medida queaprendamos maacutes acerca de como manipular los archivos

433 Creacioacuten y borrado de directorios

shy mkdir directorio1 [directorio2 directorioN]

En Unix crear directorios es extremadamente simple y puede ser una muy uacutetil herramientade organizacioacuten Para crear un nuevo directorio utilice el comando mkdir Por supuestomkdir viene de make directory19

Con un pequentildeo ejemplo veamos como funciona esto

homelarry$ ls shyF

homelarry$ mkdir reportshy1993

homelarry$ ls shyF

reportshy1993

homelarry$ cd reportshy1993

homelarryreportshy1993$

mkdir puede tomar maacutes de un paraacutemetro a los que interpreta como nombres de directoriosque debe crear Puede especificarlos mediante su nombre relativo o absoluto reportshy1993es un caso de ejemplo con trayectoria relativa

homelarryreportshy1993$ mkdir homelarryreportshy1993chap1 ~reportshy1993chap2

homelarryreportshy1993$ ls shyF

chap1 chap2

homelarryreportshy1993$

_____________________________________________

19 N del T Crear directorio

shy rmdir directorio1 [directorio2 directorioN]

El opuesto de mkdir es rmdir (remove directory20) rmdir trabaja exactamente igual quemkdir Un ejemplo de rmdir es

homelarryreportshy1993$ rmdir chap1 chap3

rmdir chap3 No such file or directory

homelarryreportshy1993$ ls shyF

chap2

homelarryreportshy1993$ cd

homelarry$ rmdir reportshy1993

rmdir reportshy1993 Directory not empty

homelarry$

Como puede apreciar rmdir se niega a borrar un directorio que no existe y tampocopermite eliminar directorios que tengan algo dentro (Recuerde que reportshy1993 tiene un

subdirectorio chap2 dentro de eacutel) Existe un tema interesante para pensar entoncesiquestqueacute pasa si intenta eliminar su directorio actual Averiguumleacutemoslo

homelarry$ cd reportshy1993

homelarryreportshy1993$ ls shyF

chap2

homelarryreportshy1993$ rmdir chap2

homelarryreportshy1993$ rmdir

rmdir Operation not permitted

homelarryreportshy1993$

Otra situacioacuten del mismo estilo es que sucede si intenta eliminar el directorio anterioral directorio actual Bien esto no es un problema nuevo el directorio anterior alactual no estaacute vaciacuteo (existe el actual en eacutel) asiacute que no puede ser borrado

44 Informacioacuten en movimiento

Todos este asunto de los directorios estaacute muy lindo pero no son de ninguna ayuda amenos que Ud tenga alguacuten sitio donde almacenar sus datos Los dioses del Unix vieroneste problema y lo solucionaron haciendo que los usuarios tengan archivos21

_____________________________________________

20 N del T Eliminar directorio

21N del T Tambieacuten denominados ficheros

Aprenderemos maacutes acerca de la creacioacuten y edicioacuten de archivos en los proacuteximos capiacutetulos

Los comandos baacutesicos para manipular archivos en Unix son cp mv y rm Sus nombresprovienen de copy22 move23 y remove24 respectivamente

441 cp como un monje

shy cp [shyi] fuente destino

shy cp [shyi] archivo1 archivo2 archivoN directorioshydeshydestino25

cp es una utilidad muy praacutectica en Unix y ademaacutes muy poderosa Permite que una personapueda copiar maacutes informacioacuten en un segundo que lo que podiacutea copiar un monje del siglo XIVen todo un antildeo

Debe ser muy cuidadoso con cp si no dispone de una cantidad importante de espacio endisco A nadie le hace gracia ver el mensaje Disk full26 cuando estaacute trabajando conarchivos importantes

cp tambieacuten puede sobreescribir archivos existentes sin previo aviso trataremos este temamaacutes adelante

Bien hablaremos primero acerca de la primer liacutenea en la plantilla del comando El primerparaacutemetro de cp es el nombre del archivo que hay que copiar el segundo es el lugar dondese desea depositar la copia Puede obtener una copia con un nombre distinto o una en undirectorio diferente Veamos algunos ejemplos

homelarry$ ls shyF etcpasswd

etcpasswd

homelarry$ cp etcpasswd

homelarry$ ls shyF

passwd

homelarry$ cp passwd frog

homelarry$ ls shyF

frog passwd

homelarry$

El primer comando cp que corriacute tomoacute el archivo etcpasswd que contiene los nombres detodos los usuarios en un sistema Unix y lo copioacute en mi directorio raiacutez cp no borra elarchivo fuente asiacute que no hice nada que pudiera dantildear el sistema O sea que ahoraexisten dos copias del contenido del archivo etcpasswd ambas se denominan passwd perouna estaacute en el directorio etc y la otra en homelarry

_____________________________________________

22 N del T Copiar

23 N del T Mover

24 N del T Quitar borrar

25 cp necesita de dos renglones en su plantilla porque el significado del segundoparaacutemetro depende de la cantidad de paraacutemetros

26 N del T Disco lleno

Luego creamos una tercera copia de etcpasswd cuando tecleamos cp passwd frog ahorahay tres copias etcpasswd homelarrypasswd y homelarryfrog El contenido de esostres archivos es el mismo sus nombres de archivo difieren

cp puede copiar archivos entre directorios si el primer paraacutemetro es un archivo y elsegundo es un directorio En este caso el nombre simple (sin el path) de destinocoincidiraacute con el original para cada archivo

Tambieacuten se puede copiar un archivo y cambiar su nombre de destino en una sola operacioacutencaso que se da cuando ambos paraacutemetros son nombres de archivo Aquiacute reside uno de lospeligros de cp Si tecleara cp etcpasswd etcgroup el comando cp creariacuteanormalmente un archivo nuevo con el contenido ideacutentico al de etcpasswd y con el nombre

etcgroup Por lo tanto si etcgroup ya existiera cp destruiriacutea el contenido delantiguo sin darle la oportunidad de guardarlo (Ni siquiera escribiraacute un mensaje en elcual le advierta que estaacute por destruir un archivo al copiarle otro encima) Echemos unamirada a otro ejemplo de cp

homelarry$ ls shyF

frog passwd

homelarry$ mkdir passwd_version

homelarry$ cp frog passwd passwd_version

homelarry$ ls shyF

frog passwd passwd_version

homelarry$ ls shyF passwd_version

frog passwd

homelarry$

iquestCoacutemo useacute cp en este caso Evidentemente cp puede tomar maacutes de dos paraacutemetros como sepuede apreciar en la segunda liacutenea de plantillas del comando Lo que el comando anteriorrealizoacute es copiar los archivos que aparecen listados (frog y passwd) al directoriopasswd_version De hecho cp puede tomar cualquier nuacutemero de paraacutemetros interpreta losprimeros n shy 1 como los nombres de archivo que debe copiar y el neacutesimoparaacutemetro como elnombre del directorio al cual se deben copiar los anteriores

No puede renombrar archivos cuando copia maacutes de uno a la vez siempre mantienen su nombresimple Esto nos lleva a una pregunta interesante iquestQueacute es lo que pasariacutea si tecleamoscp frog passwd toad donde frog y passwd existen y toad no es un directorioInteacutentelo y lo sabraacute

442 La poda con rm

shy rm [shyi] archivo1 archivo2 archivoN

Ahora que hemos aprendido como crear millones de archivos con cp (y creacuteame muy prontoencontraraacute nuevas maneras de crear maacutes archivos) seriacutea uacutetil aprender la manera deborrarlos De hecho es muy simple el comando que anda necesitando es rm y funcionacomo Ud se lo esperariacutea a cualquier archivo cuyo nombre se pasa como paraacutemetro a rm selo borra Por ejemplo

homelarry$ ls shyF

frog passwd passwd_version

homelarry$ rm frog toad passwd

rm toad No such file or directory

homelarry$ ls shyF

passwd_version

homelarry$

Como puede Ud apreciar rm es extremadamente espartano No soacutelo no pide su confirmacioacutensino que borra cosas auacuten en el caso en que haya errores en la liacutenea de comandos Estobien puede ser peligroso Considere la diferencia entre estos dos comandos

homelarry$ ls shyF

toad frog

homelarry$ ls shyF frog

toad

homelarry$ rm frogtoad

homelarry$

y este otro

homelarry$ rm frog toad

rm frog is a directory

homelarry$ ls shyF

frog

homelarry$

Como puede ver la diferencia en un caracter hace una diferencia importante en la salidadel comando iexclEs vital que Ud controle lo que ha escrito en sus liacuteneas de comando antesde presionar |_Intro_|

443 Seriacutea interesante tener un rastrillo

shy mv [shyi] nombreshyviejo nombreshynuevo

shy mv [shyi] archivo1 archivo2 archivoN nuevoshydirectorio

Por uacuteltimo el otro comando del que debe cuidarse es mv mv se parece un montoacuten a cpexcepto que borra el archivo original despueacutes de copiarlo Se puede entender como lautilizacioacuten conjunta de cp y rm Veamos que podemos hacer

homelarry$ cp etcpasswd

homelarry$ ls shyF

passwd

homelarry$ mv passwd frog

homelarry$ ls shyF

frog

homelarry$ mkdir report

homelarry$ mv frog report

homelarry$ ls shyF

report

homelarry$ ls shyF report

frog

homelarry$

Como puede ver mv renombra un archivo (que es el primer paraacutemetro) si el segundoparaacutemetro es un archivo Si el segundo paraacutemetro es un directorio mv moveraacute el archivoal nuevo directorio manteniendo el mismo nombre simple

Debe Ud ser muy cuidadoso con mv el comando no controla si el archivo ya existe yborraraacute cualquier archivo que hubiera con el nombre de destino Por ejemplo si ya tengoun archivo de nombre frog existente en mi directorio report el comando mv frog reportborraraacute el archivo reportfrog y lo reemplazaraacute con frog

De hecho existe una manera de lograr que tanto rm cp y mv le consulten a Ud antes deeliminar archivos Los tres comandos nombrados aceptan la opcioacuten shyi a tal efecto SiUd utiliza un alias puede hacer que el shell ejecute rm shyi automaacuteticamente cuandoteclee rm Aprenderaacute maacutes de estos temas luego en la Seccioacuten 913 en la paacutegina 92

Capiacutetulo 5

El sistema de ventanas X

Lo mejor de los estaacutendares es que haya tantos para elegir Andrew S Tanenbaum

Este capiacutetulo soacutelo es aplicable para aquellos que usen el sistema de ventanas X Si seencuentra con una pantalla con muacuteltiples ventanas colores o un cursor que soacutelo se muevecon el ratoacuten estaacute usted usando X (Si su pantalla contiene caracteres blancos sobrefondo negro no estaacute usando X Para arrancarlo refieacuterase a la Seccioacuten 51)

51 Ejecucioacuten y salida del sistema de ventanas X

511 Ejecucioacuten de X

Incluso cuando X no arranque de forma automaacutetica durante el ingreso en el sistema esposible arrancarlo desde la liacutenea de comandos del inteacuterprete en modo texto Hay doscomandos que arrancan X bien startx o bien xinit Debe intentar startx primero Si elinteacuterprete de comandos se queja de que ese comando no existe entonces pruebe con xinit aver si arranca X de ese modo Si no funciona ninguno de los comandos anteriores puedeque no tenga X instalado en su sistema refieacuterase a la documentacioacuten local de sudistribucioacuten

Si el comando se ejecuta pero regresa al inteacuterprete en modo texto tras un rato X estaacuteinstalado pero no ha sido configurado todaviacutea En ese caso debe consultar ladocumentacioacuten que acompantildeaba su distribucioacuten en lo referente a como configurar X

512 Saliendo de X

Dependiendo de coacutemo se haya configurado X puede haber dos modos diferentes de salir deX El primero es que su gestor de ventanas controle la ejecucioacuten de X En ese casodeberaacute salir de X usando un menuacute (ver Seccioacuten 548 en la paacutegina 41) Para ver el menuacutebasta apretar un botoacuten del ratoacuten sobre el fondo

La entrada del menuacute que busca debe ser algo asiacute como Exit Window Manager1 o Exit X2Trate de encontrar esa entrada (puede que haya maacutes de un menuacute intente usar diferentesbotones) y eliacutejala

El otro meacutetodo utiliza una ventana xterm especial para controlar X En este casoseguramente existiraacute una ventana cuyo tiacutetulo sea login3 o system xterm4 Para salirde X mueva el cursor a esa ventana y escriba exit5

Si X arrancoacute automaacuteticamente tras su ingreso en el sistema uno de estos meacutetodosprobablemente le sacaraacute de eacutel Basta conectarse de nuevo para regresar a eacutel Si ejecutoacute Xde forma manual al salir volveraacute al interprete de comandos en modo texto (Si quieresalir del sistema bastaraacute con escribir logout )

52 iquestQueacute es el sistema de ventanas X

El Sistema de Ventanas X es un meacutetodo de trabajo graacutefico y distribuido desarrolladoprincipalmente en el Instituto Tecnoloacutegico de Massachusetts Actualmente estaacute a cargo deun consorcio de fabricantes (debidamente llamado El Consorcio X) y es mantenido porellos

El Sistema de Ventanas X (que a partir de ahora abreviaremos como X6 tiene revisionescada pocos antildeos conocidas como lanzamientos La uacuteltima revisioacuten ha sido X11R6 o sextolanzamiento7

El nuacutemero 11 indica la versioacuten oficial pero no ha habido cambios en los uacuteltimos antildeos ytampoco hay planes para cambiarla en un futuro proacuteximo

Al ser cliente y servidores programas diferentes es posible ejecutar cada uno en enmaacutequinas completamente diferentes Ademaacutes de constituir un meacutetodo estaacutendar paraaplicaciones graacuteficas es posible ejecutar un programa en una maacutequina remota (iexclincluso alotro lado del paiacutes si quiere) y que los resultados aparezcan en la estacioacuten de trabajoque tiene enfrente suyo

Un tercer concepto con el que debe familiarizarse es el de gestor de ventanas El gestorde ventanas es un cliente especial que le dice al servidor en que posicioacuten debencolocarse las diferentes ventanas y permite al usuario moverlas El servidor por siacutemismo no interacciona con el usuario Se trata de un medio que conecta el usuario y elcliente

53 iquestQueacute es esto que hay en mi pantalla

Al arrancar X varios programas son ejecutados Primero arranca el servidor Luegogeneralmente arrancan varios clientes Desgraciadamente no hay un estaacutendar comuacuten entrelas diferentes distribuciones Es bastante probable que entre los clientes se encuentreun gestor de ventanas bien fvwm o twm un inteacuterprete de comandos xterm y un relojxclock

_____________________________________________

1 NT En ingleacutes salir del gestor de ventanas

2 NT En ingleacutes salir de X

3 NT En ingleacutes ingreso en el sistema o autenticacioacuten

4 NT En ingleacutes xterm del sistema o terminal X del sistema

5 NT En ingleacutes salir

6 Existen varias formas de referirse al Sistema de Ventanas X Una forma que aunque comuacutenes incorrecta es X Window o Ventanas X

7 NT La palabra inglesa es release Por ello los lanzamientos se diferencianantildeadiendo una R y el nuacutemero correspondiente

531 XClock

shy xclock [shydigital] [shyanalog] [shyupdate segundos] [shyhands color]

Primero explicaremos el maacutes simple xclock funciona exaacutectamente como se puede esperarMarca los segundos minutos y horas en una ventana pequentildea

Ni usar los botones del ratoacuten ni escribir en la ventana xclock produce efecto algunoshyeso es todo lo que hace iquestO quizaacute no En realidad hay varias opciones diferentes quepermiten hacer que el programa se comporte de modos diferentes Asiacute por ejemplo xclockshydigital crea un reloj digital xclock shyupdate 1 hace que el segundero se mueva cadasegundo y xclock shyupdate 5 hace que se mueva cada cinco segundos

Para obtener maacutes informacioacuten sobre las opciones de xclock puede consultar la paacutegina delmanual correspondiente man xclock Si piensa ejecutar varias copias de xclockprobablemente deberiacutea consultar la Seccioacuten 64 (Multitarea) para saber como se ejecutan ala vez que sus otros programas

(Si ejecuta una copia de xclock en primer plano que es la forma usual en la que seejecuta un programa y quiere salir de eacutel basta teclear |_Ctrlshyc_|)

532 XTerm

La ventana que muestra el prompt del inteacuterprete de comandos (podraacute ver algo parecido ahomelarry$) es controlada por un programa llamado xterm xterm es un programaengantildeosamente complicado A primera vista no parece que haga mucho pero realmente hacemuchiacutesimo trabajo xterm emula una terminal de forma que las aplicaciones de modo textode Unix funcionen correctamente Tambieacuten mantiene en memoria informacioacuten de forma que sepueden consultar comandos usados previamente (Para ver como hace uso de esto refieacuterasea la Seccioacuten 563)

Gran parte de este libro estaacute dedicada a aprender como usar el interprete de comandos deUnix que se encuentra dentro de la ventana xterm Para poder escribir en la xtermgeneralmente es necesario mover el cursor (que posiblemente aparece en forma de X o deflecha) al interior de la ventana xterm De todos modos este comportamiento esdependiente del gestor de ventanas

Uno de los modos en los que se puede arrancar un programa bajo X es a traveacutes de unaxterm Al tratarse los programas X de programas Unix estaacutendar pueden ser arrancados atraveacutes de un inteacuterprete de comandos como el de las xterms Para evitar bloquear la xtermejecutando un programa largo desde ella generalmente se prefiere arrancar los programasX en segundo plano Para consultar este tema puede referirse a la Seccioacuten 64

54 Gestores de ventanas

Bajo Linux los gestores de ventanas maacutes comunes son dos El primero llamado twm queviene de Tab Window Manager Es un programa mayor que el segundo fvwm (fvwm viene deF() Virtual Window Manager el autor nunca explicoacute que significaba la f8) Ambosgestores de ventanas son altamente configurables lo cual impide dar instruccionesespeciacuteficas sobre que teclas usar para hacer algo en particular

Si le interesa saber algo sobre la configuracioacuten de twm refieacuterase a la Seccioacuten 921 Laconfiguracioacuten de fvwm se describe en la Seccioacuten 922

541 Cuando se crean nuevas ventanas

Hay tres tipos de cosas que un gestor de ventanas puede hacer cuando se crea una nuevaventana Es posible configurar el gestor de ventanas de manera que aparezca la forma dela ventana permitieacutendole colocarla en la posicioacuten que prefiera en la pantalla Este modose llama colocacioacuten manual Si ve aparecer la forma de la ventana puede moverla con elratoacuten y colocarla presionando el botoacuten izquierdo

_____________________________________________

8 N del T En el Linux Journal No 43 Noviembre 1997 hay una entrevista a RobertNation paacutegs 46shy47 y eacuteste dice que la F estaacute por Feeble (Gracias Joseacute Luis Gurpeguipor la aclaracioacuten)

A veces es posible que el gestor de ventanas las coloque por siacute mismo Se trata de lacolocacioacuten aleatoria

Finalmente a veces la aplicacioacuten pregunta por el lugar preciso en el que el quiere quese situacutee Tambieacuten el gestor de ventanas puede configurarse de forma que siempre situacutee lasventanas de ciertas aplicaciones en lugares fijos (Asiacute por ejemplo se puede especificarque xclock siempre aparezca en la esquina superior derecha de la pantalla)

542 Foco

El gestor de ventanas controla otras cosas importantes Lo que probablemente le interesamaacutes es el foco El foco del servidor determina que ventana recibe los caraacutecteresintroducidos mediante el teclado Generalmente en X el foco es determinado por laposicioacuten del cursor del ratoacuten Si mueve el cursor del ratoacuten dentro de una ventana xterm9esa xterm recibe los caracteres tecleados Se trata de un comportamiento diferente al deotros sistemas de ventanas como Windows de Microsoft OS2 o Macintosh donde debepinchar con el ratoacuten en una ventana para que adquiera el foco

Generalmente bajo X si el cursor del ratoacuten se sale de una ventana se pierde el foco yle resultaraacute imposible escribir en ella

Debe notar sin embargo que es posible configurar tanto twm como fvwm de forma que paracambiar el foco necesite pinchar la ventana correspondiente y pinchar fuera paradesenfocarla de forma que se comporten igual que Windows de Microsoft Una de dos tratede averiguar como funciona su gestor de ventanas probando o consulte la documentacioacutenlocal

543 Moviendo ventanas

Otro aspecto de X que es altamente configurable es el meacutetodo para mover ventanas Yotengo configurados tres meacutetodos para mover ventanas en twm El maacutes obvio es mover elcursor del ratoacuten sobre la barra del tiacutetulo y arrastrar la ventana Desgraciadamente laconfiguracioacuten permite definir el movimiento usando cualquiera de los tres botones10 (Paraarrastrar situacutee el cursor sobre la barra del tiacutetulo y mantenga presionado el botoacuten delratoacuten correspondiente mientras se mueve) Lo maacutes probable es que su configuracioacuten use elbotoacuten izquierdo para mover ventanas

Otra forma de mover ventanas puede ser manteniendo una tecla pulsada mientras mueve elratoacuten Asiacute en mi caso si mantengo pulsada la tecla |_Alt_| y muevo el cursor sobre unaventana puedo arrastrarla usando el botoacuten izquierdo de mi ratoacuten

Por supuesto para ver como funciona en su caso puede probar igual que antes o referirsea la documentacioacuten local Alternativamente si quiere tratar de interpretar los ficherosde configuracioacuten de los gestores de ventanas puede referirse a la Seccioacuten 921 para twmo 922 para fvwm

_____________________________________________

9 iexclPuede ejecutar varias copias de xterm al mismo tiempo

10 Muchos ratones de PCs tienen dos botones uacutenicamente En este caso generalmente esposible emular el botoacuten central presionando ambos botones simultaacuteneamente

544 Profundidad

Dado que las ventanas pueden solaparse en X necesitamos el concepto de profundidad Apesar de que tanto las ventanas como la pantalla son bidimensionales unas ventanaspueden estar delante de otras de forma que cubren total o parcialmente aquella situadadetraacutes

Existen varias operaciones que manejan la profundidad

o Subir o poner una ventana delante Generalmente se hace pinchando con alguno de losbotones en la barra de tiacutetulo de la ventana en cuestioacuten El botoacuten usado depende de laconfiguracioacuten del gestor de ventanas (Es posible que sean varios los botones queproduzcan este efecto)

o Bajar o empujar una ventana hacia atraacutes Generalmente se hace pinchando igualmente enla barra de tiacutetulo pero usando otro botoacuten Tambieacuten es posible configurar el gestor deventanas de forma que pinchar traiga la ventana hacia delante siempre que haya algoencima de ella y la lleve hacia atraacutes si no hay nada delante

o Alzar en ciclo de forma que el gestor de ventanas va alzando las ventanas una a unaen orden

545 Iconizar

Existen otras operaciones que pueden tapar ventanas o hacerlas desaparecer completamenteLa primera es iconizacioacuten Dependiendo del gestor de ventanas que use este procesopuede realizarse de varias formas Con twm muchas personas configuran un gestor deiconos Se trata de una ventana especial que contiene una lista con las demaacutes ventanas enuso en la pantalla Pinchando con el ratoacuten en uno de los nombres (o dependiendo de laconfiguracioacuten en uno de los botones) la ventana desaparece es iconizada La ventana estaacuteauacuten activa pero no puede verse Pinchando otra vez en el gestor de iconos la ventanavuelve a aparecer en la pantalla

Se trata de algo muy uacutetil Se podriacutea por ejemplo tener xterm remotas en diferentesmaacutequinas que use ocasionalmente al mismo tiempo Dado sin embargo que soacutelo las usararamente puede mantenerlas iconizadas mientras trabaja con un pequentildeo grupo El uacutenicoproblema es que resulta faacutecil perder alguna ventana Generalmente eso lleva a crearnuevas ventanas que dupliquen la funcionalidad de las que estaacuten iconizadas

Otros gestores de ventanas crean verdaderos iconos en la parte inferior de la pantalla osimplemente en la ventana raiacutez

546 Variando el tamantildeo

Existen diversos meacutetodos para variar el tamantildeo de las ventanas bajo X De nuevo estodepende de su gestor de ventanas y de coacutemo haya sido configurado El meacutetodo al que estaacutenacostumbrados los usuarios de Windows de Microsoft consiste en pinchar en el borde de laventana y arrastrarlo Si las ventanas que produce su gestor tienen un borde gordo quehace que el cursor del ratoacuten cambie al pasar por encima de eacutel seguramente tambieacuten puedeusar ese meacutetodo

Otra forma es crear un botoacuten de variacioacuten de tamantildeo en la barra del tiacutetulo Es el botoacutenvisible en la parte derecha de las barras de los tiacutetulos de la Figura 53 Para usarlopinche con el botoacuten izquierdo del ratoacuten en eacutel y mantenieacutendolo presionado mueacutevalo fuerade la ventana para variar el tamantildeo Para fijar el nuevo tamantildeo basta soltar el botoacuten delratoacuten

547 Maximizacioacuten

La mayoriacutea de los gestores de ventanas soportan maximizacioacuten En twm por ejemplo puedemaximizar la altura de una ventana su ancho o ambos a la vez Aunque twm llama a esteproceso zooming yo prefiero usar maximizacioacuten Las aplicaciones pueden responder demodo diferente a un cambio de tamantildeo (Por ejemplo xterm no cambia el tamantildeo de letrapero aumenta el espacio de trabajo)

Desgraciadamente no hay un modo estaacutendar de maximizar ventanas

548 Menuacutes

Los gestores de ventanas tambieacuten proporcionan al usuario un sistema de menuacutes pararealizar tareas de forma raacutepida una y otra vez Por ejemplo podriacutea tener una opcioacuten queejecute Emacs de forma automaacutetica o una xterm adicional De ese modo no tendriacutea queejecutar el comando dentro de una xterm iexclesto es especialmente bueno si no hay ningunaxterm ejecutaacutendose en la que pueda escribir para ejecutar un programa nuevo

De forma general se puede acceder a los menuacutes pinchando en la ventana raiacutez que es unaventana inmoacutevil que siempre estaacute debajo de las demaacutes Por defecto esta ventana es decolor gris pero puede tener cualquier aspecto11 Si quiere probar a ver un menuacute pinchey mantenga cualquier botoacuten del ratoacuten sobre la ventana raiacutez Deberiacutea aparecer un menuacutePara seleccionar una opcioacuten mantenga presionado el botoacuten y mueva el ratoacuten hasta marcarla opcioacuten deseada Entonces suelte el botoacuten

55 Atributos X

Hay muchos programas que usan X Algunos como emacs puede ejecutarse tanto en modotexto como en una ventana X que eacutel mismo crea automaacuteticamente Pero en general lamayoriacutea de los programas para X soacutelo funcionan bajo X

551 Geometriacutea

Existe una serie de cosas que son comunes a todos los programas que se ejecutan bajo XEn X el concepto de geometriacutea engloba el lugar y el tamantildeo de la ventana La geometriacutea deuna ventana tiene cuatro componentes a saber

_____________________________________________

11 Un programa divertido que puede probar se llama xfishtank Este programa crea unpequentildeo acuario en el fondo de su pantalla

o La dimensioacuten horizontal generalmente medida en pixels (Un pixel es la unidad maacutespequentildea que puede colorearse y representarse en la pantalla Muchas configuraciones X enPCs basados en un procesador Intel tienen una resolucioacuten de 1024 pixels horizontalmentepor 768 pixels verticalmente) Algunas aplicaciones como xterm o emacs miden su tamantildeoen caracteres (Por ejemplo ochenta caracteres por liacutenea)

o La dimensioacuten vertical tambieacuten medida en pixels generalmente Al igual que antes enalgunos casos se puede medir en liacuteneas

o La distancia horizontal a uno de los bordes de la pantalla Por ejemplo +35 significaa treinta y cinco pixels desde la izquierda Sin embargo shy50 significa que el extremoderecho de la ventana estaacute a cincuenta pixels del borde derecho de la pantallaGeneralmente no es posible lanzar una ventana fuera de la pantalla aunque si se puedemover fuera (La principal excepcioacuten es cuando la ventana es demasiado grande)

o La distancia vertical desde la parte superior o inferior de la pantalla la distanciase mide desde la parte superior si es positiva o desde la inferior si es negativa

Los cuatro componentes se unen formando la cadena de geometriacutea 503x73shy78+0 (Esto marcala geometriacutea de una ventana de 503 pixels de largo 73 pixels de alto situada cerca dela esquina superior derecha de la pantalla) O de otro modo tendremos tamantildeoh x tamantildeovshysituacioacutenh + situacioacutenv

552 Presentacioacuten

Toda aplicacioacuten X tiene asociada una presentacioacuten Eacutesta determina cuaacutel es la pantallacontrolada por el servidor X La presentacioacuten estaacute formada por tres elementos

o El nombre de la maacutequina en la que se ejecuta el servidor En el caso de sistemas Linuxaislados el nombre de la maacutequina que ejecuta el servidor coincide con la que ejecuta losclientes En ese caso se puede omitir el nombre por completo

o El nuacutemero del servidor de dicha maacutequina que debe responder a las peticiones de losclientes Dado que una maacutequina puede estar corriendo diferentes servidores a la vez (esalgo improbable pero posible en maacutequinas Linux) cada uno tiene que tener un nuacutemeropropio

o El nuacutemero del monitor X permite que un servidor controle maacutes de un monitor a la vezPor ejemplo puede que alguien quiera tener maacutes espacio de forma que use dos monitores ala vez Para evitar que el rendimiento de la maacutequina sea muy malo en vez de tener dosservidores hacen que sea el mismo servidor el que controle las dos maacutequinas

Si ponemos estas tres cosas juntas obtendremos maacutequinanuacutemeroshydeshyservidornuacutemeroshydeshypantalla Por ejemplo en mousehouse todas mis aplicaciones tienen la presentacioacutenfijada en 00 lo que significa que la salida aparece en la primera pantalla del primerservidor local Sin embargo si uso una computadora remota tendriacutea que sermousehouse00

Figura 51 Opciones Estaacutendar para Programas X

Nombre Seguido de Ejemplo

shygeometry Geometriacutea de la ventana xterm shygeometry 80x24+0+90

shydisplay A doacutende quiere que el programa enviacutee lasalida

xterm shydisplay lionsden00

shyfg Color primario en primer plano xterm shyfg yellow

shybg Color primario en el segundo plano xterm shybg blue

Por defecto la presentacioacuten se toma de una variable de entorno (ver Seccioacuten 914)llamada DISPLAY12 pero puede ser fijada mediante una opcioacuten desde el inteacuterprete decomandos (ver Figura 52) Para ver cuaacutel es el valor de la variable DISPLAY bastaejecutar echo $DISPLAY

56 Caracteriacutesticas comunes

A pesar de que X es una interfaz graacutefica de usuario se trata de una interfaz muydesequilibrada

Resulta imposible predecir como va a comportarse cualquier elemento del sistema porque sepueden reconfigurar cambiar o incluso sustituir muy faacutecilmente Eso significa que es muydifiacutecil explicar como se han de usar los distintos elementos de la interfaz Una de lasrazones que ya conocemos es la posibilidad de utilizar diferentes gestores de ventanasque a su vez son altamente configurables

Otra explicacioacuten para el desequilibrio de la interfaz es que las aplicaciones X se puedenconstruir mediante conjuntos de chismes13 La distribucioacuten X estaacutendar incluye loswidgets Athena desarrollados en el MIT Las aplicaciones gratuitas suelen hacer uso deeste conjunto Tienen la desventaja de que su aspecto no es particularmente atrayente yresultan algo maacutes difiacuteciles de usar en un programa que los otros

Otro conjunto de widget popular es Motif Motif es un conjunto no gratuito similar a lainterfaz de usuario usada por Windows de Microsoft Muchas aplicaciones comerciales asiacutecomo algunas gratuitas usan el conjunto de widget Motif El popular Browser de World WideWeb netscape por ejemplo usa Motif

Veamos cuales son algunas de las cosas maacutes habituales que puede encontrar

561 Botones

Los botones son generalmente los componentes de la interfaz maacutes faacuteciles de usar Un botoacutense invoca situando el cursor del ratoacuten sobre el botoacuten en cuestioacuten y pinchando (pulsando ysoltando inmediatamente) el botoacuten izquierdo Los botones Athena y Motif sonfuncionalmente equivalentes pero tienen diferencias de apariencia

_____________________________________________

12 NT DISPLAY significa presentacioacuten en ingleacutes

13 NT Se trata de la traduccioacuten de la palabra inglesa widget

562 Barras de menuacute

Una barra de menuacute es una coleccioacuten de comandos accesibles mediante el ratoacuten Cada palabraes la cabecera de una categoriacutea File14 contiene comandos que permiten cargar o grabarficheros Por convencioacuten esta categoriacutea incluye tambieacuten el comando que termina laaplicacioacuten

Para utilizar un comando mueva el cursor del ratoacuten sobre la categoriacutea correspondiente(como por ejemplo File) y apriete el botoacuten izquierdo Sin soltarlo arrastre el ratoacutenhacia abajo para ver los diferentes comandos de esa categoriacutea Para seleccionar unomueva el cursor sobre el mismo y suelte el botoacuten del ratoacuten Algunas barras de menuacute lepermiten pinchar sobre la categoriacutea si este es su caso pinche sobre la categoriacutea paraver el menuacute que se mantendraacute hasta que pinche de nuevo para seleccionar un comando otromenuacute o pinche fuera (indicando que no estaacute interesado en ninguacuten comando en particular)

563 Barras de desplazamiento

Una barra de desplazamiento es un meacutetodo que permite ver soacutelo una parte de un documentomientras que mantiene el resto fuera de la pantalla Por ejemplo en la Figura 54 la

ventana de xterm soacutelo presenta el tercio inferior del texto disponible Es muy faacutecil vercual parte del texto es el que se puede ver en cualquier momento la franja oscura de labarra estaacute situada y tiene una longitud relativa a la porcioacuten de texto que se puede verCuando no hay maacutes que lo que se puede ver toda la barra aparece de color oscuro Si setrata de la mitad seraacute la mitad la que aparezca oscurecida

Puede tener una barra de desplazamiento vertical a la derecha o la izquierda de su textoy una horizontal en la parte superior o inferior dependiendo de la aplicacioacuten de que setrate

Barras de desplazamiento Athena

Las barras de desplazamiento Athena funcionan de forma diferente a las de otros sistemasde ventanas Cada uno de los tres botones del ratoacuten tiene una funcioacuten diferente Paradesplazarse hacia arriba (es decir para que ver el material situado por encima de lo quese puede ver en ese momento) puede pinchar en cualquier lugar de la barra con el botoacutenderecho Para desplazarse hacia abajo puede usar el botoacuten izquierdo de forma anaacuteloga

Tambieacuten puede saltar a cualquier lugar en particular usando el botoacuten central del ratoacuten ypinchando en el lugar de la barra que corresponde a la posicioacuten del texto que leinteresa Esto hace a la ventana presentar el material situado en ese punto deldocumento

_____________________________________________

14 NT Del ingleacutes fichero o archivo

Barras de desplazamiento Motif

Una barra Motif actuacutea de un modo maacutes parecido al acostumbrado en Windows de Microsoft oen un Macintosh La parte derecha de la Figura 54 muestra un ejemplo Debe notar queademaacutes de la barra en siacute misma hay unas flechas tanto en la parte superior como en lainferior Estas flechas se pueden usar para ajuste fino de la pantalla pinchando tantoel botoacuten izquierdo como el central mueve la ventana ligeramente (por ejemplo una liacutenea)el botoacuten derecho no hace nada

El comportamiento asociado a pinchar en la barra de desplazamiento es completamentediferente en las barras Motif del que exhiben las barras Athena El botoacuten derecho notiene efecto Asociado al botoacuten izquierdo la ventana se moveraacute hacia arriba si pinchasobre la posicioacuten actual o hacia abajo en el caso contrario Si pincha sobre la barra enel lugar actual y la arrastra podraacute moverse a cualquier posicioacuten a voluntad Al soltar elbotoacuten se fija cual es la posicioacuten final de la ventana

Pinchando el botoacuten central en cualquier lugar de la barra hace que la ventana se desplacehacia ese lugar de forma inmediata igual que ocurre en barras Athena Sin embargo elpunto elegido se convierte en el centro de la nueva pantalla de datos

Capiacutetulo 6

Trabajando con Unix

A UNIX saleslady Lenore

Enjoys work but she likes the beach more

She found a good way

To combine work and play

She sells C shells by the seashore

Unix es un potente sistema para aquellos que saben coacutemo dominar su poder En estecapiacutetulo intentareacute describir varias maneras de usar el shell de Unix bash maacuteseficientemente

61 Comodines

En el capiacutetulo anterior se ensentildearon los comandos para mantener ficheros cp mv y rm Aveces se querraacute tratar con maacutes de un fichero a la vez en realidad con muchos a la vezPor ejemplo se quiere copiar todos los ficheros que empiecen por data en un directoriollamado backup Se podriacutea hacer esto ejecutando muchos comandos cp o escribiendo cadafichero en una liacutenea de comando Estos dos meacutetodos llevan mucho tiempo incluso setienen muchas posibilidades de cometer errores

Una buena manera de hacer este trabajo es teclear

homelarryreport$ ls shyF

1993shy1 1994shy1 data1 data5

1993shy2 datashynew data2

homelarryreport$ mkdir ~backup

homelarryreport$ cp data ~backup

homelarryreport$ ls shyF ~backup

datashynew data1 data2 data5

homelarryreport$

Como se puede observar el asterisco indica a cp que tome todos los ficheros que empiecenpor data y los copie a backup iquestQueacute cree que cp dw backup puede haber hecho

611 iquestQueacute ocurre realmente

Buena pregunta De hecho hay un par de caracteres especiales interceptados por el shellbash El caraacutecter un asterisco dice cambia esta palabra con todos los ficherosque se ajusten a esta especificacioacuten Asiacute el comando cp data backup como el dearriba cambia a cp datashynew data1 data2 data5 backup antes de ejecutarse

Para ilustrar esto introducireacute un comando nuevo echo echo es un comando extremadamentesimple repite o muestra cualquier paraacutemetro De este modo

homelarry$ echo Hola

Hola

homelarry$ echo Como se encuentra

Como se encuentra

homelarry$ cd report

homelarryreport$ ls shyF

1993shy1 1994shy1 data1 data5

1993shy2 datashynew data2

homelarryreport$ echo 199

1993shy1 1993shy2 1994shy1

homelarryreport$ echo 4

1994shy1

homelarryreport$ echo 2

1993shy2 data2

homelarryreport$

Como se puede ver el shell expande el comodiacuten y pasa todos los ficheros al programa quese va a ejecutar Esto plantea una pregunta interesante iquestqueacute ocurre si no hay ficherosque se ajusten a la especificacioacuten del comodiacuten Pruebe echo rcfrog y bash pasaraacuteliteralmente la especificacioacuten del comodiacuten al programa

Otros shells como tcsh en vez de pasar el comodiacuten literalmente contestaraacuten No matchAquiacute estaacute el mismo comando ejecutado bajo tcsh

mousehousegtecho rcfrog

echo No match

mousehousegt

La uacuteltima pregunta que podriacutea hacerse es iquestqueacute pasa si quisiera mostrar data en vez dela lista de nombres Bien tanto en bash como en tcsh soacutelo se debe incluir la cadenaentre comillas

homelarryreport$ echo data mousehousegtecho data

data Oacute bien data

homelarryreport$ mousehousegt

612 El signo de interrogacioacuten

Ademaacutes del asterisco el shell tambieacuten interpreta un signo de interrogacioacuten como uncaraacutecter especial

Un signo de interrogacioacuten coincidiraacute con un caraacutecter y soacutelo uno Por ejemplo ls etc

mostraraacute todos los ficheros de dos letras en el directorio etc

62 Ganar tiempo con bash

621 Editando la liacutenea de comandos

A veces escribe un comando largo a bash y antes de pulsar |_Intro_| se da cuenta deque ha cometido un error al escribirlo Se puede simplemente borrar todo y volver ateclear correctamente pero iexcles demasiado esfuerzo En cambio se pueden usar las flechaspara moverse borrar ellos caraacutecteres incorrectos y escribir la informacioacutencorrectamente

Hay muchas teclas especiales que ayudan a editar la liacutenea de comandos muchas de ellassimilares a los comandos usados en GNU Emacs Por ejemplo |_Cshyt_| intercambia doscaraacutecteres adyacentes1

Se pueden encontrar muchos de los comandos en el capiacutetulo sobre Emacs Capiacutetulo 8

622 Completamiento de comandos y nombres de fichero

Otra peculiaridad de bash es la ejecucioacuten automaacutetica de las liacuteneas de comando Porejemplo veamos el siguiente ejemplo de un comando cp tiacutepico

homelarry$ ls shyF

estoshyesshyunshyficheroshylargo

homelarry$ cp estoshyesshyunshyficheroshylargo corto

homelarry$ ls shyF

corto estoshyesshyunshyficheroshylargo

homelarry$

Es una gran molestia tener que teclear cada letra de estoshyesshyunshyficheroshylargo cada vezque se quiere acceder a eacutel sucede lo mismo si queremos crear estoshyesshyunshyficheroshylargocopiando en eacutel etcpasswd2 Ahora aprenderemos a escribir el anterior comando cp maacutesraacutepidamente y con menos posibilidad de error

En vez de teclear el nombre del fichero entero se escribe cp es se pulsa y suelta latecla |_Tab_| Por arte de magia el resto del nombre del fichero aparece en la liacutenea decomandos y se puede escribir corto Desgraciadamente bash no pude leer lospensamientos por lo que se debe teclear corto

Cuando se pulsa |_Tab_| bash mira lo que hay escrito y busca un fichero que empiece comoeso Por ejemplo si tecleo usrbinema y luego pulso |_Tab_| bash encontraraacuteusrbinemacs ya que es el uacutenico fichero que empieza por usrbinema en mi sistema Encambio si tecleo usrbinld y pulso |_Tab_| bash me avisaraacute Eso es porque tresficheros usrbinld usrbinldd y usrbinld86 empiezan por usrbinld en misistema

Si se intenta un completamiento y bash avisa se puede pulsar inmediatamente |_Tab_| otravez para conseguir una lista de todos los ficheros que coincidan con el patroacuten De estemodo si no se estaacute seguro del nombre exacto del fichero podemos teclear los primeroscaracteres del nombre y buscarlo en una lista maacutes pequentildea de ficheros

______________________________________________

1 |_Cshyt_|significa mantener pulsada la tecla marcada como Ctrl y apretar la tecla tLuego soltar ambas

2 cp etcpasswd estoshyesshyunshyficheroshylargo

63 La entrada estaacutendar y La salida estaacutendar

Intentemos abordar un problema simple conseguir un listado del directorio usrbin Sihacemos ls usrbin algunos de los nombres de los ficheros saldraacuten por arriba de lapantalla iquestComo se pueden ver todos los ficheros

631 Algunos conceptos de Unix

El sistema operativo Unix facilita mucho a los programas el uso del terminal Cuando unprograma escribe algo en la pantalla estaacute usando algo llamado salida estaacutendar Salidaestaacutendar en ingleacutes standard output o stdout es la manera que tiene el programa deescribirle cosas al usuario El nombre por el que se indica un programa es entradaestaacutendar (stdin) Es posible que un programa se comunique con el usuario sin usar laentrada o salida estaacutendar pero la mayoriacutea de los comandos que se tratan en este librousan stdin y stdout

Por ejemplo el comando ls imprime una lista de los directorios en la salida estaacutendarque estaacute normalmente conectada al terminal Un comando interactivo como el shellbash lee los comandos de la entrada estaacutendar

Un programa tambieacuten puede escribir en el error estaacutendar ya que es muy faacutecil hacer que lasalida estaacutendar apunte a cualquier lugar aparte del terminal El error estaacutendar (stderr)estaacute casi siempre conectado al terminal para que alguna persona pueda leer el mensaje

En esta seccioacuten examinaremos tres modos de enredarse con la entrada y salida estaacutendarredireccionar la salida redireccionar la entrada y las tuberiacuteas

632 Redireccionar la salida

Un aspecto muy importante de Unix es la posibilidad de redireccionar la salida Estopermite que en vez de ver los resultados de un comando los salvemos en un fichero o losenviemos directamente a una impresora Por ejemplo para redireccionar la salida delcomando ls usrbin se coloca un signo gt al final de la liacutenea y se indica elfichero donde dejar la salida

homelarry$ ls

homelarry$ ls shyF usrbin gt listado

homelarry$ ls

listado

homelarry$

Como se puede ver en vez de escribir los nombres de todos los ficheros el comando creaun fichero totalmente nuevo en el directorio actual Echemos un vistazo a este ficherousando el comando cat

Si se recuerda cat era un comando bastante inuacutetil que copiaba lo que se escribiacutea(entrada estaacutendar) al terminal (salida estaacutendar) cat tambieacuten imprime un fichero en lasalida estaacutendar si se indica el fichero como paraacutemetro

homelarry$ cat listado

homelarry$

La salida exacta del comando ls usrbin aparece en el contenido de listado Por ahoratodo bien sin embargo no resuelve el problema original3

A pesar de todo cat hace algunas cosas interesantes cuando se redirecciona su salidaiquestQueacute hace el comando cat listado gt fichero Normalmente el gt fichero dice coge todala salida del comando y ponla en fichero La salida del comando cat listado es elfichero listado Asiacute hemos inventado un nuevo (y no tan eficiente) meacutetodo de copiarficheros

iquestQueacute ocurre con el comando cat gt zorro cat lee cada liacutenea escrita en el terminal(entrada estaacutendar) y la imprime de vuelta (salida estaacutendar) hasta que lee |_Ctrlshyd_| Eneste caso la salida estaacutendar se ha redireccionado al fichero zorro Ahora cat sirve comoun editor rudimentario

homelarry$ cat gt zorro

El rapido zorro marron salta sobre el descuidado perro

pulsa Ctrlshyd

Ahora se ha creado el fichero zorro que contiene la frase El rapido zorro marron saltasobre el descuidado perro Un uacuteltimo uso del versaacutetil comando cat es concatenarficheros cat imprimiraacute cada fichero dado como paraacutemetro uno despues de otro El comandocat listado zorro imprimiraacute el listado del directorio usrbin y luego la tonta fraseAsiacute el comando cat listado zorro gt listyzorro crearaacute un nuevo fichero conteniendo loscontenidos de listado y zorro

633 Redireccionar la entrada

Asiacute como cuando se redirecciona la salida estaacutendar es posible redireccionar la entradaEn lugar de que un programa lea su entrada desde el teclado la leeraacute desde un ficheroComo redireccionar la entrada estaacute relacionado con redireccionar la salida parecenatural que lt sea el caraacutecter para redireccionar la entrada Eacuteste tambieacuten se usadespueacutes del comando que se desee ejecutar

Esto es generalmente uacutetil si se tiene un fichero de datos y un comando que espera susdatos desde la entrada estaacutendar Muchos comandos permiten especificar un fichero sobre elcual operar asiacute que en las actividades diarias el lt no se usa tanto como otrasteacutecnicas

634 Las tuberiacuteas

Muchos comandos Unix producen gran cantidad de informacioacuten Por ejemplo es normal que uncomando como ls usrbin produzca maacutes salida que la que se puede ver en pantalla Paraque se pueda ver toda la informacioacuten de un comando como ls usrbin es necesario usarotro comando Unix llamado more4 more pararaacute cada vez que la pantalla se llene deinformacioacuten Por ejemplo more lt etcrc mostraraacute el fichero etcrc como lo hariacutea catetcrc excepto que more permite leerlo more tambieacuten admite el comando more etcrc y esa es la forma normal de invocarlo

_____________________________________________

3 Para lectores impacientes el comando que se debe usar es more Sin embargo hay quehablar un poco sobre algo maacutes antes de llegar ahiacute

4 Se llama more porque ese es el indicador que originalmente mostraba shyshymoreshyshy Envarias versiones de Linux el comando more es identico a un comando maacutes avanzado que hacetodo lo que more puede hacer y maacutes auacuten Como demostracioacuten de que los programadores deordenadores son malos coacutemicos llamaron a este nuevo programa less

Sin embargo eso no ayuda al problema de que ls usrbin muestre maacutes informacioacuten de laque se pueda ver more lt ls usrbin no funciona iexclla redireccioacuten de entrada soacutelofunciona con ficheros no comandos Se podriacutea hacer esto

homelarry$ ls usrbin gt tempshyls

homelarry$ more tempshyls

homelarry$ rm tempshyls

Pero Unix propone una forma maacutes limpia de hacerlo Se puede usar el comando ls usrbin_ more El caraacutecter _ es una tuberiacutea Como una tuberiacutea de agua una tuberiacutea Unixcontrola el flujo En vez de agua se controla el flujo de informacioacuten

Los filtros son programas muy uacutetiles para usarse en conjuncioacuten con las tuberiacuteas Unfiltro es un programa que lee la entrada estaacutendar la cambia de alguna manera y la sacapor la salida estaacutendar

more es un filtro lee los datos que coge de la entrada estaacutendar y los muestra por lasalida estaacutendar pantalla a pantalla permitiendo leer el fichero more no es un granfiltro porque su salida no se puede enviar a otro programa

Otros filtros incluyen los programas cat sort head y tail Por ejemplo si se quiereleer soacutelo las primeras diez liacuteneas de la salida de ls se puede usar ls usrbin _ head

64 Multitarea

641 Usando el control de trabajos

Control de trabajos se refiere a la habilidad de poner procesos (esencialmente otrapalabra para programas) en background (segundo plano) y ponerlos de vuelta en foreground(primer plano)

Esto es como decir que se quiere ser capaz de ejecutar algo mientras se hacen otrascosas pero que esteacuten ahiacute otra vez cuando se les quiera decir algo o pararlos En Unixla principal herramienta para el control de procesos es el shell seguiraacute la pista de losprocesos por usted si se aprende como hablar su lenguaje

Las dos palabras maacutes importantes en ese lenguaje son fg para primer plano y bg parasegundo plano Para entender como funcionan use el comando yes en el indicador delsistema

homelarry$ yes

Esto produce el maravilloso efecto de desplazar una larga columna de yes por la parteizquierda de la pantalla tan raacutepido que no se pueden seguir5 Para pararlo se podriacuteapulsar |_Ctrlshyc_| y matarlo pero esta vez Ud oprimiraacute |_Ctrlshyz_| Parece habersedetenido pero habraacute un mensaje antes del indicador de sistema maacutes o menos parecido aeste

[1]+ Stopped yes

_____________________________________________

5 Hay buenas razones para que este extrantildeo comando exista Ciertos comandos esperan unaconfirmacioacuten un si ([y]es en ingleacutes) a una pregunta El comando yes permite alprogramador automatizar la respuesta a esas preguntas

Significa que el trabajo yes se ha suspendido en el segundo plano Se puede hacer quesiga ejecutaacutendose tecleando fg en el indicador de sistema que lo pondraacute en primer planootra vez Si se desea se pueden hacer otras cosas antes mientras estaacute suspendidoPruebe unos cuantos ls o algo antes de ponerlo en primer plano nuevamente

Una vez que ha vuelto al primer plano las yes empezaraacuten a salir otra vez tan raacutepidocomo antes

No hay que preocuparse de que si mientras ha estado suspendido ha almacenado maacutes yespara enviarlas a la pantalla cuando un trabajo se suspende el programa entero no seejecuta hasta que se lo vuelva de vuelta a la vida (Ahora pulse |_Ctrlshyc_| para matarlode veras)

Pongamos aparte el mensaje que obtuvimos del shell

[1]+ Stopped yes

El nuacutemero entre corchetes es el nuacutemero de trabajo de este proceso y se usaraacute cuando senecesite referenciarlo especiacuteficamente (Naturalmente desde el momento que tengamos enejecucioacuten muacuteltiples trabajos se necesita un modo de acceder a cada uno) El +siguiente indica que eacutese es el trabajo actual esto es el proceso maacutes reciente que seha movido del primer plano al segundo

Si se tecleara fg se pondriacutea el trabajo con el + en primer plano otra vez (Maacutessobre esto despueacutes cuando se discuta la ejecucioacuten de muacuteltiples trabajos a la vez) Lapalabra Stopped significa que el trabajo estaacute parado El trabajo no estaacute muerto peroactualmente no se ejecuta Linux lo ha guardado en un estado especial de suspendidolisto para saltar a la accioacuten cuando alguien lo solicite Finalmente el yes es el nombredel trabajo que se ha detenido

Antes de seguir adelante matemos este trabajo y lo arrancamos otra vez de formadiferente El comando se llama kill y se usa del siguiente modo

homelarry$ kill 1

[1]+ Stopped yes

homelarry$

Ese mensaje sobre el proceso que indica parado otra vez induce a error Para saber siauacuten estaacute vivo (eso es tanto en ejecucioacuten como congelado en un estado suspendido) tecleejobs

homelarry$ jobs

[1]+ Terminated yes

homelarry$

Ahora ya lo sabe iexclel trabajo ha terminado (Es posible que el comando jobs no muestrenada lo que simplemente significa que no hay trabajos ejecutaacutendose en segundo plano Sise acaba de matar un trabajo y al teclear jobs no muestra nada se tiene la seguridad deque el comando kill se ha ejecutado correctamente Normalmente indicaraacute que el trabajo haterminado)

Ahora ejecute yes de nuevo de esta forma

homelarry$ yes gt devnull

Si lee la seccioacuten sobre la redireccioacuten de entrada y salida sabraacute que se estaacute enviando lasalida de yes a un fichero especial llamado devnull devnull es un agujero negro quecome cualquier salida que se le enviacutee (se puede imaginar ese torrente de yes saliendo pordetraacutes del ordenador y perforando un agujero en la pared si eso le hace feliz)

Despueacutes de teclear esto no se recuperaraacute el indicador de sistema pero tampoco saldraacuteesa columna de yes Sin embargo la salida se estaacute enviando a devnull el trabajo auacuten seejecuta en primer plano Como siempre se puede suspender pulsando |_Ctrlshyz_| Haacutegaloahora para volver al indicador del sistema

homelarry$ yes gt devnull

[yes se ejecuta y solamente se ha pulsado Ctrlshyz]

[1]+ Stopped yes gtdevnull

homelarry$

Hmm iquesthay alguna forma de ponerlo en ejecucioacuten en segundo plano mientras deja elindicador del sistema para trabajar de forma interactiva El comando para hacer eso esbg

homelarry$ bg

[1]+ yes gtdevnull amp

homelarry$

Ahora deberaacute tener confianza en miacute sobre esto despueacutes de teclear bg el trabajo yes gtdevnull habraacute continuado con su ejecucioacuten otra vez pero esta vez en segundo plano Dehecho si hace alguna cosa en el prompt como ls u otros se daraacute cuenta que su maacutequinase ha ralentizado un poco (iexclgenerar y descargar continuamente una cadena preparada deyes lleva algo de tiempo al fin y al cabo) Aparte de esto no hay ninguacuten otro efectoSe puede hacer lo que se desee en el indicador del sistema y yes continuaraacute felizmenteenviando su salida al agujero negro

Ahora hay dos formas diferentes de matarlo con el comando kill que ya se explicoacute oponiendo el trabajo en primer plano de nuevo e interrumpirlo con una interrupcioacuten|_Ctrlshyc_| Probemos la segunda forma soacutelo para entender la relacioacuten entre fg y bg unpoco mejor

homelarry$ fg

yes gtdevnull

[ahora esta en primer plano Imagine que pulso Ctrlshyc para terminarlo]

homelarry$

Bueno se acaboacute Ahora ejecute unos cuantos trabajos simultaacuteneamente como estos

homelarry$ yes gt devnull amp

[1] 1024

homelarry$ yes _ sort gt devnull amp

[2] 1026

homelarry$ yes _ uniq gt devnull

[y aqui pulse Ctrlshyz para suspenderlo por favor]

[3]+ Stopped yes _ uniq gtdevnull

homelarry$

La primera cosa que le debe llamar la atencioacuten de estos comandos es la terminacioacuten amp alfinal de los dos primeros Poner un amp despueacutes del comando indica al shell que losejecute en segundo plano desde el principio (Es una forma de evitarse tener que ejecutarel programa pulsar |_Ctrlshyz_| y luego teclear bg ) Asiacute estos dos comandos hanempezado a ejecutarse en segundo plano El tercero estaacute suspendido e inactivo en estemomento Se puede dar cuenta de que la maacutequina se ha vuelto maacutes lenta ya que los que seestaacuten ejecutando requieren un poco de tiempo de CPU

Cada uno indica su nuacutemero de trabajo Los dos primeros tambieacuten muestran sus nuacutemeros deidentificacioacuten de proceso o PID despueacutes del nuacutemero de trabajo Los PIDs normalmente noson algo que se necesite conocer pero a veces viene bien

Matemos el segundo ya que creo que estaacute ralentizando su maacutequina Se puede teclear kill2 pero eso seriacutea demasiado faacutecil Por el contrario haga esto

homelarry$ fg 2

yes _ sort gtdevnull

[pulse Ctrlshyc para matarlo]

homelarry$

Como esto demuestra fg toma paraacutemetros empezando con De hecho se podriacutea teclearsoacutelo esto

homelarry$ 2

yes _ sort gtdevnull

[pulse Ctrlshyc para matarlo]

homelarry$

Esto funciona por que el shell automaacuteticamente interpreta un nuacutemero de trabajo como unapeticioacuten para poner ese trabajo en primer plano Se puede indicar los nuacutemeros de trabajocon otros nuacutemeros precedidos por un Ahora teclee jobs para ver cuaacuteles trabajosquedan en ejecucioacuten

homelarry$ jobs

[1]shy Running yes gtdevnull amp

[3]+ Stopped yes _ uniq gtdevnull

homelarry$

El shy indica que ese trabajo nuacutemero 1 es segundo en la lista para ser puesto en elprimer plano si soacutelo se teclea fg sin dar paraacutemetros El + indica que el trabajoespecificado es el primero en la lista un fg sin paraacutemetros pondraacute al trabajo nuacutemero 3en el primer plano Sin embargo se puede acceder a eacutel llamaacutendolo si se desea mediante

homelarry$ fg 1

yes gtdevnull

[ahora pulse Ctrlshyz para suspenderlo]

[1]+ Stopped yes gtdevnull

homelarry$

Al cambiar al trabajo nuacutemero 1 y luego suspenderlo han cambiado las prioridades de todoslos trabajos de usuario Esto se puede ver con el comando jobs

homelarry$ jobs

[1]+ Stopped yes gtdevnull

[3]shy Stopped yes _ uniq gtdevnull

homelarry$

Ahora los dos estaacuten parados (porque los dos se han suspendido con |_Ctrlshyz_|) y elnuacutemero 1 es el siguiente en la lista a entrar en el primer plano por defecto Esto es asiacuteporque se le puso en el primer plano manualmente y luego fue suspendido El + siemprese refiere al trabajo maacutes reciente que ha sido suspendido del primer plano Se puedecontinuar con su ejecucioacuten otra vez

homelarry$ bg

[1]+ yes gtdevnull amp

homelarry$ jobs

[1]shy Running yes gtdevnull

[3]+ Stopped yes _ uniq gtdevnull

homelarry$

Fiacutejese que ahora estaacute en ejecucioacuten y el otro trabajo se ha movido en la lista y tiene el+ Ahora mateacutemoslos para que el sistema no esteacute permanentemente ralentizado porprocesos que no hacen nada

homelarry$ kill 1 3

[3] Terminated yes _ uniq gtdevnull

homelarry$ jobs

[1]+ Terminated yes gtdevnull

homelarry$

Apareceraacuten varios mensajes sobre la terminacioacuten de los trabajos nada mueretranquilamente al parecer La figura 61 de la paacutegina 59 muestra un breve resumen de loque se debe saber acerca del control de trabajos

642 Teoriacutea del control de trabajos

Es importante entender que el control de procesos lo hace el shell No hay ninguacutenprograma en el sistema llamado fg por eso fg bg amp jobs y kill son internos alshell6 (A veces kill es un programa independiente en el shell bash usado por Linuxpertenece al shell) Esto es una forma loacutegica de hacerlo ya que cada usuario quiere supropio espacio de control de trabajos y cada usuario ya tiene su propio shell es maacutesfaacutecil que el shell siga la pista de los trabajos usuario Por otro lado cada nuacutemero detrabajo de usuario soacutelo tiene significado para ese usuario mi trabajo nuacutemero [1] y sutrabajo nuacutemero [1] son probablemente dos procesos totalmente diferentes De hecho si seestaacute conectado maacutes de una vez cada uno de los shells tendraacute datos uacutenicos sobre elcontrol de trabajos asiacute como tambieacuten un usuario puede tener dos trabajos diferentes conel mismo nuacutemero ejecutaacutendose en dos shells diferentes

_____________________________________________

6 N del T En el original pone shellshybuiltins eso es que se compilan dentro delshell

La manera segura de referenciarlos es usar el nuacutemero IDentificador de Proceso (PID)Estos nuacutemeros abarcan todo el sistema cada proceso tiene su propio (y uacutenico) nuacutemero Dosusuarios diferentes pueden referenciar un proceso por su PID y saber que estaacuten hablandosobre el mismo proceso (iexclasumiendo que estaacuten conectados en la misma maacutequina)

Echeacutemosle un vistazo a un comando maacutes para entender que son los PIDs El comando ps listatodos los procesos en ejecucioacuten incluyendo el shell Prueacutebelo Tiene tambieacuten unascuantas opciones de las cuales las maacutes importantes (para mucha gente) son a u yx La opcioacuten a lista los procesos pertenecientes a alguacuten usuario no soacutelo los suyos

propios La x lista los procesos que no tienen un terminal asociado a ellos7Finalmente la u da informacioacuten adicional sobre los procesos que es frecuentementeuacutetil

Para hacerse una idea de lo que realmente estaacute haciendo el sistema se ponen todosjuntos ps shyaux Se pueden ver los procesos que usan maacutes memoria mirando la columnaMEM y maacutes CPU mirando a la columna CPU (La columna TIME lista la cantidad total detiempo de CPU usado)

Otra nota raacutepida sobre los PIDs kill aparte de tomar opciones de la forma no_trabajotoma opciones de los PIDs en crudo Esto es si pone un yes gt devnull en segundoplano se ejecuta ps y se busca el yes Luego se teclea kill PID 8

Si empieza a programar en C con su sistema Linux pronto aprenderaacute que el control detrabajos del shell es soacutelo una versioacuten interactiva de las llamadas a las funciones fork yexecl Esto es demasiado complejo para explicarlo aquiacute pero seriacutea uacutetil recordarlodespueacutes cuando se esteacute programando y se quieran ejecutar muacuteltiples procesos desde unsimple programa

65 Consolas virtuales como estar en varios lugares a la vez

Linux soporta consolas virtuales Son una manera de hacer que su simple maacutequina aparezcacomo muacuteltiples terminales todos conectados al mismo nuacutecleo Linux Por fortuna usar lasconsolas virtuales es una de las cosas maacutes simples en Linux hay hot keys9 para cambiarentre las consolas raacutepidamente Para probarlo hay que conectarse al sistema pulsar latecla |_Alt_| izquierda y pulsar |_F2_| (esto es la tecla de funcioacuten nuacutemero 2)10 11

_____________________________________________

7 Esto soacutelo tiene sentido para ciertos programas que no tienen que hablar con el usuarioa traveacutes del teclado

8 En general es maacutes faacutecil matar el nuacutemero del trabajo en vez de usar PIDs

9 NT No he creido apropiado traducir este teacutermino ya que muchos usuarios saben a loque se refiere De todas formas para el que no lo sepa esto es una simple combinacioacutende teclas que hace un cierto trabajo

Se encontraraacute con otro indicador para conectarse No se alarme ahora estaacute en la consolavirtual (VC) nuacutemero 2 Coneacutectese y haga algunas cosas unos cuantos ls o lo que sea paraconfirmar que es un shell real Ahora puede volver a la VC nuacutemero 1 pulsando el |_Alt_|izquierdo y |_F1_| O se puede mover a una tercera VC de la forma obvia (|_AltshyF3_|)

Generalmente los sistemas Linux vienen con cuatro VC activadas por defecto Esto se puedeincrementar a ocho estos temas se cubriraacuten en The Linux System Administrators GuideEllo implica editar uno o dos ficheros en el directorio etc Sin embargo cuatro debenser suficientes para la mayoriacutea de las personas

Una vez las haya usado las VC probablemente se convertiraacuten en una herramientaindispensable para tener varias cosas ejecutaacutendose a la vez Por ejemplo yo normalmenteejecuto Emacs en la VC 1 (y hago la mayor parte de mi trabajo ahiacute) mientras tengo unprograma de comunicaciones en la VC 3 (asiacute puede coger o dejar ficheros via modemmientras trabajo o ejecutar programas en maacutequinas remotas) y mantengo un shell en la VC2 soacutelo en caso de que tenga que ejecutar algo sin involucrar a la VC 1

_____________________________________________

10 Hay que asegurarse de que esto se hace desde consolas en modo texto si se estaacuteejecutando X Window u otra aplicacioacuten graacutefica probablemente no funcionaraacute sin embargo

corre el rumor de que pronto se podraacute cambiar entre las consolas virtuales en X Window deLinux

11 N del T De hecho al momento de la traduccioacuten la combinacioacuten es |_CtrlshyAltshyteclashydeshyfuncioacuten_|

Figura 61 Resumen de comandos y teclas usados para el control de trabajos

Comando Explicacioacuten

fg nordm_trabajo Este es un comando del shell que devuelve un trabajo alprimer plano Para saber cuaacutel es eacuteste por defecto se tecleajobs y se busca el que tiene el +

Paraacutemetros nuacutemero de trabajo opcional El trabajo pordefecto se identifica con el +

amp Cuando se antildeade un amp al final de la liacutenea de comandosindica al comando que se ejecute en segundo planoautomaacuteticamente Este trabajo estaacute entonces sujeto a todoslos meacutetodos usuales para el control de trabajos aquiacutedetallados

bg nordm_trabajo Este es un comando del shell que manda a un trabajosuspendido ejecutarse en segundo plano Para saber cual eseacuteste por defecto se teclea jobs y se busca el que tieneel +

Paraacutemetros nuacutemero de trabajo opcional El trabajo pordefecto se identifica con el +

kill nordm_trabajo PID Este es un comando del shell que obliga a un trabajo ensegundo plano ya sea suspendido o en ejecucioacuten a terminarSe debe siempre especificar el nuacutemero de trabajo o PID y sise estaacuten usando nuacutemeros de trabajo no hay que olvidar ponerel

Paraacutemetros El nuacutemero de trabajo (a continuacioacuten del ) o elPID (no es necesario el ) Se puede especificar maacutes de unproceso o trabajo en una liacutenea

jobs Este comando del shell lista informacioacuten sobre los trabajosque estaacuten en ese momento en ejecucioacuten o suspendidos A vecestambieacuten dice cuaacuteles son los que acaban de salir o hanterminado

|_Ctrlshyc_| Este es el caraacutecter geneacuterico de interrupcioacuten Normalmentesi se pulsa mientras un programa se estaacute ejecutando enprimer plano mataraacute al programa (puede que haya que hacerlovarias veces) Sin embargo no todos los programasresponderaacuten a este meacutetodo de terminacioacuten

|_Ctrlshyz_| Esta combinacioacuten de teclas normalmente suspende un programapuede que algunos programas lo ignoren Una vez suspendidoel trabajo se puede reiniciar en el segundo plano o se puedematar

Capiacutetulo 7

Pequentildeos programas potentes

better pout cry

better watchout

lpr why

santa claus ltnorth pole gttown

cat etcpasswd gtlist

ncheck list

ncheck list

cat list _ grep naughty gtnogiftlist

cat list _ grep nice gtgiftlist

santa claus ltnorth pole gt town

who _ grep sleeping

who _ grep awake

who _ egrep bad_good

for (goodness sake) shy

be good

71 El poder de Unix

El poder de Unix1 se esconde en pequentildeos comandos que no parecen ser muy uacutetiles cuando seutilizan por separado pero combinados con otros (directa o indirectamente) proporcionanun entorno mucho maacutes potente y flexible que la mayoriacutea de los otros sistemas operativosLos comandos de los que hablaremos en este capiacutetulo son entre otros sort grep morecat wc spell diff head y tail

Veremos lo que cada una de las utilidades hace por separado y luego daremos algunosejemplos de como utilizarlos conjuntamente2

_____________________________________________

1 N del T El cookie de apertura de este capiacutetulo es la traduccioacuten a comandos Unix deuna cancioacuten de navidad

Santa Claus is coming to town (escrita por H Gillespie J F Coots)

2 Noacutetese que los resuacutemenes de los comandos en este capiacutetulo no son extensos Para masinformacioacuten vea la paacutegina del manual correspondiente con el comando man

72 Trabajando con ficheros

Junto a comandos como cd mv y rm que ya se vieron en el Capiacutetulo 4 hay otros comandosque trabajan con ficheros pero no con los datos contenidos en ellos Estos son touchchmod du y df

Ninguno de ellos se preocupa por lo que contiene el fichero simplemente modificanalgunas de las informaciones que Unix guarda acerca del fichero

Estos comandos manipulan

o Los registros de tiempo Todo fichero tiene tres fechas asociadas a eacutel3 Las tresfechas son las siguientes creacioacuten del fichero uacuteltima modificacioacuten (cuando se produjoel uacuteltimo cambio en el fichero) y uacuteltimo acceso (cuando se produjo la uacuteltima lectura delfichero)

o El duentildeo Cada fichero en Unix pertenece a un uacutenico propietario

o El grupo Cada fichero tiene tambieacuten asociados un grupo de usuarios El grupo maacutes usualpara los ficheros de usuario se denomina users que es al cual por lo generalpertenecen todos los usuarios con cuenta en el sistema

o Los permisos Cada fichero tiene ciertos permisos (tambieacuten llamados privilegios)asociados a eacutel que indican a Unix quieacuten puede acceder a ese fichero cambiarlo o en elcaso de ser un programa ejecutarlo Cada uno de estos permisos puede ser establecido porseparado para el duentildeo el grupo y el resto de usuarios

shy touch fichero1 fichero2 ficheroN

touch actualiza los registros de fecha y hora con la fecha y hora actual de los ficherosindicados en la linea de comandos Si el fichero no existe touch lo crearaacute Tambieacuten esposible especificar la fecha y hora a registrar en la informacioacuten de losficheros_consulte la paacutegina del manual (comando man) para maacutes informacioacuten sobre touch

shy chmod [shyRfv] modo fichero1 fichero2 ficheroN

El comando que se utiliza para modificar los permisos de un fichero es el chmod4 Antesde

meternos en como utilizar este comando veamos primero que permisos hay en Unix Cadafichero tiene asociados un grupo de permisos Estos permisos le indican al sistemaoperativo quien puede leer escribir o ejecutar como programa el fichero (Acontinuacioacuten se explica como puede un usuario hacer estas cosas Un programa ejecutadopor un usuario puede hacer las mismas cosas que las que le esteacuten permitidas al propiousuario esto puede suponer un problema de seguridad si se desconoce lo que hace cadaprograma en particular)

_____________________________________________

3 Los antiguos sistemas de ficheros de Linux soacutelo almacenaban una fecha ya que derivabande Minix Si se utiliza alguno de estos sistemas de ficheros parte de la informacioacuten noestaraacute disponible y las operaciones que se realicen sobre ellas seraacuten inuacutetiles

4 N del T Abreviatura de change mode cambiar modo

Unix reconoce tres tipos diferentes de individuos primero el propietario del fichero (yla persona que puede utilizar el comando chmod sobre ese fichero) Segundo el grupoEl grupo de la mayoriacutea de los ficheros normales de un usuario del sistema seraacute users(Para ver el grupo de un fichero en particular utilizar ls shyl fichero ) Por uacuteltimoestaacute el resto que no son ni propietarios ni pertenecen al grupo denominados otros5

De esta forma por ejemplo un fichero puede tener permisos de lectura y escritura parael propietario permiso de lectura para el grupo y ninguacuten tipo de permisos para otros Opor alguna razoacuten un fichero puede tener permisos de lecturaescritura para el grupo yotros pero iexclninguacuten privilegio para el propietario

Veamos algunos ejemplos de como cambiar permisos utilizando chmod Primero creamos unfichero utilizando cat emacs o cualquier otro programa Por defecto son posibles lasoperaciones de lectura y de escritura sobre el fichero (Los permisos dados a otrosusuarios dependen de coacutemo esteacuten establecidas las variables del sistema y de la cuenta delusuario) Podemos asegurarnos de que tenemos permiso de lectura utilizando el comandocat a continuacioacuten eliminamos el privilegio de lectura para nosotros mismos utilizandochmod ushyr fichero 6 Ahora si intentamos leer el fichero obtendremos el mensaje deerror Permission denied Devolvemos el privilegio de lectura utilizando chmod u+rfichero

Los permisos de directorio utilizan las tres mismas ideas anteriores leer escribir yejecutar pero con ligeras variaciones El privilegio de lectura permite al usuario (o algrupo o a otros) leer el directorio listar los nombres de los ficheros El permiso deescritura permite antildeadir o borrar ficheros El permiso de ejecucioacuten permite al usuarioacceder a ficheros en el directorio o a cualquier subdirectorio (Si un usuario no tienepermisos de ejecucioacuten para un directorio entonces no puede siquiera hacer un cd almismo)

Para utilizar chmod reemplazar el modo por el usuario grupo otro o todos (all) y laoperacioacuten a realizar (Es decir utilizar un signo maacutes + para antildeadir privilegios y unmenos shy para quitarlos

Un signo igual = indica los mismos permisos para los usuarios involucrados en el modo)Los permisos posibles son lectura (read) escritura (write) y ejecucioacuten (execute)

La opcioacuten shyR al utilizar chmod cambiaraacute los permisos de un directorio de todos losficheros contenidos en eacutel y de forma recursiva los permisos del aacuterbol de subdirectoriosa partir de eacutel La opcioacuten shyf fuerza a que chmod intente cambiar los permisos incluso siel usuario no es el duentildeo del fichero (Si se utiliza el paraacutemetro f al ejecutar chmodno se mostraraacute un mensaje de error en caso de que no pueda cambiar los permisos delfichero) por uacuteltimo la opcioacuten v hace que la ejecucioacuten del chmod informe de todo loque hace

_____________________________________________

5 N del T En ingles owner (con u de user) group and othersrespectivamente

6 N del T El paraacutemetro ushyr indica user minus read es decir usuario menos lectura

73 Estadiacutesticas del sistema

Los comandos de esta seccioacuten son de utilidad a la hora de mostrar las estadiacutesticas delsistema operativo o de una parte de eacutel

shy du [shyabs] [trayectoria1 trayectoria2 trayectoriaN]

El comando du7 contabilizaraacute el espacio de disco ocupado por un subdirectorio y todos sussubdirectorios El uso de este comando sin utilizar paraacutemetros devolveraacute una lista decuanto disco consume cada subdirectorio del directorio actual y al final del informecuanto disco utiliza el directorio (y todos sus subdirectorios) Si se le pasa uno o maacutesparaacutemetros devolveraacute la cantidad de espacio utilizado por esos ficheros o directorios enlugar de la del directorio actual

La opcioacuten a mostraraacute ademaacutes del espacio de los directorios el de los ficherosUtilizando b como opcioacuten presentaraacute el total en bytes en lugar de kilobytes (1kilobyte = 1024 caracteres)8

Finalmente el paraacutemetro s informaraacute soacutelo acerca de los directorios expliciacutetos en lalinea de comando y no de sus subdirectorios

shy df

El comando df9 resume la cantidad de espacio utilizada en el disco Para cada sistema deficheros (recuerde que sistemas de ficheros diferentes son o bien unidades fiacutesicas oparticiones diferentes) muestra el espacio total de disco la cantidad utilizada lacantidad disponible y la capacidad total del sistema de ficheros que se utiliza

Un caso extrantildeo que puede darse es la posibilidad de tener una capacidad superior al100 o que la cantidad utilizada maacutes la disponible no sea igual a la total Esto esdebido a que Unix reserva parte del espacio de cada sistema de ficheros para eldirectorio raiacutez De esta forma aunque alguacuten usuario accidentalmente sature el disco elsistema todaviacutea tendraacute un poco de espacio para seguir operativo

Este comando no ofrece opciones que puedan ser de utilidad al usuario

shy uptime

El comando uptime10 informa sobre el tiempo en el que el sistema ha estado activo esdecir el tiempo transcurrido desde que Unix arrancoacute por uacuteltima vez

Este comando tambieacuten devuelve la hora actual y el promedio de carga que soporta elsistema El promedio de carga es el nuacutemero medio de procesos esperando a ejecutar en undeterminado periodo de tiempo uptime muestra el promedio de carga del uacuteltimo minuto y delos cinco y diez uacuteltimos minutos Si este promedio de carga se aproxima a cero indica queel sistema ha estado relativamente desocupado por el contrario si el promedio es cercanoal uno indica que el sistema ha estado casi completamente utilizado pero en ninguacutenmomento sobrecargado Los promedios de carga altos son el resultado de la ejecucioacutensimultaacutenea de varios programas

Extraordinariamente uptime es uno de los pocos comandos de Unix que iexclno tienen opciones

_____________________________________________

7 N del T Abreviatura de disk usage utilizacioacuten del disco

8 Un byte es el equivalente de una letra en un documento de texto

9 N del T Abreviatura de disk filling espacio disponible en el disco

10 N del T Tiempo en estado activo

shy who

El comando who muestra los usuarios activos en ese momento en el sistema y cuando haniniciado su respectiva sesioacuten Si le damos los paraacutemetros am i (es decir who am i) nos devuelve la informacioacuten relativa a nosotros mismos11

shy w [shyf] [nombre_usuario]

El programa w devuelve los usuarios actuales del sistema y que estaacuten haciendo(Baacutesicamente combina la funcionalidad de uptime y who La cabecera del informe quepresenta w es exactamente la misma que uptime siendo la informacioacuten de cada una de lasliacuteneas la siguiente el nombre del usuario hora de inicio de la sesioacuten (y cuanto tiempoha estado ocioso) JCPU es la cantidad total de tiempo de CPU utilizada por ese usuariomientras que PCPU es la cantidad total de tiempo utilizada por sus tareas actuales

Si al comando se le pasa la opcioacuten f mostraraacute los sistemas remotos desde los que losusuarios acceden si los hay Puede indicarse un nombre de usuario como paraacutemetro paramostrar soacutelo informacioacuten relativa a eacutel

74 iquestQueacute hay en un fichero

Principalmente hay dos comandos en Unix para listar ficheros cat y more Sobre ambos yase habloacute en el Capiacutetulo 6

shy cat [shynA] [fichero1 fichero2 ficheroN]

cat no es un comando de uso amigable no espera a que el usuario acabe de leer elfichero y se utiliza generalmente en contextos de tuberiacuteas Aunque pueden utilizarsealgunas opciones muy uacutetiles del comando por ejemplo n numera todas las liacuteneas delfichero y A mostraraacute los caraacutecteres de control como caraacutecteres normales en lugar dehacer (posiblemente) cosas extrantildeas en la pantalla

(Recuerde que para ver las opciones maacutes curiosas y quizaacute menos uacutetiles utilice elcomando man man cat Si no se especifican ficheros en la liacutenea de comandos cataceptaraacute la entrada desde stdin12

_____________________________________________

11 N del T literalmente es como preguntar al sistema iquestquieacuten soy yo

shy more [shyl] [+nuacutemero_liacutenea] [fichero1 fichero2 ficheroN]

more es maacutes uacutetil y ademaacutes es el comando recomendado para ver ficheros de texto ASCII Lauacutenica opcioacuten interesante es l que indica al comando que no se desea interpretar elcaraacutecter |_CtrlshyL_| como caraacutecter de nueva paacutegina El comando comenzaraacute en la liacuteneanuacutemero_liacutenea especificada

Al ser more un comando interactivo hemos resumido a continuacioacuten las oacuterdenes maacutescomunes

|_Barrashyespaciadora_| Pasar a la siguiente pantalla de texto

|_d_| Pasar 11 liacuteneas de pantalla o aproximadamente la mitad de una pantallanormal 25 liacuteneas

|__|Busca una expresioacuten regular La construccioacuten de una expresioacuten regularpuede ser muy complicada por lo que es recomendable teclear simplemente eltexto a buscar Por ejemplo sapo |_Intro_| buscaraacute la primera ocurrencia desapo en el fichero a partir de la posicioacuten actual

La misma tecla seguida por un |_Intro_| buscaraacute la siguiente ocurrencia de lauacuteltima expresioacuten buscada

|_n_| Buscaraacute la proacutexima aparicioacuten de la expresioacuten regular especificada

|__||_n_| Pasar al siguiente fichero en caso de que se especifique maacutes deun fichero en la liacutenea de comandos

|__||_p| Pasar al fichero anterior

|_q_| Terminar more

shy head [shyliacuteneas] [fichero1 fichero2 ficheroN]

head mostraraacute las primeras diez liacuteneas de los ficheros especificados o las primeras diezliacuteneas de la stdin si no se especifica ninguacuten fichero en la liacutenea de comandos Cualquieropcioacuten numeacuterica se tomaraacute como el nuacutemero de liacuteneas a mostrar por ejemplo head shy15 ranamostraraacute las primeras quince liacuteneas del fichero rana

shy tail [shyliacuteneas] [fichero1 fichero2 ficheroN]

Como head tail mostraraacute solo una parte del fichero en este caso el final del ficherolas uacuteltimas diez liacuteneas del fichero o que provengan de la stdin tail tambieacuten acepta laopcioacuten de especificar el nuacutemero de liacuteneas como en el caso anterior

_____________________________________________

12 N del T standard input entrada estaacutendar generalmente entrada de datos porteclado

shy file [fichero1 fichero2 ficheroN]

El comando file intenta identificar que tipo de formato tiene un fichero en particularDebido a que no todos los ficheros tienen extensioacuten o otras formas de identificarlosfaacutecilmente este comando realiza algunas comprobaciones rudimentarias para intentarcomprender exactamente que contiene el fichero

Hay que tener cuidado ya que es bastante posible que file realice una identificacioacutenincorrecta

75 Comandos de edicioacuten

Esta seccioacuten trata de los comandos que alteran un fichero realizando sobre el ficherooperaciones concretas o mostrando estadiacutesticas del mismo

shy grep [shynvwx] [shynuacutemero] expresioacuten [fichero1 fichero2 ficheroN ]

Uno de los comandos maacutes uacutetiles de Unix es el grep13 utilizado para buscar expresiones enun fichero de texto La forma maacutes sencilla de usarlo es

homelarry$ cat animales

Los animales son unas criaturas muy interesantes Uno de mis animalesfavoritos es el tigre una temible bestia con grandes colmillos

Tambien me gusta el leonshyshyshy realmente increible

homelarry$ grep igre animales

el tigre una temible bestia con grandes colmillos

homelarry$

Una de los problemas de esta forma de usarlo es que simplemente muestra las liacuteneas quecontienen la palabra a buscar no aporta informacioacuten acerca de donde buscar en elfichero es decir el nuacutemero de liacutenea Pero dependiendo de lo que se pretenda puede serhasta maacutes que suficiente por ejemplo si se buscan los errores de la salida de unprograma se puede probar aout _ grep error donde aout es el nombre del programa

Cuando es necesario conocer donde estaacuten las palabras a buscar es decir el nuacutemero deliacutenea hay que utilizar la opcioacuten n Si lo que se desea es ver todas las liacuteneas dondeno se encuentra la expresioacuten especificada entonces utilice la opcioacuten v

Otra posibilidad que ofrece el grep es la buacutesqueda de partes de una palabra como en elejemplo anterior que igre se equiparoacute con tigre Para buscar soacutelo palabras completashay que pasarle al grep la opcioacuten w y para liacuteneas completas la opcioacuten es x

Si no se especifica ninguacuten fichero (por ejemplo grep igre ) grep examinaraacute la stdin

_____________________________________________

13 N del T Abreviatura de generalized regular expression parser analizador general deexpresiones regulares

shy wc [shyclw] [fichero1 fichero2 ficheroN ]

El comando wc14 simplemente cuenta el nuacutemero de palabras liacuteneas y caracteres en losficheros pasados como paraacutemetros Si no se especifica ninguacuten fichero operaraacute sobre lastdin Los tres paraacutemetros clw indican el elemento a contar caracteres liacuteneas yw para palabras

Por ejemplo wc shycw contaraacute el nuacutemero de caracteres y palabras pero no el nuacutemero deliacuteneas Si no se indica ninguacuten paraacutemetro wc cuenta todo palabras liacuteneas y caracteres

Se puede utilizar wc para saber el nuacutemero de ficheros de un directorio ls _ wc shyw Sise desea saber el nuacutemero de ficheros que acaban en c entonces ejecute ls c _ wc shyw

shy spell [fichero1 fichero2 ficheroN]

spell es el corrector ortograacutefico maacutes sencillo de Unix generalmente para ingleacutesamericano15

spell es un filtro igual que la mayoriacutea de los comandos que hemos comentado antes quetoma el fichero de texto ASCII y devuelve todas las palabras que considera erroacuteneasspell opera sobre los ficheros especificados y si no se incluye ninguno entoncesutiliza la stdin

Tambieacuten es posible que esteacute disponible en su maacutequina ispell que es un correctorortograacutefico un poco maacutes sofisticado ispell ofrece diversos vocabularios y un menuacute maacutesmanejable en caso de ejecutarlo con un fichero en la liacutenea de comandos Tambieacuten puedeejecutarse como un filtro si no se especifica ninguacuten fichero

La forma de trabajar con ispell es bastante obvia pero si necesita maacutes ayuda consulte lapaacutegina del manual correspondiente man ispell

shy cmp fichero1 [fichero2]

cmp compara dos ficheros El primero debe ser obligatoriamente pasado como paraacutemetromientras que el segundo puede ser pasado como un segundo paraacutemetro o leiacutedo desde laentrada estaacutendar cmp es muy sencillo y simplemente dice donde se diferencian los dosficheros

shy diff fichero1 fichero2

Uno de los comandos estaacutendar maacutes complejos de Unix es el diff La versioacuten GNU de difftiene hasta iexclveinte opciones en la liacutenea de comandos Es una versioacuten mucho maacutes potenteque cmp y muestra cuales son las diferencias en lugar de decir simplemente donde estaacute laprimera

Ya que una buena parte de las opciones del diff estaacuten maacutes allaacute del alcance de estemanual simplemente hablaremos del funcionamiento baacutesico Brevemente diff toma dosparaacutemetros y muestra las diferencias entre ellos liacutenea a liacutenea Por ejemplo

homelarry$ cat rana

Los animales son una criaturas muy interesantes Uno de mis animalesfavoritos es el tigre una temible bestia con grandes colmillos

Tambien me gusta el leonshyshyshy realmente increible

homelarry$ cp rana sapo

homelarry$ diff rana sapo

homelarry$ cat perro

Los animales son una criaturas muy nteresantes Uno de mis animales favoritoses

el tigre una temible bestia con grandes colmillos

Tambien me gusta el leonshyshyshy realmente increible

homelarry$ diff rana perro

1c12

lt Los animales son una criaturas muy interesantes Uno de mis animalesfavoritos es

shyshyshyshy

gt Los animales son una criaturas muy nteresantes Uno de mis animalesfavoritos es

gt

3c4

lt Tambien me gusta el leonshyshyshy realmente increible

shyshyshyshy

gt Tambien me gusta el leonshyshyshy realmente increible

homelarry$

_____________________________________________

14 N del T Abreviatura de word count contar palabras

15 Aunque hay versiones del corrector para diversas lenguas europeas la copia que puedeencontrarse en su maacutequina Linux es con toda probabilidad para ingleacutes americano

Como puede observarse diff no devuelve nada cuando los dos ficheros son iguales Perocuando hemos comparado dos ficheros diferentes se muestra una cabecera de seccioacuten1c12 indicando que ha comparando la liacutenea 1 del fichero de la izquierda rana con lasliacuteneas 1shy2 de perro y las diferencias que ha encontrado Luego ha comparado la liacutenea 3 derana con la liacutenea 4 de perro

Aunque pueda parecer extrantildeo que compare diferentes nuacutemeros de liacutenea es bastanteeficiente ya que es posible que pueda haber alguacuten retorno de liacutenea de maacutes en alguno delos ficheros

shy gzip [shyv] [fichero1 fichero2 ficheroN]

shy gunzip [shyv] [fichero1 fichero2 ficheroN]

shy zcat [fichero1 fichero2 ficheroN]

Estos tres programas se utilizan para comprimir y descomprimir datos gzip o GNU Zip esun programa que lee de los ficheros originales y devuelve ficheros maacutes pequentildeos borralos ficheros especificados en la liacutenea de comandos y los reemplaza con ficheros quetienen el mismo nombre pero con gz antildeadido a su nombre

shy tr cadena1 cadena2

El comando de traduccioacuten de caracteres opera sobre la entrada estaacutendar no acepta unnombre de fichero como paraacutemetro Reemplaza todas las ocurrencias de cadena1 en laentrada con la cadena2 En comparacioacuten con llamadas tan sencillas como tr rana sapo tr puede aceptar comandos maacutes complejos Por ejemplo hay una forma raacutepida de convertirlos caracteres en minuacutescula por otros en mayuacutescula

homelarry$ tr shylower] [upper]

Esta es una frase RARA

ESTA ES UNA FRASE RARA

tr es relativamente complejo y se usa normalmente en pequentildeos programas shell comofiltro

Capiacutetulo 8

Editando archivos con Emacs

FUNNY SOMETHING OR OTHER

81 iquestQueacute es Emacs

Para obtener algo en una computadora necesita una forma de introducir texto en losarchivos y una manera de cambiar el texto que ya estaacute en los archivos Un editor es unprograma para este tipo de tareas emacs es uno de los editores maacutes populares en parteporque es muy faacutecil para un principiante hacer trabajos con eacutel (El editor de Unixclaacutesico el vi se trata en el Apeacutendice A)

Para aprender emacs tiene que encontrar un archivo de texto (letras nuacutemeros etc)coacutepielo a su directorio de usuario 1 (no queremos modificar el archivo original si eacutestecontiene informacioacuten importante) y luego llame a Emacs con el archivo

homelarry$ emacs LEAME

(Por supuesto si decide copiar etcrc etcinittab o cualquier otro archivosustituya ese nombre de archivo por LEAME Por ejemplo si cp etcrc ~rc entoncesemacs rc)

Llamar a Emacs puede tener efectos diferentes dependiendo en doacutende lo haga Desde unaconsola que muestra soacutelo caracteres de texto Emacs se apoderaraacute de toda la consola Si lollama desde X Emacs abriraacute su propia ventana Asumireacute que lo estaacute haciendo desde unaconsola de texto pero todo sucede de la misma manera en la versioacuten de X loacutegicamentesimplemente sustituya la palabra ventana en los lugares en donde lea pantallaiexclAdemaacutes recuerde que debe mover el puntero del ratoacuten a la ventana de Emacs paraescribir

Su pantalla (o ventana si estaacute usando X) deberiacutea parecerse a la Figura 81 La mayorparte de la pantalla contiene su documento de texto pero las dos uacuteltimas liacuteneas sonespecialmente interesantes si estaacute tratando de aprender Emacs La penuacuteltima liacutenea (la quetiene una cadena larga de guiones) se denomina liacutenea de modo (mode line en ingleacutes)

_____________________________________________

1 Por ejemplo cp usrsrclinuxLEAME LEAME

En mi liacutenea de modo ve Top Deberiacutea decir All y puede haber otras pequentildeasdiferencias

(A muchas personas les aparece la hora actual en la liacutenea de modo) La liacuteneainmediatamente inferior a la liacutenea de modo se denomina minibuffer o a veces el aacuterea deeco Emacs usa el minibuffer para enviar mensajes al usuario y ocasionalmente cuando esnecesario para leer informacioacuten que introduce el usuario De hecho ahora mismo Emacs leestaacute diciendo Para obtener informacioacuten acerca del Proyecto GNU y sus objetivos teclee

Cshyh Cshyp (soacutelo que en ingleacutes) Ignoacuterelo por ahora no vamos a usar mucho el minibufferpor un tiempo

Antes de realizar cualquier cambio en el texto del archivo necesita aprender coacutemomoverse El cursor deberaacute estar al principio del archivo en la esquina superiorizquierda de la pantalla

Para avanzar presione |_Cshyf_| (reteniendo la tecla |_Control_| mientras presiona fpara forward (avanzar) Avanzaraacute un caraacutecter cada vez y si retiene ambas teclas larepeticioacuten automaacutetica de teclas de su sistema deberaacute surtir efecto en medio segundoaproximadamente Notaraacute como cuando llega al fin de la liacutenea el cursor automaacuteticamentese mueve a la proacutexima liacutenea |_Cshyb_| (para backward (retroceder) tiene elcomportamiento opuesto Y ya que estamos en ello |_Cshyn_| y ||_Cshyp_|| le llevan a lasliacuteneas siguiente y anterior respectivamente 2

Usar las teclas de control es comuacutenmente la manera maacutes raacutepida de moverse cuando estaacuteeditando

El objetivo de Emacs es mantener sus manos sobre las teclas alfashynumeacutericas del tecladodonde se realiza la mayoriacutea del trabajo Sin embargo si quiere las teclas de movimientodeberaacuten funcionar tambieacuten

De hecho cuando usa X deberiacutea ser capaz de ubicar el puntero del ratoacuten y hacer clickcon el botoacuten izquierdo para mover el cursor donde quiera Sin embargo esto es muy lentoiexcltiene que mover la mano hasta el ratoacuten La mayoriacutea de la gente que usa Emacs usaprincipalmente el teclado para moverse por el texto

_____________________________________________

2 En caso de que auacuten no lo haya notado muchos de los comandos de movimiento de emacsconsisten en combinar |_Control_| con una uacutenica letra mnemoteacutecnica

Use ||_Cshyp_|| y |_Cshyb_| para ir a la esquina superior izquierda Ahora mantenga |_Cshyb_|un poco maacutes

Deberiacutea oiacuter un sonido molesto de campana y ver el mensaje Beginning of buffer(Principio del buffer) que aparece en el minibuffer En este punto se puede preguntariquestPero queacute es un buffer Cuando Emacs trabaja sobre un archivo no trabaja realmentesobre el archivo en siacute En vez de eso copia los contenidos del archivo en un aacuterea detrabajo especial de Emacs llamada buffer donde puede modificar el contenido Cuando haacabado de trabajar debe decirle a Emacs que guarde los buffers en otras palabras queescriba el contenido de los buffers en el archivo correspondiente

Hasta que haga esto el archivo permanece sin cambiar y el contenido de los buffersexiste uacutenicamente dentro de Emacs

Con esto en mente prepaacuterese a insertar su primer caraacutecter en el buffer Hasta ahoratodo lo que hemos hecho ha sido no destructivo este es un gran momento Puede escogercualquier caraacutecter que quiera pero si quiere hacer esto con estilo yo sugiero usar unabonita y soacutelida X mayuacutescula

Mientras lo teclea eche un vistazo al principio de la liacutenea de modo al pie de lapantalla Cuando cambia los buffer de modo que sus contenidos no sean iguales que los delarchivo sobre el disco Emacs muestra dos asteriscos a principios de la liacutenea de modopara hacerle saber que el buffer ha sido modificado

shyshyshy Emacs algun_archivotxt (Fundamental)shyshyTopshyshyshyshyshyshyshyshyshyshyshyshyshyshyshyshyshyshyshyshyshyshyshyshy

Estos dos asteriscos se muestran tan pronto como modifica el buffer y permanecenvisibles hasta que guarde el buffer Puede guardar los buffer muchas veces durante unasesioacuten de edicioacuten el comando para hacerlo es simplemente |_Cshyx_Cshys_| (presione|_Control_| y pulse x y s mientras la mantiene apretada iexclprobablemente ya se loimaginoacute) Es deliberadamente faacutecil de escribir porque lo mejor es salvar sus buffers alprincipio y frecuentemente

Ahora voy a enumerar maacutes comandos ademaacutes de los que ya ha aprendido y los puedepracticar del modo que prefiera Yo sugiero familiarizarse con ellos antes de proseguir

Cshyf Avanza un caraacutecter

Cshyb Retrocede un caraacutecter

Cshyn Va a la proacutexima liacutenea

Cshyp Va a la liacutenea anterior

Cshya Va al comienzo de la liacutenea

Cshye Va al final de la liacutenea

Cshyv Va a la proacutexima paacuteginapantalla de texto

Cshyl Redibuja la pantalla con la liacutenea actual en el centro

Cshyd Borra este caraacutecter (practica este)

Cshyk Borra el texto desde aquiacute hasta el fin de liacutenea

Cshyx Cshys Salva el buffer en su archivo correspondiente

|_Retroceso_| Borra el caraacutecter anterior (el uacuteltimo que escribiste)

82 Comenzar raacutepidamente en X

Si estaacute interesado en editar unos archivos raacutepidamente un usuario de X no tiene que irmucho maacutes allaacute de los menuacutes en la parte superior de la pantalla Estos menuacutes no estaacutendisponibles en el modo texto

Cuando ejecute por primera vez Emacs habraacute cuatro menuacutes en la parte superior de lapantalla Buffers File Edit y Help Para usar un menuacute simplemente mueva el punterodel ratoacuten sobre el nombre (como File haga click y retenga el botoacuten izquierdo) Entoncesmueva el puntero a la accioacuten que quiere y libere el botoacuten del ratoacuten Si cambia de idearetire el puntero del ratoacuten del menuacute y libere el botoacuten

El menuacute Buffers enumera los diferentes archivos que han sido editados en esta instanciade Emacs

El menuacute Files muestra un grupo de comandos para cargar y guardar archivos muchos deellos se describiraacuten maacutes adelante El menuacute Edit muestra algunos comandos para editar unbuffer y el menuacute Help deberiacutea dar la documentacioacuten en liacutenea

Notaraacute que las equivalencias del teclado se enumeran junto a las opciones del menuacutePuesto que a largo plazo eacutestas seraacuten maacutes raacutepidas podriacutea quererlas aprender Tambieacutenpara bien o para mal la mayoriacutea de la funcionalidad de Emacs estaacute uacutenicamente disponiblemediante el teclado asiacute que puede que le interese leer el resto de este capiacutetulo

83 Editando varios archivos al mismo tiempo

Emacs puede trabajar sobre maacutes de un de archivo a la vez De hecho el uacutenico liacutemite sobrecuantos buffers puede contener Emacs es la cantidad real de memoria disponible en lamaacutequina El comando para traer un nuevo archivo a un buffer de Emacs es |_Cshyx_Cshyf_|Cuando lo teclee se le pediraacute un nombre de archivo en el minibuffer

Find file (Buscar archivo)~

La sintaxis aquiacute es la misma que la usada para especificar archivos desde la liacutenea decomandos las barras representan subdirectorios ~ es su directorio de usuario Tambieacutenconsigue terminacioacuten automaacutetica de nombre de archivo significa que si ha escritosuficiente de un nombre de archivo en la liacutenea de comandos para identificar el archivosingularmente puede simplemente presionar |_Tab_| para completarlo (o para ver lasterminaciones posibles si hay maacutes de una) ||_Espacio_|| tambieacuten tiene un papel en laterminacioacuten automaacutetica de nombres de ficheros en el minibuffer parecido a |_Tab_| perodejareacute que experimente para que averiguumle coacutemo difieren las dos Una vez que tiene elnombre completo en el minibuffer presione |_Intro_| y Emacs crearaacute un buffer mostrandoel archivo En Emacs este proceso es conocido como encontrar un archivo Siga adelante ybusque ahora alguacuten otro archivo de texto sin importancia y traacuteigalo a Emacs (haga estodesde nuestro buffer original algun_archivotxt) Ahora tiene un nuevo buffer Supondreacuteque se llama otro_archivotxt ya que no puedo ver su liacutenea de modo

Su buffer original parece haber desaparecido (probablemente) se pregunta doacutende fue Estaacutetodaviacutea dentro de Emacs y puede volver a eacutel con |_Cshyx_b_| Cuando teclee esto veraacute queen el minibuffer le pide el nombre un buffer al que cambiar y nombra uno por defecto Elbuffer por defecto lo consigue soacutelo con presionar |_Intro_| en la liacutenea de comandos sinescribir un nombre de buffer El buffer por defecto al que cambiar es siempre el maacutesrecientemente usado para que cuando esteacute haciendo mucho trabajo entre dos buffers |_Cshyx_b_| tenga por defecto el otro buffer (salvaacutendole de tener que escribir el nombre delbuffer) Incluso si el buffer por defecto es el que quiere deberiacutea probar a teclear sunombre de todos modos

Note que consigue el mismo tipo de terminacioacuten automaacutetica que obtuvo al buscar unarchivo al pulsar |_Tab_| completa todo lo que puede del nombre de un buffer y asiacutesucesivamente Cada vez que se le pida algo en el minibuffer es una buena idea ver siEmacs hace terminacioacuten automaacutetica

Aprovechando la terminacioacuten automaacutetica cuando se le ofrezca ahorraraacute teclear muchoEmacs comuacutenmente hace la terminacioacuten automaacutetica cuando elige un elemento de alguna listapredefinida

Todo lo que ha aprendido para moverse y editar texto en el primer buffer se aplica a losnuevos Siga adelante y cambie alguacuten texto en el nuevo buffer pero no lo guarde (esdecir no teclee |_Cshyx_Cshys_|)

Deacutejeme asumir que quiere desechar los cambios sin guardarlos en el archivo El comandopara esto es Cshyx k que mata (kill) el buffer Tecleacuteelo ahora Primero se le preguntaraacutequeacute buffer matar pero por defecto es el buffer actual y casi siempre es el que sequiere matar simplemente presione |_Intro_| Entonces le preguntaraacute si realmente quierematar el buffer Emacs siempre controla antes de matar un buffer que tiene cambios sinsalvar Simplemente escriba yes (siacute) y presione |_Intro_| si quiere matarlo

Siga adelante y practique cargar archivos modificarlos guardarlos y matar sus buffersPor supuesto cercioacuterese de no modificar ninguacuten archivo de sistema importante de unaforma que cause problemas 3 pero trate de tener por lo menos cinco buffers abiertos almismo tiempo para que se pueda dar el gusto de moverse entre ellos

84 Terminando una sesioacuten de edicioacuten

Cuando haya hecho su trabajo en Emacs aseguacuterese de que se guarden todos los buffers quedeben guardarse y salga de Emacs con |_Cshyx_Cshyc_|

A veces |_Cshyx_Cshyc_| le haraacute una pregunta o dos en el minibuffer antes de dejarle salirno se alarme simplemente conteste en las maneras obvias Si piensa que podriacutea volver aEmacs luego no use |_Cshyx_Cshyc_| use |_Cshyz_| que suspenderaacute Emacs Puede volver luegocon el comando fg del shell

Esto es maacutes eficiente que detener a Emacs y comenzar varias veces especialmente si tieneque editar los mismos archivos nuevamente

Bajo X presionar |_Cshyz_| reduciraacute a icono la ventana Mire la seccioacuten sobre minimizar enel Capitulo 5 Esto le da dos formas de minimizar Emacs la manera normal que ofrece elgestor de ventanas y |_Cshyz_| Recuerde cuando minimice un simple fg no traeraacute laventana anterior tendraacute que usar el gestor de ventanas

_____________________________________________

3 De cualquier manera si no es el usuario root de la maacutequina no deberiacutea ser capaz dedantildear el sistema pero tenga cuidado igualmente

85 La tecla Meta

Ha aprendido ya sobre una tecla modificadora en Emacs la tecla |_Control_| Hay unasegunda llamada la tecla Meta que se usa casi tan frecuentemente Sin embargo no todoslos teclados tienen su tecla Meta en el mismo lugar y algunos ni siquiera la tienen Loprimero que necesita hacer es encontrar doacutende se encuentra su tecla Meta Es probable quelas teclas |_Alt_| de su teclado sean tambieacuten teclas Meta si usa un PC IBM o alguacuten otroteclado que tenga una tecla |_Alt_|

La forma de probar esto es mantener presionada una tecla que crea que puede ser una teclaMeta y teclear x Si ve que un pequentildeo prompt aparece en el minibuffer (como esto |_Mshyx_|) entonces la ha encontrado Para librarse del prompt y regresar al buffer de Emacsteclee ||_Cshyg_||

Si no consigue un prompt entonces todaviacutea queda una solucioacuten Puede usar la tecla||_Escape_|| como una tecla Meta Pero en vez de mantenerla pulsada mientras teclea laproacutexima letra tiene que pulsarla y soltarla raacutepidamente y entonces teclee la letraEste meacutetodo funcionaraacute tenga o no una tecla Meta verdadera tambieacuten es la manera maacutessegura para hacerlo Intente ahora pulsar ligeramente ||_Escape_|| y entonces teclee xDeberiacutea conseguir otra vez ese pequentildeo prompt

Simplemente use ||_Cshyg_|| para salir ||_Cshyg_|| es la manera general en Emacs para salirde alguacuten lugar donde no quiere estar Los fastidiosos y comunes pitidos son para hacerlesaber que ha interrumpido algo pero estaacute bien porque es lo que queriacutea hacer cuandotecleoacute ||_Cshyg_||4

La notacioacuten |_Mshyx_| es anaacuteloga a |_Cshyx_| (ponga cualquier caraacutecter en el lugar de lax) Si ha encontrado una verdadera tecla Meta use eacutesta de otra manera simplemente usela tecla ||_Escape_|| Yo escribireacute simplemente |_Mshyx_| y ud tendraacute que usar su propiatecla Meta

86 Cortar pegar destruir y tirar

Emacs como cualquier buen editor le permite cortar y pegar bloques de texto A fin dehacer esto necesita una forma de definir el comienzo y fin del bloque En Emacs se haceesto estableciendo dos ubicaciones en el buffer conocidas como marca y puntero Paracolocar la marca vaya al lugar donde quiere que comience el bloque y teclee |_CshySPC_|(SPC significa ||_Espacio_|| por supuesto)

Deberiacutea ver el mensaje Mark set (Marca establecida) que aparece en el minibuffer5Ahora la marca ha sido establecida en ese lugar No habraacute ninguacuten indicador especialdestacando este hecho pero Ud sabe doacutende la ha puesto y eso es lo que importa

iquestY queacute hay del puntero Bien resulta que ha colocado un puntero cada vez que ha movidoel cursor porque puntero simplemente se refiere a su ubicacioacuten actual en el buffer Enteacuterminos formales el puntero es el punto donde se insertaraacute el texto si escribe algo Alcolocar la marca y luego moverse al final del bloque ha definido un bloque de textoEste bloque es conocido como la regioacuten La regioacuten siempre significa el aacuterea entre lamarca y el puntero

El soacutelo hecho de definir la regioacuten no la deja disponible para pegar Tiene que decirle aEmacs que lo copie para poder ser capaz de pegarlo Para copiar la regioacuten aseguacuterese deque la marca y el puntero estaacuten correctamente establecidos y teclee |_Mshyw_| Ahora hasido grabada por Emacs Para pegarlo en alguna otra parte simplemente vaya alliacute y teclee||Cshyy_|| Esto es conocido como tirar el texto en el buffer

______________________________________________

4 Ocasionalmente un Cshyg no es suficiente para persuadir a emacs que realmente quiereinterrumpir lo que hace Simplemente insista y normalmente Emacs volveraacute a un modo maacutescuerdo

5 Sobre algunos terminales |_CshySPC_| no funciona Para estas maacutequinas debe usar |_Cshy_|

Si quiere mover el texto de la regioacuten a alguna otra parte teclee |_Cshyw_| en vez de |_Mshyw_| Esto mataraacute la regioacuten todo el texto dentro de ella desapareceraacute De hecho se haguardado del mismo modo que si hubiera usado |_Mshyw_| Puede tirar de nuevo con ||_Cshyy_||como siempre El lugar donde emacs guarda todo este texto es conocido como el ciacuterculo demuerte Algunos editores lo llaman el porta papeles o el buffer de pegado

Existe otra manera para cortar y pegar cuando usa |_Cshyk_| para matar hasta el final deuna liacutenea el texto matado se guarda en el ciacuterculo de muerte Si mata maacutes de una liacuteneaseguida se guardaraacuten todas juntas en el ciacuterculo de muerte para que la proacutexima tiradapegue todas las liacuteneas al mismo tiempo Por ello casi siempre es maacutes raacutepido usarrepetidas veces |_Cshyk_| para matar alguacuten texto que establecer la marca y el puntero yusar |_Cshyw_| Sin embargo de una u otra manera funcionaraacute Es realmente una cuestioacuten depreferencia personal coacutemo lo hace

87 Buscar y reemplazar

Hay varias maneras para buscar texto en Emacs Muchas son maacutes bien complejas y no merecela pena tratarlas aquiacute La maacutes faacutecil y la maacutes entretenida es usar isearch

Isearch se refiere a incremental search (buacutesqueda incremental) Supongamos que quierebuscar la cadena taacutebano en el siguiente buffer

Yo estaba temeroso que nos quedaacuteramos sin gasolina cuando mi taacutecito pasajero

exclamoacute ``Auch un aguijoacuten Hay un taacutebano aquiacute dentro

Deberiacutea moverse al comienzo del buffer o por lo menos a alguacuten punto que sabe que estaacuteantes de la primera aparicioacuten de la palabra taacutebano y teclear |_Cshys_| Eso le pondraacuteen el modo de buacutesqueda isearch Ahora comience a escribir la palabra que estaacute buscandotaacutebano Pero tan pronto como escribe la t ve que Emacs ha saltado a la primeraaparicioacuten de t en el buffer Si la cita de arriba es todo el contenido del buffer

entonces la primera t es de la palabra temeroso Ahora escriba la aacute de taacutebano yEmacs saltaraacute sobre taacutecito que contiene la primer ocurrencia de taacute Y finalmenteb consigue taacutebano sin haber tenido que escribir la palabra entera

Lo que hace en una isearch es definir una cadena para buscarla Cada vez que agrega uncaraacutecter al final de la cadena el nuacutemero de posibles cadenas se reduce hasta que hayaescrito lo suficiente para definir la cadena singularmente Una vez que ha encontrado lapalabra puede salir de la buacutesqueda con |_Intro_| o cualquiera de los comandos normalesde movimiento Si piensa que la cadena que buscas esta atraacutes en el buffer entoncesdeberiacutea usar |_Cshyr_| que hace isearch hacia atraacutes

Si encuentra una palabra pero no es la que buscaba entonces presione |_Cshys_| nuevamentemientras todaviacutea esteacute en la buacutesqueda Esto le moveraacute hasta la proacutexima palabracoincidente cada vez que lo haga Si no existe una proacutexima palabra diraacute que la buacutesquedafracasoacute pero si presiona |_Cshys_| nuevamente en este punto la buacutesqueda volveraacute acomenzar desde el principio del buffer Se puede decir lo opuesto de |_Cshyr_| comienza alfinal del buffer

Intente introducir un buffer de texto en ingleacutes y haga un isearch para la cadena thePrimero teclee todos los the que quiera y luego use |_Cshys_| para ir a todas lasapariciones Note que tambieacuten apareceraacuten palabras como them dado que tambieacuten contienela subcadena the Para buscar un uacutenico the deberaacute agregar un espacio al final de lacadena de buacutesqueda Puede agregar nuevos caracteres a la cadena en cualquier punto de labuacutesqueda despueacutes tiene que presionar |_Cshys_| repetidamente para encontrar las proacuteximaspalabras coincidentes Puede usar tambieacuten la |_Retroceso_| o ||_Supr_|| para quitarcaracteres de la cadena en cualquier punto de la buacutesqueda y presionando |_Intro_| salede la buacutesqueda dejaacutendole en la uacuteltima coincidencia

Emacs tambieacuten permite reemplazar todas las apariciones de una cadena con alguna nuevacadena esto es conocido como queryshyreplace (preguntarshyreemplazar) Para invocarloteclee queryshyreplace y |_Intro_|

Como se hace terminacioacuten automaacutetica sobre el nombre del comando una vez que has escritoqueryshyre puede simplemente presionar |_Tab_| para terminarlo Digamos que deseareemplazar todas las ocurrencias de taacutebano por mosca En el prompt Query replace (preguntarshyreemplazar) escriba taacutebano y presione |_Intro_| Entonces apareceraacute elprompt nuevamente y deberaacute introducir mosca Entonces Emacs recorreraacute el bufferparando a cada aparicioacuten de la palabra taacutebano y preguntando si quiere reemplazarlaSimplemente presione en cada instancia y o n por Yes o No hasta que termineSi no entiende esto mientras lo lee prueacutebelo

88 iquestQueacute es lo que ocurre realmente

Realmente todas estas teclas ligadas que ha aprendido son los atajos a funciones deEmacs Por ejemplo ||_Cshyp_|| es una manera abreviada de decirle a Emacs que ejecute lafuncioacuten interna previousshyline (liacutenea_previa) Sin embargo todas estas funciones internaspueden ser llamadas por el nombre usando |_Mshyx_| Si olvida que previousshyline estaacuteligado a ||Cshyp_|| puede escribir simplemente |_Mshyx_| previousshyline |_Intro_| y semoveraacute una liacutenea hacia arriba Pruebe esto ahora para que comprenda como |_Mshyx_|previousshyline y ||_Cshyp_ || son realmente la misma cosa

El disentildeador de Emacs comenzoacute desde la base hacia arriba primero definioacute un lotecompleto de funciones internas y entonces les asocioacute o ligoacute ciertas teclas a las maacutescomuacutenmente usadas A veces es maacutes faacutecil llamar a una funcioacuten expliacutecitamente con |_Mshyx_|que recordar a queacute tecla estaacute ligada

La funcioacuten queryshyreplace por ejemplo estaacute ligada a ||_Mshy_|| en algunas versiones deEmacs Pero iquestquieacuten puede recordar tan rara combinacioacuten A menos que use queryshyreplace muyfrecuentemente es maacutes faacutecil simplemente llamarla con |_Mshyx_|

La mayoriacutea de las teclas que pulsa son letras cuya funcioacuten es ser insertadas en el textodel buffer Cada una de esas teclas estaacute ligada a la funcioacuten selfshyinsertshycommand que no

hace nada maacutes que insertar la letra en el buffer Las combinaciones que usan la tecla|_Control_| con una letra generalmente estaacuten ligadas a funciones que hacen otras cosascomo mover el cursor Por ejemplo |_Cshyv_| estaacute ligada a una funcioacuten llamada scrollshyup(avanzar paacutegina) que mueve el buffer una pantalla hacia arriba (lo que quiere decir quesu posicioacuten en el buffer se mueve hacia abajo por supuesto)

Si alguna vez quisiera realmente insertar un caraacutecter de Control en el buffer entoncesiquestcoacutemo lo hariacutea Despueacutes de todo los caracteres de Control son caracteres ASCII aunquerara vez usados y puede querer tenerlos en un archivo Hay una manera para_impedir_quelos caracteres de Control sean interpretados como comandos por Emacs La tecla ||_Cshyq_||6estaacute ligada a una funcioacuten especial llamada quotedshyinsert (insertar lo citado) Todo loque quotedshyinsert hace es leer la proacutexima tecla e insertarla literalmente en el buffersin tratar de interpretarla como un comando Asiacute es coacutemo puede poner los caracteres deControl en sus archivos usando Emacs iexclNaturalmente la manera de insertar un Cshyq espresionar ||Cshyq_|| dos veces

Emacs tambieacuten tiene muchas funciones que no estaacuten ligadas a ninguna tecla Por ejemplosi escribe un mensaje largo y no quiere tener que presionar |_Intro_| al final de cadaliacutenea Puede hacer que emacs lo haga por Ud (de hecho puede hacer que Emacs hagacualquier cosa por Ud) el comando para hacerlo se llama autoshyfillshymode (modo de autollenado pero no estaacute ligado a ninguna tecla por defecto A fin de invocar este comandodebe escribir Mshyx autoshyfillshymode

Mshyx es la tecla usada para llamar a funciones por el nombre Podriacutea usarlo para llamara funciones como nextshyline y previousshyline pero eso seriacutea muy ineficaz ya que esasfunciones estaacuten ligadas a |_Cshyn_| y ||_Cshyp_||

A propoacutesito si mira su liacutenea de modo despueacutes de invocar autoshyfillshymode notaraacute que lapalabra Fill se ha agregado al lado derecho Mientras esteacute alliacute Emacs llenaraacute(rellenaraacute) el texto automaacuteticamente Puede desactivarlo escribiendo Mshyx autoshyfillshymodenuevamente es un comando de palanca

La incomodidad de escribir largos nombres de funcioacuten en el minibuffer disminuye porqueEmacs hace terminacioacuten automaacutetica en los nombres de funciones de la misma manera que lohace en los nombres de archivo Por lo tanto rara vez deberiacutea encontrarse escribiendo elnombre entero de la funcioacuten letra a letra Si no estaacute totalmente seguro de si puede o nousar la terminacioacuten automaacutetica simplemente presione |_Tab_| No puede hacer dantildeo lopeor que puede suceder es que consiga un caraacutecter Tab y si es afortunado resultaraacute quepuede usar la terminacioacuten automaacutetica

89 Pidiendo ayuda a Emacs

Emacs tiene extensas facilidades de ayuda tan extensas de hecho que soacutelo podemoscomentarlas un poco aquiacute A las facilidades de ayuda maacutes baacutesicas se accede tecleando |_Cshyh_| y luego una uacutenica letra Por ejemplo |_Cshyh_k_| muestra la ayuda sobre una tecla (lepide que presiones una tecla y entonces le dice lo que esa tecla hace) |_Cshyh_t_| abreun breve manual sobre Emacs Maacutes importante auacuten |_Cshyh_Cshyh_Cshyh_| le da ayuda sobre laayuda para decirle que estaacute disponible una vez que ha tecleado |_Cshyh_| por primera vezSi sabe el nombre de una funcioacuten de Emacs (saveshybuffer (grabar el buffer) por ejemplo)pero no puede recordar cuaacutel es la combinacioacuten de teclas a la que estaacute ligada use |_Cshyh_w_| para whereshyis (doacutende estaacute) y escriba el nombre de la funcioacuten O si quiereconocer queacute hace una funcioacuten con detalle use |_Cshyh_f_| que preguntaraacute por un nombre defuncioacuten

______________________________________________

6 Llamamos a Cshyq una tecla aunque se produce manteniendo presionada la tecla Controlypresionando q porque es un uacutenico caraacutecter ASCII

Recuerde que como Emacs hace terminacioacuten automaacutetica del nombre de la funcioacuten realmenteno tiene que estar seguro de coacutemo se llama para pedir ayuda sobre ella Si piensa quepuedes adivinar la palabra con la que podriacutea comenzar teclee eacutesa y presione |_Tab_ |paraver si se completa Si no vuelva atraacutes e intente otra cosa Lo mismo ocurre con losnombres de archivo auacuten cuando no pueda recordar del todo como nombroacute cierto archivo alque no ha accedido en tres meses puede probar y usar la terminacioacuten automaacutetica paraaveriguar si estaacute en lo cierto Usa la terminacioacuten automaacutetica como una forma depreguntar y no soacutelo como una manera de teclear menos

Hay otros caracteres que puede pulsar despueacutes de |_Cshyh_| y con cada uno consigue ayudade una manera diferente Los que usaraacute maacutes frecuentemente son |_Cshyh_k_| |_Cshyh_w_| y|_Cshyh_f_| Una vez que esteacute maacutes familiarizado con Emacs otra para probar es |_Cshyh_a_|que le pregunta por una cadena y le comenta todas las funciones que tienen esa cadenacomo parte de su nombre (la a seriacutea para apropos [a propoacutesito] o about[acerca])

Otra fuente de informacioacuten es el lector de documentacioacuten Info Info es demasiado complejopara tratarlo aquiacute pero si estaacute interesado en explorarlo por si mismo teclee |_Cshyh_i_|y lea el paacuterrafo en la parte superior de la pantalla Le diraacute coacutemo conseguir maacutes ayuda

810 Especializando buffers Modos

Los buffers de Emacs tienen modos asociados7 La razoacuten para esto es que sus necesidadescuando escribe un mensaje de correo son muy diferentes de sus necesidades cuando porejemplo escribe un programa Mejor que tratar de crear un editor que satisfaga cadanecesidad particular en todo momento (que seriacutea imposible) el disentildeador de Emacs8 eligioacutehacer que Emacs se comporte de manera diferente dependiendo de queacute hace Ud en cadabuffer individual Asiacute los buffers tienen modos cada uno disentildeado para alguna actividadespeciacutefica Los aspectos principales que distinguen un modo de otros son lascombinaciones de teclas pero tambieacuten pueden existir otras diferencias

El modo maacutes baacutesico es el modo Fundamental que realmente no tiene ninguacuten comandoespecial

De hecho esto es todo lo que Emacs dice sobre el Modo Fundamental

Modo Fundamental

Modo mayor no especializado para nada en particular Los otros modos mayoresson definidos por comparacioacuten con este

Obtuve asiacute esa informacioacuten Teclee |_Cshyx_b_| que es switchshytoshybuffer (cambiar albuffer) e introduje foo cuando se me preguntoacute por un nombre de buffer al que cambiarComo no habiacutea anteriormente ninguacuten buffer llamado foo Emacs creoacute uno y me cambio a eacutelEstaba en el modo fundamental por defecto pero si no lo hubiese estado podriacutea habertecleado Mshyx fundamentalshymode para que estuviese Todos los nombres de modo tienen uncomando llamado ltnombreshydeshymodogtshymode que pone el buffer actual en ese modo Entoncespara averiguar maacutes sobre este modo mayor tecleeacute |_Cshyh_m_| que consigue ayuda sobre elmodo mayor actual del buffer en que estaacute

_____________________________________________

7 para colmo de males hay Modos Mayores y Modos Menores pero en este momento nonecesita conocer nada acerca de esto

8 Richard Stallman a veces tambieacuten conocido como rms porque es su login

Hay un modo ligeramente maacutes uacutetil llamado textshymode (modo texto que tiene los comandosespeciales |_MshyS_| para centrar paacuterrafo y |_Mshys_| que invoca centrar liacutenea |_MshyS_| apropoacutesito significa exactamente lo que piensa mantenga pulsadas la |_Meta__|y la tecla|_Shift_| y presiona S

Pero no me tome la palabra en esto cree un nuevo buffer poacutengalo en modo texto y teclee|_Cshyh_m_| Puede que no entienda todo lo que Emacs le diga cuando lo haga pero deberiacuteaser capaz de conseguir sacar alguna informacioacuten uacutetil de ello

Esto es una introduccioacuten a algunos de los modos maacutes comuacutenmente usados Si los usaaseguacuterese de que teclea en cada uno |_Cshyh_m_| alguna vez para averiguar maacutes sobre cadamodo

811 Modos de programacioacuten

8111 Modo C

Si usa Emacs para programar en el lenguaje C puede conseguir que eacutel le haga toda laindentacioacuten automaacuteticamente Los archivos cuyos nombres terminan en c o h se abriraacutenautomaacuteticamente en el modo C Esto significa que ciertos comandos especiales de edicioacutenuacutetiles para escribir programas en C estaacuten disponibles En el modo C |_Tab_| estaacute ligadoa cshyindentshycommand (indentar comandos C) Esto significa que presionando la tecla |_Tab_|no inserta realmente un caraacutecter de Tabulacioacuten En cambio si presiona |_Tab_| encualquier parte de una liacutenea Emacs automaacuteticamente indenta esta liacutenea correctamente parasu ubicacioacuten en el programa Esto implica que Emacs sabe algo sobre la sintaxis de C(aunque nada sobre semaacutentica (iexclno puede asegurar que su programa no tenga errores)

Para hacer esto asuma que las liacuteneas anteriores estaacuten indentadas correctamente Estosignifica que si en la liacutenea anterior falta un pareacutentesis un punto y coma llaves ocualquier otra cosa Emacs indentaraacute la liacutenea actual de una manera peculiar inesperadaCuando vea que hace esto sabraacute que debe buscar un error de puntuacioacuten en la liacuteneaanterior

Puede usar esta caracteriacutestica para verificar que ha puntuado correctamente susprogramas

en vez de leer el programa entero_buscado_problemas simplemente comience a indentar lasliacuteneas desde arriba hasta abajo con |_Tab_| y cuando alguna se indenta de forma raraverifique las liacuteneas inmediatamente anteriores En otras palabras iexcldeje a Emacs hacer eltrabajo por Ud

8112 Modo Scheme

Este es un modo mayor que no le serviraacute de nada a menos que tenga un compilador o uninterprete para el lenguaje de programacioacuten Scheme en su sistema Tener uno no es tannormal como digamos un compilador de C pero se estaacute haciendo cada vez maacutes comuacuten asiacuteque lo trataremos tambieacuten

Mucho de lo que es cierto para el modo Scheme es tambieacuten cierto para el modo Lisp siprefiere escribir en Lisp

Bien para complicar las cosas Emacs viene con dos modos Scheme diferentes porque lagente no podiacutea decidir coacutemo queriacutean que funcionara El que estoy describiendo se llamacmuscheme y luego en la seccioacuten personalizando a Emacs hablareacute de coacutemo puede haber dosmodos Scheme diferentes y queacute hacer acerca de ello Por ahora no se preocupe si lascosas en su Emacs no coinciden con las que yo digo aquiacute Un editor personalizablesignifica un editor impredecible iexcly no hay vuelta de hoja

Puede ejecutar un proceso Scheme interactivo en Emacs con el comando Mshyx runshyscheme Estocrea un buffer llamado scheme que tiene el prompt habitual de Scheme Puede teclearexpresiones de Scheme en el prompt presionar |_Intro_| y Scheme las evaluaraacute y mostraraacutela respuesta Asiacute a fin de interactuar con el proceso de Scheme podraacute simplementeescribir todas sus aplicaciones y definiciones de funcioacuten en el prompt Es posible quehaya escrito previamente coacutedigo fuente Scheme en un alguacuten archivo y seriacutea maacutes faacutecilhacer su trabajo en el archivo y enviar las definiciones al buffer de proceso Schemeseguacuten sea necesario

Si el archivo fuente termina en ss o scm automaacuteticamente se abriraacute en el modo Schemecuando lo encuentre con |_Cshyx_Cshyf_| Si por alguna razoacuten no surge en el modo Schemepuede hacerlo a mano con Mshyx schemeshymode Este modo scheme no es lo mismo que el bufferque ejecuta el proceso Scheme maacutes bien el que el buffer de coacutedigo fuente esteacute en modoscheme significa que tiene comandos especiales para comunicar con el buffer de proceso

Si estaacute dentro de la definicioacuten de una funcioacuten en el buffer de coacutedigo fuente Scheme yteclea |_Cshyc_Cshye_| entonces esa definicioacuten seraacute enviada al buffer de procesoexactamente como si lo hubiera tecleado Ud mismo |_Cshyc_Mshye_| enviacutea la definicioacuten yentonces le lleva al buffer de proceso para hacer algo de trabajo interactivo |_Cshyc_Cshyl_| carga un archivo de coacutedigo Scheme (eacuteste funciona desde el buffer de proceso o elbuffer de coacutedigo fuente) Y como otros modos de lenguajes de programacioacuten al presionar|_Tab_| en cualquier lugar de una liacutenea de coacutedigo se indentaraacute correctamente esa liacutenea

Si estaacute en el prompt del buffer de proceso puede usar ||_Mshyp_|| y |_Mshyn_| para moverseentre sus comandos anteriores (tambieacuten conocido como la historia de entrada) Asiacute que siestaacute depurando la funcioacuten rotar y ya lo ha aplicado a los argumentos en el buffer deproceso como

gt(rotar (a b c d e))

entonces puede recuperar ese comando anterior tecleando ||_Mshyp_||en el prompt Aquiacute nodeberiacutea ser necesario volver a escribir expresiones largas en el prompt de Schemehabituacuteese a usar la historia de entrada y ahorraraacute mucho tiempo

Emacs conoce bastantes lenguajes de programacioacuten C C++ Lisp y Scheme son simplementealgunos Generalmente sabe coacutemo indentarlos de forma intuitiva

8113 Modo de correo

Tambieacuten puede editar y enviar correo en Emacs Para entrar en un buffer de correo teclee|_Cshyx_m_| Necesita llenar los campos To (A) y Subjet (Asunto) y entonces use |_Cshyn_| para ir por debajo de la liacutenea de separacioacuten al cuerpo del mensaje (que estaacute vaciacuteocuando comienza por primera vez) No cambie o borre la liacutenea de separacioacuten o sino Emacsno seraacute capaz de enviar su correo use esa liacutenea para distinguir el encabezamiento delcorreo que le dice doacutende enviar el correo de los contenidos del mensaje

Puede escribir lo que quiera por debajo de la liacutenea de separacioacuten Cuando esteacute listo paraenviar el mensaje simplemente teclee |_Cshyc_Cshyc_| y Emacs lo enviaraacute y haraacute que elbuffer de correo desaparezca

812 Como ser maacutes eficiente auacuten

Los usuarios experimentados de Emacs son fanaacuteticos de la eficiencia ltDe hechofrecuentemente acaban derrochando mucho tiempo buscando formas para ser maacutes eficientesNo quiero que le suceda esto aunque hay algunas cosas faacuteciles con las que puede llegar aser un mejor usuario de Emacs A veces los usuarios experimentados hacen que los novatos

se sientan tontos por no saber todos estos trucos por alguna razoacuten la gente llega ahacerse religiosas sobre el uso correcto de Emacs Allaacute vamos

Cuando se mueve de un lado a otro usa los medios maacutes raacutepidos disponibles Ud sabe que|_Cshyf_| es forwardshychar (un caraacutecter hacia adelante) iquestsuponiacutea que |_Mshyf_| es forwardshyword(una palabra hacia delante) |_Cshyb_| es backwardshychar (un caraacutecter hacia atraacutes) iquestSuponequeacute hace |_Mshyb_| Sin embargo esto no es todo puede avanzar una frase cada vez con |_Mshye_ | siempre que escriba sus frases de modo que haya siempre dos espacios despueacutes delpunto final (de otra manera Emacs no puede distinguir donde termina una frase y comienzala siguiente) |_Mshya_| es backwardshysentence (una frase atraacutes)

Si ve que usa repetidamente |_Cshyf_| para llegar al final de la liacutenea averguumleacutencese yaseguacuterese de usar |_Cshye_| en su lugar y |_Cshya_| para ir al principio de la liacutenea Si usamuchos |_Cshyn_| para bajar pantallas de texto averguumleacutencese mucho y usa |_Cshyv_| siempreSi usa repetidamente ||_Cshyp_|| para avanzar pantallas no se atreva a ensentildear la cara yuse |_Mshyv_| en su lugar

Si se estaacute acercando al final de una liacutenea y se da cuenta de que hay una palabra maltecleada o de que se ha olvidado alguna en alguacuten lugar anterior de la liacutenea no use la|_Retroceso_| o ||_Supr_|| para volver a ese punto Eso requeririacutea volver a escribirporciones enteras de texto perfecto En vez de eso use combinaciones de |_Mshyb_| |_Cshyb_| y |_Cshyf_| para moverse a la ubicacioacuten precisa del error arreacuteglelo y entonces use|_Cshye_| para moverse al fin de la liacutenea nuevamente

Cuando tiene que escribir un nombre de archivo nunca teclee el nombre completoSolamente escriba lo suficiente para identificarlo singularmente y deje que Emacstermine el trabajo presionando |_Tab_| o ||_Espacio_|| iquestPor queacute teclear de maacutes cuandopuede derrochar ciclos de CPU en su lugar

Si escribe alguacuten tipo de texto simple y de alguacuten modo su autoshyllenando (autoshyfilling)loha fastidiado use |_|Mshyq_|| que es rellenado de paacuterrafo en los modos de texto comunesEsto ajustaraacute el paacuterrafo en el que estaacute como si hubiese sido llenado liacutenea a liacuteneapero sin tener que liarse hacieacutendolo a mano ||_Mshyq_|| trabajaraacute desde dentro delpaacuterrafo o desde su comienzo o final

A veces es uacutetil usar |_Cshyx_u_| (undo [deshacer]) que trataraacute de deshacer el (los)uacuteltimo(s) cambio(s) que hizo Emacs decidiraacute cuanto deshacer habitualmente decide muyinteligentemente

Llamaacutendolo repetidamente desharaacute maacutes y maacutes hasta que Emacs no pueda recordar queacute cambiosse hicieron

813 Personalizando Emacs

Emacs es tan grande y tan complejo que de hecho tiene iexclsu propio lenguaje deprogramacioacuten No bromeo para personalizar Emacs ajustaacutendolo a sus necesidades tieneque escribir programas en este lenguaje Se llama Emacs Lisp y es un dialecto de Lispasiacute que si tiene experiencia previa en Lisp le pareceraacute bastante amistoso Si no no sepreocupe no voy a profundizar mucho porque definitivamente se aprende mejorpracticando Para aprender realmente a programar Emacs deberaacute consultar las paacuteginas deinformacioacuten de Emacs Lisp y leer mucho coacutedigo fuente de Emacs Lisp

La mayor parte de la funcionalidad de Emacs estaacute definida en archivos de coacutedigo de EmacsLisp9 La mayoriacutea de estos archivos se distribuyen con Emacs y colectivamente sonconocidos como la Biblioteca de Emacs Lisp La ubicacioacuten de esta biblioteca depende decoacutemo se instaloacute Emacs en su sistema son ubicaciones comunes usrlibemacslispusrlibemacs1919lisp etc

El 1919 es el nuacutemero de versioacuten de Emacs y podriacutea ser diferente en su sistema

No necesita hurgar por su sistema de archivos buscando la biblioteca de lisp porqueEmacs tiene la informacioacuten almacenada internamente en una variable llamada loadshypath(trayectoria de carga) Para averiguar el valor de esta variable es necesario evaluarlaesto es hacer que el inteacuterprete de lisp de Emacs consiga su valor Hay un modo especialpara evaluar las expresiones de Lisp en Emacs llamado modo lisp interactivo (lispshyinteractionshymode) Comuacutenmente hay un buffer llamado scratch que estaacute ya en estemodo Si no lo puede encontrar cree un nuevo buffer con cualquier nombre y escriba Mshyxlispshyinteractionshymode dentro de eacutel

Ahora tiene un espacio de trabajo para interactuar con el inteacuterprete Lisp de EmacsTeclee esto

loadshypath

y entonces presione ||_Cshyj_|| al finalizar En el modo Lisp interactivo ||_Cshyj_|| estaacuteligado a evalshyprintshylastshysexp (evaluarshyimprimirshyuacuteltimashysexp) Una sexp es una sshyexpresion lo que significa un grupo balanceado de pareacutentesis incluido el caso de queno haya ninguno Bueno esto es simplificarlo un poco pero iraacute entendiendo que son seguacutenprograme con Emacs Lisp De cualquier manera al evaluar loadshypath deberiacutea conseguir algocomo esto

loadshypath ||_Cshyj_||

(usrlibemacssiteshylispvmshy535 homekfogelelithp

usrlibemacssiteshylisp usrlibemacs1919lisp)

Por supuesto no tendraacute el mismo aspecto en cada sistema puesto que es dependiente decoacutemo se instaloacute Emacs El ejemplo de arriba viene de mi PC 386 que funciona con LinuxComo indica lo anterior loadshypath es una lista de cadenas Cada cadena nombra undirectorio que podriacutea contener archivos de Emacs Lisp Cuando Emacs necesita cargar unarchivo de coacutedigo Lisp va buscaacutendolo en cada uno de estos directorios en orden Si undirectorio se nombra pero no existe en el sistema de archivos Emacs simplemente loignora

_____________________________________________

9 A veces llamados no oficialmente Elisp

Cuando Emacs arranca automaacuteticamente trata de cargar el archivo emacs desde sudirectorio de usuario Por lo tanto si quiere hacer personalizaciones en Emacs deberaacuteponerlas en emacs La personalizacioacuten maacutes comuacuten son las teclas ligadas asiacute que aquiacuteestaacute coacutemo hacerlo

(globalshysetshykey Cshycl gotoshyline)

globalshysetshykey (fijar teclas globalmente) es una funcioacuten de dos argumentos la tecla a laque ha de ser ligada y la funcioacuten a la que ligarla La palabra global significa queesta tecla ligada tendraacute efecto en todos los modos mayores (hay otra funcioacuten localshysetshykey (fijar teclas localmente) que liga una tecla en un uacutenico buffer) Arriba he ligado|_Cshyc_l_| a la funcioacuten gotoshyline (ir a tal liacutenea)

La tecla se describe usando una cadena La sintaxis especial Cshyltcaraacutectergt significamantener pulsada la tecla |_Control_| mientras se presiona ltcaraacutectergt Asiacute mismo Mshyltcaraacutectergt indica la tecla |_Meta_|

Todo eso estaacute muy bien iquestpero coacutemo supe que el nombre de la funcioacuten era gotoshylinePuedo saber que quiero ligar |_Cshyc_l_| a alguna funcioacuten que pregunta por un nuacutemero deliacutenea y mueve el cursor a esa liacutenea pero iquestcoacutemo hice para averiguar el nombre de esafuncioacuten

Aquiacute es donde intervienen las facilidades de ayuda de Emacs Una vez que ha decidido queacutetipo de funcioacuten busca puede usar Emacs para rastrear su nombre exacto He aquiacute unamanera raacutepida y sucia para hacerlo puesto que Emacs completa los nombres de funcioacutensimplemente escriba |_Cshyh_f_| (que es describeshyfunction (describir funcioacuten) recueacuterdelo)y entonces presione |_Tab_| sin escribir nada maacutes Esto pide a Emacs que complete lacadena vaciacutea _en otras palabras iexclla terminacioacuten automaacutetica se corresponderaacute con cada unade las funciones Puede tardar un momento en construir la lista de funciones ya queEmacs tiene muchas funciones internas pero mostraraacute todo lo que entre en la pantallacuando esteacute listo

En este momento presione ||_Cshyg_|| para abandonar la funcioacuten describir funcioacuten Habraacute unbuffer llamado Completions que contiene la lista de terminaciones automaacuteticas queacaba de generar

Cambie a este buffer Ahora puede usar |_Cshys_| isearch para buscar las funcionesprobables Por ejemplo es una suposicioacuten segura que una funcioacuten que pregunta por unnuacutemero de liacutenea y entonces va a esa liacutenea contendraacute la cadena line (liacutenea) en sunombre Por lo tanto simplemente comience buscando la cadena line y acabaraacuteencontrando lo que busca

Si quiere otro meacutetodo puede usar |_Cshyh_a_| commandshyapropos para mostrar todas lasfunciones cuyos nombres se ajustan a la cadena dada La salida de commandshyapropos es unpoco maacutes difiacutecil de clasificar que simplemente buscar una lista de terminacioacutenautomaacutetica en mi opinioacuten pero puede encontrar que tiene distintas sensaciones Pruebeambos meacutetodos y a ver que opina

Siempre existe la posibilidad de que Emacs no tenga ninguna funcioacuten predefinida parahacer lo que estaacute buscando En esta situacioacuten tiene que escribir la funcioacuten Ud mismoNo voy a hablar de coacutemo hacer eso deberiacutea buscar en la biblioteca de Emacs Lisp ejemplosde definiciones de funcioacuten y leer las paginas Info sobre Emacs Lisp Si resulta queconoce a un guruacute local de Emacs preguacutentele coacutemo hacerlo Definir sus propias funcionesde Emacs no es un gran asunto para darle una idea yo he escrito 131 de ellas durantemaacutes o menos el uacuteltimo antildeo Requiere un poco de praacutectica pero la curva de aprendizaje noes empinada

Otra cosa que la gente hace a menudo en su emacs es asignar a ciertas variables losvalores preferidos Por ejemplo ponga esto en su emacs y entonces inicie un nuevoEmacs

(setq inhibitshystartupshymessage t)

Emacs verifica el valor de la variable inhibitshystartupshymessage (bloquear mensaje dearranque) para decidir si muestra la informacioacuten sobre la versioacuten y la falta de garantiacuteacuando arranca La expresioacuten de Lisp de arriba usa el comando setq para asignar a esavariable el valor `t que es un valor especial de Lisp que significa true (verdadero)Lo contrario de `t es `nil (nada o nulo) que es el valor false (falso) designado enEmacs Lisp He aquiacute dos cosas que estaacuten en mi |_emacs_| que podriacutea encontrar uacutetiles

(setq caseshyfoldshysearch nil) causa la insensibilidad a mayuacutesculas yminuacutesculas para la buacutesqueda

Hacer indentar los programas C de la manera que me gusta

(setq cshyindentshylevel 2)

La primera expresioacuten hace que las buacutesquedas (incluyendo isearch) sean insensibles amayuacutesculas y minuacutesculas esto es la buacutesqueda encontraraacute versiones de un mismo caraacutectersea mayuacutescula o minuacutescula aunque la cadena de buacutesqueda contenga uacutenicamente la versioacuten enminuacutescula La segunda expresioacuten establece que la indentacioacuten por defecto para lassentencias en lenguaje C sea un poco menor de lo normal esto es solamente unapreferencia personal encuentro que esto hace el coacutedigo C maacutes legible

El caraacutecter de comentario en Lisp es Emacs ignora cualquier cosa que siga a uno deeacutestos a menos que aparezca dentro de una cadena literal como esta

estas dos liacuteneas son ignoradas por el inteacuterprete de Lisp pero la

sshyexpression que le sigue se evaluaraacute totalmente

(setq algunashycadenashyliteral Una pausa torpe sin ninguacuten propoacutesito)

Es una buena idea comentar sus cambios en los archivos Lisp porque seis meses despueacutes nose acordaraacute en queacute estaba pensando cuando los modificoacute Si el comentario aparece soacutelo enuna liacutenea preceacutedalo con dos punto y coma Esto ayuda a Emacs a indentar los archivosLisp correctamente

Puede encontrar informacioacuten sobre las variables internas de Emacs de las mismas formasque con las funciones Use |_Cshyh_v_| describeshyvariable para hacer una lista determinacioacuten automaacutetica o use |_Cshyh_Cshya_| apropos Apropos difiere de |_Cshyh_a_|commandshyapropos en que muestra variables y funciones en vez de solamente funciones

La extensioacuten por defecto para los archivos de Emacs Lisp es el como en cshymodeel Sinembargo para hacer que el coacutedigo Lisp se ejecute maacutes raacutepido Emacs permite que sea byteshycompiled (compilado a un formato interno) y estos archivos de coacutedigo Lisp compiladoterminan en elc en vez de el La excepcioacuten a esto es su archivo emacs que no necesitala extensioacuten el porque Emacs sabe buscarlo para arrancar

Para cargar un archivo de coacutedigo Lisp interactivamente use el comando Mshyx loadshyfile(cargar archivo) Le preguntaraacute por el nombre del archivo Para cargar archivos Lispdesde dentro de otros archivos Lisp haga esto

(load cshymode)fuerza a Emacs a cargar el contenido de cshymodeel o elc

Emacs antildeadiraacute la extensioacuten elc al nombre del archivo e intentaraacute encontrarlo en alguacutenlugar del loadshypath Si falla lo intenta con la extensioacuten el si falla esto usa lacadena literal tal y como es pasada a load Puede compilar (byteshycompile) un archivo conel comando Mshyx byteshycompileshyfile pero si modifica el archivo a menudo probablemente nomerezca la pena Sin embargo no deberiacutea compilar de esa manera su emacs ni siquieradarle la extensioacuten el

Despueacutes de que emacs se ha cargado Emacs busca un archivo llamado defaultel paracargarlo

Comuacutenmente se ubica en un directorio en la trayectoria de carga (loadshypath) llamado siteshylisp o localshyelisp o algo parecido (ver el ejemplo loadshypath que di hace un rato) Lagente que mantiene Emacs en un sistema multiusuario usa defaultel para hacer cambios queafectaraacuten los Emacs de todos puesto que todos los Emacs lo cargan despueacutes de los emacspersonales defaultel no deberiacutea ser compilado ya que tiende a ser modificadofrecuentemente

Si el emacs de una persona contiene alguacuten error Emacs no intentaraacute cargar defaultelsino que simplemente se detendraacute destellando un mensaje diciendo Error in init file(Error en el archivo de inicio) o algo similar Si ve este mensaje probablemente algovaya mal con su emacs

Hay un tipo maacutes de expresioacuten que a menudo va en un emacs La libreria de Emacs Lisp aveces ofrece muacuteltiples paquetes para hacer lo mismo de diferentes formas Esto significaque tiene que especificar cuaacutel quiere usar (o tendraacute el paquete por defecto que no essiempre el mejor para todos los propoacutesitos) Un aacuterea donde esto sucede es en lascaracteriacutesticas de interaccioacuten del Scheme de Emacs Hay dos interfaces diferentes deScheme distribuidos con Emacs (al menos en la versioacuten 19) xscheme y cmuscheme

promptgt ls usrlibemacs1919lispscheme

usrlibemacs1919lispcmuschemeel

usrlibemacs1919lispcmuschemeelc

usrlibemacs1919lispschemeel

usrlibemacs1919lispschemeelc

usrlibemacs1919lispxschemeel

usrlibemacs1919lispxschemeelc

Resulta que el interfaz ofrecido por cmuscheme me gusta mucho maacutes que el que ofrecexscheme pero el que Emacs usaraacute por defecto es xscheme iquestCoacutemo puedo hacer que Emacsactuacutee de acuerdo con mi preferencia Puse esto en mi emacs

note coacutemo la expresioacuten puede quebrarse en dos liacuteneas Lisp

ignora los espacios en blanco generalmente

(autoload runshyscheme cmuscheme

Corre un Scheme inferior de la forma que me gusta t)

La funcioacuten autoload (auto carga) toma el nombre de una funcioacuten (citada con porrazones que tienen que ver con coacutemo funciona Lisp) y le dice a Emacs que esta funcioacutenestaacute definida en un determinado archivo El archivo es el segundo argumento una cadena(sin la extensioacuten el o elc) indicando el nombre del archivo a buscar en la trayectoriade carga loadshypath

Los argumentos restantes son opcionales pero necesarios en este caso el tercerargumento es una cadena de documentacioacuten para la funcioacuten de modo que si llama adescribeshyfunction (describirshyfuncioacuten) consigue alguna informacioacuten uacutetil El cuartoargumento le dice a Emacs que esta funcioacuten autocargable puede ser llamadainteractivamente (esto es usando |_Mshyx_|) Esto es muy importante en este caso porqueuno deberiacutea poder teclear Mshyx runshyscheme para comenzar un proceso de scheme que seejecuta bajo Emacs

Ahora que runshyscheme ha sido definido como una funcioacuten autocargable iquestqueacute sucede cuandotecleo Mshyx runshyscheme Emacs mira la funcioacuten runshyscheme ve que estaacute establecida paraser autocargable y carga el archivo nombrado por la autocarga (en este caso cmuscheme)El archivo compilado cmuschemeelc existe asiacute que Emacs lo cargaraacute Ese archivo debedefinir la funcioacuten runshyscheme o habraacute un error de autocarga Por suerte define runshyscheme asiacute que todo va sin tropiezos y consigo mi interfaz preferida de Scheme10

Una autocarga es como una promesa a Emacs de que cuando llegue el momento puedeencontrar la funcioacuten especificada en el archivo en el que le dice que mire A cambioconsigue alguacuten control sobre lo que se carga Tambieacuten la autocarga ayuda a reducir eltamantildeo de Emacs en la memoria al no cargar ciertas caracteriacutesticas hasta que se pidan

Muchos comandos no estaacuten definidos realmente como funciones cuando Emacs se inicia Maacutesbien estaacuten simplemente preparados para autocargarse desde cierto archivo Si nuncainvoca el comando nunca se carga Este ahorro de espacio es vital para el funcionamientode Emacs si cargara todos los archivos disponibles en la biblioteca Lisp Emacs tomariacuteaveinte minutos simplemente para arrancar y una vez hecho podriacutea ocupar la mayor partede la memoria disponible en su maacutequina No se preocupe no tiene que establecer todasestas autocargas en su emacs ya se tomaron en cuenta cuando Emacs se desarrolloacute

814 Averiguando maacutes

No le he contado todo lo que se puede saber sobre Emacs De hecho no creo haberlecontado siquiera un 1 de lo que se puede saber sobre Emacs Aunque sabe suficiente paraproseguir todaviacutea hay montones de comodidades y trucos que ahorran tiempo que deberiacuteaaveriguar La mejor forma de hacerlo es esperar hasta que vea que necesita algo y buscarentonces una funcioacuten que lo haga

La importancia de estar coacutemodo con las facilidades de ayuda en liacutenea de Emacs no puedeenfatizarse lo suficiente Por ejemplo suponga que quiere poder insertar los contenidosde alguacuten archivo en un buffer que ya estaacute trabajando sobre un archivo diferente para queel buffer contenga a ambos Si intuyese que hay un comando llamado insertshyfile (insertararchivo) tendriacutea razoacuten Para verificar su acertada suposicioacuten teclee Cshyh f En elprompt del minibuffer introduzca el nombre de una funcioacuten sobre la que quiera ayudaPuesto que sabe que hay terminacioacuten automaacutetica en los nombres de funciones_y_puedesuponer que el comando que busca comienza con insert escriba insert y presiona|_Tab_| Esto le muestra todos los nombres de funcioacuten que comienzan con insert einsertshyfile es uno de ellos

De este modo completa el nombre de funcioacuten y lee sobre como trabaja y entonces usa Mshyxinsertshyfile_Si se estaacute preguntando si tambieacuten estaacute ligado a una tecla escribe Cshyh winsertshyfile |_Intro_| y averiacuteguumlelo Cuanto maacutes sepa de las facilidades de ayuda deEmacs maacutes faacutecilmente podraacute hacer preguntas a Emacs acerca de siacute mismo La capacidad dehacerlo combinada con un espiacuteritu de exploracioacuten y un deseo de aprender nuevas formas dehacer las cosas puede acabar por ahorrarle mucho tecleado

_____________________________________________

10 A propoacutesito cmuscheme era la interfaz de la que hablaba antes en la seccioacuten sobre eltrabajo con Scheme asiacute que si quiere usar algo de este manual necesita asegurarse deque ejecuta cmuscheme

Para pedir una copia del manual de usuario de Emacs (Emacs users manual) yo el manualde Programacioacuten en Emacs Lisp (Emacs Lisp Programming manual) debe escribir a

Free Software Foundation

675 Mass Ave

Cambridge MA 02139

USA

Ambos manuales se distribuyen electroacutenicamente con Emacs en una forma legible usando ellector de documentacioacuten Info (Cshyh i) pero puede encontrar maacutes faacutecil tratar con freewareque con las versiones en liacutenea Ademaacutes sus precios son bastantes razonables y el dinerova a una buena causa iexclsoftware gratuito de calidad En alguacuten momento deberiacutea teclear

Cshyh Cshyc para leer las condiciones de copyright de Emacs Es maacutes interesante de lo quepuede pensar y le ayudaraacute a aclarar el concepto de software libre Si cree que eltermino free software simplemente significa que el programa no cuesta nada por favoriexcllea el copyright en cuanto tenga tiempo

Capiacutetulo 9

iexclTengo que ser yo mismo

Si Dios hubiera sabido que necesitariacuteamos previsioacuten nos la habriacutea dado

91 Personalizacioacuten del bash

Una de las cosas que distinguen la filosofiacutea de Unix es que los disentildeadores de sistemasno intentaron predecir cada necesidad que los usuarios podriacutean tener en lugar de esointentaron hacer faacutecil para cada usuario individual la configuracioacuten del entorno a susnecesidades particulares Esto se consigue principalmente a traveacutes de ficheros deconfiguracioacuten Tambieacuten son conocidos como ficheros de inicio ficheros rc (por runcontrol control de arranque) o incluso ficheros punto (dot files) porque losnombres de los ficheros siempre empiezan con Recordemos que los ficheros queempiezan por no se visualizan normalmente con ls

Los ficheros de configuracioacuten maacutes importantes son los usados por el shell El shell pordefecto de Linux es el bash y eacuteste es el shell que cubre este capiacutetulo Antes de empezara explicar coacutemo personalizar el bash tenemos que saber cuales son los archivos que mira

911 Arranque del shell

Hay diferentes modos de funcionamiento del bash Puede funcionar como shell de ingresoque es el modo en que arranca cuando se ingresa por primera vez El shell de ingresodeberiacutea ser el primer shell que vea

Otro modo en que puede funcionar bash es como shell interactivo Este es un shell quepresenta un prompt a un humano y espera una entrada de datos Un shell de ingreso tambieacutenes un shell interactivo Una manera de conseguir un shell interactivo sin ingresar en elsistema es por ejemplo un shell dentro de xterm Cualquier shell que sea creado porotro medio distinto del ingreso registrado en el sistema es un shell de noshyingreso

Finalmente hay shells no interactivos Estos shells se usan para ejecutar un archivo decomandos muy parecidos a los ficheros de procesamiento por lotes del MSshyDOS losarchivos que acaban en BAT Estas macros de shell funcionan como minishyprogramas Aunqueson usualmente mucho maacutes lentos que un programa normal compilado suele ser ciertotambieacuten que son mucho maacutes faacuteciles de escribir Dependiendo del tipo de shell se usaraacutendistintos tipos de archivo al arrancarlo

Tipo de Shell Accioacuten

Ingreso interactivo Se lee y ejecuta el archivo bash_profile

Interactivo Se lee y ejecuta el archivo bashrc

No_interactivo Se lee y ejecuta la macro de shell

912 Ficheros de arranque

Como muchos usuarios quieren tener mayormente el mismo entorno sin importar que tipo deshell interactivo acaben teniendo y sea o no un shell de ingreso empezaremos nuestraconfiguracioacuten poniendo un comando muy simple en nuestro archivo bash_profile source~bashrc El comando source ordena al shell que interprete el argumento como una macrode shell Lo que significa para nosotros es que cada vez que bash_profile se ejecutatambieacuten se ejecuta bashrc Ahora soacutelo antildeadiremos comandos a nuestro archivo bashrc Sialguna vez queremos que se ejecute un comando uacutenicamente cuando hemos hecho un ingresoregistrado lo antildeadiremos a nuestro bash_profile

913 Creando alias

iquestCuales son algunas de las cosas que interesariacutea personalizar Esto es algo que creo queel 90 de los usuarios de Bash han puesto en su bashrc

alias ll=ls shyl

Este comando define un alias de shell llamado ll que expande el comando normal de shellls shyl cuando se invoca por el usuario De modo que asumiendo que Bash ha leiacutedo estecomando del fichero bashrc podemos teclear ll para conseguir el efecto de ls__shyl_ consolo la mitad de pulsaciones Lo que ocurre es que cuando tecleamos ll y pulsamos|_Intro_| Bash lo intercepta lo reemplaza por ls shyl y ejecuta eacuteste en su lugar Nohay ninguacuten programa llamado ll en el sistema pero el shell automaacuteticamente traduce elalias a un programa vaacutelido

Hay algunos alias de ejemplo en la figura 913 Puede ponerlos en su propio bashrc Unoespecialmente interesante es el primero Con eacutel cada vez que alguien teclea ls automaticamente tiene una opcioacuten shyF antildeadida (El alias no intenta expandirse a siacute mismootra vez) Este es un modo muy comuacuten de antildeadir opciones que se usan constantemente alllamar a un programa

Noacutetese los comentarios con el caracter en la figura 913 Cada vez que aparece un el shell ignora el resto de la liacutenea

Quizaacute haya notado unas cuantas cosas sueltas sobre los ejemplos Primero me he dejadolas comillas en algunos de los alias como pu Estrictamente hablando las comillas no sonnecesarias cuando soacutelo se tiene una palabra a la derecha del signo igual

Figura 91 Algunos alias de ejemplo para bash

Alias Comentario

alias ls=ls shyF

alias ll=ls shyl

alias la=ls shya

alias ro=rm ~ rm ~

alias rd=rmdir

alias md=mkdir

alias pu=pushd

muestra los caracteres al final del listado

ls especial

este borra las copias de seguridad creadas por Emacs

ahorra teclas

pushd popd y dirs no estan incluidos en este

alias po=popd

alias ds=dirs

manualshyshyshyquiza quiera echarles un vistazo

en la pagina man de Bash

alias to=telnet csoberlinedu

alias ta=telnet altairmcsanlgov

alias tg=telnet wombatgnuaimitedu

alias tko=tpalk koldcsoberlinedu

alias tjo=talk jimbcsoberlinedu

alias mroe=more

alias moer=more

alias email=emacs shyf rmail

alias ed2=emacs shyd floss0 shyfg grey95shybg grey50

estos solo son atajos de teclado

correcion ortografica

mi lector de correo

asi llamo a Emacs

Pero no hace dantildeo poner comillas asiacute que no me dejeacuteis crearos malos haacutebitos Ciertamentehabraacute que usarlas si se va a crear un alias de un comando con opciones yo argumentos

alias rf=refrobnicate shyverbose shyprolix shywordy shyo fooout

Ademaacutes el uacuteltimo alias tiene alguacuten entrecomillado gracioso

alias ed2=emacs shyd floss0 shyfg grey95 shybg grey50

Como es faacutecil suponer he querido pasar entrecomillados dentro de las opciones asiacute quetengo que anteponerles una contrabarra para que bash no crea que ya ha llegado al finaldel alias

Finalmente he creado dos alias de dos errores de escritura comunes mroe y moerapuntando al comando que pretendiacutea escribir more Los alias no interfieren con el pasode argumentos a un programa Lo siguiente funciona bien

homelarry$ mroe hurdtxt

De hecho saber como crear sus propios alias es probablemente por lo menos la mitad delas personalizaciones que haraacute jamaacutes Experimente un poco descubra cuaacuteles son loscomandos largos que teclea frecuentemente y cree alias para ellos De esta manera leresultaraacute maacutes confortable trabajar con el prompt del shell

914 Variables de entorno

Otra cosa que uno hace frecuentemente en bashrc es definir variables de entorno Y gtqueacuteson las variables de entorno Vamos a mirarlo desde otra direccioacuten Supongamos que estaacuteleyendo la documentacioacuten del programa fruggle y se encuentra con una de estasexpresiones

Fruggle normalmente busca su fichero de configuracioacuten frugglerc en el directorio raiacutezdel usuario Sin embargo si la variable de entorno FRUGGLEPATH indica un nombre dearchivo diferente miraraacute ahiacute en su lugar

Cada programa se ejecuta en un entorno y ese entorno es definido por el shell que llamoacuteal programa1 Se puede decir que el entorno existe dentro del shell Los programadorestienen una rutina especial para interrogar al entorno y el programa fruggle usa esarutina Comprueba el valor de la variable de entorno FRUGGLEPATH Si esa variable no estaacutedefinida sencillamente usaraacute el archivo frugglerc del directorio raiacutez Si estaacutedefinida usaraacute el valor de esa variable (que debe ser el nombre de un archivo quefruggle pueda usar) en lugar del archivo por defecto frugglerc Asiacute es como se puedecambiar el entorno en bash

homelarry$ export PGPPATH=homelarrysecretspgp

Hay que pensar en el comando export con este significado Por favor exporta estavariable fuera del entorno donde estareacute llamando programas de modo que su valor seavisible para ellos Realmente hay razones para llamarlo export como se veraacute despueacutes

Esta variable en particular es usada por el infame programa de encriptacioacuten medianteclave puacuteblica de Phil Zimmerman pgp Por defecto pgp usa el directorio raiacutez como lugarpara encontrar determinados archivos que necesita (que contienen claves de encriptacioacuten)y tambieacuten un lugar para guardar archivos temporales que crea mientras estaacute en marcha Aldarle este valor a la variable PGPPATH le he dicho que use el directoriohomelarrysecretspgp en lugar de homelarry

He tenido que leer el manual de pgp para encontrar el nombre exacto de la variable y loque hace pero es bastante estaacutendar el uso del nombre del programa en mayuacutesculas seguidodel sufijo PATH Tambieacuten es uacutetil saber como preguntar al entorno

homelarry$ echo $PGPPATH

homelarrypgp

homelarry$

Noacutetese el $ se precede la variable de entorno con un signo de doacutelar para extraer elvalor de la variable Si lo hubiera escrito sin el signo de doacutelar echo simplementehabriacutea mostrado su(s) argumento(s)

homelarry$ echo PGPPATH

PGPPATH

homelarry$

El $ se usa para evaluar variables de entorno pero soacutelo lo hace dentro del contextodel shell o sea cuando el shell estaacute interpretando iquestCuando estaacute el shellinterpretando Bueno cuando se escriben comandos en el prompt o cuando bash estaacuteleyendo comandos de un archivo como bashrc se puede decir que estaacute interpretando loscomandos

_____________________________________________

1 Ahora se puede comprobar porqueacute los shells son tan importantes ltNo hay que andarpasando un entorno completo a mano cada vez que se llame a un programa

Figura 92 Algunas variables de entorno importantes

Nombre Contenido Ejemplo

HOME Directorio principal del usuario homelarry

TERM Tipo de terminal del usuario xterm vt100 o console

SHELL Path del shell del usuario binbash

USER Nombre de ingreso larry

PATH Lista de buacutesqueda de programas binusrbinusrlocalbinusrbinX11

Hay otro comando muy uacutetil para preguntar al entorno env env ensentildearaacute un listado detodas las variables de entorno Es posible especialmente si se usa X que la lista sesalga de la pantalla

Si esto ocurre hay que canalizar env a traveacutes de more env _ more

Unas cuantas de estas variables pueden ser muy uacutetiles asiacute que las comentaremos Mire laFigura 914 Estas cuatro variables estaacuten definidas automaacuteticamente cuando se ingresa enel sistema no se definen en bashrc o bash_login

Vamos a echar un vistazo maacutes de cerca a la variable TERM Para comprenderla vamos amirar hacia atraacutes en la historia del Unix El sistema operativo necesita conocer ciertosdatos sobre su consola para poder realizar funciones baacutesicas como escribir un caraacutecteren la pantalla mover el cursor a la liacutenea siguiente etc En los primeros diacuteas de losordenadores los fabricantes estaban continuamente antildeadiendo nuevas caracteriacutesticas a susterminales primero el viacutedeo inverso luego quizaacutes juegos de caracteres europeoseventualmente incluso primitivas funciones de dibujo (hay que recordar que eacutestos eran lostiempos anteriores a los sistemas de ventanas y el ratoacuten) Pero todas estas funcionesrepresentaban un problema para los programadores iquestCoacutemo iban a saber lo que un terminalpodiacutea soportar y lo que no Y iquestcoacutemo podiacutean emplear nuevas caracteriacutesticas sin convertirlos viejos terminales en inservibles

En Unix la respuesta a estas cuestiones fue etctermcap etctermcap es una lista detodos los terminales que un sistema conoce y como controlan el cursor Si unadministrador de sistema consigue un terminal nuevo todo lo que tiene que hacer esantildeadir una entrada para ese terminal en etctermcap en lugar de recompilar todo el UnixA veces es incluso maacutes simple Al pasar el tiempo el vt100 de Digital EquipmentCorporation se convirtioacute en un pseudoshyestaacutendar y muchos nuevos terminales fueronconstruidos para que pudieran emularlo o comportarse como si fueran un vt100

Bajo Linux el valor de TERM es a veces console un cloacutenico de vtshy100 con algunascaracteriacutesticas antildeadidas

Otra variable PATH es tambieacuten crucial para el funcionamiento correcto del shell Aquiacuteestaacute la miacutea

homelarry$ env _ grep ^PATH

PATH=homelarrybinbinusrbinusrlocalbinusrbinX11usrTeXbin

homelarry$

El PATH es una lista separada por el caraacutecter dos puntos de los directorios dondeel shell buscaraacute el nombre del programa a ejecutar Cuando yo tecleo ls y pulso|_Intro_| por ejemplo Bash primero busca en homelarrybin un directorio que he hechopara guardar los programas que escribo Pero yo no he escrito ls (de hecho iexclcreo que seescribioacute antes de que yo naciera) Como no lo encuentra en homelarrybin Bash miradespueacutes en bin iexcly ahiacute hay una coincidencia binls existe y es ejecutable de modo queBash deja de buscar un programa llamado ls y lo arranca Podriacutea haber habidoperfectamente otro ls esperando en el directorio usrbin pero bash nunca lo ejecutaraacutesi no lo pido especificando una ruta de directorios expliacutecita

homelarry$ usrbinls

La variable PATH existe para no tener que teclear rutas de directorio completas para cadacomando Cuando se escribe un comando Bash lo busca en los directorios nombrados en elPATH en orden y si lo encuentra lo ejecuta Si no lo encuentra devuelve un descorteacutesmensaje de error

homelarry$ clubly

clubly command not found

Notar que en mi PATH no existe el directorio actual Si estuviera tendriacutea esteaspecto

homelarry$ echo $PATH

homelarrybinbinusrbinusrlocalbinusrbinX11usrTeXbin

homelarry$

Esto es asunto de debate en los ciacuterculos de Unix (de los cuales ahora es miembro leguste o no) El problema es que tener el directorio actual en el path puede ser unagujero en la seguridad Supongamos que entramos en un directorio en el que alguien hadejado un Caballo de Troya llamado ls y hacemos un ls como es natural despueacutes deentrar en un directorio nuevo Como el directorio actual viene primero en nuestroPATH el shell encontraraacute esta versioacuten de ls y la ejecutaraacute Sea cual sea el dantildeo quehayan puesto en ese programa lo acabamos de activar (y puede ser un montoacuten de dantildeo)Quien fuera no necesita permisos de root para hacerlo soacutelo hace falta permisos deescritura en el directorio donde se encuentra el falso ls Incluso podriacutea ser su propiodirectorio home si sabe que vamos a estar husmeando por ahiacute en alguacuten momento

En su propio sistema es muy improbable que las personas se esteacuten dejando trampas unas aotras Pero en un gran sistema multiusuario (como muchos ordenadores de universidades)hay un montoacuten de programadores hostiles con los que nunca se ha encontrado Que quieratentar a la suerte o no teniendo en el path depende de la situacioacuten no voy a serdogmaacutetico en ninguacuten sentido soacutelo quiero informar de los riesgos impliacutecitos2 Lossistemas multiusuario son verdaderas comunidades donde la gente puede hacerles cosas alos demaacutes en todo tipo de maneras nunca vistas

El modo en que he dejado mi PATH incluye la mayoriacutea de lo que se ha aprendido hasta ahorasobre variables de entorno Esto es lo que hay actualmente en mi bashrc

export PATH=$shyPATH$shyHOMEbinbinusrbinusrlocalbinusrbinX11usrTeXbin

_____________________________________________

2 Recueacuterdese que siempre se puede ejecutar un programa en el directorio actual siendoexpliacutecito pej foo

Me aprovecho de que la variable HOME se activa antes de que Bash lea el fichero bashrcusando su valor en la construccioacuten del PATH Las llaves () son un nivel antildeadido decita delimitan el tamantildeo de lo que va a evaluar $ de modo que el shell no se confundapor culpa del texto inmediatamente posterior (bin en este caso) Aquiacute hay otro ejemplodel efecto que tienen

homelarry$ echo $shyHOMEfoo

homelarryfoo

homelarry$

Sin las llaves no connseguiriacutea nada porque no hay ninguna variable de entorno llamadaHOMEfoo

homelarry$ echo $HOMEfoo

homelarry$

Quisiera aclarar una cosa en este path el significado de $PATH Lo que hace es incluirel valor de cualquier variable PATH previamente activada en mi nuevo PATH iquestDoacutende sehabraacute activado la variable anterior El archivo etcprofile sirve como una especie debash_profile global comuacuten a todos los usuarios Tener un archivo centralizado como estehace maacutes sencillo para el administrador del sistema antildeadir un directorio nuevo al PATH detodo el mundo sin que cada uno tenga que hacerlo individualmente Si se incluye el pathantiguo en el nuevo no se perderaacuten ninguno de los directorios que el sistema ya hayapreparado

Tambieacuten se puede controlar como aparece el prompt Esto se consigue mediante la variablede entorno PS1 Personalmente quiero un prompt que me indique el path del directorioactual asiacute es como lo hago en mi bashrc

export PS1=$PWD$

Como se puede ver en realidad se usan dos variables La que se activa es PS1 y toma elvalor de PWD que puede ser interpretada como Print Working Directory (imprime eldirectorio de trabajo) o Path to Working Directory(trayectoria al directorio detrabajo) Pero la evaluacioacuten de PWD tiene lugar entre apoacutestrofos agudos Estos apoacutestrofossirven para evaluar la expresioacuten en su interior la cual a su vez evaluacutea la variable PWDSi soacutelo hubieacuteramos hecho export PS1=$PWD nuestro prompt nos habriacutea mostradoconstantemente el path del directorio de trabajo en el momento en que PS1 fue activadaen lugar de actualizarse constantemente mientras cambiamos de directorios Bueno es unpoco confuso y no muy importante en realidad Soacutelo hay que tener en cuenta que senecesita esa clase de apoacutestrofos si se quiere mostrar el directorio actual en el prompt

Quizaacute se prefiera export PS1=$PWDgt o incluso el nombre del sistema

export PS1=`hostname`gt

Diseccionemos este ejemplo un poco maacutes Aquiacute se usa un nuevo tipo de literal elapoacutestrofo grave Esta clase de literal no protege nada de hecho hostname no apareceen ninguna parte del prompt cuando intentamos arrancarlo Lo que sucede realmente es quese evaluacutea el comando dentro de los apoacutestrofos graves y el resultado se guarda en lugardel nombre del comando entrecomillado

Probemos con echo `ls` o wc `ls` A medida que se consiga maacutes experiencia usando elshell esta teacutecnica se hace maacutes y maacutes potente

Hay mucho maacutes por comentar de como se configura el fichero bashrc y aquiacute no haybastante espacio para hacerlo Se puede aprender maacutes leyendo la paacutegina man de bash opreguntando a usuarios experimentados Aquiacute hay un bashrc completo para poderestudiarlo es razonablemente estaacutendar aunque el path es un poco largo

Algunas cosas al azar

ulimit shyc unlimited

export history_control=ignoredups

export PS1=$PWDgt

umask 022

paths especiacuteficos de aplicaciones

export MANPATH=usrlocalmanusrman

export INFOPATH=usrlocalinfo

export PGPPATH=$shyHOMEpgp

PATH principal

homepath=$shyHOME~bin

stdpath=binusrbinusrlocalbinusrucbetcusretcusrgames

pubpath=usrpublicbinusrgnusoftbinusrlocalcontribsbin

softpath=usrbinX11usrlocalbinX11usrTeXbin

export PATH=$shyhomepath$shystdpath$shypubpath$shysoftpath

Teacutecnicamente las llaves no eran necesarias porque los dos puntos son

delimitadores vaacutelidos pero las llaves son una buena costumbre

y no hacen dantildeo

alias

alias ls=ls shyCF

alias fg1=fg 1

alias fg2=fg 2

alias tba=talk sussmanternmcsanlgov

alias tko=talk koldcsoberlinedu

alias tji=talk jimbtotorobioindianaedu

alias mroe=more

alias moer=more

alias email=emacs shyf vm

alias pu=pushd

alias po=popd

alias b=~b

alias ds=dirs

alias ro=rm ~ rm ~

alias rd=rmdir

alias ll=ls shyl

alias la=ls shya

alias rr=rm shyr

alias md=mkdir

alias ed2=emacs shyd floss0 shyfg grey95 shybg grey50

function gco

shy

gcc shyo $1 $1c shyg

92 Los ficheros de inicio de X Window

Mucha gente prefiere trabajar dentro de un entorno graacutefico y para las maacutequinas bajo Unixeso suele significar usar X Si se estaacute acostumbrado al Macintosh o al Microsoft Windowspuede costar un poco acostumbrarse al sistema X Window especialmente al modo en que seconfigura

Con Macintosh o Microsoft Windows se personaliza el entorno desde dentro si se quierecambiar el fondo por ejemplo se pulsa con el ratoacuten sobre el nuevo color en alguacutenprograma graacutefico especial de configuracioacuten En X las opciones por defecto del sistema secontrolan mediante ficheros de texto que se editan directamente en otras palabras seescribe el nombre del color en un fichero para cambiar el color del fondo

No se puede negar que este meacutetodo no es tan llano como el de algunos sistemas de ventanascomerciales Creo que esta tendencia a permanecer basado en texto incluso en un entornograacutefico tiene mucho que ver con el hecho de que X fueacute creado por un puntildeado deprogramadores que simplemente no estaban tratando de escribir un software que pudieranusar sus abuelos Esta tendencia puede cambiar en futuras versiones de X (por lo menosasiacute lo espero3) pero por ahora hay que aprender como entenderse con unos cuantosficheros de texto maacutes Por lo menos nos da un control muy flexible y preciso de nuestraconfiguracioacuten

Aquiacute estaacuten los ficheros maacutes importantes para configurar X

xinitrc Un script arrancado por X cuando se inicia

twmrc Leido por el gestor de X Window twm

fvwmrc Leido por el gestor de X Window fvwm

Todos estos ficheros deberiacutean estar en el directorio $HOME si es que existen

xinitrc es una macro de shell muy simple que se ejecuta cuando invocamos a X Puedehacer cualquiera de las cosas que pueden hacer otras macros de shell pero por supuestosu uso principal es arrancar varios programas de X y establecer paraacutemetros del sistema deventanas El uacuteltimo comando en xinitrc es usualmente el nombre de un gestor de ventanasa ejecutar por ejemplo usrbinX11twm

iquestQueacute tipo de cosas nos gustariacutea poner en xinitrc Quizaacute algunas llamadas al programaxsetroot para hacer que la ventana de fondo (escritorio) y el ratoacuten tengan el aspectoque deseamos Llamadas a xmodmap que informa al servidor4 de como interpretar lassentildeales del teclado

_____________________________________________

3 N del T Yo tambieacuten shy)

4 El servidor soacutelo se refiere al proceso principal en la maacutequina con el que todos losdemaacutes programas de X tienen que comunicar para usar la pantalla Estos otros programas seconocen como clientes y todo el paquete se llama sistema clienteshyservidor

O cualquier otro programa que se quiera iniciar cada vez que se arranque X (por ejemploxclock) Aquiacute estaacute una parte de mi xinitrc el suyo seguramente seraacute distinto asiacute quehay que tomaacuterselo soacutelo como ejemplo

binsh

La primera liacutenea le dice al sistema operativo que shell usar para

interpretar esta macro La macro en siacute misma debe estar marcada como

ejecutable se puede hacer con chmod +x ~xinitrc

xmodmap es un programa que informa al servidor X de como interpretar las

sentildeales del teclado Es definitivamente aconsejable aprender como

funciona Se puede probar con man xmodmap xmodmap shyhelp

xmodmap shygrammar y otras opciones

No garantizo que las expresiones abajo escritas signifiquen nada en tu

sistema (ni siquiera garantizo que signifiquen algo en el miacuteo)

xmodmap shye clear Lock

xmodmap shye keycode 176 = Control_R

xmodmap shye add control = Control_R

xmodmap shye clear Mod2

xmodmap shye add Mod1 = Alt_L Alt_R

xset es un programa para establecer otros paraacutemetros del servidor X

xset m 3 2 amp paraacutemetros del ratoacuten

xset s 600 5 amp preferencias del salvapantallas

xset s noblank amp lo mismo

xset fp+ homelarryxfonts para cxterm

Para aprender maacutes xset shyhelp

Ordena al servidor X que sobreponga fishcursor sobre fishmask y use

el patroacuten resultante como cursor del ratoacuten

xsetroot shycursor homelablarryxfishcursor homelablarryxfishmask amp

Un placentero patroacuten y color de fondo

xsetroot shybitmap homelablarryxpyramidxbm shybg tan

para hacer xrdb aquiacute Y que hay del fichero Xdefaults

Hay que mirar man xsetroot o xsetroot shyhelp para maacutes

informacioacuten sobre el programa usado arriba

Un programa cliente el imponente reloj circular de color de Jim Blandy

usrlocalbincircles amp

Quizaacute os gustariacutea tener un reloj en la pantalla a todas horas

usrbinX11xclock shydigital amp

Permite a programas cliente de X ejecutaacutendose en occscsoberlinedu

mostrarse a siacute mismos aquiacute y lo mismo para jujumcsanlgov

xhost occscsoberlinedu

xhost jujumcsanlgov

Se puede simplemente decirle al servidor X que permita usar aquiacute

a clientes que esteacuten ejecutaacutendose en cualquier otra maacutequina

pero esto es un agujero en la seguridad shyshy ltestos clientes pueden ser

usados por cualquier otro que puede vigilar lo que se teclea cuando se

entra una contrasentildea o algo asiacute

Si se quiere hacerlo de todos modos se puede usar un + para indicar

cualquier nombre de host posible en lugar de un nombre especiacutefico

asiacute

xhost +

Y finalmente arrancar el gestor de ventanas

usrbinX11twm

Alguna gente prefiere otros gestores de ventanas Yo uso twm pero fvwm se

distribuye tambieacuten muchas veces con Linux

usrbinX11fvwm

Noacutetese que algunos comandos son iniciados en segundo plano (pej los que van seguidosde amp) mientras que otros no lo son La distincioacuten estaacute en que algunos programas seiniciaraacuten cuando arranquemos X y seguiraacuten en marcha hasta que salgamos Los otros seejecutan una vez y se cierran inmediatamente xsetroot es uno de eacutestos soacutelo establece laventana principal o el cursor a lo que sea y luego se cierra

Una vez que el gestor de ventanas ha arrancado leeraacute su propio fichero de inicio quecontrola cosas como la composicioacuten de los menuacutes en queacute posiciones se presentan lasventanas cuando se abren control de iconos y otros asuntos terriblemente importantesSi se usa twm el fichero es twmrc en nuestro directorio home Si se usa fvwm elfichero es fvwmrc etc Explicaremos soacutelo estos dos ya que son los gestores de ventanasque maacutes frecuentemente se encontraraacuten con Linux

921 Configuracioacuten de twm

twmrc no es una macro de shell_estaacute escrito en un lenguaje especialmente hecho para twmiexclcreacutealo o no5 Principalmente a la gente en su twmrc le gusta jugar con los estilos dela ventana (colores y demaacutes) y hacer interesantes menuacutes asiacute que ahiacute va un twmrc deejemplo

Indica colores para varias partes de una ventanas Tiene un gran impacto

en la sensacioacuten que transmite el entorno

Color

shy

BorderColor OrangeRed

BorderTileForeground Black

BorderTileBackground Black

TitleForeground black

TitleBackground gold

MenuForeground black

MenuBackground LightGrey

MenuTitleForeground LightGrey

MenuTitleBackground LightSlateGrey

MenuShadowColor black

IconForeground DimGray

IconBackground Gold

IconBorderColor OrangeRed

IconManagerForeground black

IconManagerBackground honeydew

Espero que no tengas un sistema monocromo pero si lo tienes

Monochrome

shy

BorderColor black

BorderTileForeground black

BorderTileBackground white

TitleForeground black

TitleBackground white

He creado beifangbmp con el programa bitmap Aquiacute le digo a twm

que lo use como el patroacuten por defecto para destacar las barras de

tiacutetulo de las ventanas

Pixmaps

shy

TitleHighlight homelarryxbeifangbmp

No os preocupeacuteis por estas cosas son soacutelo para usuarios avanzados shy)

BorderWidth 2

TitleFont shyadobeshynew century schoolbookshyboldshyrshynormalshyshy14shy140shy75shy75shypshy87shyiso8859shy1

MenuFont 6x13

IconFont lucidasansshyitalicshy14

ResizeFont fixed

Zoom 50

RandomPlacement

Estos programas no tendraacuten una barra de tiacutetulo por defecto

NoTitle

shy

stamp

xload

xclock

xlogo

xbiff

xeyes

oclock

xoid

AutoRaise significa que una ventana aparece al frente cuando el ratoacuten

entra en ella Lo encuentro desconcertante asiacute que lo he desactivado

Como puedes ver he heredado mi twmrc de otra gente a quien tampoco le

gustaba Autoraise

AutoRaise

shy

nothing No me gusta autoshyraise Ni a mi A mi tampoco

Aquiacute es donde se define la funcioacuten de los botones del mouse

Noacutetese el patroacuten Un botoacuten del ratoacuten pulsado en la ventana

principal si no se estaacute pulsando ninguna tecla modificadora siempre

hace aparecer un menuacute Otras posiciones usualmente producen

modificaciones de la ventana en alguacuten modo y las teclas modificadoras

se usan junto con los botones del ratoacuten para acceder a las funciones

maacutes avanzadas de manipulacioacuten de ventanas

No hay porqueacute seguir este patroacuten en twmrc shyshy el coacutemo

establecer el entorno es un asunto totalmente personal

Button = KEYS CONTEXT FUNCTION

shyshyshyshyshyshyshyshyshyshyshyshyshyshyshyshyshyshyshyshyshyshyshyshyshyshyshyshyshyshyshyshyshyshy

Button1 = root fmenu main

Button1 = title fraise

Button1 = frame fraise

Button1 = icon ficonify

Button1 = m window ficonify

Button2 = root fmenu stuff

Button2 = icon fmove

Button2 = m window fmove

Button2 = title fmove

Button2 = frame fmove

Button2 = s frame fzoom

Button2 = s window fzoom

Button3 = root fmenu x

Button3 = title flower

Button3 = frame flower

Button3 = icon fraiselower

Puedes escribir tus propias funciones esta se usa en el menuacute

windowops cerca del final de este fichero

Function raiseshynshyfocus

shy

fraise

ffocus

Muy bien abajo estaacuten los menuacutes a los que me referiacutea en la

seccioacuten de los botones del ratoacuten Noacutetese que muchas de estas

entradas de menuacute llaman a submenuacutes a su vez Se pueden tener tantos

niveles como se quiera pero no se pueden tener menuacutes recursivos Ya

lo he probado

menu main

shy

Vanilla ftitle

Emacs fmenu emacs

Logins fmenu logins

Xlock fmenu xlock

Misc fmenu misc

Esto me permite llamar a emacs desde varias maacutequinas diferentes Ver

la seccioacuten sobre ficheros rhosts para maacutes informacioacuten sobre

como funciona

menu emacs

shy

Emacs ftitle

here usrbinemacs amp

fnop

phylo rsh phylo emacs shyd floss0 amp

geta rsh geta emacs shyd floss0 amp

darwin rsh darwin emacs shyd floss0 amp

ninja rsh ninja emacs shyd floss0 amp

indy rsh indy emacs shyd floss0 amp

oberlin rsh csoberlinedu emacs shyd flosslifeuiucedu0 amp

gnu rsh gateshy1gnuaimitedu emacs shyd flosslifeuiucedu0 amp

Esto me permite llamar a xterms desde varias maacutequinas diferentes Ver

la seccioacuten sobre ficheros rhosts para maacutes informacioacuten sobre

como funciona

menu logins

shy

Logins ftitle

here usrbinX11xterm shyls shyT `hostname` shyn `hostname` amp

phylo rsh phylo xterm shyls shydisplay floss0 shyT phylo amp

geta rsh geta xterm shyls shydisplay floss0 shyT geta amp

darwin rsh darwin xterm shyls shydisplay floss0 shyT darwin amp

ninja rsh ninja xterm shyls shydisplay floss0 shyT ninja amp

indy rsh indy xterm shyls shydisplay floss0 shyT indy amp

El salvapantallas xlock llamado con varias opciones (cada una de

ellas da una bonita imagen)

menu xlock

shy

Hop xlock shymode hop amp

Qix xlock shymode qix amp

Flame xlock shymode flame amp

Worm xlock shymode worm amp

Swarm xlock shymode swarm amp

Hop NL xlock shymode hop shynolock amp

Qix NL xlock shymode qix shynolock amp

Flame NL xlock shymode flame shynolock amp

Worm NL xlock shymode worm shynolock amp

Swarm NL xlock shymode swarm shynolock amp

Programas de todo tipo que uso ocasionalmente

menu misc

shy

Xload usrbinX11xload amp

XV usrbinX11xv amp

Bitmap usrbinX11bitmap amp

Tetris usrbinX11xtetris amp

Hextris usrbinX11xhextris amp

XRoach usrbinX11xroach amp

Analog Clock usrbinX11xclock shyanalog amp

Digital Clock usrbinX11xclock shydigital amp

Esto es para lo que uso el botoacuten central del ratoacuten

menu stuff

shy

Chores ftitle

Sync binsync

Who who _ xmessage shyfile shy shycolumns 80 shylines 24 amp

Xhost + usrbinX11xhost + amp

Rootclear homelarrybinrootclear amp

Funciones de X que a veces conviene usar

menu x

shy

X Stuff ftitle

Xhost + xhost + amp

Refresh frefresh

Source twmrc ftwmrc

(De)Iconify ficonify

Move Window fmove

Resize Window fresize

Destroy Window fdestroy

Window Ops fmenu windowops

fnop

Kill twm fquit

Este es un submenuacute del de arriba

menu windowops

shy

Window Ops ftitle

Show Icon Mgr fshowiconmgr

Hide Icon Mgr fhideiconmgr

Refresh frefresh

Refresh Window fwinrefresh

twm version fversion

Focus on Root funfocus

Source twmrc ftwmrc

Cut File fcutfile

(De)Iconify ficonify

DeIconify fdeiconify

Move Window fmove

ForceMove Window fforcemove

Resize Window fresize

Raise Window fraise

Lower Window flower

Raise or Lower fraiselower

Focus on Window ffocus

RaiseshynshyFocus ffunction raiseshynshyfocus

Destroy Window fdestroy

Kill twm fquit

_____________________________________________

5 Eacuteste es uno de los problemas de los ficheros de configuracioacuten normalmente usan supropio lenguaje de comandos Esto significa que los usuarios se vuelven muy buenos a lahora de aprender lenguajes nuevos raacutepidamente Supongo que habriacutea estado bien que losprimeros programadores de Unix se hubieran puesto de acuerdo en alguacuten estaacutendar de ficherode inicio pero para ser justo es difiacutecil de predecir que tipo de informacionesnecesitaraacuten los programas

iexclGuau Creedme este no es el twmrc maacutes largo que he llegado a ver Es probable que convuestra versioacuten de X vinieran algunos ejemplos de archivos twmrc bastante decentes Sepueden buscar dentro del directorio usrlibX11twm o en usrX11libX11twm

Un defecto de programa que hay que vigilar en los ficheros twmrc es no olvidarse deponer el amp despueacutes de un comando en un menuacute Si se nota que X se cuelga cuando se usanciertos comandos lo maacutes probable es que eacutesta sea la causa Hay que salir de X con|_Ctrl_|shy|_Alt_|shy|_Retroceso_| editar twmrc y probar otra vez

922 Configuracioacuten de fvwm

Si se usa fvwm el directorio usrlibX11fvwm (o usrX11libX11fvwm) tiene algunosejemplos de ficheros de configuracioacuten

[Compantildeeros No seacute nada sobre fvwm aunque supongo que sacareacute algo en claro de losficheros de ejemplo igual que el lector shy) Ademaacutes dado el pequentildeo pero decentesystemtwmrc en el directorio arriba mencionado me pregunto si vale la pena que de estelargo ejemplo con mi propio twmrc De momento estaacute aquiacute pero no seacute si lo dejaremos onoshyKarl]

93 Otros ficheros de inicio

Otros ficheros de inicio dignos de mencioacuten son

emacs Leiacutedo por el editor de texto Emacs cuando arranca

netrc Da los nombres y contrasentildeas por defecto para ftp

rhosts Hace una cuenta accesible remotamente

forward Para redireccioacuten automaacutetica del correo

931 El fichero de configuracioacuten de Emacs

Si se usa emacs como editor principal entonces el fichero emacs es muy importante Sediscute con extensioacuten en el Capiacutetulo 8

932 Configuracioacuten por defecto del FTP

El fichero netrc permite tener ciertas configuraciones por defecto cada vez que searranca ftp Aquiacute hay un pequentildeo netrc de ejemplo

machine flosslifeuiucedu login larry password fishSticks

machine darwinlifeuiucedu login larry password fishSticks

machine getalifeuiucedu login larry password fishSticks

machine phylolifeuiucedu login larry password fishSticks

machine ninjalifeuiucedu login larry password fishSticks

machine indylifeuiucedu login larry password fishSticks

machine clonemcsanlgov login fogel password doorm

machine ospreymcsanlgov login fogel password doorm

machine ternmcsanlgov login fogel password doorm

machine altairmcsanlgov login fogel password doorm

machine dalekmcsanlgov login fogel password doorm

machine jujumcsanlgov login fogel password doorm

machine sunsiteuncedu login anonymous password larrycsoberlinedu

Cada liacutenea de netrc especifica un nombre de maacutequina un nombre de cuenta de acceso ausar por defecto con esa maacutequina y una contrasentildea Esto es muy uacutetil si se usa ftpcontinuamente y se estaacute harto de teclear el nombre de acceso y la contrasentildea en cada unoEl programa de ftp intentaraacute acceder automaacuteticamente usando los datos del fichero netrcsi se hace ftp a una de las maacutequinas listadas alliacute

Se puede obligar a ftp a ignorar el fichero netrc y no intentar acceder de maneraautomaacutetica arrancaacutendolo con la opcioacuten shyn ftp shyn

Hay que asegurarse de que el fichero netrc soacutelo es legible por el usuario Se puede usarel programa chmod para establecer los permisos de lectura Si otra gente puede leerlosignifica que pueden encontrar su contrasentildea de acceso a varios otros ordenadores Estoes un agujero en la seguridad tan grande como uno pueda tenerlo Como recomendacioacuten paraser cuidadoso ftp y otros programas que miran el fichero netrc no funcionaraacuten si lospermisos de lectura del fichero son incorrectos

Hay mucho maacutes sobre el fichero netrc de lo que se ha explicado aquiacute Cuando se tenga unaoportunidad hay que probar man netrc o man ftp

933 Permitiendo un acceso remoto sencillo a su cuenta

Si tiene un fichero rhosts en su directorio $HOME le permitiraacute usar programas en estamaacutequina de forma remota Por ejemplo se puede estar registrado en la maacutequinacsoberlinedu pero con un rhosts correctamente configurado en flosslifeuiucedu sepuede usar un programa en floss y presentar el resultado en cs sin tener que registrarseo teclear una contrasentildea frente a floss

El archivo rhosts se ve maacutes o menos asiacute

frobnozzcsknowledgeedu jsmith

aphroditeclassicshahvaahdedu wphilps

frobbohoolacom trixie

El formato es muy directo un nombre de maacutequina seguido de un nombre de usuarioSupongamos que este ejemplo es en realidad mi archivo rhosts en flosslifeuiuceduEsto significariacutea que puedo usar programas en floss y ver el resultado en cualquiera delas maacutequinas listadas siempre y cuando yo esteacute tambieacuten registrado como el usuariocorrespondiente a cada maacutequina cuando intento ejecutar el programa

El mecanismo exacto con el que uno usa un programa remoto es normalmente el programa rshSignifica remote shell(shell remoto) y lo que hace es iniciar un shell en la maacutequinaremota y ejecutar el comando especificado Por ejemplo

frobbo$ whoami

trixie

frobbo$ rsh flosslifeuiucedu ls ~

footxt mbox urlps snaxtxt

frobbo$ rsh flosslifeuiucedu more ~snaxtxt

[snaxtxt aparece pagina a pagina aqui]

El usuario trixie en flosslifeuiucedu que teniacutea el fichero rhosts de ejemplomostrado antes permite expliacutecitamente a trixie en frobbohoolacom usar programascomo si fuera trixie de floss

No hay porqueacute tener el mismo nombre de usuario en todas las maacutequinas para que rhostsfuncione Se puede usar la opcioacuten shyl con rsh para especificar a la maacutequina remota cualnombre de usuario se quiere usar para registrarse Si ese nombre existe en la maacutequinaremota y tiene un fichero rhosts con el nombre de la maacutequina local y el nombre deusuario correspondiente entonces la orden incluida con rsh se ejecutaraacute

frobbo$ whoami

trixie

frobbo$ rsh shyl larry flosslifeuiucedu ls ~

[Inserta aqui un listado de mi directorio en floss]

Esto funcionaraacute si el usuario larry en flosslifeuiucedu tiene un fichero rhostsque permite a trixie de frobbohooplacom usar programas en su cuenta Si son o no lamisma persona es irrelevante la uacutenica cosa importante son los nombres de usuario losnombres de las maacutequinas y la fila referente a floss en el rhosts de Larry Noacutetese queel fichero rhosts de Trixie en frobbo no importa soacutelo cuenta el de la maacutequina remota

Hay otras combinaciones que se pueden poner en un fichero rhosts por ejemplo se puededejar en blanco el nombre de usuario detraacutes del nombre de una maacutequina remota parapermitir a cualquier usuario de esa maacutequina que ejecute programas en la maacutequina localEsto es por supuesto un riesgo en la seguridad alguien podriacutea ejecutar remotamente unprograma que borre mis archivos por el simple hecho de tener una cuenta en ciertamaacutequina Si se va a hacer cosas como esta entonces hay que asegurarse de que el ficherorhosts es legible soacutelo por el usuario implicado y por nadie maacutes

934 Redireccioacuten de correo

Tambieacuten se puede tener un fichero forward el cual no es un fichero de configuracioacutenestrictamente hablando Si contiene direcciones de eshymail entonces todo el correo quellegue al usuario se redirigiraacute a esas direcciones Esto es uacutetil cuando se tienen cuentasen varios sistemas pero se quiere leer el correo desde un solo sitio

Hay una gran cantidad de otros ficheros de configuracioacuten posibles La cantidad exactavariaraacute de sistema a sistema y depende de los programas instalados Una manera de sabermaacutes es mirar todos los archivos en el directorio $HOME que empiecen por No es seguroque todos sean ficheros de configuracioacuten pero seguro que la mayoriacutea siacute lo es

94 Veamos algunos ejemplos

El ejemplo definitivo que puedo dar es mostrar un sistema Linux en funcionamiento Asiacuteque si teneacuteis acceso a Internet estaacuteis invitados a hacer telnet a flosslifeuiuceduRegistraacuteos como guest contrasentildea explorer y husmead por dentro Muchos de losarchivos de ejemplo se pueden encontrar en homekfogel pero tambieacuten hay otrosdirectorios de usuarios Sois libres de copiar cualquier cosa que se pueda leer Porfavor tened cuidado floss no es un sitio terriblemente seguro y ciertamente se puedeconseguir acceso como root si uno lo intenta lo suficiente Prefiero creer en laconfianza maacutes que en la vigilancia constante para mantener la seguridad

Capiacutetulo 10

Hablando con los demaacutes

Una nocioacuten fundamental de Usenet es que es una cooperativa

Cuando ya van para diez los antildeos que llevo en Usenet discrepo con loanterior La nocioacuten fundamental de Usenet es el insulto airado

Chuq Von Rospach

Los modernos sistemas operativos tipo Unix son muy buenos a la hora de hablar con otrasmaacutequinas y funcionar en red Dos maacutequinas Unix diferentes pueden intercambiar informacioacutende muchas muchas maneras distintas Este capiacutetulo va a intentar contar coacutemo se puedesacar provecho de esta gran facilidad para la comunicacioacuten

Trataremos de cubrir el correo electroacutenico las noticias de Usenet y diversas utilidadesbaacutesicas de comunicaciones de Unix

101 Correo electroacutenico

Una de las facilidades maacutes populares que ofrece Unix de forma estaacutendar es el correoelectroacutenico

Con eacutel evitamos el habitual folloacuten de buscar un sobre una hoja de papel un laacutepiz unsello y un servicio postal A cambio debemos enfrentarnos al folloacuten de pelear con elordenador

1011 Enviar correo

Todo lo que hay que hacer es teclear mail nombre y escribir el mensaje

Por ejemplo supongamos que queremos enviar correo a un usuario que se llama sam

homelarry$ mail sam

Subject Documentacion del usuario

Solo estoy probando el sistema de correo

[Ctrlshyd]

homelarry$

homelarry$

El programa mail es muy simple Como cat acepta texto de la entrada estaacutendar liacutenea aliacutenea hasta que recibe un caraacutecter de finshydeshytexto como uacutenico caraacutecter en una liacutenea|_Ctrlshyd_| Asiacute para enviar nuestro mensaje tuvimos que pulsar |_Intro_| y despueacutes|_Ctrlshyd_| Usar mail es la manera maacutes raacutepida de mandar correo y es bastante uacutetil cuandose usa con redireccioacuten de entrada yo salida Por ejemplo si quisieacuteramos enviar porcorreo electroacutenico el fichero report1 a Sam podriacuteamos escribir mail sam lt report1 o incluso sort report1 _ mail sam

Sin embargo la desventaja de usar mail para enviar correo es su primitiviacutesimo editoriexclNo se puede cambiar ni una liacutenea una vez se ha pulsado |_Intro_| Asiacute que yo recomiendomandar correo (cuando no se use redireccioacuten) con el modo mail del Emacs El tema se trataen la Seccioacuten 810

1012 Leer el correo

shy mail [nombre]

El programa mail ofrece una forma algo liosa de leer el correo Si se teclea mail sinparaacutemetros apareceraacute lo siguiente

homelarry$ mail

No mail for larry

homelarry$

No mail for larry significa No hay correo para larry

Me voy a enviar correo a miacute mismo para poder utilizar el lector

homelarry$ mail larry

Subject Sapos

Y ranas

EOT

homelarry$ echo culebras _ mail larry

homelarry$ mail

Mail version 55 6190 Type for help

usrspoolmaillarry 2 messages 2 new

gtN 1 larry Tue Aug 30 1811 10211 Sapos

N 2 larry Tue Aug 30 1812 9191

amp

El siacutembolo peticioacuten de oacuterdenes del programa mail es un et a la inglesa (amp) Acepta unpar de oacuterdenes sencillas y muestra una breve pantalla de ayuda si se pulsa seguidode |_Intro_| Las oacuterdenes baacutesicas de mail son

t listashydeshymensajes Mostrar los mensajes en la pantalla

d listashydeshymensajes Borrar los mensajes

s listashydeshymensajes fichero Guardar los mensajes en fichero

r listashydeshymensajes Responder a los mensajes_esto es comenzar a escribir unnuevo mensaje dirigido a quien fuera que envioacute los mensajes referidos

q Salir y guardar los mensajes que no hayan sido borrados en un ficherollamado mbox en el directorio raiacutez del usuario

iquestQueacute es una listashydeshymensajes Consiste en una lista de nuacutemeros separados por espacios oincluso un rango de los mismos como 2shy4 (lo que es equivalente a 2 3 4) Asiacute mismo sepuede introducir el nombre del remitente de este modo la orden t sam mostraraacute todos losmensajes provenientes de Sam Si se omite la listashydeshymensajes se supone que la orden serefiere al uacuteltimo mensaje mostrado

Leer el correo con el programa mail presenta varios inconvenientes El primero es que siun mensaje es maacutes largo que la pantalla iexclel programa mail no se detiene Habraacute queguardar el mensaje en un fichero y usar more sobre eacutel despueacutes El segundo es que noofrece una buena interfaz para manejar el correo antiguo cuando se quiere guardar elcorreo para leerlo maacutes tarde

Emacs tambieacuten permite leer el correo con rmail pero este libro no lo cubreAdicionalmente la mayoriacutea de los sistemas Linux vienen con algunos lectores de correoadicionales ademaacutes de mail como elm o pine

102 Noticias maacutes que de sobra

103 Localizar a la gente

El programa finger permite obtener informacioacuten de otros usuarios del sistema y de todo elmundo Sin duda el programa finger recibioacute este nombre por los anuncios de la ATampT queexhortaban a la gente a salir y tocar a alguien Dado que el Unix tiene sus oriacutegenes enla ATampT probablemente eso le hiciera gracia al autor

shy finger [shyslpm] [usuario][maquina]

Los paraacutemetros opcionales de finger pueden resultar algo liosos La verdad es que no estan difiacutecil Se puede solicitar informacioacuten de un usuario local (sam) informacioacuten deotra maacutequina (lionsden) informacioacuten sobre un usuario remoto (samlionsden) osimplemente informacioacuten sobre la maacutequina local (nada)

Otra caracteriacutestica es que si se pide informacioacuten sobre un usuario y no hay ninguacuten nombrede cuenta que coincida exactamente con el dado trataraacute de emparejar el nombre real conlo que se haya especificado Eso significa que si ejecutamos finger Greenfield noscontestaraacute que existe la cuenta sam de Sam Greenfield

homelarry$ finger sam

Login sam Name Sam Greenfield

Directory homesam Shell bintcsh

Last login Sun Dec 25 1447 (EST) on tty2

No Plan

homelarry$ finger greenfiegaussrutgersedu

[gaussrutgersedu]

Login name greenfie In real life Greenfie

Directory gaussu1greenfie Shell bintcsh

On since Dec 25 151941 on ttyp0 from tiptopshyslipshy6439

13 minutes Idle Time

No unread mail

Project Debes estar bromeando de que proyecto me hablas

No Plan

homelarry$ finger

Login Name Tty Idle Login Time Office Office Phone

larry Larry Greenfield 1 351 Dec 25 1250

larry Larry Greenfield p0 Dec 25 1251

homelarry$

La opcioacuten shys hace que finger utilice siempre la forma abreviada (la que se obtienenormalmente cuando se hace finger a una maacutequina) y la opcioacuten shyl hace que use siemprela forma larga incluso al hacer finger a una maacutequina La opcioacuten shyp hace que finger nomuestre los ficheros forward plan ni project y la shym hace que cuando se hapedido informacioacuten sobre un usuario soacutelo de informacioacuten de un nombre de cuenta que nointente emparejar el nombre que se le da con un nombre real

1031 Planes y proyectos

Pero iquestqueacute es eso de plan y project Son ficheros que existen en el directorio raiacutez deun usuario y que se muestran cuando se le hace finger Cada uno puede crear sus propiosficheros plan y project la uacutenica restriccioacuten es que soacutelo se muestra la primera liacuteneadel fichero project Ademaacutes todo el mundo debe tener permisos de buacutesqueda (la x deejecucioacuten) del directorio raiacutez del usuario en cuestioacuten (chmod a+x ~) y debe serposible para todo el mundo leer los ficheros plan y project (chmod a+r ~plan~project )

104 Uso remoto de sistemas

shy telnet sistemashyremoto

La forma maacutes habitual de usar un sistema Unix remoto es con telnet telnet es normalmenteun programa muy sencillo de usar

homelarry$ telnet lionsden

Trying 12823641

Connected to lionsden

Escape character is ^]

lionsden login

Como puede verse despues de teclear telnet se nos presenta un mensaje de acceso alsistema remoto Podemos introducir cualquier nombre de usuario (iexclsiempre que conozcamosla contrasentildea) y despueacutes usar el sistema remoto casi como si estuvieacuteramos sentados alliacute

La manera normal de salir de telnet es hacer logout en el sistema remoto Otra forma estecleando la secuencia de escape que (como en el ejemplo de arriba) es habitualmente||_Ctrlshy]_||

Esto nos presenta un nuevo siacutembolo del peticioacuten de oacuterdenes telnetgt Entonces podemosteclear quit y |_Intro_| y la conexioacuten con el otro sistema seraacute cerrada y el programatelnet finalizaraacute (Si cambiaacuteramos de idea simplemente pulsando |_Intro_| volveriacuteamos alsistema remoto)

Si se estaacuten usando las X se puede crear un nuevo xterm para el otro sistema al queestamos saltando Con la orden xterm shytitle lionsden shye telnet lionsden amp crearemosuna nueva ventana xterm que automaacuteticamente ejecute telnet (Si eso se hace confrecuencia probablemente seraacute deseable crear un alias o un programa de shell que lo hagaautomaacuteticamente)

105 Intercambio de ficheros

shy ftp sistemashyremoto

La manera usual de intercambiar ficheros entre sistemas Unix es ftp acroacutenimo queproviene de file transfer protocol (protocolo de transferencia de ficheros) Trasejecutar la orden ftp se nos pediraacute que nos identifiquemos de forma muy parecida a contelnet Despueacutes de hacerlo aparece un siacutembolo de peticioacuten de oacuterdenes especial el siacutemboloftp

La orden cd funciona de la manera habitual pero en el sistema remoto cambia dedirectorio en el otro sistema De la misma forma la orden ls lista los ficheros en elsistema remoto

Las dos oacuterdenes maacutes importantes son get y put get transfiere un fichero del sistemaremoto al local y put lleva un fichero del sistema local al remoto Ambas oacuterdenes tienenefecto en el directorio local en el que se haya arrancado ftp y en el directorio remotoen el que se esteacute en ese momento (que se puede haber cambiado con la orden cd )

Un problema habitual con ftp es la distincioacuten entre ficheros de texto y binarios ftp esun protocolo muy antiguo y antes teniacutea ventajas suponer que los ficheros que setransferiacutean eran de texto El comportamiento por omisioacuten de algunas versiones de ftp eseacutese lo que significa que los programas que se enviacuteen o reciban se corromperaacuten Porseguridad conviene usar la orden binary antes de empezar a transferir ficheros

Para salir de ftp se usa la orden bye

106 Viajando por la telarantildea

La Telarantildea Mundial (World Wide Web) o WWW es un uso muy popular de la InternetConsiste en un conjunto de paacuteginas cada una con su propia URL_Localizador Uniforme deRecursos asociado

Los URLs son simpaacuteticas secuencias de caracteres de la forma lthttpwwwrutgersedugtLas paacuteginas estaacuten por lo general escritas en HTML (Lenguaje de Composicioacuten deHipertexto) El HTML permite al autor de un documento enlazar ciertas palabras frases oimaacutegenes con otros documentos que se hallen en cualquier lugar de la telarantildea Cuando unusuario lee un documento puede moverse raacutepidamente a otro picando en una palabra clave oen un botoacuten y se le mostraraacute el otro documento en cuestioacuten que posiblemente esteacute a milesde kiloacutemetros del primero

shy netscape [url]

El navegador maacutes popular de Linux es netscape se trata de un navegador comercial quevende (y regala) Netscape Communications Corporation netscape soacutelo funciona con las X

netscape trata de ser tan faacutecil de usar como sea posible y utiliza el conjunto de widgetsMotif para lograr una apariencia muy a lo Microsoft Windows El conocimiento baacutesico parapoder usar netscape es que las palabras azules subrayadas son enlaces asiacute como muchas delas imaacutegenes (Se puede averiguar cuales imaacutegenes son enlaces picando en ellas) Picandoen esas palabras con el botoacuten izquierdo del ratoacuten aparece una nueva paacutegina

Linux soporta muchos navegadores maacutes incluyendo el navegador original lynx lynx es unnavegador orientado a texto_no muestra ninguna imagen que es con lo que actualmente serelaciona al Web pero funciona sin las X

shy lynx [url]

Es un poco maacutes complicado aprender a usar lynx pero normalmente se le coge el trucodespueacutes de jugar un rato con las flechas del cursor Las flechas hacia arriba y haciaabajo nos mueven entre los enlaces de una paacutegina La flecha hacia la derecha sigue elenlace seleccionado (resaltado) La flecha hacia la izquierda vuelve a la paacuteginaanterior Para salir de lynx se debe pulsar |_q_| lynx tiene muchas oacuterdenes maacutesconsuacuteltese la paacutegina del manual

Capiacutetulo 11

Comandos divertidos

Bueno la mayoriacutea de la gente que tiene que ver con los comandos de UNIX expuestos eneste capiacutetulo no estaraacuten de acuerdo con este tiacutetulo iexclQue diablos Se me ha ensentildeado queel interfaz del Linux es muy estaacutendar y ahora tenemos un grupo de comandos cada unotrabajando de una manera completamente diferente Nunca recordareacute todas esas opciones iquestydice que son divertidos

Siacute Vd ha visto un ejemplo del humor de los hackers1 Ademaacutes miacuterelo desde el ladopositivo no hay comandos del MSshyDOS equivalentes a eacutestos Si los necesita tiene queadquirirlos por separado y nunca sabraacute como seraacute su interfaz Aquiacute hay un uacutetil (yeconoacutemico) valor antildeadido iexcliexclasiacute que disfruacutetelo

El conjunto de comandos explicados en este capiacutetulo cubre find que permite al usuariobuscar grupos de ficheros especificados dentro del aacuterbol de directorios tar uacutetil paraempaquetar alguacuten archivo para ser enviado o soacutelo salvado dd el multicopista de bajonivel y sort el cual siacute clasifica ficheros Una uacuteltima condicioacuten estos comandosno estaacuten bajo ninguacuten concepto estandarizados y si bien podriacuteamos encontrar un nuacutecleo deopciones comunes en todos los sistemas IX las versiones (de GNU) que se explican maacutesabajo y Vd puede encontrar en su sistema Linux usualmente poseen muchas maacutescapacidades Por tanto si Vd planea usar otros sistemas operativos UNIX por favor noolvide comprobar la paacutegina del manual del sistema en cuestioacuten para aprender las quizaacutes notan pequentildeas diferencias

111 find el buscador de ficheros

1111 Generalidades

Entre los diversos comandos vistos hasta aquiacute habiacutea algunos que permitiacutean al usuariobajar recursivamente el aacuterbol del directorio para llevar a cabo alguna accioacuten losejemplos canoacutenicos son ls shyR y rm shyR Bien find es el comando recursivo Cada vezque piense Bueno tengo que hacer tal cosa con todos esos ficheros en mi propiaparticioacuten hariacutea mejor en pensar en usar find En cierto sentido el hecho que findencuentre ficheros es solo un efecto secundario su ocupacioacuten real es evaluar

_____________________________________________

1 NT La palabra Hacker en este contexto se refiere a una persona con profundosconocimientos de informaacutetica

La estructura baacutesica del comando es como sigue

shy find ruta [ ] expresioacuten [ ]

Esto es al menos en la versioacuten de GNU otras versiones no permiten especificar maacutes queuna ruta y ademaacutes es muy infrecuente la necesidad de hacer tal cosa La explicacioacutenburda de la sintaxis del comando es bastante simple Vd indica desde doacutende quiereempezar la buacutesqueda (la parte de la ruta con el find de GNU puede omitir esto y seraacute

tomado por defecto el directorio en uso ) y que clase de buacutesqueda quiere realizar (laparte de la expresioacuten)

El comportamiento estaacutendar del comando es un poco engantildeoso por lo que maacutes vale tenerloen cuenta Supongamos que en su directorio principal de usuario existe un directoriollamado basura el cual contiene un fichero foobar Vd felizmente escribe find shynamefoobar (lo que como puede adivinar busca ficheros llamados foobar) y obtiene nadamaacutes que otra vez el prompt El problema reside en el hecho de que find es por defecto uncomando silencioso soacutelo devuelve 0 si la buacutesqueda fue completada (con o sin haberencontrado algo) o un valor distinto de cero si hubiera habido alguacuten problema Esto noocurre con la versioacuten que Vd puede encontrar en el Linux pero de todas maneras es uacutetilrecordarlo

1112 Expresiones

La parte de la expresioacuten puede ser dividida en cuatro grupos diferentes de palabrasclave opciones tests acciones y operadores Cada uno de ellos puede devolver un valorverdaderofalso junto con un efecto secundario La diferencia entre los grupos semuestra a continuacioacuten

opciones afecta a la funcioacuten general de find maacutes que al procesamiento de un solofichero Un ejemplo es shyfollow el cual instruye a find para seguir enlaces simboacutelicosen vez de soacutelo presentar el nodoshyi Siempre devuelven verdadero

tests son verdaderos tests (por ejemplo shyempty comprueba si el fichero estaacute vaciacuteo) ypuede devolver verdadero o falso

acciones tienen tambieacuten un efecto secundario sobre el nombre del fichero consideradoPueden asimismo devolver verdadero o falso

operadores no devuelven realmente un valor (convencionalmente pueden ser consideradoscomo verdaderos) y se usan para construir expresiones sinteacuteticas Un ejemplo es shyor el cual hace la OR loacutegica de las dos subexpresiones a su lado Note que cuando seyuxtaponen expresiones estaacute involucrada una shyand

Debe advertir que find depende del inteacuterprete de comandos para tener la liacutenea de comandosanalizada sintaacutecticamente esto significa que todas las palabras clave deben serintroducidas entre espacios en blanco y ademaacutes que hay un montoacuten de caracteres bonitosque deberaacuten precederse de escape si no seriacutean destrozados por el propio inteacuterprete decomandos Cada viacutea de escape (barra invertida simples y dobles comillas) estaacute bien enlos ejemplos las palabras clave de un solo caraacutecter se sentildealizaraacuten en general mediantecon una barra invertida porque es la manera maacutes simple (al menos en mi opinioacuten iexclY soyyo quien estaacute escribiendo estas notas)

1113 Opciones

Aquiacute estaacute la lista de todas las opciones conocidas de la versioacuten GNU de find Recuerdeque siempre devuelven verdadero

shydaystart mide el tiempo transcurrido no desde hace 24 horas si no desde la uacuteltimamedianoche

Un auteacutentico hacker probablemente no entenderaacute la utilidad de tal opcioacuten pero untrabajador que programa de ocho a cinco si lo apreciaraacute

shydepth procesa el contenido de cada directorio antes que el directorio en si A decirverdad no conozco muchos usos de esto aparte de una emulacioacuten del comando rm shyF (por

supuesto Vd no puede borrar un directorio antes de que todos sus ficheros sean borradostambieacuten

shyfollow respeta (es decir sigue) los enlaces simboacutelicos Implica la opcioacuten shynoleaf ver abajo

shynoleaf desactiva una optimizacioacuten que dice Un directorio contiene dos subdirectoriosmenos que su cuenta de enlaces riacutegidos2 Si el mundo fuera perfecto todos losdirectorios seriacutean referenciados por cada uno de sus subdirectorios (a causa de la opcioacuten) como dentro de siacute mismo y por su nombre real desde su directorio padre

Esto significa que cada directorio debe ser referenciado al menos dos veces (una por siacutemismo otra por su directorio padre) y cualquier referencia adicional es porsubdirectorios En la praacutectica sin embargo los enlaces simboacutelicos y los sistemas defichero distribuidos3 pueden alterar esto Esta opcioacuten hace que find funcione ligeramentemaacutes despacio pero debe dar los resultados esperados

shymaxdepth niveles shymindepth niveles donde niveles es un entero no negativo Indicanrespectivamente que a lo sumo o que al menos niveles de directorios deberiacutean explorarseUn par de ejemplos son obligados shymaxdepth 0 indica que el comando deberiacutea realizarsesoacutelo sobre los argumentos de la liacutenea de comandos es decir sin bajar recursivamente elaacuterbol de directorios shymindepth 1 inhibe el procesamiento del comando para losargumentos en la liacutenea de comandos pero se consideran todos los otros ficheros debajo

shyversion imprime la versioacuten en uso del programa

shyxdev el cual es un nombre engantildeoso instruye a find para no cruzarse de dispositivo4es decir no cambiarse de sistema de ficheros Es muy uacutetil cuando se tiene que buscaralgo en el sistema de ficheros raiacutez en muchas maacutequinas es una particioacuten algo pequentildeapero sino iexclun find buscariacutea en la estructura entera Podemos asiacute evitar lossistemas de archivo que no son promisorios

_____________________________________________

2 NT hard link count

3 Los sistemas de fichero distribuidos permiten a los ficheros mostrarse como si fueranlocales a una maacutequina cuando realmente estaacuten situados en alguacuten otro lugar

4 NT to cross device

1114 Test

Los dos primeros test son muy simples de comprender shyfalse siempre devuelve falsomientras que shytrue siempre devuelve verdadero Otros test que no necesitan laespecificacioacuten de un valor son shyempty el cual devuelve verdadero si el fichero estaacutevaciacuteo y el par shynouser shynogroup los cuales devuelven verdadero en el caso queninguna entrada en etcpasswd o etcgroup cuadre con el identificador de usuariogrupodel propietario del fichero Veamos un problema comuacuten en los sistemas multiusuario seborra un usuario pero los ficheros pertenecientes a eacutel permanecen en la parte maacutesextrantildea de los sistemas de ficheros y debido a las leyes de Murphy ocupan mucho espacio

El par de test que hemos visto en uacuteltimo lugar nos permitiraacute encontrar esos archivos Porsupuesto es posible buscar un usuario o grupo especiacutefico Los test son shyuid nn y shygidnn Desafortunadamente no es posible dar directamente el nombre del usuario sino quees necesario usar el identificador numeacuterico nn

Ademaacutes estaacute permitido usar las formas +nn que significa un valor estrictamente maacutesgrande que nn y shynn que significa un valor estrictamente maacutes pequentildeo que nn Estoes bastante estuacutepido en el caso de identificadores de usuario5 pero se volveraacute praacutecticocon otros test

Otra opcioacuten uacutetil es shytype c la cual devuelve verdadero si el fichero es del tipoespecial de caraacutecter Los mnemoacutenicos para las posibles selecciones son las mismas letrasque se encuentran en ls entonces tenemos bloque cuando el fichero es uno especial debloque directorio pipes para tuberiacuteas designadas6 link para enlaces simboacutelicos ysocketssockets7 Los ficheros regulares se indican con file

Un test relacionado es shyxtype que es similar a shytype excepto en el caso de enlacessimboacutelicos

Si se ha proporcionado la opcioacuten shyfollow se examina el enlace en lugar del ficheroal que se apunta El test shyfstype type no tiene nada que ver en este caso lo que seexamina es el tipo del sistema de ficheros Creo que la informacioacuten se consigue delfichero etcmtab el uacutenico que presenta los sistemas de ficheros montados estoy seguroque los tipos nfs tmp msdos y ext2 estaacuten entre los reconocidos

Los test shyinum nn y shylinks nn examinan si el fichero tiene nuacutemero de nodoshyi nn onn enlaces mientras que shysizenn es verdadero si el fichero tiene nn bloques de 512bytes asignados (Bueno no precisamente para ficheros disgregados los bloques noasignados tambieacuten se cuentan)

Como hoy en diacutea el resultado de ls shys no siempre se mide en trozos de 512 bytes (Linuxpor ejemplo usa 1 kbyte como la unidad) es posible adicionar a nn el caracter b elcual significa contar en bytes o k contar en kilobytes

Los bits de permiso son examinados a traveacutes del test shyperm mode Si el modo no estaacuteantecedido por un signo entonces los bits de permiso del fichero deben cuadrarexactamente con ellos

Un shy al principio significa que todos los bits de permiso deben ser puestos a uno perono hace suposiciones sobre los otros un + al principio se satisface soacutelo si cualquierade los bits estaacute a uno

_____________________________________________

5 NT UIDs

6 NT named pipes

7 NT enchufe

iexclUps Olvideacute decir que el modo se escribe en octal o simboacutelicamente como se usa enchmod El proacuteximo grupo de test estaacute relacionado con el tiempo que hace que se hautilizado un fichero por uacuteltima vez Esto viene bien cuando un usuario ha llenado suespacio ya que usualmente hay muchos ficheros que no usaba desde hace antildeos y cuyosignificado ha olvidado El problema es localizarlos y find es la uacutenica esperanza a lavista shyatime nn es verdadero si la uacuteltima vez que se accedioacute al fichero fue hace nndiacuteas shyctime nn si el estado del fichero fue cambiado por uacuteltima vez hace nn diacuteas porejemplo con un chmod y shymtime nn si el fichero fue modificado por uacuteltima vez hace nndiacuteas Algunas veces Vd necesita una marca de tiempo 8 maacutes precisa el test shynewerarchivo se satisface si el fichero considerado ha sido modificado maacutes tarde que elarchivo Por lo tanto Vd soacutelo tiene que usar touch con la fecha deseada y ya estaacute Elfind de GNU antildeade los test shyanewer y shycnewer los cuales se comportan de una manerasimilar y los test shyamin shycmin y shymmin que cuentan el tiempo en minutos en vezde periacuteodos de 24 horas

Por uacuteltimo pero no menos importante el test que yo uso maacutes a menudo shyname patroacuten esverdadero si el nombre del fichero concuerda exactamente con patroacuten el cual es maacutes omenos el uacutenico que se usariacutea en un ls estaacutendar (iquestPor queacute maacutes o menos Porque porsupuesto Vd tiene que recordar que todos los paraacutemetros son procesados por elinteacuterprete de comandos y esos encantadores metacaracteres sufren una expansioacuten Asiacute untest como shyname foo no devolveraacute lo que Vd desea y Vd deberiacutea escribir cualquierade los dos shyname foo o shyname foo Este es probablemente uno de los maacutes comuneserrores cometidos por usuarios descuidados asiacute que escriacutebalo en letras GRANDES en supantalla Otro problema es que como con ls no se reconocen los puntos al principio delnombre del archivo Para hacer frente a esto puede usar el test shypath patroacuten el cualno se preocupa acerca de los puntos y barras inclinadas cuando compara la ruta delfichero considerado con patroacuten

1115 Acciones

Hemos dicho que las acciones son aquellas que realmente hacen algo Bueno shyprune maacutesbien no hace nada es decir al descender el aacuterbol de directorios (a menos que se leagregue shydepth ) Se la encuentra usualmente junto con shyfstype para elegir entrevarios sistemas de ficheros a aquellos que deberiacutean examinarse

Las otras acciones pueden ser divididas en dos amplias categoriacuteas Acciones que imprimenalgo La maacutes obvia de estas y en realidad la accioacuten por defecto de find es shyprintque imprime el nombre del(os) fichero(s) que concuerde(n) con las otras condiciones en laliacutenea de comandos y devuelve verdadero Una variante sencilla de shyprint es shyfprintarchivo en la cual se usa archivo en vez de la salida estaacutendar otra es shyls listael fichero en uso en el mismo formato que ls shydils shyprintfformato se comporta maacuteso menos como la funcioacuten de C printf() para que se pueda especificar que formato deberiacuteatener la salida y shyfprintf archivo formato hace lo mismo pero escribieacutendolo enarchivo Estas acciones tambieacuten devuelven verdadero

_____________________________________________

8 NT timestamp

Acciones que ejecutan algo Su sintaxis es un poco extrantildea y su uso estaacute muy extendidopor lo que por favor consideacuterelas

shyexec comando ejecuta el comando y la accioacuten devuelve verdadero si el estadoretornado por el comando es 0 lo que significa que la ejecucioacuten fue correcta La razoacutenpara el es bastante loacutegica find no sabe donde termina el comando y el truco deponer la accioacuten ejecutable al final del comando no es aplicable Bueno la mejor manerapara sentildealar el final del comando es usar el caracter que usa el inteacuterprete de comandospara este fin que es pero por supuesto un punto y coma solo en la liacutenea decomandos seriacutea comido por el inteacuterprete de comandos y nunca llegariacutea a find asiacute quetienen que ser precedidos de escape La segunda cosa a recordar es como especificar elnombre del fichero en uso dentro del comando ya que probablemente Vd hizo todo elesfuerzo al construir la expresioacuten para hacer algo y no soacutelo para ver la hora Esto sehace por medio de la cadena de caracteres Algunas versiones antiguas de findrequieren que coloque las llaves entre espacios en blanco (no muy praacutectico si Vdnecesita por ejemplo la ruta entera y no soacutelo el nombre del fichero) pero con el findde GNU podriacutea ser cualquier lugar de la cadena de caracteres que compone el comando iquestYno deberiacutea estar precedido de escape o entrecomillado seguramente se estaraacutepreguntando Asombrosamente yo nunca tuve que hacer esto ni bajo tcsh ni bajo bash (shno considera shy y como caraacutecteres especiales asiacute que no es ni mucho menos un problema)Mi idea es que los inteacuterpretes de comandos saben que shy no es una opcioacuten que tengasentido por tanto no intentan expandirlas afortunadamente para find que puede obtenerlaintacta shyok comando se comporta como shyexec con la diferencia que para cadafichero seleccionado se pregunta al usuario que confirme el comando si la respuestaempieza por y o Y se ejecuta de otra manera no y la accioacuten devuelve falso

1116 Operadores

Hay una cierta cantidad de operadores aquiacute hay una lista en orden de prioridaddecreciente

( expr )

Fuerza el orden de prioridad Los pareacutentesis deben por supuesto estar entrecomillas ya que tambieacuten son muy significativos para el inteacuterprete decomandos

expr

shynot expr

Cambia el verdadero valor de la expresioacuten esto es si expr es verdadera sevuelve falsa El signo de exclamacioacuten no tiene que ser precedido de escapeporque estaacute seguido por un espacio en blanco

expr1 expr2

expr1 shya expr2

expr1 shyand expr2

Todas corresponden con la operacioacuten loacutegica AND El caso maacutes comuacuten es elprimero en el cual estaacute impliacutecita expr2 no se evaluacutea si expr1 es falsa

expr1 shyo expr2

expr1 shyor expr2

corresponden a la operacioacuten loacutegica OR expr2 no es evaluada si expr1 esverdadera

expr1 expr2

es la declaracioacuten de lista ambas expr1 y expr2 se evaluacutean (junto con todoslos efectos secundarios iexclpor supuesto) y el valor final de la expresioacuten esel de expr2

1117 Ejemplos

Siacute find tiene demasiadas opciones lo se Pero hay un montoacuten de casos preparados quevalen la pena recordar porque son usados muy a menudo Veamos algunos de ellos

$ find shyname foo shyprint

encuentra todos los nombres de fichero que empiezan con foo Si la cadena de caracteresestaacute incluida en el nombre probablemente tiene maacutes sentido escribir algo como fooen vez de foo

$ find usrinclude shyxtype f shyexec grep foobar

devnull shy

Es un grep ejecutado recursivamente que empieza del directorio usrinclude En estecaso estamos interesados tanto en ficheros regulares como en enlaces simboacutelicos queapuntan a ficheros regulares por tanto el test shyxtype Muchas veces es maacutes simpleevitar especificarlo especialmente si estamos bastante seguros cuales ficheros binariosno contienen la cadena de caracteres deseada

(iquestY por queacute el devnull en el comando Es un truco para forzar al grep a escribir elfichero del nombre donde se ha encontrado un emparejamiento El comando grep se aplica acada fichero con una invocacioacuten diferente y por tanto no cree que sea necesario mostrara la salida el nombre del fichero Pero ahora hay dos ficheros esto es iexclel activo ydevnull Otra posibilidad podriacutea ser redirigir la salida9 del comando a xargs y dejarlellevar a cabo el grep Yo lo intenteacute e hice pedazos completamente mi sistema de ficheros(junto con estas notas que estoy intentando recuperar a mano shy( )

$ find shyatime +1 shyfstype ext2 shyname core

shyexec rm shy

Es un trabajo claacutesico para la tabla de tareas preplaneadas Borra todos los ficherosllamados core en el sistema de ficheros del tipo ext2 al cual no se ha accedido en lasuacuteltimas 24 horas Es posible que alguien quiera usar los ficheros de imagen de memoria10para realizar un volcado post mortem pero nadie podriacutea recordar lo que estuvo haciendodespueacutes de 24 horas

$ find home shyxdev shysize +500k shyls gt piggies

_____________________________________________

9 NT to pipe

10 NT core file

Es uacutetil para ver quieacuten tiene esos archivos que atascan el sistema de ficheros Note eluso de shyxdev como soacutelo estamos interesados en un sistema de ficheros no es necesariodescender otro sistema de ficheros montado bajo home

1118 Una uacuteltima palabra

Tenga en mente que find es un comando que consume mucho tiempo ya que tiene que accedera cada uno de los nodosshyi del sistema para realizar su operacioacuten Por lo tanto es sabiocombinar cuantas operaciones sean posibles en una uacutenica invocacioacuten de find especialmenteen las tareas de mantenimiento interno que usualmente se administran mediante un

trabajo de la tabla de tareas planificadas Un ejemplo informativo es el siguientesupongamos que queremos borrar los ficheros que acaban en BAK y cambiar la proteccioacuten detodos los directorios a 771 y todos los ficheros que acaban en sh a 755 Y quizaacutestengamos montado el sistema de ficheros NFS en un enlace telefoacutenico y no queramosexaminar los ficheros ahiacute (iquestPor queacute escribir tres comandos diferentes La manera maacutesefectiva para realizar la tarea es eacutesta

$ find ( shyfstype nfs shyprune ) shyo

( shytype d shya shyexec chmod 771 shy ) shyo

( shyname BAK shya shyexec binrm shy ) shyo

( shyname sh shya shyexec chmod 755 shy )

Parece feo (iexcly con mucho abuso de barras invertidas) pero miraacutendolo fijamente revelaque la loacutegica subyacente es bastante sencilla Recuerde lo que se hace es una evaluacioacutenverdaderofalso el comando introducido es soacutelo un efecto secundario Pero esto significaque se ejecuta soacutelo si find puede evaluar la parte ejecutable de la expresioacuten esto essoacutelo si la parte izquierda de la subexpresioacuten se evaluacutea como verdadera Asiacute si porejemplo el fichero considerado en el momento es un directorio entonces el primerejecutable se evaluacutea y el permiso del nodoshyi se cambia a 771 de otra manera olvida todoy pasa a la siguiente subexpresioacuten Probablemente es maacutes faacutecil verlo en la praacutectica queescribirlo pero despueacutes de un momento llegaraacute a ser una cosa natural para Vd

112 tar el archivador en cinta

1121 Introduccioacuten

1122 Opciones principales

1123 Modificadores

1124 Ejemplos

113 dd el duplicador de datos

La leyenda dice que allaacute lejos en las nieblas del tiempo cuando el primer UNIX fuecreado sus desarrolladores necesitaron un comando de bajo nivel para copiar datos entredispositivos Como teniacutean prisa decidieron tomar prestada la sintaxis usada en lasmaacutequinas IBMshy360 y desarrollar maacutes tarde un interfaz consistente con la de los otroscomandos El tiempo pasoacute y todos se acostumbraron tanto con la manera extrantildea de usar ddque ya ha quedado asiacute No se si es verdad pero es una bonita historia para contar

1131 Opciones

A decir verdad dd no es totalmente distinto de los otros comandos de UNIX es enrealidad un filtro esto es lee por defecto de la entrada estaacutendar y escribe en lasalida estaacutendar Por tanto si Vd escribe soacutelo dd la terminal se queda quietaesperando una entrada y un |_CtrlshyC_| es la uacutenica cosa con sentido a teclear (paracortarlo)

La sintaxis del comando es como sigue

shy dd [if=archivo_entrada] [of=archivo_salida] [ibs=cant_bytes] [obs=cant_bytes]

[bs=cant_bytes] [cbs=cant_bytes] [skip=cant_bloques]

[seek=cant_bloques] [count=cant_bloques] [conv=ascii ebcdic ibm block

unblock lcase ucase swab noerror notrunc sync]

Todas las opciones son de la forma opcioacuten=valor No se permite ninguacuten espacio ni antes nidespueacutes del signo de igual esto soliacutea ser molesto porque el inteacuterprete de comandos noexpandiacutea un nombre de fichero en esta situacioacuten pero la versioacuten de bash presente enLinux es bastante inteligente asiacute que Vd no tiene que preocuparse por eso Es tambieacutenimportante recordar que todos los valores numerables (cant_bytes y cant_bloques citadosarriba) pueden ser seguidos por un multiplicador

Las opciones posibles son b para bloque el cual multiplica por 512 k para kilobytes(1024) w para palabra (2) y xm que multiplica por m

El significado de las opciones se explica a continuacioacuten

if=archivo_entrada y of=archivo_salida instruye a dd a respectivamente leerde archivo_entrada y escribir a archivo_salida En el uacuteltimo caso el ficherode salida es truncado al valor dado por seek o si la palabra clave noestaacute presente a 0 (esto es borrado) antes de realizar la operacioacuten Miretambieacuten la opcioacuten notrunc

ibs=nn y obs=nn especifican cuantos bytes deben ser leiacutedos o escritos a lavez Creo que por defecto es 1 bloque esto es 512 bytes pero no estoy muyseguro de ello desde luego funciona de esa manera con ficheros planos11Estos paraacutemetros son muy importantes cuando se usa dispositivos especialescomo entrada o salida por ejemplo leer de la red deberiacutea establecer ibs a10 kbyte mientras que una disquetera 12 de 35de alta densidad tiene comotamantildeo natural de bloque 18 kbyte Fallar al establecer estos valores podriacutearepercutir no soacutelo a largo plazo al llevar a cabo el comando sino inclusiveen errores de expiracioacuten de plazo asiacute que tenga cuidado

bs=nn tanto lee y escribe nn bytes a la vez Este no hace caso a las palabrasclave ibs y obs

cbs=nn establece el buffer de conversioacuten a nn bytes Este buffer se usacuando se traduce de ASCII a EBCDIC o desde un dispositivo no ablocado a unoablocado13 Por ejemplo los ficheros creados bajo VMS tienen a menudo untamantildeo de bloque de 512 asiacute que se tiene que poner cbs a 1b cuando se leeuna cinta externa de VMS iexclEspero que Vd no tenga que entretenerse en estascosas

skip=nbl y seek=nbl le dicen al programa que omita nbl bloquesrespectivamente al final de la entrada y al principio de la salida Porsupuesto el uacuteltimo caso tiene sentido si se da la conversioacuten notrunc (verabajo) Cada tamantildeo de bloque es el valor de ibs (obs) Cuidado si noestablece el ibs y escribe skip=1b Vd estaacute realmente omitiendo 512x512bytes esto es 256KB No es precisamente lo que Vd queriacutea iquestno

count=nbl pretende copiar soacutelo nbl bloques de la entrada cada uno de lostamantildeos dados por ibs Esta opcioacuten junto con la previa se vuelve uacutetil sipor ejemplo Vd tiene un fichero corrupto y quiere recuperar cuanto seaposible de eacutel Vd debe omitir la parte ilegible y copiar lo que resta

conv=conversioacuten[conversioacuten ] transforma el fichero de la manera que seespecifica en sus argumentos Transformaciones posibles son ascii queconvierte de EBCDIC a ASCII ebcdic y ibm las cuales realizan unaconversioacuten inversa (iexclsiacute no existe una uacutenica conversioacuten de EBCDIC a ASCII Laprimera es la estaacutendar pero la segunda funciona mejor cuando se imprimenficheros en una impresora IBM) block la cual rellena registros terminadosen nueva liacutenea del tamantildeo de cbs reemplazando los cambios de liacutenea conespacios finales unblock que realiza lo contrario (elimina espaciosfinales y los reemplaza con cambios de liacutenea) lcase y ucase paraconvertir a minuacutesculas y mayuacutesculas respectivamente swab que intercambiacada par de bytes de entrada (por ejemplo para usar un fichero que contieneenteros de tipo short escritos en una maacutequina 680x0 en una maacutequina basada enIntel se necesita dicha conversioacuten) noerror para continuar procesando auacutendespueacutes de encontrar errores sync que rellena los bloques de entrada deltamantildeo de ibs con caracteres NUL finales

_____________________________________________

11 NT plain files

12 NT floppy

13 N del T ablocado se refiere a la caracteriacutestica de agrupamiento en bloques de losdatos en el dispositivo

1132 Ejemplos

El ejemplo canoacutenico es con el uacutenico que Vd probablemente ha chocado hasta ahora cuandointentoacute crear el primer disco de Linux como escribir a un disco sin un sistema deficheros MSshyDOS La solucioacuten es simple

$ dd if=diskimg of=devfd0 obs=18k count=80

Decidiacute no usar ibs porque no se cual es el mejor tamantildeo de bloque para un disco duropero en este caso no habriacutea hecho ninguacuten perjuicio si en vez de obs usara sencillamenteel bs inclusive podriacutea haber sido un poquito maacutes raacutepido Observe la explicacioacuten delnuacutemero de sectores a escribir (18 kbyte es lo que ocupa un sector asiacute que count sepone a 80) y el uso del nombre de bajo nivel del dispositivo de la disquetera

Otra aplicacioacuten uacutetil de dd estaacute relacionada con la copia de seguridad de la redSupongamos que estamos en una maacutequina alfa y que en la maacutequina beta estaacute la unidad decinta devrst0 con un fichero tar que estamos interesados en obtener Tenemos los mismosprivilegios en ambas maacutequinas pero no hay espacio en beta para volcar 14 el fichero tarEn este caso podriacuteamos escribir

$ rsh beta dd if=devrst0 ibs=8k obs=20k _ tar xvBf shy

para hacer en un solo paso la operacioacuten completa En este caso hemos usado lasfacilidades de rsh para realizar la lectura de la cinta Los tamantildeos de entrada y salidaestaacuten establecidos a los valores por defecto por estas operaciones esto es 8 kbyte parala lectura de la cinta y 20 kbyte para la escritura en ethernet desde el punto de vistade la otra cara del tar hay el mismo flujo de bytes el cual podriacutea ser obtenido de la

cinta excepto el hecho de que llega de una manera bastante erraacutetica y la opcioacuten B esnecesaria

iexclAh Casi lo olvidaba No creo para nada que dd sea un acroacutenimo de data duplicatorpero al menos es una manera divertida de recordar su significado

114 sort el clasificador de datos

1141 Introduccioacuten

1142 Opciones

1143 Ejemplos

_____________________________________________

14 NT dump

Capiacutetulo 12

Errores equivocaciones bugs y otras molestias

Unix nunca fue disentildeado para evitar que la gente hiciera cosas estuacutepidas porque esapoliacutetica les habriacutea evitado tambieacuten hacer cosas inteligentes

Doug Gwyn

121 Evitando errores

Muchos usuarios hablan de su frustracioacuten con el sistema operativo Unix en alguna ocasioacutena menudo a causa de lo que ellos mismos han hecho Una caracteriacutestica del sistemaoperativo Unix que muchos usuarios adoran cuando estaacuten trabajando bien y odian despueacutesde una sesioacuten hasta bien avanzada la noche es que muy pocas oacuterdenes piden confirmacioacutenCuando un usuario estaacute despierto y funcionando raramente piensa sobre ello y esto esuna ventaja ya que le permite trabajar maacutes eficientemente

De todos modos hay algunas desventajas rm y mv no piden nunca confirmacioacuten y estoconduce frecuentemente a problemas Por eso veamos una pequentildea lista que puede ayudarlea evitar el desastre total

o iexclTenga copias de seguridad Esto va dirigido especialmente a sistemas de un solousuario iexcltodos los administradores de sistema deben realizar copias de seguridad de susistema regularmente Una vez a la semana es suficiente para salvar muchos ficheros Paramaacutes informacioacuten consulte The Linux System Administrators Guide

o Los usuarios individuales deben tener sus propias copias de seguridad si es posibleSi usa maacutes de una maacutequina regularmente intente mantener copias actualizadas de todos susficheros en cada una de las maacutequinas Si tiene acceso a una unidad de disquetes puedehacer copias de seguridad en disquetes de su material criacutetico En el peor de los casosmantenga copias adicionales del material maacutes importante que haya en su cuenta en undirectorio separado

o Piense sobre las oacuterdenes especialmente las destructivas como mv rm y cp antes deactuar Debe ser tambieacuten cuidadoso con las redirecciones (gt) sobreescribiraacuten susficheros cuando no esteacute prestando atencioacuten Incluso el maacutes inofensivo de los comandospuede convertirse en siniestro

homelarryreport$ cp reportshy1992 reportshy1993 backups

puede convertirse faacutecilmente en desastre

homelarryreport$ cp reportshy1992 reportshy1993

o El autor tambieacuten recomienda a partir de su propia experiencia personal no hacerlimpieza de ficheros a altas horas de la madrugada iquestQue su estructura de directoriosparece un poco desordenada a la 132am Deacutejelo estar un poco de desorden nunca ha dantildeadoun ordenador

o Siacutegale la pista a su directorio actual A veces el prompt que estaacute usando no muestraen que directorio estaacute usted trabajando y el peligro acecha iexclEs triste leer un mensajeen compunixadmin1 sobre un usuario root que estaba en en vez de en tmp Por ejemplo

mousehousegt pwd

etc

mousehousegt ls tmp

passwd

mousehousegt rm passwd

La anterior serie de comandos podriacutea hacer muy infeliz al usuario al ver como eliminaronel fichero de contrasentildeas de su sistema iexclSin eacutel la gente no puede acceder

122 Queacute hacer cuando algo va mal

123 No es fallo tuyo

Por desgracia para los programadores del mundo no todos los problemas son a causa deerrores del usuario Unix y Linux son sistemas complicados y todas las versionesconocidas tienen errores de programacioacuten (bugs2) Algunas veces esos errores sondifiacuteciles de encontrar y soacutelo aparecen bajo ciertas circunstancias

Ante todo iquestqueacute es un error Un ejemplo de error es si le pide al ordenador que calcule5+3 y contesta 7 Aunque este es un ejemplo trivial de que puede ir mal la mayoriacuteade los errores en programas de computadoras se relacionan con la aritmeacutetica en algunaforma extremadamente extrantildea

_____________________________________________

1 Un foro de discusioacuten internacional en Usenet que trata sobre la administracioacuten decomputadoras Unix

2 Bug (polilla fam bicho) Se denomina asiacute a los errores que aparecen en un programaCuenta la leyenda que cuando los ordenadores eran unos monstruos llenos de vaacutelvulas queocupaban habitaciones enteras un teacutecnico que trataba de resolver un error en el Mark IIde Harvard detectoacute que la causa era una polilla de verdad que se habiacutea colado entre lasvaacutelvulas y provocaba pequentildeos cortocircuitos al revolotear de un lado a otro

1231 Cuando hay un error

Si la computadora da una respuesta erroacutenea (iexclcompruebe que la respuesta es erroacutenea) o sebloquea eso es un error Si cualquier programa se bloquea o da un mensaje de error delsistema operativo eso es un error

Si un comando no finaliza nunca su ejecucioacuten puede ser un error pero debe asegurarse deque no le ha pedido que esteacute durante mucho tiempo haciendo lo que usted queriacutea quehiciera Pida ayuda si no sabe lo que haciacutea el comando

Algunos mensajes le alertaraacuten de la existencia de errores Algunos mensajes no sonerrores Revise la seccioacuten 34 y el resto de la documentacioacuten para estar seguro de que noson mensajes informativos normales Por ejemplo mensajes como disk full (disco lleno)o lp0 on fire (lp0 ardiendo) no son problemas de software sino algo incorrecto en suhardware no hay suficiente espacio libre en el disco o la impresora estaacute mal

Si no puede encontrar informacioacuten sobre un programa es un error en la documentacioacuten ydeberiacutea ponerse en contacto con el autor de dicho programa y ofrecerse para escribirlausted mismo Si algo estaacute incorrecto en la documentacioacuten existente3 es un error en esemanual Si algo aparece incompleto o poco claro en el manual eso es un error

Si no puede vencer al gnuchess al ajedrez es un fallo de disentildeo en el algoritmo deajedrez que usted usa pero no necesariamente un error en su cerebro

1232 Notificando un error

Cuando esteacute seguro de haber encontrado un error es importante asegurarse de que suinformacioacuten llega al lugar adecuado Intente encontrar que programa causa el error si nopuede encontrarlo tal vez pueda pedir ayuda en composlinuxhelp o compunixmisc Unavez encuentre el programa intente leer la paacutegina del manual para ver quien lo escribioacute

El meacutetodo preferido para enviar notificaciones de errores en el mundo Linux es viacutea correoelectroacutenico Si no tiene acceso al correo electroacutenico puede ponerse en contacto con lapersona que le suministroacute Linux eventualmente encontraraacute alguien que o bien tienecorreo electroacutenico o vende Linux comercialmente y por tanto quiere eliminar el mayornuacutemero de errores posibles Recuerde en todo caso que nadie estaacute obligado a corregirninguacuten error a menos que tenga un contrato

Cuando enviacutee una notificacioacuten de error incluya toda la informacioacuten que se le ocurraEsto incluye

o Una descripcioacuten de lo que usted piensa que es incorrecto Por ejemplo Obtengo 5cuando calculo 2+2 o Dice segmentation violation shyshy core dumped Es importante decirexactamente que esteacute sucediendo para que el responsable del mantenimiento pueda corregirsu error

o Incluya cualquier variable de entorno relevante

o La versioacuten de su nuacutecleo (mire en el fichero procversion) y sus bibliotecas de sistema(mire en el directorio lib si no puede descifrarlo enviacutee un listado de lib)

o iquestCoacutemo ejecutoacute el programa en cuestioacuten o si era un error del nuacutecleo iquestqueacute estabahaciendo en ese momento

o Toda la informacioacuten complementaria Por ejemplo el comando w puede no mostrar elproceso actual para ciertos usuarios No diga simplemente w no funciona para ciertousuario El error podriacutea ocurrir debido a que el nombre del usuario tiene ochocaracteres de longitud o cuando estaacute accediendo a traveacutes de la red En su lugar diga wno muestra el proceso actual para el usuario greenfie cuando accede a traveacutes de la red

o Y recuerde sea amable La mayoriacutea de la gente trabaja en el software libre por elgusto de hacerlo y porque tienen un gran corazoacuten No los amargue la comunidad Linux hadesilusionado ya a demasiados desarrolladores y auacuten es pronto en la vida del Linux

_____________________________________________

3 iexclEspecialmente en eacutesta

Apeacutendice A

Introduccioacuten a vi

vi (pronunciado vi ai en ingleacutes o uve i) es en realidad el uacutenico editor que se puedeencontrar en praacutecticamente cualquier instalacioacuten de Unix Este editor fue escritooriginalmente en la Universidad de California en Berkeley y se puede encontrar versionesen casi cualquier edicioacuten de Unix incluido Linux Al principio cuesta un pocoacostumbrarse a eacutel pero tiene muchas caracteriacutesticas muy potentes En generalrecomendamos que un nuevo usuario aprenda Emacs que generalmente es maacutes faacutecil de usarSin embargo la gente que usa maacutes de una plataforma o que encuentra que no le gustaEmacs puede estar interesada en aprender vi

Es necesaria una breve resentildea histoacuterica de vi para comprender coacutemo la tecla |_k_| puedesignificar mover el cursor arriba una liacutenea y porqueacute hay tres diferentes modos de uso Sino le apetece aprender a usar el editor los dos tutoriales le llevaraacuten de ser un crudoprincipiante hasta tener el suficiente conocimiento del grupo de comandos que usted puedellegar a usar El capiacutetulo tambieacuten incluye una guiacutea de comandos que sirve de uacutetilreferencia para tenerla cerca del terminal

Incluso si vi no se convierte en su editor de texto normal el conocimiento de su uso noseraacute desperdiciado Es casi seguro que el sistema de Unix que use tendraacute alguna variantedel editor vi

Puede ser necesario usar vi mientras instala otro editor como Emacs Muchas herramientasde Unix aplicaciones y juegos usan un subconjunto del grupo de comandos de vi

A1 Una raacutepida historia de Vi

Los editores de texto en la antiguumledad funcionaban en modo de una liacutenea y se usabantiacutepicamente desde terminales no inteligentes de impresioacuten Un editor tiacutepico que operabaen este modo es Ed El editor es potente y eficiente y usa una cantidad muy pequentildea derecursos del sistema y funcionaba con las pantallas de aquel entonces vi ofrece alusuario una alternativa visual con un grupo de comandos notablemente amplio comparado coned

vi como lo conocemos hoy comenzoacute como el editor de liacutenea ex De hecho ex se ve como unmodo especial de edicioacuten en vi aunque ahora lo contrario es verdad El componente visualde ex puede ser iniciado desde la liacutenea de comando usando el comando vi o desde dentrode ex

El editor exvi fue desarrollado en la universidad de California en Berkeley por WilliamJoy Originalmente se suministraba como una utilidad no soportada hasta su inclusioacutenoficial en la distribucioacuten del Unix ATampT System V Se ha ido haciendo cada vez maacutespopular incluso con la competencia de los modernos editores de pantalla completa

Debido a la popularidad de vi existen muchas variantes cloacutenicas y se pueden encontrarvarias versiones para la mayoriacutea de los sistemas operativos No es el propoacutesito de estecapiacutetulo el incluir todos los comandos disponibles bajo vi o sus variantes Muchos cloneshan aumentado y modificado el comportamiento original de vi La mayoriacutea de los clones nosoportan todos los comandos originales de vi

Si tiene un buen conocimiento de trabajo con ed entonces vi presenta una curva deaprendizaje maacutes suave Aunque usted no tenga ninguna intencioacuten de usar vi como su editorregular el conocimiento baacutesico de vi solamente puede serle una ventaja

A2 Raacutepido tutorial de Ed

El propoacutesito de esta guiacutea es que usted empiece a usar ed ed estaacute disentildeado para ser faacutecilde usar y requiere poco entrenamiento para comenzar La mejor manera de aprender espracticando asiacute que siga las instrucciones y pruebe el editor antes de descontar susventajas praacutecticas

A21 Crear un fichero

ed soacutelo puede editar un fichero a la vez Siga el siguiente ejemplo para crear su primerfichero de texto usando ed

homelarry$ ed

a

Este es mi primer fichero de texto usando Ed

Esto es divertido de verdad

w primerotxt

q

homelarry$

Ahora puede verificar el contenido del fichero usando la utilidad de concatenacioacuten deUnix

homelarry$ cat primerotxt

El ejemplo anterior ha mostrado un nuacutemero de puntos importantes Cuando invoca ed como enel ejemplo tendraacute un fichero vaciacuteo La tecla |_a_| se usa para antildeadir texto al ficheroPara finalizar la sesioacuten de entrada de texto se usa un punto |__| en la primera columnadel texto Para salvar el texto a un fichero la tecla |_w_| se usa en combinacioacuten con elnombre del fichero y finalmente la tecla |_q_| se usa para salir del editor

La observacioacuten maacutes importante es que hay dos modos de operacioacuten Al principio el editorestaacute en modo de comandos Un comando se define por caracteres para asegurarse de cualesson las intenciones del usuario ed usa un modo de texto y un modo de comando

A22 Editar un fichero existente

Para antildeadir una liacutenea de texto a un fichero existente siga el siguiente ejemplo

homelarry$ ed primerotxt

a

Esta es una nueva linea de texto

w

q

Si comprueba el fichero con cat veraacute que hay una nueva liacutenea insertada entre las dosliacuteneas originales iquestCoacutemo supo ed doacutende poner la nueva liacutenea de texto

Cuando ed lee el fichero se acuerda de cual es la liacutenea actual El comando |_a_| antildeadiraacuteel texto despueacutes de la liacutenea actual ed tambieacuten puede poner el texto antes de la liacuteneaactual con la tecla |_i_| El efecto seraacute la insercioacuten del texto antes de la liacuteneaactual

Ahora es faacutecil ver que ed opera en el texto liacutenea por liacutenea Todos los comandos se puedenaplicar a una liacutenea elegida

Para antildeadir una liacutenea de texto al final de un fichero

homelarry$ ed primerotxt

$a

La ultima linea de texto

w

q

El modificador de comandos ||_$_|| le dice a ed que antildeada la liacutenea despueacutes de la uacuteltimaliacutenea Para antildeadir la liacutenea despues de la primera liacutenea el modificador seriacutea |_1_| Ahoratenemos la posibilidad de seleccionar la liacutenea para antildeadir una liacutenea de texto despueacutes delnuacutemero de liacutenea o insertar una liacutenea antes del nuacutemero de liacutenea

iquestCoacutemo sabemos lo que hay en la liacutenea actual El comando |_p_| muestra el contenido de laliacutenea actual Si quiere hacer que la liacutenea actual sea la liacutenea 2 y a la vez quiere verel contenido de esa liacutenea entonces haga lo siguiente

homelarry$ ed primerotxt

2p

q

A23 Nuacutemeros de liacutenea en detalle

Ha visto coacutemo mostrar el contenido de la liacutenea actual usando el comando |_p_| Tambieacutensabemos que hay modificadores del nuacutemero de liacutenea para los comandos Para ver el texto dela segunda liacutenea

2p

Hay algunos modificadores especiales que se refieren a posiciones que pueden cambiardurante el tiempo que edita un fichero El ||_$_||es la uacuteltima liacutenea del texto Para verla uacuteltima liacutenea

$p

El nuacutemero de liacutenea actual usa un siacutembolo de modificador especial ___|_| Para mostrar laliacutenea actual usando un modificador

p

Esto puede parecer innecesario aunque es muy uacutetil en el contexto de los grupos denuacutemeros de liacutenea

Para mostrar el contenido del texto desde la liacutenea 1 a la liacutenea 2 se le debe pasar elalcance

12p

El primer nuacutemero se refiere a la liacutenea de comienzo y el segundo se refiere a la uacuteltimaliacutenea La liacutenea actual seraacute por consiguiente el segundo nuacutemero del grupo de liacuteneas

Si quiere mostrar el contenido del fichero desde el comienzo hasta la liacutenea actual

1p

Para mostrar el contenido desde la liacutenea actual hasta el final del fichero

$p

Todo lo que queda es mostrar el contenido de todo el fichero y esto queda como unejercicio para usted

iquestCoacutemo puede borrar las dos primeras liacuteneas del fichero

12d

El comando |_d_| borra el texto liacutenea por liacutenea Si usted quisiera borrar el contenidocompleto lo hariacutea con

1$d

Si usted ha hecho muchos cambios y no quiere salvar los contenidos del fichero lo mejores salir del editor sin escribir el fichero antes

La mayoriacutea de los usuarios no usan ed como el principal editor Los editores maacutes modernosofrecen una pantalla completa de edicioacuten y grupos de comandos maacutes flexibles ed ofreceuna buena introduccioacuten a vi y ayuda a explicar coacutemo se originaron los comandos de vi

A3 Raacutepido tutorial de Vi

El propoacutesito de este tutorial es que comience a usar el editor vi Este tutorial asumeque no tiene ninguna experiencia con vi asiacute que le mostraremos los diez comandos maacutesbaacutesicos de vi Estos comandos fundamentales son suficientes para realizar la mayoriacutea desus necesidades de edicioacuten y puede expandir su vocabulario de vi cuanto necesite Serecomienda que tenga un ordenador para practicar seguacuten avanza con el tutorial

A31 Ejecutar vi

Para ejecutar vi simplemente tiene que teclear las letras vi seguidas del nombre defichero que desea crear Veraacute una pantalla con una columna de tildes (~) en el ladoizquierdo vi estaacute ahora en modo de comando Cualquier cosa que teclee seraacute interpretadocomo un comando no como texto que usted desea escribir Para introducir texto tiene queteclear un comando Los dos comandos de entrada baacutesicos son los siguientes

i insertar texto a la izquierda del cursor

a antildeadir texto a la derecha del cursor

Dado que estaacute al comienzo de un fichero vaciacuteo no importa cual de estos usar Escriba unode ellos y despueacutes teclee el siguiente texto (un poema de Augustus DeMorgan encontradoen The Unix Programming Environment por BW Kernighan y R Pike)

Las pulgas grandes tienen pequentildeas pulgasltIntrogt

sobre sus espaldas para que les muerdanltIntrogt

Y las pulgas pequentildeas tienen pulgas maacutes pequentildeasltIntrogt

y asiacute hasta el infinitoltIntrogt

Y las pulgas grandes a su vezltIntrogt

tienen pulgas maacutes grandes sobre las que estarltIntrogt

Mientras que estas de nuevo tienen otras maacutes grandes aunltIntrogt

y maacutes grandes aun y asiacuteltIntrogt

ltEscgt

Fiacutejese que tiene que pulsar la tecla |_Esc_| para finalizar la insercioacuten y volver al modode comando

A32 Comandos de movimiento del cursor

h mueve el cursor un espacio a la izquierda

j mueve el cursor un espacio abajo

k mueve el cursor un espacio arriba

l mueve el cursor un espacio a la derecha

Estos comandos se pueden repetir manteniendo la tecla pulsada Intente mover el cursorpor el texto ahora Si intenta un movimiento imposible por ejemplo pulsar la tecla|_k_| cuando el cursor estaacute en la liacutenea superior la pantalla parpadearaacute momentaacuteneamenteo el terminal sonaraacute No se preocupe no muerde y su fichero no saldraacute dantildeado

A33 Borrar texto

x borra el caraacutecter que hay en el cursor

dd borra la liacutenea donde estaacute el cursor

Mueva el cursor a la primera liacutenea y poacutengalo de modo que esteacute bajo la n Pulse la letra|_x_| y la n desapareceraacute Ahora pulse la letra |_i_| para cambiarse al modo deinsercioacuten y vuelva a teclear la n Pulse |_Esc_| cuando haya terminado

A34 Salvar un fichero

w salvar (escribir al disco)

q salir

Aseguacuterese de que estaacute en modo de comando pulsando la tecla |_Esc_| Ahora pulse w Estosalvaraacute su trabajo escribieacutendolo a un fichero de disco

El comando para salir de vi es |_q_| Si quiere combinar el salvar y salir escriba wqTambieacuten hay una abreviacioacuten para wq _ ZZ Dado que gran parte del trabajo deprogramacioacuten consiste en ejecutar un programa encontrar alguacuten problema y llamar elprograma en el editor para hacer alguacuten pequentildeo cambio y luego volver a salir del editorpara ejecutar el programa otra vez ZZ seraacute un comando que usaraacute a menudo (En realidadZZ no es un sinoacutenimo exacto de wq _ si no ha hecho ninguacuten cambio al fichero que estaacuteeditando desde la ultima vez que lo salvo ZZ simplemente saldraacute del editor mientras quewq salvaraacute (redundantemente) el fichero antes de salir)

Si usted se lo ha cargado todo sin esperanzas y simplemente quiere volver a empezarlotodo puede teclear q (recuerde pulsar la tecla |_Esc_| primero) Si omite el vi nole permitiraacute salir sin salvar

A35 iquestQueacute viene a continuacioacuten

Los diez comandos que acaba de aprender deberiacutean ser suficientes para su trabajo Sinembargo solamente ha rozado la superficie del editor vi Hay comandos para copiarmaterial de un lugar del fichero a otro para mover material de un lugar a otro paramover material de un fichero a otro para ajustar el editor a sus gustos personales etcCon todo hay unos 150 comandos

A4 Tutorial avanzado de Vi

La ventaja y la potencia de vi estaacute en la habilidad de usarlo con eacutexito con soacutelo saberunos pocos comandos La mayoriacutea de los usuarios de vi se sienten un poco incoacutemodos alprincipio sin embargo despueacutes de alguacuten tiempo se encuentran aacutevidos de mayor conocimientode los comandos disponibles

El siguiente tutorial asume que el usuario ha completado el tutorial raacutepido (arriba) ypor lo tanto se siente a gusto con vi Este tutorial expone algunas de lascaracteriacutesticas maacutes poderosas de exvi desde copiar texto hasta la definicioacuten de macrosHay una seccioacuten sobre ex y los paraacutemetros para ajustar el editor a su gusto Estetutorial describe los comandos en vez de llevarle grupo por grupo

Se recomienda que usted disponga de alguacuten tiempo para probar los comandos en alguacuten textode ejemplo que se pueda permitir destruir

Este tutorial no expone todos los comandos de vi aunque se cubren los maacutes comuacutenmenteusados y auacuten otros adicionales Aunque usted elija usar otro editor de texto se esperaque apreciaraacute vi y lo que ofrece a quienes deciden usarlo

A41 Movimiento

La funcionalidad maacutes baacutesica de un editor es el mover el cursor por el texto Aquiacute estaacutenlos comandos de movimiento

h mueve el cursor un espacio a la izquierda

j mueve el cursor una liacutenea hacia abajo

k mueve el cursor una liacutenea hacia arriba

l mueve el cursor un espacio a la derecha

Algunas implementaciones tambieacuten permiten el uso de las teclas de cursor para mover elcursor

w mueve al principio de la siguiente palabra

e mueve al final de la siguiente palabra

E mueve al final de la siguiente palabra antes de un espacio

b mueve al principio de la palabra anterior

0 mueve al principio de la liacutenea actual

^ mueve a la primera palabra de la liacutenea actual

$ mueve al final de la liacutenea

ltCRgt mueve al principio de la siguiente liacutenea

shy mueve al principio de la liacutenea anterior

G mueve al final del fichero

1G mueve al principio del fichero

nG mueve a la liacutenea n

ltCntlgt G muestra el nuacutemero de liacutenea actual

va al pareacutentesis correspondiente

H mueve a la liacutenea superior en pantalla

M mueve a la liacutenea de en medio de la pantalla

L mueve al final de la pantalla

n_ mueve el cursor a la columna n

El texto se desplaza automaacuteticamente cuando el cursor alcanza la parte superior oinferior de la pantalla Tambieacuten hay comandos que permiten controlar el desplazamientodel texto

ltCntlgt f desplaza una pantalla hacia delante

ltCntlgt b desplaza una pantalla hacia atraacutes

ltCntlgt d desplaza media pantalla hacia abajo

ltCntlgt u desplaza media pantalla hacia arriba

Los comandos anteriores controlan el movimiento del cursor Algunos de los comandos usanun modificador de comandos en la forma de un nuacutemero que precede al comando Estacaracteriacutestica normalmente repite el comando ese nuacutemero de veces

Para mover el cursor ocho posiciones a la izquierda

8l mueve el cursor 8 posiciones a la izquierda

Si desea introducir un nuacutemero de espacios delante de un texto podriacutea usar el modificadorde comandos con el comando insertar Introduzca el nuacutemero de repeticiones (n) y despueacutes|_i_| seguido por el espacio y luego pulse la tecla |_Esc_|

ni inserta alguacuten texto y lo repite n veces

Los comandos que tratan con liacuteneas usan el modificador para referirse al nuacutemero de liacuteneaEl |_G_| es un buen ejemplo

1G mueve el cursor a la primera liacutenea

vi tiene un voluminoso grupo de comandos que se puede usar para mover el cursor por eltexto

vi tambieacuten puede posicionar el cursor en una liacutenea desde la liacutenea de comandos

vi +10 mi_ficherotex

Este comando abre el fichero llamado mi_ficherotex y pone el cursor 10 liacuteneas maacutes abajodel comienzo del fichero

Pruebe los comandos de esta seccioacuten Muy poca gente los recuerda todos en una solasesioacuten La mayor parte de los usuarios solamente utiliza una parte de estos comandos

Ahora se puede mover pero iquestcoacutemo modificar el texto

A42 Modificacioacuten del texto

El propoacutesito es cambiar el contenido del fichero y vi ofrece un amplio conjunto decomandos para ayudarnos en este proceso

Esta seccioacuten se concentra en antildeadir texto cambiar el texto existente y borrar texto Alfinal de esta seccioacuten usted tendraacute el conocimiento para crear cualquier fichero de textoque desee Las secciones restantes se concentran en comandos maacutes especializados yconvenientes

Cuando usted teclea nuevo texto puede introducir varias liacuteneas usando la tecla |_Intro_|Si hay que corregir un error tipograacutefico mientras introduce texto puede usar la tecla|_Retroceso_| para mover el cursor sobre el texto Las varias implementaciones de vi secomportan de manera diferente Algunas simplemente mueven el cursor hacia atraacutes y eltexto sigue vieacutendose y es aceptado Otras borran el texto cuando pulsa la tecla deborrado Otras versiones incluso permiten usar las teclas de cursores para mover elcursor mientras se estaacute en modo de entrada de texto Este modo de funcionamiento no es elnormal de vi Si el texto es visible y usa la tecla |_Esc_| mientras estaacute en la liacutenea enla que pulsoacute |_Retroceso_| entonces el texto que hay despueacutes del cursor se borraraacute Useel editor para acostumbrarse a este comportamiento

a Antildeadir texto a partir de la posicioacuten actual del cursor

A Antildeadir al final de la liacutenea

i Insertar texto a la izquierda del cursor

I Insertar texto a la izquierda del primer caracter que no sea espacio en laliacutenea actual

o Abrir una nueva liacutenea y antildeade texto debajo de la liacutenea actual

O Abrir una nueva liacutenea y antildeade texto encima de la liacutenea actual

vi tiene un pequentildeo grupo de comandos para borrar texto que se pueden mejorar con el usode modificadores

x Borrar el caraacutecter que estaacute debajo del cursor

dw Borrar desde la posicioacuten actual al final de la palabra

dd Borrar la liacutenea actual

D Borrar desde la posicioacuten actual al final de la liacutenea

Los modificadores se pueden usar para aumentar la potencia de los comandos Lossiguientes ejemplos son un subgrupo de las posibilidades

nx Borrar n caracteres desde el que estaacute bajo el cursor

ndd Borrar n liacuteneas

dnw Borrar n palabras (igual que ndw)

dG Borrar desde la posicioacuten actual hasta el final del fichero

d1G Borrar desde la posicioacuten actual hasta el principio del fichero

d$ Borrar desde la posicioacuten actual al final de la liacutenea (Esto es igual queD)

dn$ Borrar desde la liacutenea actual al final de la eneacutesima liacutenea

La lista de comandos anterior muestra que la operacioacuten de borrado puede ser muy uacutetilEsto se hace patente cuando se aplica en combinacioacuten con los comandos de movimiento decursor Hay que hacer notar que el comando |_D_| ignora los modificadores que se leapliquen

En ocasiones usted puede necesitar deshacer los cambios al texto Los siguientes comandosrecuperan el texto que habiacutea antes de hacer cambios

u Deshacer el uacuteltimo comando

U Deshacer todos los cambios ocurridos en la liacutenea actual

e Editar otra vez Recupera el estado del fichero desde la uacuteltima vez quese salvoacute

vi no soacutelo le permite deshacer cambios tambieacuten puede dar la vuelta al comandodeshacer Por ejemplo si usamos el comando |_5dd_| para borrar 5 liacuteneas se puedenrecuperar usando el comando |_u_| Si usted usa |_u_| una vez maacutes las 5 liacuteneasdesapareceraacuten de nuevo

vi ofrece comandos que permiten que se hagan cambios al texto sin tener que borrar yvolver a escribir

rc Reemplaza del caracter bajo el cursor con la letra c Se Mueve el cursoral modificador de repeticioacuten por ejemplo 2rc

R Sobreescribe el texto con el nuevo texto

cw Cambia el texto de la palabra actual

c$ Cambia el texto desde la posicioacuten actual al final de la liacutenea

cnw Cambia las siguientes n palabras (Igual que ncw)

cn$ Hacer cambios hasta el final de la eneacutesima liacutenea

C Hacer cambios hasta el final de la liacutenea actual

cc Hacer cambios en la liacutenea actual

s Sustituye el texto que escriba por el caracter actual

ns Sustituye el texto que escriba por los siguientes n caracteres

Las series de comandos de cambio que permiten que se introduzca un grupo de caracteres seterminan con la tecla |_Esc_|

El comando |_cw_| empieza en la posicioacuten actual en la palabra y termina al final de lapalabra

Cuando use un comando de cambio que especifica la distancia sobre la que se aplicaraacute elcambio vi pondraacute un $ en la uacuteltima posicioacuten de caraacutecter El nuevo texto puede sobrepasaro no llegar a la longitud original de texto

A43 Copiar y mover bloques de texto

El movimiento de texto supone la combinacioacuten de un nuacutemero de comandos para conseguir elpropoacutesito final Esta seccioacuten introduce los buffers1 con y sin nombre junto a loscomandos que cortan y pegan el texto

La copia de texto se realiza en tres pasos principales

1 Copia del texto a un buffer

2 Movimiento del cursor al lugar de destino

3 Pegar (poner) el texto en el buffer de edicioacuten

El buffer de edicioacuten no es sino el propio fichero en el que usted estaacute trabajando

Para Copiar texto al buffer sin nombre use el comando |_y_|

yy Mueve una copia de la liacutenea actual al buffer sin nombre

Y Mueve una copia de la liacutenea actual al buffer sin nombre

nyy Mueve las siguientes n lineas al buffer sin nombre

nY Mueve las siguientes n liacuteneas al buffer sin nombre

yw Mueve una palabra al buffer sin nombre

ynw Mueve n palabras al buffer sin nombre

nyw Mueve n palabras al buffer sin nombre

y$ Mueve el texto desde la posicioacuten actual al final de la liacutenea al buffer sinnombre

_____________________________________________

1 N del T buffer es una palabra inglesa que se refiere a un espacio reservado enmemoria para guardar alguna informacioacuten temporalmente En este caso se usan buffers paraalmacenar una copia temporal del texto que usted desea copiar o mover

El buffer sin nombre es un buffer temporal que puede ser faacutecilmente afectado por otroscomandos comunes Hay ocasiones en las cuales necesitamos mantener el contenido de unbuffer durante un periacuteodo maacutes extenso de tiempo En este caso se usariacutea un buffer connombre vi tiene 26 buffers con nombre Los buffers usan las letras del alfabeto como elnombre de identificacioacuten Para distinguir un comando de un buffer con nombre vi usa elcaraacutecter |__| Cuando use un buffer con nombre de letra minuacutescula los contenidos sesobre escriben mientras que el uso del nombre en letra mayuacutescula antildeade el nuevo texto alcontenido actual

ayy Mueve la liacutenea actual al buffer con nombre a

aY Mueve la liacutenea actual al buffer con nombre a

byw Mueve la palabra actual al buffer con nombre b

Byw Antildeade la palabra actual al contenido del buffer b

by3w Mueve las siguientes 3 palabras al buffer b

Use el comando |_p_| para pegar el contenido del buffer al buffer de edicioacuten

p Pegar del buffer sin nombre a la DERECHA del cursor

P Pegar del buffer sin nombre a la IZQUIERDA del cursor

nP Pegar n copias del buffer sin nombre a la IZQUIERDA del cursor

aP Pegar del buffer con nombre a a la DERECHA del cursor

b3P Pegar 3 copias del buffer con nombre b a la IZQUIERDA del cursor

Cuando use vi dentro de un xterm tiene otra opcioacuten para copiar texto Marque el bloque detexto que desea copiar arrastrando el cursor del ratoacuten sobre el texto Si mantienepulsado el botoacuten izquierdo del ratoacuten y arrastra el ratoacuten desde el comienzo al finalinvertiraacute el viacutedeo del texto Esta operacioacuten automaacuteticamente coloca el texto en un bufferreservado para el servidor de X Window

Para pegar el texto pulse el botoacuten de enmedio Acueacuterdese de poner vi en modo deinsercioacuten dado que la entrada de texto se podriacutea interpretar como comandos y el resultadoseriacutea cuando menos desagradable Usando la misma teacutecnica se puede copiar una sola palabrahaciendo doble click con el botoacuten izquierdo del ratoacuten sobre la palabra Solamente secopiaraacute esa uacutenica palabra Para pegarla se usa el mismo procedimiento que anteriormenteLos contenidos del buffer soacutelo cambian cuando se marca otro bloque de texto

Para mover un bloque de texto son necesarios tres pasos

1 Borrar el texto para ponerlo en un buffer con o sin nombre

2 Mover el cursor a la posicioacuten de destino

3 Pegar el buffer

El proceso es el mismo que el de copia con un solo cambio en el primer paso para borrarCuando

se usa el comando |_dd_| la liacutenea se borra y se coloca en el buffer sin nombre Luegopuede poner el

contenido del mismo modo que lo hizo cuando copioacute el texto en la posicioacuten deseada

add Borrar la liacutenea y ponerla en el buffer con nombre a

a4dd Borrar cuatro liacuteneas y ponerlas en el buffer con nombre a

dw Borrar una palabra y ponerla en el buffer sin nombre

Vea la seccioacuten sobre el modificado de texto para ver maacutes ejemplos de borrado de texto

En el caso de que el sistema falle el contenido de todos los buffers se pierde exceptoel contenido de los buffers de edicioacuten que se puede recuperar (ver comandos Uacutetiles)

A44 Buacutesqueda y cambio de texto

vi dispone de varios comandos para buacutesqueda Usted puede buscar desde un solo caraacutecterhasta una expressioacuten completa

Los dos comandos principales de buacutesqueda basados en caracteres son |_f_| y |_t_|

fc Encuentra el siguiente caracter c Se mueve a la derecha del siguiente

Fc Encuentra el siguiente caracter c Se mueve a la izquierda del anterior

tc Se mueve a la DERECHA al caracter anterior al siguiente c

Tc Se mueve a la IZQUIERDA al caraacutecter que sigue al c anterior vi(En algunasesto es lo mismo que Fc)

Repite el uacuteltimo comando fFtT

Igual que () pero cambiando la direccioacuten del comando original

Si el caracter que usted buscaba no se encuentra vi emitiraacute un pitido o le daraacute otrotipo de sentildeal (tal vez un parpadeo de toda la pantalla)

vi le permite buscar una cadena de texto en el buffer de edicioacuten

tira Busca hacia la derecha y abajo la siguiente instancia de tira

tira Busca hacia la izquierda y arriba la siguiente instancia de tira

n Repite el uacuteltimo comando o

N Repite el uacuteltimo comando o en la direccioacuten opuesta

Cuando use los comandos ||_||or |__| la uacuteltima liacutenea en la parte baja de la pantallase vaciaraacute

Introduzca en esa liacutenea la tira de caracteres que desea buscar y pulse |_Intro_|

La tira en el comando ||_||or |__|puede ser una expresioacuten regular Una expresioacutenregular puede ser una descripcioacuten de un conjunto de tiras La descripcioacuten se construyeusando texto entremezclado con caracteres especiales Los caracteres especiales de unaexpresioacuten regular son [ ] ^ $

Vale por cualquier caraacutecter excepto el caraacutecter de nueva liacutenea

Tecla de escape para cualquier caracter especial

Vale por 0 o maacutes instancias del caracter anterior

[ ] Busca exactamente uno de los caracteres incluiacutedos entre los corchetes

^ El caracter que sigue a ^ debe estar al principio de la liacutenea

$ El caracter que precede a $ se busca al final de la liacutenea

[^] Busca cualquier cosa que no se encuentre despues de ^ dentro de loscorchetes

[shy] Busca un rango de caracteres

El uacutenico modo de acostumbrarse a usar las expresiones regulares es usaacutendolas Acontinuacioacuten mostramos varios ejemplos de uso

cch Coincide con coche cacho cochera etc

cpe Coincide con cpe cper etc

stop Coincide con stp stop stoop etc

carn Coincide con cartoacuten carrilloacuten carmen etc

xyz Coincide con xyz al final de la liacutenea

^Los Encuentra cualquier liacutenea que empiece con Los

abcdef$ Encuentra cualquier liacutenea que termine con abcdef

^Solo$ Coincide con cualquier liacutenea que soacutelo tenga la palabra Solo

p[aiue]so Coincide con paso piso puso peso

Ver[DshyF] Coincide con VerD VerE VerF

Ver[^1shy9] Coincide con Ver siempre que a continuacioacuten NO haya un nuacutemero

the[ir][re] Coincide con their therr there theie

[AshyZashyz][AshyZashyz] Coincide con cualquier palabra

vi usa el modo de comandos de ex para llevar a cabo buacutesquedas y sustituciones Todos loscomandos que empiezan con dos puntos son comandos en modo ex

Los comandos de buacutesqueda y sustitucioacuten permiten que se usen expresiones regulares sobreun rango de liacuteneas y sustituir la tira de caracteres que se busca El usuario puede pedirconfirmacioacuten antes de que se realice la sustitucioacuten Merece la pena hacer una revisioacuten dela representacioacuten de los nuacutemeros de liacutenea en el tutorial de ed

ltprimgtltultgtsltbuscagtltsustgtg Comando general

1$slosLosg Buscar el fichero entero y sustituir los por Los

stheTheg siginifica el fichero entero (igual que arriba)

5s^g Borra el contenido de la liacutenea actual hasta la quinta

slosLosgc Sustituye los con Los preguntando antes de hacer laoperacioacuten

s^g Borra los primeros cuatro caraacutecteres de cada liacutenea

El comando de buacutesqueda es muy potente cuando se combina con las expresiones regulares Sino se incluye la directiva |_g_| entonces el cambio soacutelo se aplica a la primera instanciaque se encuentre en cada liacutenea

En ocasiones usted quiere usar los caracteres de buacutesqueda en los caracteres desustitucioacuten Se puede reescribir todo el comando en la liacutenea pero vi permite que loscaracteres de sustitucioacuten incluyan algunos caracteres especiales

15sayudaampndog Sustituye ayuda por ayudando en las cinco primeras liacuteneas

s ampampg Duplica el nuacutemero de espacios entre palabras

El uso de la tira de caracteres completa_para buacutesqueda_tiene sus liacutemites y por lo tantovi usa los pareacutentesis en secuencia de escape ||_(_|| y ||_)_||para seleccionar el rangode la sustitucioacuten El uso de un diacutegito en secuencia de escape |_1_| identifica el rangoen el orden de la definicioacuten y la sustitucioacuten se puede hacer

s^()1g Borra todo despues de e incluyendo los dos puntos

s()()21g Da la vuelta a las palabras a los dos lados de losdos puntos

vi ofrece comandos muy potentes que muchos editores de texto modernos no tienen o nopueden ofrecer El coste de esta potencia suele ser tambieacuten el principal argumento encontra de vi Los comandos pueden ser difiacuteciles de aprender y leer Sin embargo lamayoriacutea de las cosas buenas suelen ser un poco extrantildeas al principio Con un poco depraacutectica y tiempo los comandos de vi se convertiraacuten en una segunda naturaleza para Ud

Apeacutendice B

The GNU General Public License

GNU GENERAL PUBLIC LICENSE

Version 2 June 1991

Copyright Oc 1989 1991 Free Software Foundation Inc 675 Mass Ave Cambridge MA 02139USA

Everyone is permitted to copy and distribute verbatim copies of this license documentbut changing it is not allowed

Preamble

The licenses for most software are designed to take away your freedom to share and changeit By contrast the GNU General Public License is intended to guarantee your freedom toshare and change free software to make sure the software is free for all its users ThisGeneral Public License applies to most of the Free Software Foundations software and toany other program whose authors commit to using it (Some other Free Software Foundationsoftware is covered by the GNU Library General Public License instead) You can apply itto your programs too

When we speak of free software we are referring to freedom not price Our GeneralPublic Licenses are designed to make sure that you have the freedom to distribute copiesof free software (and charge for this service if you wish) that you receive source codeor can get it if you want it that you can change the software or use pieces of it in newfree programs and that you know you can do these things

To protect your rights we need to make restrictions that forbid anyone to deny you theserights or to ask you to surrender the rights These restrictions translate to certainresponsibilities for you if you distribute copies of the software or if you modify it

For example if you distribute copies of such a program whether gratis or for a fee youmust give the recipients all the rights that you have You must make sure that they tooreceive or can get the source code And you must show them these terms so they know theirrights

We protect your rights with two steps (1) copyright the software and (2) offer you thislicense which gives you legal permission to copy distribute andor modify the software

Also for each authors protection and ours we want to make certain that everyoneunderstands that there is no warranty for this free software If the software is modifiedby someone else and passed on we want its recipients to know that what they have is notthe original so that any problems introduced by others will not reflect on the originalauthors reputations

Finally any free program is threatened constantly by software patents We wish to avoidthe danger that redistributors of a free program will individually obtain patentlicenses in effect making the program proprietary To prevent this we have made itclear that any patent must be licensed for everyones free use or not licensed at all

The precise terms and conditions for copying distribution and modification follow

Terms and Conditions

0 This License applies to any program or other work which contains a notice placed bythe copyright holder saying it may be distributed under the terms of this General PublicLicense

The Program below refers to any such program or work and a work based on theProgram means either the Program or any derivative work under copyright law that is tosay a work containing the Program or a portion of it either verbatim or withmodifications andor translated into another language (Hereinafter translation isincluded without limitation in the term modification) Each licensee is addressed asyou

Activities other than copying distribution and modification are not covered by thisLicense they are outside its scope The act of running the Program is not restrictedand the output from the Program is covered only if its contents constitute a work basedon the Program (independent of having been made by running the Program) Whether that istrue depends on what the Program does

1 You may copy and distribute verbatim copies of the Programs source code as youreceive it in any medium provided that you conspicuously and appropriately publish oneach copy an appropriate copyright notice and disclaimer of warranty keep intact all thenotices that refer to this License and to the absence of any warranty and give any otherrecipients of the Program a copy of this License along with the Program

You may charge a fee for the physical act of transferring a copy and you may at youroption offer warranty protection in exchange for a fee

2 You may modify your copy or copies of the Program or any portion of it thus forming awork based on the Program and copy and distribute such modifications or work under theterms of Section 1 above provided that you also meet all of these conditions

a You must cause the modified files to carry prominent notices stating that you changedthe files and the date of any change

b You must cause any work that you distribute or publish that in whole or in partcontains or is derived from the Program or any part thereof to be licensed as a whole atno charge to all third parties under the terms of this License

c If the modified program normally reads commands interactively when run you must causeit when started running for such interactive use in the most ordinary way to print ordisplay an announcement including an appropriate copyright notice and a notice that thereis no warranty (or else saying that you provide a warranty) and that users mayredistribute the program under these conditions and telling the user how to view a copyof this License (Exception if the Program itself is interactive but does not normallyprint such an announcement your work based on the Program is not required to print anannouncement)

These requirements apply to the modified work as a whole If identifiable sections ofthat work are not derived from the Program and can be reasonably considered independentand separate works in themselves then this License and its terms do not apply to thosesections when you distribute them as separate works But when you distribute the samesections as part of a whole which is a work based on the Program the distribution of thewhole must be on the terms of this License whose permissions for other licensees extendto the entire whole and thus to each and every part regardless of who wrote it

Thus it is not the intent of this section to claim rights or contest your rights to workwritten entirely by you rather the intent is to exercise the right to control thedistribution of derivative or collective works based on the Program

In addition mere aggregation of another work not based on the Program with the Program(or with a work based on the Program) on a volume of a storage or distribution mediumdoes not bring the other work under the scope of this License

3 You may copy and distribute the Program (or a work based on it under Section 2) inobject code or executable form under the terms of Sections 1 and 2 above provided thatyou also do one of the following

a Accompany it with the complete corresponding machineshyreadable source code which mustbe distributed under the terms of Sections 1 and 2 above on a medium customarily used forsoftware interchange or b Accompany it with a written offer valid for at least threeyears to give any third party for a charge no more than your cost of physicallyperforming source distribution a complete machineshyreadable copy of the correspondingsource code to be distributed under the terms of Sections 1 and 2 above on a mediumcustomarily used for software interchange or

c Accompany it with the information you received as to the offer to distributecorresponding source code (This alternative is allowed only for noncommercialdistribution and only if you received the program in object code or executable form withsuch an offer in accord with Subsection b above)

The source code for a work means the preferred form of the work for making modificationsto it For an executable work complete source code means all the source code for allmodules it contains plus any associated interface definition files plus the scriptsused to control compilation and installation of the executable However as a specialexception the source code distributed need not include anything that is normallydistributed (in either source or binary form) with the major components (compilerkernel and so on) of the operating system on which the executable runs unless thatcomponent itself accompanies the executable

If distribution of executable or object code is made by offering access to copy from adesignated place then offering equivalent access to copy the source code from the sameplace counts as distribution of the source code even though third parties are notcompelled to copy the source along with the object code

4 You may not copy modify sublicense or distribute the Program except as expresslyprovided under this License Any attempt otherwise to copy modify sublicense ordistribute the Program is void and will automatically terminate your rights under thisLicense However parties who have received copies or rights from you under thisLicense will not have their licenses terminated so long as such parties remain in fullcompliance

5 You are not required to accept this License since you have not signed it Howevernothing else grants you permission to modify or distribute the Program or its derivativeworks These actions are prohibited by law if you do not accept this License Thereforeby modifying or distributing the Program (or any work based on the Program) you indicateyour acceptance of this License to do so and all its terms and conditions for copyingdistributing or modifying the Program or works based on it

6 Each time you redistribute the Program (or any work based on the Program) therecipient automatically receives a license from the original licensor to copy distributeor modify the Program subject to these terms and conditions You may not impose anyfurther restrictions on the recipients exercise of the rights granted herein You arenot responsible for enforcing compliance by third parties to this License

7 If as a consequence of a court judgment or allegation of patent infringement or forany other reason (not limited to patent issues) conditions are imposed on you (whetherby court order agreement or otherwise) that contradict the conditions of this Licensethey do not excuse you from the conditions of this License If you cannot distribute soas to satisfy simultaneously your obligations under this License and any other pertinentobligations then as a consequence you may not distribute the Program at all Forexample if a patent license would not permit royaltyshyfree redistribution of the Programby all those who receive copies directly or indirectly through you then the only way youcould satisfy both it and this License would be to refrain entirely from distribution ofthe Program

If any portion of this section is held invalid or unenforceable under any particularcircumstance the balance of the section is intended to apply and the section as a wholeis intended to apply in other circumstances

It is not the purpose of this section to induce you to infringe any patents or otherproperty right claims or to contest validity of any such claims this section has thesole purpose of protecting the integrity of the free software distribution system whichis implemented by public license practices Many people have made generous contributionsto the wide range of software distributed through that system in reliance on consistentapplication of that system it is up to the authordonor to decide if he or she iswilling to distribute software through any other system and a licensee cannot impose thatchoice

This section is intended to make thoroughly clear what is believed to be a consequence ofthe rest of this License

8 If the distribution andor use of the Program is restricted in certain countrieseither by patents or by copyrighted interfaces the original copyright holder who placesthe Program under this License may add an explicit geographical distribution limitationexcluding those countries so that distribution is permitted only in or among countriesnot thus excluded In such case this License incorporates the limitation as if writtenin the body of this License

9 The Free Software Foundation may publish revised andor new versions of the GeneralPublic License from time to time Such new versions will be similar in spirit to thepresent version but may differ in detail to address new problems or concerns

Each version is given a distinguishing version number If the Program specifies a versionnumber of this License which applies to it and any later version you have the optionof following the terms and conditions either of that version or of any later versionpublished by the Free Software Foundation If the Program does not specify a versionnumber of this License you may choose any version ever published by the Free SoftwareFoundation

10 If you wish to incorporate parts of the Program into other free programs whosedistribution conditions are different write to the author to ask for permission Forsoftware which is copyrighted by the Free Software Foundation write to the Free SoftwareFoundation we sometimes make exceptions for this Our decision will be guided by the two

goals of preserving the free status of all derivatives of our free software and ofpromoting the sharing and reuse of software generally

NO WARRANTY

11 BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE THERE IS NO WARRANTY FOR THE PROGRAMTO THE EXTENT PERMITTED BY APPLICABLE LAW EXCEPT WHEN OTHERWISE STATED IN WRITING THECOPYRIGHT HOLDERS ANDOR OTHER PARTIES PROVIDE THE PROGRAM AS IS WITHOUT WARRANTY OFANY KIND EITHER EXPRESSED OR IMPLIED INCLUDING BUT NOT LIMITED TO THE IMPLIEDWARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE THE ENTIRE RISK AS TOTHE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU SHOULD THE PROGRAM PROVEDEFECTIVE YOU ASSUME THE COST OF ALL NECESSARY SERVICING REPAIR OR CORRECTION

12 IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING WILL ANYCOPYRIGHT HOLDER OR ANY OTHER PARTY WHO MAY MODIFY ANDOR REDISTRIBUTE THE PROGRAM ASPERMITTED ABOVE BE LIABLE TO YOU FOR DAMAGES INCLUDING ANY GENERAL SPECIAL INCIDENTALOR CONSEQUENTIAL DAMAGES ARISING OUT OF THE USE OR INABILITY TO USE THE PROGRAM(INCLUDING BUT NOT LIMITED TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSESSUSTAINED BY YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHERPROGRAMS) EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF SUCHDAMAGES

How to Apply These Terms to Your New Programs

If you develop a new program and you want it to be of the greatest possible use to thepublic the best way to achieve this is to make it free software which everyone canredistribute and change under these terms

To do so attach the following notices to the program It is safest to attach them to thestart of each source file to most effectively convey the exclusion of warranty and eachfile should have at least the copyright line and a pointer to where the full notice isfound

one line to give the programs name and an idea of what it does

Copyright Oc 19yy name of author

This program is free software you can redistribute it andor modify it under the termsof the GNU General Public License as published by the Free Software Foundation eitherversion 2 of the License or (at your option) any later version

This program is distributed in the hope that it will be useful but WITHOUT ANY WARRANTYwithout even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSESee the GNU General Public License for more details

You should have received a copy of the GNU General Public License along with thisprogram if not write to the Free Software Foundation Inc 675 Mass Ave Cambridge MA02139

Also add information on how to contact you by electronic and paper mail

If the program is interactive make it output a short notice like this when it starts inan interactive mode

Gnomovision version 69 Copyright Oc 19yy name of author

Gnomovision comes with ABSOLUTELY NO WARRANTY for details type `show w

This is free software and you are welcome to redistribute it under certain conditionstype show c for details

The hypothetical commands show w and show c should show the appropriate parts of theGeneral Public License Of course the commands you use may be called something otherthan show w and show c they could even be mouseshyclicks or menu items whatever suitsyour program

You should also get your employer (if you work as a programmer) or your school if anyto sign a copyright disclaimer for the program if necessary Here is a sample alterthe names

Yoyodyne Inc hereby disclaims all copyright interest in the program `Gnomovision(which makes passes at compilers) written by James Hacker

signature of Ty Coon 1 April 1989

Ty Coon President of Vice

This General Public License does not permit incorporating your program into proprietaryprograms If your program is a subroutine library you may consider it more useful topermit linking proprietary applications with the library If this is what you want to douse the GNU Library General Public License instead of this License

Apeacutendice C

The GNU Library General Public

License

GNU LIBRARY GENERAL PUBLIC LICENSE

Version 2 June 1991

Copyright Oc 1991 Free Software Foundation Inc 675 Mass Ave Cambridge MA 02139 USAEveryone is permitted to copy and distribute verbatim copies of this license documentbut

changing it is not allowed [This is the first released version of the library GPL It isnumbered 2 because it goes with version 2 of the ordinary GPL]

Preamble

The licenses for most software are designed to take away your freedom to share and changeit By contrast the GNU General Public Licenses are intended to guarantee your freedomto share and change free softwareshyto make sure the software is free for all its users

This license the Library General Public License applies to some specially designatedFree Software Foundation software and to any other libraries whose authors decide to useit You can use it for your libraries too

When we speak of free software we are referring to freedom not price Our GeneralPublic Licenses are designed to make sure that you have the freedom to distribute copiesof free software (and charge for this service if you wish) that you receive source codeor can get it if you want it that you can change the software or use pieces of it in newfree programs and that you know you can do these things

To protect your rights we need to make restrictions that forbid anyone to deny you theserights or to ask you to surrender the rights These restrictions translate to certainresponsibilities for you if you distribute copies of the library or if you modify it

For example if you distribute copies of the library whether gratis or for a fee youmust give the recipients all the rights that we gave you You must make sure that theytoo receive or can get the source code If you link a program with the library you mustprovide complete object files to the recipients so that they can relink them with thelibrary after making changes to the library and recompiling it And you must show themthese terms so they know their rights

Our method of protecting your rights has two steps (1) copyright the library and (2)offer you this license which gives you legal permission to copy distribute andor modifythe library

Also for each distributors protection we want to make certain that everyoneunderstands that there is no warranty for this free library If the library is modifiedby someone else and passed on we want its recipients to know that what they have is notthe original version so that any problems introduced by others will not reflect on theoriginal authors reputations

Finally any free program is threatened constantly by software patents We wish to avoidthe danger that companies distributing free software will individually obtain patentlicenses thus in effect transforming the program into proprietary software To preventthis we have made it clear that any patent must be licensed for everyones free use ornot licensed at all

Most GNU software including some libraries is covered by the ordinary GNU GeneralPublic License which was designed for utility programs This license the GNU LibraryGeneral Public License applies to certain designated libraries This license is quitedifferent from the ordinary one be sure to read it in full and dont assume thatanything in it is the same as in the ordinary license

The reason we have a separate public license for some libraries is that they blur thedistinction we usually make between modifying or adding to a program and simply using itLinking a program with a library without changing the library is in some sense simplyusing the library and is analogous to running a utility program or application programHowever in a textual and legal sense the linked executable is a combined work aderivative of the original library and the ordinary General Public License treats it assuch

Because of this blurred distinction using the ordinary General Public License forlibraries did not effectively promote software sharing because most developers did notuse the libraries We concluded that weaker conditions might promote sharing better

However unrestricted linking of nonshyfree programs would deprive the users of thoseprograms of all benefit from the free status of the libraries themselves This LibraryGeneral Public License is intended to permit developers of nonshyfree programs to use freelibraries while preserving your freedom as a user of such programs to change the freelibraries that are incorporated in them (We have not seen how to achieve this as regardschanges in header files but we have achieved it as regards changes in the actualfunctions of the Library) The hope is that this will lead to faster development of freelibraries

The precise terms and conditions for copying distribution and modification follow Payclose attention to the difference between a work based on the library and a work thatuses the library

The former contains code derived from the library while the latter only works togetherwith the library

Note that it is possible for a library to be covered by the ordinary General PublicLicense rather than by this special one

Terms and Conditions for Copying Distribution and Modification

0 This License Agreement applies to any software library which contains a notice placedby the copyright holder or other authorized party saying it may be distributed under theterms of this Library General Public License (also called this License) Each licenseeis addressed as you

A library means a collection of software functions andor data prepared so as to beconveniently linked with application programs (which use some of those functions anddata) to form executables

The Library below refers to any such software library or work which has beendistributed under these terms A work based on the Library means either the Library orany derivative work under copyright law that is to say a work containing the Library ora portion of it either verbatim or with modifications andor translatedstraightforwardly into another language

(Hereinafter translation is included without limitation in the term modification)

Source code for a work means the preferred form of the work for making modifications toit For a library complete source code means all the source code for all modules itcontains plus any associated interface definition files plus the scripts used tocontrol compilation and installation of the library

Activities other than copying distribution and modification are not covered by thisLicense they are outside its scope The act of running a program using the Library isnot restricted and output from such a program is covered only if its contents constitutea work based on the Library (independent of the use of the Library in a tool for writingit) Whether that is true depends on what the Library does and what the program that usesthe Library does

1 You may copy and distribute verbatim copies of the Librarys complete source code asyou receive it in any medium provided that you conspicuously and appropriately publishon each copy an appropriate copyright notice and disclaimer of warranty keep intact allthe notices that refer to this License and to the absence of any warranty and distributea copy of this License along with the Library

You may charge a fee for the physical act of transferring a copy and you may at youroption offer warranty protection in exchange for a fee

2 You may modify your copy or copies of the Library or any portion of it thus forming awork based on the Library and copy and distribute such modifications or work under theterms of Section 1 above provided that you also meet all of these conditions

a The modified work must itself be a software library

b You must cause the files modified to carry prominent notices stating that you changedthe files and the date of any change

c You must cause the whole of the work to be licensed at no charge to all third partiesunder the terms of this License

d If a facility in the modified Library refers to a function or a table of data to besupplied by an application program that uses the facility other than as an argumentpassed when the facility is invoked then you must make a good faith effort to ensurethat in the event an application does not supply such function or table the facilitystill operates and performs whatever part of its purpose remains meaningful

(For example a function in a library to compute square roots has a purpose that isentirely wellshydefined independent of the application Therefore Subsection 2d requiresthat any applicationshysupplied function or table used by this function must be optionalif the application does not supply it the square root function must still compute squareroots)

These requirements apply to the modified work as a whole If identifiable sections ofthat work are not derived from the Library and can be reasonably considered independentand separate works in themselves then this License and its terms do not apply to thosesections when you distribute them as separate works But when you distribute the same

sections as part of a whole which is a work based on the Library the distribution of thewhole must be on the terms of this License whose permissions for other licensees extendto the entire whole and thus to each and every part regardless of who wrote it

Thus it is not the intent of this section to claim rights or contest your rights to workwritten entirely by you rather the intent is to exercise the right to control thedistribution of derivative or collective works based on the Library

In addition mere aggregation of another work not based on the Library with the Library(or with a work based on the Library) on a volume of a storage or distribution mediumdoes not bring the other work under the scope of this License

3 You may opt to apply the terms of the ordinary GNU General Public License instead ofthis License to a given copy of the Library To do this you must alter all the noticesthat refer to this License so that they refer to the ordinary GNU General PublicLicense version 2 instead of to this License (If a newer version than version 2 of theordinary GNU General Public License has appeared then you can specify that versioninstead if you wish) Do not make any other change in these notices

Once this change is made in a given copy it is irreversible for that copy so theordinary GNU General Public License applies to all subsequent copies and derivative worksmade from that copy

This option is useful when you wish to copy part of the code of the Library into aprogram that is not a library

4 You may copy and distribute the Library (or a portion or derivative of it underSection 2) in object code or executable form under the terms of Sections 1 and 2 aboveprovided that you accompany it with the complete corresponding machineshyreadable sourcecode which must be distributed under the terms of Sections 1 and 2 above on a mediumcustomarily used for software interchange

If distribution of object code is made by offering access to copy from a designatedplace then offering equivalent access to copy the source code from the same placesatisfies the requirement to distribute the source code even though third parties arenot compelled to copy the source along with the object code

5 A program that contains no derivative of any portion of the Library but is designedto work with the Library by being compiled or linked with it is called a work that usesthe Library

Such a work in isolation is not a derivative work of the Library and therefore fallsoutside the scope of this License

However linking a work that uses the Library with the Library creates an executablethat is a derivative of the Library (because it contains portions of the Library) ratherthan a work that uses the library The executable is therefore covered by this LicenseSection 6 states terms for distribution of such executables

When a work that uses the Library uses material from a header file that is part of theLibrary the object code for the work may be a derivative work of the Library even thoughthe source code is not Whether this is true is especially significant if the work can belinked without the Library or if the work is itself a library The threshold for this tobe true is not precisely defined by law

If such an object file uses only numerical parameters data structure layouts andaccessors and small macros and small inline functions (ten lines or less in length)

then the use of the object file is unrestricted regardless of whether it is legally aderivative work (Executables containing this object code plus portions of the Librarywill still fall under Section 6)

Otherwise if the work is a derivative of the Library you may distribute the object codefor the work under the terms of Section 6 Any executables containing that work also fallunder Section 6 whether or not they are linked directly with the Library itself

6 As an exception to the Sections above you may also compile or link a work that usesthe Library with the Library to produce a work containing portions of the Library anddistribute that work under terms of your choice provided that the terms permitmodification of the work for the customers own use and reverse engineering for debuggingsuch modifications

You must give prominent notice with each copy of the work that the Library is used in itand that the Library and its use are covered by this License You must supply a copy ofthis License If the work during execution displays copyright notices you must includethe copyright notice for the Library among them as well as a reference directing theuser to the copy of this License Also you must do one of these things

a Accompany the work with the complete corresponding machineshyreadable source code forthe Library including whatever changes were used in the work (which must be distributedunder Sections 1 and 2 above) and if the work is an executable linked with the Librarywith the complete machineshyreadable work that uses the Library as object code andorsource code so that the user can modify the Library and then relink to produce amodified executable containing the modified Library (It is understood that the user whochanges the contents of definitions files in the Library will not necessarily be able torecompile the application to use the modified definitions)

b Accompany the work with a written offer valid for at least three years to give thesame user the materials specified in Subsection 6a above for a charge no more than thecost of performing this distribution

c If distribution of the work is made by offering access to copy from a designatedplace offer equivalent access to copy the above specified materials from the same place

d Verify that the user has already received a copy of these materials or that you havealready sent this user a copy

For an executable the required form of the work that uses the Library must include anydata and utility programs needed for reproducing the executable from it However as aspecial exception the source code distributed need not include anything that is normallydistributed (in either source or binary form) with the major components (compilerkernel and so on) of the operating system on which the executable runs unless thatcomponent itself accompanies the executable

It may happen that this requirement contradicts the license restrictions of otherproprietary libraries that do not normally accompany the operating system Such acontradiction means you cannot use both them and the Library together in an executablethat you distribute

7 You may place library facilities that are a work based on the Library sideshybyshyside ina single library together with other library facilities not covered by this License anddistribute such a combined library provided that the separate distribution of the workbased on the Library and of the other library facilities is otherwise permitted andprovided that you do these two things

a Accompany the combined library with a copy of the same work based on the Libraryuncombined with any other library facilities This must be distributed under the terms ofthe Sections above

b Give prominent notice with the combined library of the fact that part of it is a workbased on the Library and explaining where to find the accompanying uncombined form ofthe same work

8 You may not copy modify sublicense link with or distribute the Library except asexpressly provided under this License Any attempt otherwise to copy modify sublicenselink with or distribute the Library is void and will automatically terminate yourrights under this License

However parties who have received copies or rights from you under this License willnot have their licenses terminated so long as such parties remain in full compliance

9 You are not required to accept this License since you have not signed it Howevernothing else grants you permission to modify or distribute the Library or its derivativeworks These actions are prohibited by law if you do not accept this License Thereforeby modifying or distributing the Library (or any work based on the Library) you indicateyour acceptance of this License to do so and all its terms and conditions for copyingdistributing or modifying the Library or works based on it

10 Each time you redistribute the Library (or any work based on the Library) therecipient automatically receives a license from the original licensor to copydistribute link with or modify the Library subject to these terms and conditions Youmay not impose any further restrictions on the recipients exercise of the rights grantedherein You are not responsible for enforcing compliance by third parties to thisLicense

11 If as a consequence of a court judgment or allegation of patent infringement or forany other reason (not limited to patent issues) conditions are imposed on you (whetherby court order agreement or otherwise) that contradict the conditions of this Licensethey do not excuse you from the conditions of this License If you cannot distribute soas to satisfy simultaneously your obligations under this License and any other pertinentobligations then as a consequence you may not distribute the Library at all Forexample if a patent license would not permit royaltyshyfree redistribution of the Libraryby all those who receive copies directly or indirectly through you then the only way youcould satisfy both it and this License would be to refrain entirely from distribution ofthe Library

If any portion of this section is held invalid or unenforceable under any particularcircumstance the balance of the section is intended to apply and the section as a wholeis intended to apply in other circumstances

It is not the purpose of this section to induce you to infringe any patents or otherproperty right claims or to contest validity of any such claims this section has thesole purpose of protecting the integrity of the free software distribution system whichis implemented by public license practices Many people have made generous contributionsto the wide range of software distributed through that system in reliance on consistentapplication of that system it is up to the authordonor to decide if he or she iswilling to distribute software through any other system and a licensee cannot impose thatchoice

This section is intended to make thoroughly clear what is believed to be a consequence ofthe rest of this License

12 If the distribution andor use of the Library is restricted in certain countrieseither by patents or by copyrighted interfaces the original copyright holder who placesthe Library under this License may add an explicit geographical distribution limitationexcluding those countries so that distribution is permitted only in or among countriesnot thus excluded In such case this License incorporates the limitation as if writtenin the body of this License

13 The Free Software Foundation may publish revised andor new versions of the LibraryGeneral Public License from time to time Such new versions will be similar in spirit tothe present version but may differ in detail to address new problems or concerns

Each version is given a distinguishing version number If the Library specifies a versionnumber of this License which applies to it and any later version you have the option offollowing the terms and conditions either of that version or of any later versionpublished by the Free Software Foundation If the Library does not specify a licenseversion number you may choose any version ever published by the Free SoftwareFoundation

14 If you wish to incorporate parts of the Library into other free programs whosedistribution conditions are incompatible with these write to the author to ask forpermission For software which is copyrighted by the Free Software Foundation write tothe Free Software Foundation we sometimes make exceptions for this Our decision will beguided by the two goals of preserving the free status of all derivatives of our freesoftware and of promoting the sharing and reuse of software generally

NO WARRANTY

11 BECAUSE THE LIBRARY IS LICENSED FREE OF CHARGE THERE IS NO WARRANTY FOR THE LIBRARYTO THE EXTENT PERMITTED BY APPLICABLE LAW EXCEPT WHEN OTHERWISE STATED IN WRITING THECOPYRIGHT HOLDERS ANDOR OTHER PARTIES PROVIDE THE LIBRARY AS IS WITHOUT WARRANTY OFANY KIND EITHER EXPRESSED OR IMPLIED INCLUDING BUT NOT LIMITED TO THE IMPLIEDWARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE THE ENTIRE RISK AS TOTHE QUALITY AND PERFORMANCE OF THE LIBRARY IS WITH YOU SHOULD THE LIBRARY PROVEDEFECTIVE YOU ASSUME THE COST OF ALL NECESSARY SERVICING REPAIR OR CORRECTION

12 IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING WILL ANYCOPYRIGHT HOLDER OR ANY OTHER PARTY WHO MAY MODIFY ANDOR REDISTRIBUTE THE LIBRARY ASPERMITTED ABOVE BE LIABLE TO YOU FOR DAMAGES INCLUDING ANY GENERAL SPECIAL INCIDENTALOR CONSEQUENTIAL DAMAGES ARISING OUT OF THE USE OR INABILITY TO USE THE LIBRARY(INCLUDING BUT NOT LIMITED TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSESSUSTAINED BY YOU OR THIRD PARTIES OR A FAILURE OF THE LIBRARY TO OPERATE WITH ANY OTHERSOFTWARE) EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF SUCHDAMAGES

How to Apply These Terms to Your New Libraries

If you develop a new library and you want it to be of the greatest possible use to thepublic we recommend making it free software that everyone can redistribute and changeYou can do so by permitting redistribution under these terms (or alternatively underthe terms of the ordinary General Public License)

To apply these terms attach the following notices to the library It is safest to attachthem to the start of each source file to most effectively convey the exclusion ofwarranty and each file should have at least the copyright line and a pointer to wherethe full notice is found

one line to give the librarys name and a brief idea of what it does

Copyright (C) year name of author

This library is free software you can redistribute it andor modify it under the termsof the GNU Library General Public License as published by the Free Software Foundationeither version 2 of the License or (at your option) any later version

This library is distributed in the hope that it will be useful but WITHOUT ANY WARRANTYwithout even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSESee the GNU Library General Public License for more details

You should have received a copy of the GNU Library General Public License along with thislibrary if not write to the Free Software Foundation Inc 675 Mass Ave Cambridge MA02139 USA

Also add information on how to contact you by electronic and paper mail

You should also get your employer (if you work as a programmer) or your school if anyto sign a copyright disclaimer for the library if necessary Here is a sample alterthe names

Yoyodyne Inc hereby disclaims all copyright interest in the library `Frob (a libraryfor tweaking knobs) written by James Random Hacker

signature of Ty Coon 1 April 1990

Ty Coon President of Vice

Thats all there is to it

Apeacutendice D

iquestQueacute es LuCAS

El proyecto LuCAS (Linux en CAStellano) comenzoacute como tantas otras cosas ligadas a Linuxen un bar tomando cervezas (reales no virtuales) Era allaacute por marzo de 1995 y ya sehabiacutea comentado en las aacutereas de FidoNet la necesidad de disponer de textos en castellanosobre Linux Fue en aquel bar el bar Ekin de Algorta (Bizkaia) donde nos reuniacuteamos losusuarios de FidoNet todos los domingos donde surgioacute la idea de pasar a la accioacuten Trasdiscutirlo un poco decidimos comenzar por traducir algo que fuese uacutetil para aquellos quecomenzaban a dar sus primeros pasos en linux y creiacutemos que el Installation amp GettingStarted de Matt Welsh era el documento maacutes adecuado Como era mucho trabajo para unasola persona y habiacutea mucha gente que se habiacutea mostrado dispuesta a colaborar habiacutea quehacerlo bien y el trabajo de traducir un libro como eacuteste requeriacutea una labor decoordinacioacuten que inmediatamente asumimos Ramoacuten Gutieacuterrez y yo Alfonso Belloso Yo mehice cargo de coordinar a los traductores para que no hiciesen trabajo repetido y Ramoacutense encargaba de juntar los trabajos y generar el documento final Pedimos permiso alpropio Matt Welsh y asiacute echamos a andar

Hubo que esperar un largo tiempo a tener una primera versioacuten presentable del libro perose consiguioacute Fundamentalmente el hecho de que era una experiencia nueva y ladiversidad de gente que colaboroacute hizo que este primer paso durase casi un antildeo peromerecioacute la pena esperar Hay que decir que a pesar de que todo este movimiento surgioacute deFidoNet y que desde alliacute se sigue muy de cerca al poco de comenzar a trabajar en ellofue cuando conseguiacute mi primera cuenta de Internet y comprobeacute que la forma maacutes praacutecticade coordinarnos era a traveacutes de La Red ya que por Fidonet las comunicaciones se haciacuteandemasiado largas en el tiempo y no siempre eran seguras (para contactar con alguacutencolaborador a veces se podiacutea tardar 2 semanas o no saber nada de eacutel jamaacutes) Y con ellocomenzamos a disponer de maacutes herramientas primero un servidor de ftp luego una lista decorreo un servidor de Web y asiacute hasta hoy Bueno pues una vez terminado este primerlibro nos quedoacute el gusanillo de hacer maacutes y visto que yo acabeacute un poco cansado vinoJuan Joseacute Amor me tomoacute el relevo y comenzamos a traducir la Network AdministratorGuide de Olaf Kirch Esta vez y con la infraestructura ya montada tardamos unos pocosmeses en tener la primera versioacuten

Y despueacutes de eacuteste ya se estaacuten haciendo maacutes Ya esta terminada la traduccioacuten de la LinuxUser Guide (en su fase alfa) y hay alguacuten proyecto maacutes en marcha No quiero dejar demencionar otros proyectos que trabajan en paralelo a eacuteste LuCAS en siacute se ha idodedicando maacutes a la labor de traduccioacuten de textos tipo libro maacutes concretamente a los delLDP y creaciones propias si bien en su origen se ideoacute para traducir cualquier tipo dedocumento e incluso para crear documentos directamente en castellano El SLUG (SpanishLinux User Group) ya existiacutea cuando surgioacute LuCAS o acababa de aparecer Al amparo deLuCAS surgioacute el INSFLUG que se centra en la traduccioacutencreacioacuten de FAQs HOWTOs ydocumentos maacutes pequentildeos Y probablemente existan maacutes grupos haciendo tareas similarespero que ahora no conozco ni soy capaz de recordar

Para contactar con los coordinadores del grupo LuCAS puede hacerlo con Alfonso Belloso

Martiacutenez ltalfonbipv02biehuesgt o en ltalfoniiesesgt y con Juan Joseacute Amor Iglesiasltjjamorlsfiupmesgt

Apeacutendice E

iquestQueacute es INSFLUG

El INSFLUG nacioacute allaacute por marzo del 96 siendo su seno materno el aacuterea echomail deFidoNet R34LINUX Surge ante el entusiasmo de los que empezaacutebamos por aquel entonces aadentrarnos en el mundo del Linux maravillados por como un SO tan potente dedistribucioacuten libre podiacutea haberse hecho realidad gracias al buen hacer generosidad eincreiacuteble colaboracioacuten entre tantas personas dispersas por el globo

Nos sentimos auacuten maacutes maravillados al observar la increiacuteble participacioacuten de la gente quefrecuentaba el aacuterea modeacutelica en FidoNet y por la inestimable ayuda que alliacute seprestaba eso fue (haciendo un poco de psicoacutelogo) lo que produjo la formacioacuten delINSFLUG un inmenso y sincero agradecimiento ademaacutes de enormes ganas de corresponder pornuestra parte aportando nuestro granito de arena a la comunidad Linux en forma detraducciones de Howtos y FAQs documentos que generalmente no superan la decena depaacuteginas y con cuya traduccioacuten ademaacutes de aportar el novel o no tan novel profundiza enel tema del que trate el Howto a medida que lo traduce redundando en beneficio para eacutelmismo shy)

El INSFLUG se centra en la traduccioacuten de Howtos y FAQs (Frecuently Asked Questions algoasiacute como Preguntas de Uso Frecuente PUFs)

Para la traduccioacuten no necesitas maacutes que un editor de texto (En Linux hay muchos) normaly el paquete linuxdocshysgml con el que empleando un lenguaje muy sencillo similar alHTML una vez escrito un soacutelo fuente se podraacuten obtener a partir de eacutel el documento enformatos dvi ps txt lyx rtf info html etc

Cuentas ademaacutes con una guiacutea traducida del uso del linuxdocshysgml en la que se antildeadendetalles de configuracioacuten para el castellano ademaacutes de la facilidad que supone eltraducir editando el fuente original en ingleacutes ya que los coacutedigos etc ya estaacuten noobstante es un lenguaje sencilliacutesimo ademaacutes de ser el formato oficial de todos losHowtos

El INSFLUG colabora estrechamente con LuCAS es maacutes hay varias personas que colaborancon ambos grupos El grupo LuCAS se dedica mayormente a las guiacuteas (guides) los librosmaacutes extensos del LDP o (Linux Documentation Project)

El coordinador de INSFLUG es Francisco J Montilla (email ltpacopepeinamecomgt ircpukka FiDO 234540222) Si desea maacutes informacioacuten puede consultar su paacutegina en WWW enlthttpwwwinsflugnovaesgt y su espacio de FTP en ltftpftpinsflugnovaesgt

Page 5: G.L.U.P.€€Guía€de€Linux€Para€el€Usuariomural.uv.es/~jalto/LINUX.pdf3 En€el€principio€11 3.1€La€computadora€despierta 3.2€Linux€despierta 3.3€La€actuación€del€usuario

532 XTerm

54 Gestores de ventanas

541 Cuando se crean nuevas ventanas

542 Foco

543 Moviendo ventanas

544 Profundidad

545 Iconizar

546 Variando el tamantildeo

547 Maximizacioacuten

548 Menuacutes

55 Atributos X

551 Geometriacutea

552 Presentacioacuten

56 Caracteriacutesticas comunes

561 Botones

562 Barras de menuacute

563 Barras de desplazamiento

6 Trabajando con Unix 47

61 Comodines

611 iquestQueacute ocurre realmente

612 El signo de interrogacioacuten

62 Ganar tiempo con bash

621 Editando la liacutenea de comandos

622 Completamiento de comandos y nombres de fichero

63 La entrada estaacutendar y La salida estaacutendar

631 Algunos conceptos de Unix

632 Redireccionar la salida

633 Redireccionar la entrada

634 Las tuberiacuteas

64 Multitarea

641 Usando el control de trabajos

642 Teoriacutea del control de trabajos

65 Consolas virtuales como estar en varios lugares a la vez

7 Pequentildeos programas potentes 61

71 El poder de Unix

72 Trabajando con ficheros

73 Estadiacutesticas del sistema

74 iquestQueacute hay en un fichero

75 Comandos de edicioacuten

8 Editando archivos con Emacs 71

81 iquestQueacute es Emacs

82 Comenzar raacutepidamente en X

83 Editando varios archivos al mismo tiempo

84 Terminando una sesioacuten de edicioacuten

85 La tecla Meta

86 Cortar pegar destruir y tirar

87 Buscar y reemplazar

88 iquestQueacute es lo que ocurre realmente

89 Pidiendo ayuda a Emacs

810 Especializando buffers Modos

811 Modos de programacioacuten

8111 Modo C

8112 Modo Scheme

8113 Modo de correo

812 Como ser maacutes eficiente auacuten

813 Personalizando Emacs

814 Averiguando maacutes

9 Tengo que ser yo mismo 91

91 Personalizacioacuten del bash

911 Arranque del shell

912 Ficheros de arranque

913 Creando alias

914 Variables de entorno

92 Los ficheros de inicio de X Window

921 Configuracioacuten de twm

922 Configuracioacuten de fvwm

93 Otros ficheros de inicio

931 El fichero de configuracioacuten de Emacs

932 Configuracioacuten por defecto del FTP

933 Permitiendo un acceso remoto sencillo a su cuenta

934 Redireccioacuten de correo

94 Veamos algunos ejemplos

10 Hablando con los demaacutes 111

101 Correo electroacutenico

1011 Enviar correo

1012 Leer el correo

102 Noticias maacutes que de sobra

103 Localizar a la gente

1031 Planes y proyectos

104 Uso remoto de sistemas

105 Intercambio de ficheros

106 Viajando por la telarantildea

11 Comandos divertidos 117

111 find el buscador de ficheros

1111 Generalidades

1112 Expresiones

1113 Opciones

1114 Test

1115 Acciones

1116 Operadores

1117 Ejemplos

1118 Una uacuteltima palabra

112 tar el archivador en cinta

1121 Introduccioacuten

1122 Opciones principales

1123 Modificadores

1124 Ejemplos

113 dd el duplicador de datos

1131 Opciones

1132 Ejemplos

114 sort el clasificador de datos

1141 Introduccioacuten

1142 Opciones

1143 Ejemplos

12 Errores equivocaciones bugs y otras molestias 129

121 Evitando errores

122 Queacute hacer cuando algo va mal

123 No es fallo tuyo

1231 Cuando hay un error

1232 Notificando un error

A Introduccioacuten a vi 133

A1 Una raacutepida historia de Vi

A2 Raacutepido tutorial de Ed

A21 Crear un fichero

A22 Editar un fichero existente

A23 Nuacutemeros de liacutenea en detalle

A3 Raacutepido tutorial de Vi

A31 Ejecutar vi

A32 Comandos de movimiento del cursor

A33 Borrar texto

A34 Salvar un fichero

A35 iquestQueacute viene a continuacioacuten

A4 Tutorial avanzado de Vi

A41 Movimiento

A42 Modificacioacuten del texto

A43 Copiar y mover bloques de texto

A44 Buacutesqueda y cambio de texto

B The GNU General Public License 147

C The GNU Library General Public License 155

D iquestQueacute es LuCAS 165

E iquestQueacute es INSFLUG 167

Bibliografiacutea

[1] Almesberger Werner LILO Generic Boot Loader for Linux Disponibleelectroacutenicamente tsxshy11mitedu 3 de Julio de 1993

[2] Bach Maurice J The Design of the UNIX Operating System Englewood Cliffs NewJersey PrenticeshyHall Inc 1986

[3] Lamport Leslie LATEX A Document Preparation System Reading MassachusettsAddisonshyWesley Publishing Company 1986

[4] Stallman Richard M GNU Emacs Manual octava edicioacuten Cambridge Massachusetts FreeSoftware Foundation 1993

Capiacutetulo 1

Introduccioacuten

How much does it cost to entice a dopeshysmoking Unix system guru to Dayton

Brian Boyle Unix Worlds First Annual Salary Survey

11 iquestQuieacuten debe leer este libro

iquestEs Ud la persona que debe leer este libro Permiacutetame responder a esta preguntahacieacutendole estas otras iquestAcaba de obtener Linux de alguna fuente lo instaloacute y ahoraquiere saber que puede hacer O iquestes un usuario de computadoras que nunca ha utilizadoUnix y estaacute considerando usar Linux pero quiere saber lo que puede hacer con eacutel

Si tiene este libro la respuesta a esas preguntas probablemente es siacute Cualquiera quetiene Linux (el clon gratuito de Unix escrito por Linus Torvalds) en su PC pero no sabeque hacer despueacutes de la instalacioacuten debe leer este libro Aquiacute encontraraacute explicacionessobre la mayoriacutea de los comandos baacutesicos de Unix e incluso de algunos avanzados Tambieacutentrataremos acerca del potente editor GNU Emacs y de muchas otras aplicaciones importantesen Unix

111 iquestQueacute debe hacer antes de leer este libro

Este libro supone que Ud tiene acceso a un sistema Unix (iexclPara aprender a nadar hay quemojarse) Maacutes importante auacuten el sistema Unix antes mencionado debe ser una PC INTELcorriendo Linux

Este requerimiento no es estrictamente necesario pero cuando las versiones de Unixdifieran en su comportamiento nos ocuparemos de las respuestas que exhiba Linux y no delas otras variantes de Unix

Linux estaacute disponible de distintas maneras llamadas distribuciones Espero que hayaencontrado una distribucioacuten completa como por ejemplo la MCCshyInterim y que la tengainstalada Existen diferencias entre las distintas distribuciones de Linux pero lamayoriacutea de ellas son insignificantes

Ocasionalmente veraacute que en este libro las cosas se ven un poquito distintas a lo que veen su computadora Si le sucede esto es probable que esteacute utilizando una versioacutendistinta de la miacutea estoy interesado en recibir informes de tales casos

Si Ud es el superusuario (el ocupado del mantenimiento el instalador) del sistemadeberaacute crearse una cuenta de usuario normal para Ud mismo Consulte por favor losmanuales de instalacioacuten para obtener la informacioacuten necesaria Si no es el superusuariodeberaacute solicitarle a quien lo sea que le cree una cuenta

Ahora deberaacute tener tiempo y paciencia El aprendizaje de Linux no es faacutecil _la mayoriacutea delas personas encuentran que es maacutes faacutecil aprender el sistema operativo del Macintosh Unavez que aprende Linux las cosas se vuelven mucho maacutes faacuteciles Unix es un sistema muypoderoso y con eacutel es muy faacutecil realizar tareas complejas

Ademaacutes este libro supone que Ud estaacute moderadamente familiarizado con algunos teacuterminoscomputacionales Aunque este requerimiento no es necesario hace maacutes faacutecil la lecturaDebe conocer teacuterminos como `programa o `ejecucioacuten Si no los maneja necesitaraacute de laayuda de alguien maacutes avezado durante su aprendizaje de Unix

12 iquestCoacutemo evitar leer este libro

La mejor manera de aprender el uso de casi cualquier programa de computadora esponieacutendose a trabajar sobre la computadora La mayoriacutea de las personas encuentran de pocobeneficio la lectura de un libro si no utilizan a la vez el programa Por lo tanto lamejor manera de aprender Unix y Linux es utilizaacutendolos Utilice Linux para todo lo quepueda Experimente No tenga miedo es posible que haga algunos liacuteos pero siempre puedevolver a instalar todo Mantenga actualizadas las copias de seguridad y iexcldivieacutertase

Unix no es un sistema operativo tan intuitivamente obvio como algunos otros Por lotanto es probable que deba leer al menos los capiacutetulos 4 5 y el 6 antes de empezar aexperimentar

La manera nuacutemero uno para evitar la lectura de este libro es que utilice la documentacioacutendisponible en liacutenea en Linux Para ello debe aprender a utilizar el comando man sudescripcioacuten estaacute en la Seccioacuten 42

13 iquestCoacutemo leer este libro

La manera sugerida para aprender Unix es leer un poquito luego jugar un poquito Jueguehasta que se sienta coacutemodo con los conceptos y luego puede saltar entre los temas que secubren en el libro Encontraraacute una variedad de temas algunos de los cuales seraacuten de suintereacutes Luego de un tiempo se sentiraacute lo suficientemente confiado como para utilizarcomandos sin saber exactamente que es lo que deberiacutean hacer Esta es una buena sentildeal

Lo que mucha gente asocia con Unix es el shell de Unix se trata de un programa especialque interpreta comandos En la praacutectica eacutesta es una manera conveniente de ver las cosaspero debe saber que Unix es realmente mucho maacutes que el shell o mucho menos _dependiendode como lo mire Este libro le diraacute como utilizar el shell los programas que usualmentevienen con Unix y algunos programas que no son muy comunes (pero que Linux casi siempretrae)

El capiacutetulo actual es un metashycapiacutetulo se discute acerca del libro y de comoaplicarlo para poder hacer nuestro trabajo Los otros capiacutetulos contienen

Capiacutetulo 2 trata del origen y destino de Unix y Linux Tambieacuten se habla de laFree Software Foundation y el proyecto GNU

Capiacutetulo 3 habla de como arrancar y detener su computadora y de lo quesucede durante esas operaciones Gran parte de esto tiene que ver con temasque no es necesario conocer para utilizar Linux pero auacuten asiacute son uacutetiles einteresantes

Capiacutetulo 4 introduce el shell de Unix Es con este programa con el cual laspersonas realizan su trabajo y corren los programas que necesitan Trata delos programas y comandos baacutesicos que necesitaraacute conocer para utilizar Unix

Capiacutetulo 5 cubre el sistema de ventana X2 X es la cara graacutefica principal deUnix e incluso algunas distribuciones lo configuran como opcioacutenpredeterminada

Capiacutetulo 6 analiza algunas de las caracteriacutesticas maacutes avanzadas del shell deUnix El aprendizaje de las teacutecnicas tratadas en este capiacutetulo le ayudaraacute aser maacutes eficiente

Capiacutetulo 7 tiene breves descripciones de muchos de los comandos Unix Cuantomaacutes herramientas sabe utilizar un usuario maacutes raacutepidamente puede concluir sutrabajo

Capiacutetulo 8 describe el editor de textos Emacs Se trata de un programa muyextenso que integra varias de las herramientas de Unix bajo una uacutenicainterfaz

Capiacutetulo 9 trata acerca de las distintas maneras que hay de personalizar unsistema Unix para satisfacer sus gustos personales

Capiacutetulo 10 investiga los medios por los cuales un usuario Unix puedecomunicarse con otras maacutequinas alrededor del mundo incluyendo el correoelectroacutenico y la Red de Alcance Mundial3

Capiacutetulo 11 describe algunos de los comandos con maacutes opciones y maacutes difiacutecilesde utilizar

Capiacutetulo 12 muestra formas sencillas de evitar errores en Unix y Linux

14 Documentacioacuten de Linux

Este libro Guiacutea de Linux Para el Usuario estaacute pensado para el principiante en UnixAfortunadamente el Linux Documentation Project (Proyecto de Documentacioacuten de Linux)tambieacuten estaacute escribiendo libros para los usuarios maacutes experimentados4

_____________________________________________

2 N del T X Window System

3 N del T tambieacuten conocida como WWW o World Wide Web

4 N del T El proyecto LuCAS estaacute ocupaacutendose de traducir parte de la documentacioacuten deLinux al castellano Para obtener informacioacuten actualizada de las traducciones vea elapeacutendice D

141 Otros libros de Linux

Los otros libros incluyen Installation and Getting Started 5 que es una guiacutea paraobtener e instalar Linux The Linux System Administrators Guide trata como organizar ymantener un sistema Linux y The Linux Kernel Hackers Guide que explica como modificarLinux The Linux Network Administrator Guide6 muestra como instalar configurar yutilizar una conexioacuten de red

142 COMOs

Ademaacutes de los libros el Proyecto de Documentacioacuten de Linux7 ha realizado una serie depequentildeos documentos que describen como configurar alguacuten aspecto particular de Linux Porejemplo el SCSIshyCOMO describe algunas de las complicaciones que aparecen al utilizarSCSI (que es una manera estaacutendar de comunicarse con ciertos dispositivos) y Linux

Estos COMOs estaacuten disponibles en varios formatos en un libro como The Linux Bible o DrLinux en el foro de discusioacuten composlinuxanswers o en varios lugares de la WWW Elsitio central de la informacioacuten acerca de Linux es httpwwwlinuxorg

143 iquestQueacute es el Proyecto de Documentacioacuten de Linux

Como casi todo lo asociado con Linux el Proyecto de Documentacioacuten de Linux consiste enun conjunto de gente que trabaja alrededor del mundo Originalmente organizado por LarsWirzenius el Proyecto estaacute coordinado en la actualidad por Matt Welsh con la ayuda deMichael K Johnson

Se espera que el Proyecto de Documentacioacuten de Linux provea los libros que satisfagantodas las necesidades de documentacioacuten de Linux en alguacuten momento Por favor diacuteganos sihemos tenido eacutexito o queacute es lo que debemos mejorar Puede contactar al autor enleg+andrewcmuedu a Matt Welsh en mdwcscornelledu8

15 Sistemas operativos

El propoacutesito principal de un sistema operativo es dar el soporte que necesitan losprogramas que hacen un trabajo de intereacutes para el usuario Por ejemplo Ud puede estarutilizando un editor si quiere crear un documento Ese editor no puede realizar sutrabajo sin la ayuda del sistema operativo _necesitaraacute esta ayuda para interactuar con laterminal los archivos y el resto de la computadora

Si todo lo que hace el sistema operativo es dar soporte a las aplicaciones que Ud deseautilizar iquestpor queacute se necesita todo un libro soacutelo para hablar del sistema operativoExiste un montoacuten de actividades de mantenimiento de rutina (ademaacutes de los programas queutilizaraacute principalmente) que Ud tambieacuten necesitaraacute realizar En el caso de Linux elsistema operativo contiene ademaacutes un montoacuten de minishyaplicaciones para ayudarle arealizar de manera maacutes eficiente su trabajo El conocimiento del sistema operativo leseraacute de ayuda si su trabajo no se centra en alguna aplicacioacuten monoliacutetica

_____________________________________________

5 N del T Disponible en castellano como Linux Instalacioacuten y Primeros Pasos Vea elapeacutendice D

6 N del T Disponible en castellano como Guiacutea de Administracioacuten de Redes con Linux Veael apeacutendice D

7 N del T El grupo INSFLUG ha traducido varios de los documentos HOWTO acuntildeando elteacutermino COMO Vea el apeacutendice E

8 N del T y al coordinador de esta traduccioacuten Ceacutesar Ballardini en cballardsantafecomar

Los sistemas operativos (SO para abreviar) pueden ser simples y miacutenimos como DOS ograndes y complejos como OS2 o VMS Unix trata de estar en un punto medio A la vez queproporciona maacutes recursos y hace maacutes que los primitivos SO no trata de hacer todo Unixse disentildeoacute originalmente como una simplificacioacuten de un sistema operativo que se denominoacuteMultics

La filosofiacutea original de disentildeo de Unix fue la de distribuir la funcionalidad en pequentildeaspartes los programas9 De esta forma el usuario puede obtener nueva funcionalidad ynuevas caracteriacutesticas de una manera relativamente sencilla mediante las diferentescombinaciones de pequentildeas partes (programas) Ademaacutes en el caso de que aparezcan nuevasutilidades (y de hecho aparecen) puede Ud integrarlas en su espacio de trabajo Cuandoescribo este documento por ejemplo utilizo activamente los siguientes programas fvwmpara manejar mis ventanas emacs para editar el texto LATEX para darle forma xdvipara ver una presentacioacuten preliminar dvips para prepararlo para la impresioacuten y luegolpr para imprimirlo Si mantildeana llegara a conseguir otro programa de presentacioacutenpreliminar de archivos dvi podriacutea utilizarlo en lugar del xdvi sin cambiar el resto delos programas que uso En el momento actual mi sistema estaacute corriendo treinta y ocho

programas simultaacuteneamente (Gran parte de ellos son programas del sistema que duermenhasta que tienen alguacuten trabajo especiacutefico para realizar)

Cuando utilice un sistema operativo desearaacute minimizar la cantidad de trabajo que tieneque llevar a cabo para concluir su tarea Unix proporciona varias herramientas que puedenayudarle pero para ello debe conocer que es lo que hacen No es muy productivo perderseuna hora intentando poner a andar alguna cosa y al final tener que abandonar todo Estelibro le ensentildearaacute queacute herramientas debe Ud utilizar en queacute situacioacuten y como combinaresas herramientas entre siacute

La parte clave de un sistema operativo se denomina nuacutecleo10 En muchos sistemasoperativos como Unix OS2 o VMS el nuacutecleo proporciona las funciones necesarias paralos programas que estaacuten corriendo y los planifica para su ejecucioacuten Esto significabaacutesicamente que el programa A puede tomar una cierta cantidad de tiempo el programa B lamisma cantidad etc El nuacutecleo siempre estaacute funcionando es el primer programa quearranca cuando se enciende el sistema y el uacuteltimo programa que hace algo cuando se apagael equipo

_____________________________________________

9 Este disentildeo estuvo determinado por el hardware sobre el cual funcionoacute originalmenteUnix Por alguna extrantildea razoacuten el sistema operativo resultante fue muy uacutetil sobre otrasplataformas de hardware El disentildeo baacutesico fue tan bueno que auacuten veinticinco antildeos despueacutessigue usaacutendose

10 N del T nuacutecleo del ingleacutes kernel

Capiacutetulo 2

A propoacutesito iquestqueacute es Unix

Ken Thompson tiene un automoacutevil en cuyo proyecto de disentildeo trabajoacute A diferencia de otrosautomoacuteviles eacuteste no tiene velociacutemetro nivel de combustible ni ninguna de las estuacutepidasluces que importunan al conductor moderno En su lugar si el conductor comete alguacutenerror se enciende un enorme en el centro del tablero El conductor experimentadodice sabraacute usualmente que es lo que anda mal

21 La historia de Unix

En 1965 los Bell Telephone Laboratories (Bell Labs una divisioacuten de ATampT) estabatrabajando con General Electric y el Proyecto MAC del MIT para escribir un sistemaoperativo llamado Multics

Para hacer maacutes corta una historia de por siacute larga Bell Labs decidioacute que el proyecto noestaba yendo a ninguna parte y disolvioacute el grupo Esto sin embargo dejoacute a la Bell sinun buen sistema operativo

Ken Thompson y Dennis Ritchie decidieron esbozar un sistema operativo que supliera lasnecesidades de la Bell Labs Cuando Thompson llegoacute a necesitar un entorno de desarrollo(1970) que corriera en una PDPshy7 aprovechoacute para poner en praacutectica sus ideas BrianKernighan le dioacute el nombre de Unix como un juego de palabras contra Multics

Un tiempo despueacutes Dennis Ritchie inventoacute el lenguaje de programacioacuten C En 1973 sereescribioacute el sistema operativo Unix en C en lugar del ensamblador original1 En 1977se movioacute Unix a una nueva maacutequina distinta de las PDP en las que habiacutea corridopreviamente mediante un proceso que se denomina migracioacuten El hecho de que Unix estabaescrito en C facilitoacute la migracioacuten pues gran parte del coacutedigo ya escrito necesitoacute soacutelouna simple recompilacioacuten y no una reescritura

Al final de los 70 ATampT teniacutea prohibido competir en la industria de la computacioacuten porlo que otorgoacute licencias econoacutemicas de Unix a varios colegios y universidades Unix sedifundioacute lentamente fuera de las instituciones acadeacutemicas pero pronto tambieacuten se hizopopular en el aacutembito comercial

El Unix de la actualidad es distinto del Unix de 1970 Existen dos corrientesprincipales System V de los Unix System Laboratories (USL) que es una subsidiaria deNovell2 y BSD Berkeley Software Distribution La versioacuten USL estaacute ahora por su cuartaversioacuten o SVR43 mientras que la uacuteltima BSD es la 44 Sin embargo existen muchasdiferentes versiones de Unix entre estas dos La mayoriacutea de las versiones de Unix sondesarrolladas por compantildeiacuteas de software y derivan de uno de los dos agrupamientos Lasversiones que se utilizan actualmente incorporan caracteriacutesticas de ambas variaciones

Las versiones actuales de Unix para PC Intel cuestan entre $500 y $2000

_____________________________________________

1 Lenguaje ensamblador es un lenguaje de computadoras muy elemental y que estaacuteindisolublemente ligado a un tipo particular de ordenador

22 La historia de Linux

El autor primario de Linux es Linus Torvalds A partir de la versioacuten original ha sidomejorado por incontables personas de todo el mundo Se trata de un clon del sistemaoperativo Unix escrito desde cero Ni USL ni la Universidad de California Berkeleytuvieron participacioacuten en la escritura de Linux Una de las cosas maacutes interesantes deLinux es que el desarrollo ocurre simultaacuteneamente alrededor del mundo La gente hacontribuiacutedo desde Australia a Finlandia y esperamos que lo siga haciendo

Linux comenzoacute como un proyecto para explorar el chip 386 Uno de los primeros proyectosde Linus fue un programa que pueda alternar entre la impresioacuten de AAAA y BBBB Esto luegoevolucionoacute hacia Linux

Linux ha sido registrado bajo los teacuterminos de la Licencia Puacuteblica General GNU (GNUGeneral Public License) o GPL Esta licencia escrita por la Free Software Foundation(FSF) estaacute disentildeada para evitar que alguna persona restrinja la distribucioacuten desoftware En pocas palabras dice que aunque Ud cobre a alguien por entregarle unacopia no podraacute impedir que ese alguien la regale Tambieacuten significa que debe estardisponible el coacutedigo fuente4 Esto es uacutetil para los programadores

Cualquiera puede modificar Linux y auacuten distribuir sus modificaciones siempre quemantenga el coacutedigo bajo la misma licencia

En Linux puede correr la mayoriacutea del software popular en Unix incluyendo el Sistema deVentanas X X se desarrolloacute en el Instituto Tecnoloacutegico Massachusetts para permitir alos sistemas Unix la creacioacuten de ventanas graacuteficas y la coacutemoda interaccioacuten con lasmismas En la actualidad el sistema X se usa en todas las versiones disponibles de Unix

Ademaacutes de las dos variaciones de Unix System V y BSD existe un conjunto de documentosde estandarizacioacuten publicados por la IEEE denominados POSIX Linux antes que nadasatisface los documentos POSIXshy1 y POSIXshy2 Su apariencia se asemeja mucho a la de BSD enciertas partes mientras que es parecido a System V en otras Es una combinacioacuten (y parala mayoriacutea de las personas una buena) de los tres estaacutendares

Algunas de las utilidades incluiacutedas con las distribuciones de Linux proceden de la FreeSoftware Foundation y son parte del proyecto GNU El proyecto GNU es un esfuerzo paraescribir un avanzado sistema operativo portable con el estilo de Unix Portablesignifica que pueda correr en una variedad de maacutequinas distintas no soacutelo en PCs IntelMacintoshes o lo que sea El sistema operativo del Proyecto GNU se llama Hurd Laprincipal diferencia entre el Linux y el GNU Hurd no se encuentra en la interfaz delusuario sino en la del programador el Hurd es un sistema operativo moderno mientrasque Linux es maacutes parecido al disentildeo original de Unix

_____________________________________________

2 Recientemente vendida a Novell antes era propiedad de ATampT

3 Una manera criacuteptica de decir System five Revision four

4 El coacutedigo fuente de un programa es lo que el programador lee y escribe Luego setraduce a un coacutedigo de maacutequina ilegible para las personas que es el que la computadorainterpreta

La historia precedente de Linux olvida mencionar otra persona maacutes allaacute de Linus TorvaldsPor ejemplo H J Lu se ha ocupado de mantener gcc y la biblioteca C de Linux (doselementos necesarios para todos los programas en Linux) casi desde el principio de lavida del sistema operativo Ud puede encontrar una lista de personas que merecenreconocimiento por su trabajo en cada sistema Linux en el archivousrsrclinuxCREDITS

221 Linux aquiacute y ahora

La primer cifra en el nuacutemero de versioacuten de Linux indica revisiones realmente importantesen alcance

Este nuacutemero cambia muy lentamente y para la eacutepoca en que esto se escribe (febrero de1996) soacutelo estaacute disponible la versioacuten 115 La segunda cifra indica revisiones de menorenvergadura

Los segundos nuacutemeros cuando son pares representan versiones maacutes estables en las que unopuede confiar plenamente cuando son impares indican versiones en desarrollo que son maacutespropensas a contener errores La uacuteltima cifra es el nuacutemero menor de lanzamiento cada vezque se libera una nueva versioacuten que tal vez soacutelo arregla unos pocos problemas o agregaunas pocas caracteriacutesticas se incrementa en uno este nuacutemero En febrero de 1996 lauacuteltima versioacuten estable es la 1211 y la uacuteltima en desarrollo es la 1361

Linux es un sistema grande y desafortunadamente contiene errores que los desarrolladoresreparan al encontrarlos Auacuten cuando algunas personas puedan experimentarmalfuncionamientos regularmente esto se debe normalmente a causa de piezas de hardwareque no son estaacutendares o que estaacuten defectuosas los errores6 que afectan a todos losusuarios son escasos y no se dan seguido

Por supuesto eacutesos son los errores del nuacutecleo Los errores pueden presentarse en casicada aspecto del sistema y los usuarios de poca experiencia tienen problemas paradiferenciar los distintos programas entre siacute Por ejemplo cierto problema puede hacerque todos los caracteres aparezcan como un galimatiacuteas iquestes un error o unacaracteriacutestica Sorpresivamente es una caracteriacutestica existen ciertas secuencias decontrol que al aparecer provocan el galimatiacuteas Espero que este libro le sea de ayudapara poder identificar esas situaciones

222 Unas pocas preguntas y respuestas

Antes de embarcarnos para nuestra larga travesiacutea repasemos las cuestiones ultrashyimportantes

Pregunta iquestCoacutemo se pronuncia Linux

Respuesta De acuerdo con Linus debe pronunciarse con un sonido corto ih como prIntmInImal etc Linux debe rimar con Minix que es otro clon de Unix No debe pronunciarsecomo la pronunciacioacuten (americana) de Peanuts en Linus sino maacutes bien como LIHshynucksY la u es cortante como en rule no suave como en ducks Linux debe al menos rimarcon cynics

_____________________________________________

5 N del T La traduccioacuten se hace en febrero de 1997 y ya la versioacuten 2 es cosa detodos los diacuteas

6 N del T error del ingleacutes bug

Pregunta iquestPor queacute trabajar en Linux

Respuesta iquestPor queacute no Linux es generalmente maacutes barato que los otros sistemasoperativos (o al menos no maacutes caro) y con frecuencia es menos problemaacutetico que algunossistemas comerciales Puede que no sea el mejor sistema para sus aplicaciones enparticular pero para alguien que estaacute interesado en utilizar las aplicaciones Unixdisponibles para Linux se trata de un sistema de alta performance

223 Software comercial en Linux

Existe un montoacuten de software comercial disponible para Linux Comenzando con Motif quees una interfaz para el sistema X Window que vagamente nos recuerda a Microsoft WindowsLinux tiene cada vez maacutes software comercial En estos tiempos Ud puede adquirircualquier cosa desde WordPerfect (el popular procesador de palabras) hasta Maple que esun paquete que realiza complejas manipulaciones simboacutelicas para Linux

Para aquellos lectores interesados en las cuestiones legales esto estaacute permitido por lalicencia de Linux A la vez que la licencia GNU General Public License (que se reproduceen el Apeacutendice B) cubre el nuacutecleo de Linux la licencia GNU Library General PublicLicense (que se puede ver en el Apeacutendice C) cubre la mayor parte del coacutedigo del cualdependen las aplicaciones Esto permite que los proveedores de software comercial puedanvender sus aplicaciones y reservarse el coacutedigo fuente de las mismas

Debe Ud percatarse de que los dos documentos antes nombrados son notificaciones dederechos de autor Ellos no regulan como utiliza Ud el software solamente indican bajocuales circunstancias Ud puede copiar dicho software o sus productos derivados Para laFree Software Foundation eacutesta es una distincioacuten muy importante Linux no involucraninguna licencia estilo pitoacuten que lo envolveraacute y asfixiaraacute sino que estaacute protegidopor la misma ley que le impide a Ud fotocopiar un libro

Capiacutetulo 3

En el principio

This login session $1399 but for you $1188

Tal vez ha tenido experiencia con MSshyDOS u otro sistema operativo monousuario como OS2o el de Macintosh En esos sistemas operativos Ud no tiene que identificarse frente ala computadora antes de poder utilizarla siempre se supone que es el uacutenico usuario en elsistema y que puede acceder a todo lo que quiera Por el contrario Unix es un sistemaoperativo multiusuario no soacutelo puede utilizarlo maacutes de una persona a la vez sino quelas distintas personas recibiraacuten distinto trato

Para poder identificar las personas Unix necesita un usuario para que el procesodenominado ingreso1 pueda identificarlo o identificarla2 Apenas se enciende unacomputadora tiene lugar un complejo proceso antes que la misma esteacute lista para serusada Como esta guiacutea estaacute orientada a Linux les direacute que es lo que sucede durante lasecuencia de arranque3

Debe advertir Ud que si estaacute utilizando Linux en alguna clase de ordenador distinto auna PC Intel algunos temas de este capiacutetulo no se aplicaraacuten a su caso En su mayoriacuteadichos temas se encontraraacuten en la Seccioacuten 31

Si Ud estaacute interesado uacutenicamente en utilizar su computadora puede saltearse toda lainformacioacuten de este capiacutetulo excepto la de la Seccioacuten 33

31 La computadora despierta

Lo primero que sucede cuando se conecta la alimentacioacuten a su computadora es la ejecucioacutende un programa denominado BIOS Su nombre proviene de las iniciales de Basic InputOutputSystem que significa Sistema de EntradaSalida Baacutesico Este programa estaacute almacenado demanera permanente dentro de la computadora en chips que normalmente son del tipo delectura solamente Para nuestros propoacutesitos el BIOS es un programa que nunca se puedecambiar Al funcionar realiza ciertas comprobaciones miacutenimas y luego se fija si hay undisquete en la primer disquetera Si encuentra alguno mira en su sector de arranque ycomienza a ejecutar su coacutedigo si lo hay Si hay un disquete pero no contiene un sectorde arranque el BIOS mostraraacute el siguiente mensaje

Nonshysystem disk or disk error

_____________________________________________

1 N del T ingreso en ingleacutes logging in

2 Desde ahora en adelante utilizareacute los pronombres masculinos para identificar a todaslas personas Esta es la convencioacuten estaacutendar en ingleacutes (N del T y en castellano) ycon esto no quiero decir que soacutelo los hombres pueden utilizar computadoras

3 N del T arranque del ingleacutes bootshyup

Si quitamos el disquete y apretamos una tecla el proceso de arranque continuaraacute Si noexiste un disquete en la disquetera el BIOS se fija si existe un registro maestro dearranque (MBR master boot record) en el disco riacutegido Si es asiacute comienza a ejecutar elcoacutedigo que alliacute encuentra que se ocupa de cargar el sistema operativo En los sistemasLinux el cargador se llama LILO (por LInux LOader) puede ocupar el MBR y en ese casocargaraacute el Linux (La distribucioacuten en particular que esteacute utilizando puede manejar elarranque desde el disco riacutegido de otra manera asiacute que debe controlar esto en ladocumentacioacuten que se incluye con la distribucioacuten Otra buena referencia es ladocumentacioacuten de LILO [1 ])

32 Linux despierta

Luego que el BIOS le pasa el control a LILO LILO a su vez le pasa el control al nuacutecleode Linux El nuacutecleo es el programa central del sistema operativo que controla a todoslos demaacutes Lo primero que hace Linux una vez que comienza su ejecucioacuten es cambiar la CPUa modo protegido El procesador 803864 que controla su computadora tiene dos modos que sedenominan modo real y modo protegido El sistema operativo DOS corre en modo real aligual que el BIOS Sin embargo los sistemas operativos maacutes avanzados necesitan correr enmodo protegido Por ello cuando Linux arranca descarta el BIOS

Los procesadores distintos al 386 llegan a este estado de manera diferente Ninguacuten otroprocesador necesita cambiar a modo protegido y soacutelo unos pocos tienen un contexto tanpesado de carga como LILO y el BIOS Una vez que arranca el nuacutecleo Linux trabaja caside la misma manera

A continuacioacuten Linux mira que clase de hardware tiene debajo Necesita saber que clasede discos riacutegidos tiene si hay o no un ratoacuten de bus si estaacute conectado a una red yotras trivialidades como esas Linux no puede recordar ciertas cosas luego de apagado demanera que las pregunta cada vez que arranca Afortunadamente no se las pregunta a Udiexclse las pregunta al hardware Durante el arranque el nuacutecleo de Linux muestra unoscuantos mensajes aunque con ciertas variaciones

Puede leer acerca de esos mensajes en la Seccioacuten 34 Este proceso de consulta puedecausar algunos problemas con el sistema pero si lo hace lo haraacute probablemente cuandoinstale Linux por primera vez Si tiene problemas consulte la documentacioacuten de ladistribucioacuten

El nuacutecleo solamente se ocupa de administrar los otros programas entonces cuando estaacutesatisfecho con que todo anda bien debe arrancar otro programa para que haga los trabajosuacutetiles El programa que el nuacutecleo arranca se llama init_____________________________________________

4 Cuando hable del 80386 tambieacuten hago referencia a computadoras basadas en 80486Pentium y Pentium Pro a menos que especiacuteficamente indique lo contrario Ademaacutesabreviareacute 80386 mediante el teacutermino 386

Figura 31 El camino que sigue un PC Intel hasta que nos muestra el indicativo delinteacuterprete de comandos Init puede o no arrancar X Si lo hace corre xdm Si no corregetty

Una vez que el nuacutecleo arranca init no lanza ninguacuten otro programa El nuacutecleo setransforma asiacute en un administrador y proveedor no en un programa activo

Por lo tanto para saber que es lo que hace la computadora luego que el nuacutecleo arrancadeberemos examinar init La complicada secuencia de arranque por la que atraviesa init noes ideacutentica en todas las computadoras Para Linux existen varias versiones de init ycada una hace las cosas a su manera Ademaacutes tambieacuten influye si su maacutequina estaacute en red e

incluso cual distribucioacuten utilizoacute para instalar Linux Algunas de las cosas que puedensuceder cuando init arranca son

o El control de integridad del sistema de archivos iquestPero queacute es un sistema de archivosse estaraacute preguntando Ud Un sistema de archivos es la disposicioacuten de los archivos enel disco riacutegido Ademaacutes permite que Unix sepa cuales partes del disco riacutegido estaacutenocupadas y cuales no Desafortunadamente ciertos factores como los cortes en elsuministro de energiacutea hacen que la informacioacuten que el sistema de archivos tiene sobre ladisposicioacuten en el disco de los archivos no coincida con la disposicioacuten real En estoscasos se ve la utilidad de un programa llamado fsck que es capaz de encontrar estassituaciones y (con suerte) corregirlas

o Se lanzan programas especiales de encaminamiento para las redes Estos programasinforman a su computadora coacutemo se supone que puede comunicarse con las otras

o Se borran los archivos temporales que crean ciertos programas

o Se actualiza correctamente el reloj del sistema Esto es maacutes complicado de lo que puedeparecer pues Unix de manera predeterminada necesita la hora en UCT (UniversalCoordinated Time) tambieacuten conocido como hora de Greenwich y el reloj de la CMOS (que esalimentado por una bateriacutea dentro de la computadora) muy probablemente estaraacute configuradocon la hora local Esto significa que debe tener alguacuten programa que lea la hora del relojde la CMOS y la corrija transformaacutendola en hora UCT

Despueacutes que init termina con sus actividades de arranque comienza con sus tareasplanificadas

init se convierte asiacute en el padre de todos los procesos del sistema Unix Un proceso essimplemente un programa que estaacute corriendo como cualquier programa puede correr maacutes deuna vez entonces puede haber maacutes de un proceso para un programa dado en particular

En Unix los procesos (instancias de un programa) se crean mediante una llamada alsistema5 (que es un servicio provisto por el nuacutecleo) denominada fork (Se lo llama forko bifurcacioacuten pues un proceso se bifurca en dos independientes) init forkea (bifurca)unos cuantos procesos los que a su vez forkean6 otros En su sistema Linux con todaseguridad init corre varias instancias de un programa llamado getty getty es el programaque le permitiraacute iniciar el ingreso al usuario y que a continuacioacuten lanzaraacute el programalogin

33 La actuacioacuten del usuario

331 El ingreso

Lo primero que hay que hacer para poder utilizar una maacutequina con Unix es identificarsefrente a la misma Este proceso conocido en ingleacutes como logging in (registro deingreso) es la manera que tiene Unix de saber cuales son los usuarios autorizados parautilizar el sistema Durante el ingreso se le preguntaraacute un nombre de cuenta y unacontrasentildea7 Los nombres de las cuentas son por lo general parecidos a los nombres de laspersonas y se lo asignaraacute el administrador del sistema Si Ud es el administrador delsistema deberaacute crearse una cuenta para poder trabajar sin los cuidados especiales querequiere la cuenta root (La informacioacuten necesaria para llevar a cabo dicha tarea podraacuteencontrarla en Installation and Getting Started 8 o en The Linux System AdministratorsGuide)

Luego de que tenga lugar la secuencia de procedimientos durante el arranque Ud veraacute enla pantalla algo como lo que se muestra a continuacioacuten (la primer liacutenea es meramente unsaludo (podriacutea ser alguna advertencia legal o cualquier otra cosa)

Welcome to the mousehouse Please have some cheese

mousehouse login

Sin embargo puede ser que lo que el sistema le presente al arrancar no se parezca aesto Por ejemplo puede que en lugar de una aburrida pantalla de texto nos muestre unapantalla graacutefica Auacuten en este caso la computadora le pediraacute sus datos al ingreso y maacutes omenos de la misma manera Si eacuteste es el caso en su sistema entonces el entorno detrabajo que utilizaraacute es el sistema X El X Window

System es un sistema de ventanas y en el capiacutetulo 5 se discutiraacuten algunas de lasdiferencias con las que se enfrentaraacute De cualquier manera el proceso de ingreso seraacutesimilar en ambos casos

_____________________________________________

5 N del T llamada al sistema del ingleacutes system call

6 N del T Mis disculpas por el teacutermino prometo no usarlo maacutes shy)

7 N del T contrasentildea palabra clave del ingleacutes password

8 N del T Puede consultar la versioacuten en castellano ya existente

Esta es por supuesto la invitacioacuten que Ud buscaba para ingresar (login) A lo largo deeste manual utilizaremos el usuario ficticio (o no tan ficticio dependiendo de sumaacutequina) larry9 Donde Ud vea larry debe poner el nombre de su propia cuenta Losnombres de las cuentas se basan en general en los nombres reales los sistemas Unix maacutesgrandes y serios tienen cuentas que usan el apellido del usuario alguna combinacioacuten denombre y apellido y auacuten se da el caso que deban agregarle algunos diacutegitos Por ejemplonombres de cuentas posibles para Larry Greenfield podriacutean ser larry greenfie lgreenfilg19

mousehouse seraacute de la misma manera el nombre de la maacutequina sobre la que trabajareacute

Es posible que cuando Ud instale Linux se le pregunte el nombre que desea asignarleEsto no es demasiado importante pero cada vez que haga falta utilizareacute mousehouse o maacutesraramente lionsden cuando necesite de un segundo sistema por razones de claridad o decontraste

Luego de teclear larry y apretar |_Intro_| nos encontramos con lo siguiente

mousehouse login larry

Password

Linux estaacute solicitando su contrasentildea10 Cuando escriba su contrasentildea no podraacute ver lo queestaacute tecleando en razoacuten de la privacidad necesaria a dicha palabra Escribacuidadosamente puede borrar caracteres pero no podraacute ver lo que estaacute editando Noescriba muy despacio si hay gente miraacutendole podriacutean llegar a descubrirla En cualquiercaso si se equivoca no se haga problemas pues el sistema le daraacute otra oportunidad deingresar

Luego que ingrese correctamente su nombre de cuenta o nombre de usuario y su contrasentildeaapareceraacute un corto mensaje denominado mensaje del diacutea11 que se obtiene del archivoetcmotd

Este archivo se utiliza para dar a conocer cualquier clase de informacioacuten a los usuarioscon respecto al estado del sistema y es responsabilidad del administrador del sistemafijar su contenido Despueacutes de todo esto aparece un prompt Un prompt es un siacutembolo que

nos indica que la computadora estaacute lista para recibir un comando Debe parecerse a lasiguiente figura

homelarry$

Si Ud estaacute utilizando X Window el prompt apareceraacute en alguna de las ventanas que hayen pantalla (Las ventanas son simples cajas rectangulares) Para escribir en elprompt mediante el ratoacuten mueva el cursor del mismo (probablemente se ve como una granX o una flecha) dentro de la ventana

332 Al abandonar la computadora

iexclNo apague la computadora directamente iexclSe arriesga a perder valiosos datos

A diferencia de la mayoriacutea de las versiones de DOS no es una buena idea apagar la llavede alimentacioacuten de la computadora asiacute como asiacute cuando termine de utilizarla Si reiniciala maacutequina (con el botoacuten de reset) sin antes tomar las debidas precauciones seraacute igual depernicioso Linux tiene una antememoria o cacheacute que mejora el rendimiento del disco Estosignifica que temporalmente guarda en RAM informacioacuten perteneciente al sistema dealmacenamiento permanente12

_____________________________________________

9 N del T He dejado aquiacute sin traducir ni cambiar el nombre del autor de la versioacuten eningleacutes y lo mismo vale para otros nombres como el de la maacutequina etc

10N del T contrasentildea del ingleacutes password

11N del T mensaje del diacutea del ingleacutes Message Of The Day(motd)

Las diferencias entre lo que Linux cree que hay en el disco y lo que efectivamente estaacutealmacenado en el disco se sincronizan cada 30 segundos Si desea apagar o reiniciar lacomputadora necesitaraacute ejecutar alguacuten procedimiento que indique a Linux que debe detenerel sistema de cacheacute y actualizar la informacioacuten en el disco

Si ya ha terminado sus tareas con la computadora pero auacuten estaacute dentro del sistema (yatecleoacute su nombre de usuario y su palabra clave) lo primero que debe hacer es registrarla salida (logout) del sistema Para ello teclee el comando logout Todos los comandosse enviacutean oprimiendo la tecla marcada como |_Enter_| |_Return_| oacute |_Intro_| Hasta queno aprieta |_Intro_| no pasa nada y por lo tanto puede borrar lo que escribioacute yrecomenzar

homelarry$ logout

Welcome to the mousehouse Please have some cheese

mousehouse login

Ahora puede ingresar otro usuario

333 Como apagar la computadora

Si el suyo se trata de un sistema en el cual trabaja un uacutenico usuario (Ud shy)) puededesear apagar la computadora cuando haya finalizado su trabajo con ella13 Para bajar elsistema14 o sea apagarlo ordenadamente deberaacute ingresar a una cuenta especialdenominada root La cuenta del root es la cuenta del administrador del sistema y puedeacceder a todos los archivos que existen en el sistema Si desea apagar la computadoraprimero debe bajar el sistema y para ello deberaacute obtener la palabra clave que utiliza eladministrador del sistema Por favor ingrese Ud Entonces como root

mousehouse login root

Password

Linux version 1355 (rootmousehouse) 1 Sun Jan 7 145626 EST 1996

shutdown now

Why fin del dia de trabajo

URGENT message from the sysadmin

System going down NOW

fin del dia de trabajo

Now you can turn off the power

_____________________________________________

12 La diferencia entre RAM y un disco riacutegido es como la diferencia entre la memoria decorto plazo y la de largo plazo Al quitar la alimentacioacuten de la computadora es como sile dieacuteramos un fortiacutesimo golpe en la cabeza olvidaraacute todo lo que teniacutea en la memoria decorto plazo Pero las cosas guardadas en la memoria de largo plazo el disco riacutegidoestaraacuten bien El disco es miles de veces maacutes lento que la RAM

13 Para evitar el debilitamiento prematuro de ciertos componentes de hardware es mejorque apague la computadora soacutelo cuando ya no la vaya a utilizar por el resto del diacuteaEncender y apagar una vez al diacutea la computadora probablemente es el mejor compromisoentre ahorrar energiacutea y machacar el sistema

14 N del T bajar el sistema del ingleacutes shutdown

El comando shutdown now prepara al sistema para que pueda apagarse o reiniciarse Debeesperar por el mensaje que dice que es seguro apagar o reiniciar el sistema (Cuando elsistema le pregunta Why15 soacutelo le estaacute preguntando una razoacuten para decirle a los otrosusuarios Como no hay otra persona utilizando el sistema cuando Ud lo baja puederesponderle con lo que se le ocurra o con nada)

Un pequentildeo dato para el perezoso como alternativa al enfoque de logoutlogin se puedeutilizar el comando su Mientras estaacute trabajando con su nombre de cuenta habitual (larrya nuestros efectos) escriba su y luego |_Intro_| Se le solicitaraacute la palabra clave deladministrador del sistema y si la ingresa correctamente tendraacute a partir de dicho momentolos privilegios que le corresponden al mismo Ahora con estos privilegios agregadospodraacute bajar el sistema mediante el comando shutdown now

34 Mensajes del nuacutecleo

Cuando se conecta la alimentacioacuten a su computadora aparece una serie de mensajes en lapantalla que describe el hardware conectado al ordenador Estos mensajes son producto dela actividad del nuacutecleo de Linux En esta seccioacuten intentaremos describir y explicar esosmensajes

Naturalmente estos mensajes variacutean de maacutequina a maacutequina Describireacute entonces losmensajes que aparecen en la miacutea El siguiente ejemplo contiene todos los mensajesestaacutendar y algunos especiacuteficos (En general la maacutequina sobre la que voy a realizar ladescripcioacuten estaacute miacutenimamente configurada no veraacute por lo tanto mucha informacioacutenrelacionada con la configuracioacuten de dispositivos)

Se utilizoacute Linux versioacuten 1355 uno de los maacutes recientes al momento de escribir

1 Lo primero que hace Linux es decidir que clase de tarjeta de viacutedeo y pantalla tieneconectado de manera de seleccionar un tamantildeo de letra apropiado (Cuanto maacutes pequentildeo esel tamantildeo maacutes caben en una pantalla a la vez) Linux puede consultarle si desea alguacutentipo de letra en particular o puede que tenga una seleccioacuten ya compilada en suinterior16

Console 16 point font 400 scans Console colour VGA+ 80x25 1 virtualconsole (max 63)

En este ejemplo el duentildeo de la maacutequina decidioacute al momento de compilar que utilizariacuteael tipo de letra estaacutendar tamantildeo grande Ademaacutes notaraacute que la palabra color estaacute malescrita Evidentemente Linus aprendioacute la versioacuten incorrecta de idioma ingleacutes17

_____________________________________________

15 N del T why significa iquestpor queacute

16 Compilada se refiere al proceso mediante el cual un programa de computadora escritopor una persona se traduce a algo que entiende la computadora Si una caracteriacutestica seha compilado en su interior significa que estaacute incluida en el programa

17 N del T colour es la variante ortograacutefica del ingleacutes insular y color lanorteamericana

2 La proacutexima tarea del nuacutecleo es informar acerca de la velocidad de su sistema medidaen BogoMIPS Un MIP equivale a un milloacuten de instrucciones por cada segundo mientrasque un BogoMIP es un bogus MIP18 cuantas veces la computadora puede hacerabsolutamente nada por cada segundo (Como este bucle no hace nada en realidad el nuacutemerocalculado no es tampoco una medida de la velocidad del sistema) Linux utiliza estenuacutemero cuando necesita esperar por alguacuten dispositivo de hardware

Calibrating delay loop ok shy 3328 BogoMIPS

3 El nuacutecleo de Linux tambieacuten nos comenta acerca de la utilizacioacuten de la memoria

Memory 23180k24576k available (544k kernel code 384k reserved 468k data)

Esto significa que la maacutequina tiene 24 megabytes de memoria Parte de esta memoria estaacutereservada por el nuacutecleo El resto puede ser utilizada por los programas Eacuteste es el lugartemporal conocido como RAM que se utiliza soacutelo como almacenamiento de corto plazo Sucomputadora tambieacuten dispone de una memoria permanente denominada disco riacutegido El

contenido del disco riacutegido se mantiene intacto auacuten luego de quitar la alimentacioacuten delordenador

4 A lo largo del proceso de arranque Linux controla distintas partes del hardware y nosmuestra mensajes indicativos de las mismas

This processor honours the WP bit even when in supervisor mode Good

5 Ahora Linux pasa a la configuracioacuten de red Lo que veremos a continuacioacuten estaacute mejorexplicado en The Linux Networking Guide19 y estaacute fuera del alcance de este documento

Swansea University Computer Society NET3033 for Linux 1350

IP Protocols ICMP UDP TCP

6 Linux soporta la FPU la unidad de punto flotante20 Eacutesta es un chip especial (o partede un chip en el caso del procesador 80486DX) que se ocupa de la aritmeacutetica con nuacutemerosno enteros

Algunos de esos chips no estaacuten en buenas condiciones y cuando Linux trata deidentificarlos la maacutequina se cuelga21 La maacutequina deja de funcionar Si esto sucedeUd veraacute en su pantalla lo siguiente

Checking 386387 coupling

Sino el mensaje seraacute

Checking 386387 coupling Ok fpu using exception 16 error reporting

si estaacute utilizando un 486DX Si tiene un 386 con un 387 le apareceraacute

Checking 386387 coupling Ok fpu using irq13 error reporting

_____________________________________________

18 N del T bogus significa espurio (para los argentinos trucho)

19 N del T Disponible en castellano Vea el apeacutendice D

20 N del T unidad de punto flotante del ingleacutes Floating Point Unit

21 N del T se cuelga del ingleacutes crashes

7 Y ahora se controla la instruccioacuten halt

Checking hlt instruction Ok

8 Luego de esta configuracioacuten inicial Linux escribe una liacutenea identificaacutendose a siacutemismo En ella explica cual es la versioacuten del nuacutecleo la del compilador de C de GNU quese utilizoacute para compilarlo y la fecha de dicha compilacioacuten

Linux version 1355 (rootmousehouse) (gcc version 270) 1 Sun Jan 7145626 EST 1996

9 El controlador serie comienza a consultar acerca del hardware instalado Uncontrolador es una parte del nuacutecleo que controla un dispositivo normalmente unperifeacuterico Se hace responsable por los detalles de la comunicacioacuten entre la CPU y eldispositivo Esto permite que la gente que escribe aplicaciones de usuario se puedaconcentrar en la aplicacioacuten pues no tiene que preocuparse por como trabaja exactamentela computadora

Serial driver version 411 with no serial options enabled

tty00 at 0x03f8 (irq = 4) is a 16450

tty01 at 0x02f8 (irq = 3) is a 16450

tty02 at 0x03e8 (irq = 4) is a 16450

Aquiacute vemos que ha encontrado tres puertos serie Un puerto serie es el equivalente delpuerto COM en DOS es el dispositivo que se utiliza normalmente para comunicarse conmodems y ratones

Lo que significan las liacuteneas anteriores es que el puerto serie 0 (COM1) tiene ladireccioacuten 0x03f8

Cuando dicho puerto interrumpe al nuacutecleo usualmente para decir que tiene datos listosutiliza la IRQ 422 Las IRQ son un medio que tienen los perifeacutericos de hablarse con elsoftware Cada puerto serie tambieacuten tiene un chip controlador que usualmente se denomina16450 aunque tambieacuten puede ser el 8250 o el 16550

10 A continuacioacuten viene el puerto paralelo que normalmente se conecta a la impresoraLos puertos paralelos en Linux tienen nombres que comienzan con lp lp son las inicialesde Line Printer23 aunque en los tiempos actuales parece maacutes apropiado usar las inicialesde Laser Printer (Sin embargo Linux se comunica sin problemas con cualquier clase deimpresora conectada al puerto paralelo de matriz de puntos chorro de tinta o laser)

lp0 at 0x03bc (polling)

Este mensaje dice que ha encontrado un puerto paralelo y que usaraacute el controlador dedispositivo estaacutendar

_____________________________________________

22 N del T IRQ Interrupt ReQuest (peticioacuten de interrupcioacuten)

23 N del T Impresora de liacuteneas

11 Linux identifica luego las unidades de disco riacutegido En el sistema que le estoymostrando mousehouse tengo instalados dos unidades de disco riacutegido IDE

hda WDC AC2340 325MB w127KB Cache CHS=10101255

hdb WDC AC2850F 814MB w64KB Cache LBA CHS=8273263

12 El nuacutecleo ahora busca las unidades de disco flexible En este ejemplo la maacutequinatiene dos unidades la A es una unidad de 5 1=4 y la B es una de 3 1=2 Linuxdenomina fd0 a la unidad A y fd1 a la unidad B

Floppy drive(s) fd0 is 144M fd1 is 12M

floppy FDC 0 is a National Semiconductor PC87306

13 El proacuteximo controlador que arranca en mi sistema ejemplo es el controlador SLIPEscribe un mensaje acerca de su configuracioacuten

SLIP version 083shyNET3019shyNEWTTY (dynamic channels max=256) (6 bitencapsulation enabled)

CSLIP code copyright 1989 Regents of the University of California

14 El nuacutecleo explora dentro de los discos riacutegidos que ha encontrado Busca las distintasparticiones que tiene cada uno Una particioacuten es una seccioacuten loacutegica de una unidad que seutiliza para evitar que interfieran entre siacute distintos sistemas operativos coexistentesEn este ejemplo la computadora tiene dos discos (hda y hdb) con cuatro y unaparticiones respectivamente

Partition check

hda hda1 hda2 hda3 hda4

hdb hdb1

15 Finalmente Linux monta la particioacuten raiacutez Eacutesta es la particioacuten del disco en la cualreside el sistema operativo Linux Cuando Linux monta esta particioacuten hace que esteacutedisponible para los usuarios

VFS Mounted root (ext2 filesystem) readonly

Capiacutetulo 4

El shell de Unix

Es muy faacutecil crear archivos en el sistema operativo UNIX Por lo tanto los usuariostienden a crear muchos archivos que utilizan una gran cantidad de espacio Se ha dichoque la uacutenica cosa estaacutendar y comuacuten a todos los sistemas UNIX es el mensajeshydelshydiacutea queles pide a los usuarios que borren los archivos que no necesitan

Guiacutea del administrador de System V2

41 Comandos Unix

Cuando ingresa al sistema Unix se enfrenta con algo maacutes o menos como lo que se muestra acontinuacioacuten

homelarry$

Ese algo se denomina prompt1 Como su nombre sugiere le solicita a Ud que ingrese uncomando Todos los comandos Unix consisten de una secuencia de letras nuacutemeros ycaracteres No son vaacutelidos los espacios dentro del nombre del comando Algunos comandosvaacutelidos son mail cat y CMU_is_Numbershy5 Algunos caracteres no estaacuten permitidosvolveremos a este tema maacutes adelante

Unix ademaacutes hace diferencia entre mayuacutesculas y minuacutesculas2 lo que significa que Cat ycat son comandos distintos

El prompt se muestra como resultado del accionar de un programa especial denominadointeacuterprete de comandos3 El inteacuterprete de comandos o shell acepta los comandos queescribe el usuario y los ejecuta Los comandos pueden formar programas en el lenguaje delinteacuterprete de comandos y a dichos programas se los denomina guiones de shell

_____________________________________________

1 N del T prompt significa solicitud

2 La diferenciacioacuten entre mayuacutesculas y minuacutesculas es una cosa muy personal Algunossistemas operativos como OS2 y Windows NT preservan las diferencias pero no las cuentancomo distintas En la praacutectica habitual con Unix se utiliza raramente la diferenciacioacutenLa situacioacuten de tener un par de comandos Cat y cat diferentes no es comuacuten

3 N del T inteacuterprete de comandos del ingleacutes shell

Los shell en Unix se clasifican en dos grandes grupos los tipo Bourne y los tipo C Losshell tipo Bourne toman su nombre a partir de su inventor Steven Bourne Steven Bourneescribioacute el shell original de Unix denominado sh a partir de entonces la mayoriacutea delos shells tienen un nombre con el sufijo sh para indicar que son extensiones de la ideaoriginal Existen varias implementaciones de este shell que colectivamente llevan elnombre de shells Bourne Tambieacuten son comunes los shells tipo C cuyo original fueimplementado por Bill Joy Tradicionalmente los shell Bourne se han utilizado para los

scripts de shell y por razones de compatibilidad con el sh original mientras que losshells C han sido maacutes comunes en su aplicacioacuten interactiva (Los C tienen ventajas encuanto a sus mejores caracteriacutesticas interactivas aunque son maacutes difiacuteciles deprogramar)

Linux viene con un shell Bourne denominado bash escrito por la organizacioacuten FreeSoftware Foundation4 El nombre bash proviene de Bourne Again SHell uno de los tantosjuegos de palabras en Unix Se trata de un shell Bourne avanzado tiene las capacidadesestaacutendar de programacioacuten que se encuentran en todos los shells Bourne y ademaacutes varias delas caracteriacutesticas interactivas que se encuentran en los shells C bash es el shellpredeterminado cuando uno usa Linux

Apenas ingresa por primera vez el prompt que Ud ve es producto de la accioacuten de bash enotras palabras estaacute Ud corriendo su primer programa Unix el shell bash Mientras esteacuteconectado el shell bash estaraacute permanentemente funcionando

411 Un comando Unix tiacutepico

El primer comando que debe conocer es cat Para utilizarlo escriba cat y luego oprima|_Intro_|

homelarry$ cat

Si tiene ahora el cursor posicionado en una liacutenea nueva entonces lo que ha hecho estaacutebien Existen unas cuantas variantes que podriacutea haber tecleado algunas funcionaraacutenotras no

o Si tuvo alguacuten error de tecleo al escribir cat deberiacutea haber visto algo maacutes o menosasiacute

homelarry$ ct

ct command not found

homelarry$

Por lo tanto el shell le informa que no pudo encontrar un programa denominado ct yle ofrece otro prompt para seguir trabajando Recuerde que Unix hace diferencia entremayuacutesculas y minuacutesculas CAT estaacute mal escrito

o Puede que Ud haya escrito algunos espacios en blanco antes del comando como5

homelarry$ cat

Sin embargo el resultado es correcto y el programa cat corre sin problemas

_____________________________________________

4 N del T La Fundacioacuten para el Software Libre _tal es la traduccioacuten de su nombre_ seocupa de la produccioacuten y distribucioacuten de software que no tiene limitaciones en su uso yocopia enfrentando de esta manera las praacutecticas de las compantildeiacuteas tradicionales dedesarrollo Que el software sea libre no significa que sea barato la libertad incluye lagratuidad pero es mucho maacutes que ello

5 El indica que el usuario escribioacute un espacio

o Tambieacuten puede que haya oprimido un |_Intro_| en una liacutenea en blanco no se preocupe ycontinuacutee pues no tiene ninguacuten efecto

Doy por sentado que Ud ha corrido con eacutexito cat y estaacute esperando que haga algo que lomaraville Pues bien no no es un juego cat es una muy uacutetil utilidad que no parece muyuacutetil a primera vista Escriba cualquier cosa y luego oprima |_Intro_| Lo que veraacute es

homelarry$ cat

Help Im stuck in a Linux program

Help Im stuck in a Linux program

Lo que parece haber hecho cat es devolver un eco de lo escrito Esto es uacutetil a veces talvez no ahora Asiacute que salgamos de este programa y veamos otros con beneficios maacutes obvios

Para finalizar ciertos comandos Unix teclee |_Ctrlshyd_|6 |_Ctrlshyd_| es el caraacutecter endshyofshyfile7 o EOF para abreviar Puede que en ciertos libros de texto aparezca como endshyofshytext8 Nos referiremos a este caraacutecter como EOF Es un caraacutecter de control que informaa los programas Unix que ha cesado el ingreso de datos Cuando cat ve que no teclea maacutesnada termina

Para ver otro ejemplo parecido pruebe el programa sort Como su nombre lo indica sortes un programa de clasificacioacuten Si Ud teclea unas cuantas liacuteneas y luego oprime |_Ctrlshyd_| sort las mostraraacute a la salida de manera ordenada Esta clase de programas sedenominan filtros porque toman texto desde su entrada lo filtran y lo vierten a susalida modificado de alguna manera Tanto cat como sort son filtros inusuales cat esinusual pues lee el texto de entrada y no lo cambia

sort es inusual porque lee todas las liacuteneas de entrada hasta el EOF antes de emitir susalida La mayoriacutea de los filtros trabajan sobre la base de liacutenea por liacutenea leen unaliacutenea de la entrada realizan cierto coacutemputo y escriben una liacutenea diferente de salida

42 Autoayuda

El comando man muestra las paacuteginas de la guiacutea de referencia para un comando dado9 Porejemplo

homelarry$ man cat

cat(1) cat(1)

NAME

cat shy Concatenates or displays files

SYNOPSIS

cat [shybenstuvAET] [shyshynumber] [shyshynumbershynonblank] [shyshysqueezeshyblank]

[shyshyshowshynonprinting] [shyshyshowshyends] [shyshyshowshytabs] [shyshyshowshyall]

[shyshyhelp] [shyshyversion] [file]

DESCRIPTION

This manual page documents the GNU version of cat

________________________________________________

6 Mantenga oprimida la tecla etiquetada |_Ctrl|_y aprete |_d_| luego suelte ambas

7 N del T fin de archivo

8 N del T fin de texto

9 man tambieacuten puede mostrar informacioacuten acerca de las llamadas al sistema subrutinasformatos de archivos etc En la versioacuten original de Unix el comando mostraba lainformacioacuten exactamente igual a la que apareciacutea en la documentacioacuten impresa Por ahoraes probable que Ud soacutelo esteacute interesado en obtener ayuda acerca de los comandos

Hay aproximadamente una paacutegina completa de informacioacuten sobre cat10 Pruebe correr manen este momento No espere entender la paacutegina de manual que se le muestra Las paacuteginas demanual suponen un cierto conocimiento de Unix conocimiento que tal vez Ud no tenga eneste momento

Cuando termine de leer la paacutegina es probable que vea un bloque en video inverso al finalde la paacutegina parecido a shyshymoreshyshy o a Line 1 Se trata del pedido de maacutes(informacioacuten) que pronto le seraacute muy familiar

En lugar de dejar escapar el texto fuera de los liacutemites de la pantalla man se detiene alfinal de cada paacutegina y espera para ver que ha decidido hacer Ud Si desea seguirleyendo oprima |_Barra espaciadora_| y avanzaraacute una paacutegina Si desea terminar con lalectura de la paacutegina del manual oprima |_q_| Regresaraacute entonces al prompt del shellque esperaraacute hasta que Ud escriba otro comando

man provee ademaacutes una funcioacuten de buacutesqueda de palabras clave Por ejemplo digamos que Udestaacute interesado en el tema PostScript el lenguaje de control de impresoras desarrolladopor Adobe Si escribe man shyk ps o man shyk Postscript recibiraacute como resultado unalista de todos los comandos llamadas al sistema y otras partes documentadas de Unix quecontengan la palabra ps (o Postscript) en su nombre o descripcioacuten breve Esto puedellegar a ser muy uacutetil cuando quiere buscar una herramienta para hacer algo pero noconoce su nombre o si existe

43 Almacenaje de la informacioacuten

Los filtros son muy uacutetiles cuando Ud se ha transformado en un usuario experimentadopero tienen un pequentildeo problema Coacutemo almacena Ud la informacioacuten Seguramente iexclno seespera que Ud teclee todas las cosas cada vez que desea utilizar el programa Porsupuesto que no Unix provee archivos y directorios

Un directorio es como una carpeta contiene hojas de papel o archivos Una carpetasuficientemente grande puede contener otras carpetas puede haber directorios dentro dedirectorios En Unix se denomina sistema de archivo a la coleccioacuten de archivos ydirectorios Inicialmente en el sistema de archivo soacutelo existe un directorio denominadoroot11 Dentro de este directorio hay maacutes directorios y dentro de ellos hay archivosy auacuten maacutes directorios12

_____________________________________________

10 N del T El ejemplo se ha mantenido en ingleacutes pues es muy probable que Ud tengainstaladas las paacuteginas de manual en dicho idioma de manera predeterminada Pruebe maacutestarde de instalar el conjunto de paacuteginas de manual que estaacuten disponibles en castellano

11 N del T directorio raiacutez

Cada archivo y cada directorio tiene un nombre Nos referiremos a su nombre corto13 quepuede coincidir con el de otro archivo yo directorio en alguna otra parte del sistema dearchivo y al nombre largo14 que es uacutenico Un nombre corto para un archivo puede serjoe mientras que su nombre completo podriacutea ser homelarryjoe El nombre completo sedenomina usualmente trayectoria15 La trayectoria puede decodificarse como una secuenciade directorios Por ejemplo veremos como se lee homelarryjoe

homelarryjoe

La barra inicial indica el directorio raiacutez

Aquiacute esta el directorio denominado home Estaacute dentro del directorio raiacutez

Este es el directorio larry el cual estaacute dentro de home

joe estaacute dentro de larry Una trayectoria puede referirse tanto a un directorio como a unnombre de archivo asiacute que joe podriacutea ser cualquiera de ellos Todos los items antes delnombre corto deben ser directorios

Una manera sencilla de visualizar todo esto es mediante un diagrama en aacuterbol Para ver eldiagrama de un sistema tiacutepico Linux mire la Figura 41 Debe Ud notar que dichodiagrama no estaacute completo (iexclun sistema Linux completo tiene maacutes de 8000 archivos) y soacutelomuestra algunos de los directorios estaacutendar Por lo tanto puede haber algunosdirectorios del diagrama que no esteacuten en su sistema y de hecho su sistema tendraacutedirectorios que no aparecen en la figura

431 Miremos los directorios con ls

Ahora que ya sabe de la existencia de archivos y directorios debe haber tambieacuten unamanera de manipularlos Por supuesto El comando ls es uno de los maacutes importantes y loque hace es listar los archivos Si prueba a correr el comando ls entonces veraacute

homelarry$ ls

homelarry$

Estaacute bien no se preocupe por no ver nada Unix es intencionalmente callado si no hayarchivos para mostrar no muestra nada (ni siquiera un no hay archivos) Por lo tantola ausencia de salida es la manera de ls de decir que no encontroacute ninguacuten archivo

Pero hace un momento dije que hay maacutes de 8000 archivos por alliacute iquestdoacutende estaacuten Acaba deencontrar el concepto de directorio actual Como puede ver en el prompt su directorioactual es homelarry y alliacute no hay archivos Si desea la lista de archivos de undirectorio maacutes poblado pruebe con el directorio raiacutez

homelarry$ ls

bin etc install mnt root user var

dev home lib proc tmp usr vmlinux

homelarry$

_____________________________________________

12 Puede haber o no un liacutemite a la profundidad a la cual puede llegar el sistema dearchivo (En mi caso nunca la alcanceacute uno faacutecilmente puede tener directorios de 10niveles de profundidad)

13 N del T Nombre relativo del archivo o directorio

14 N del T Nombre completo o absoluto

15 N del T trayectoria del ingleacutes path

___________________________________________________________________________________________Figura 41 Tiacutepico aacuterbol (podado) de directorios Unix

________||bin

|___dev

|

|___etc

|

|___home ________larry

| |

| |___sam

|___lib

|

|___proc

|

|___tmp

|

|___usr________||X11R6

|

|___bin

|

|___emacs

|

|___etc

|

|___g++shyinclude

|

|___include

|

|___lib

|

|___

| local

| ||_bin

| |___emacs

| |

| |___etc

| |

| |___lib

|

|___man

|

|___spool

|

|___src________linux

|

|___tmp

En el comando anterior ls el directorio ( ) es lo que se denomina un paraacutemetroLa primer palabra de un comando es el nombre del comando y cualquier cosa que le sigason sus paraacutemetros Los paraacutemetros generalmente modifican la forma en la que actuacutea unprograma para ls el paraacutemetro le dice de cual directorio desea Ud la lista de archivosAlgunos comandos tienen paraacutemetros especiales denominados opciones o interruptores16 Paraver esto pruebe

homelarry$ ls shyF

bin etc install mnt root user var

dev home lib proc tmp usr vmlinux

homelarry$

_____________________________________________

16 N del T interruptores del ingleacutes switches

El shyF es una opcioacuten Las opciones son clases especiales de paraacutemetros que comienzan conun guioacuten y modifican el funcionamiento del programa Para ls shyF es una opcioacuten que lepermite a Ud ver cuales de las entradas son directorios cuales son archivos especialescuales programas y cuales son archivos normales Cualquiera que termina con una barra esun directorio Trataremos con maacutes detalle las caracteriacutesticas de ls maacutes adelante iexclEs unprograma sorprendentemente complejo

Por ahora hay dos lecciones que se deben aprender Primero debe aprender que es lo quehace ls Pruebe unos cuantos otros directorios de los que se muestran en el aacuterbol de laFigura 41 y fiacutejese en su contenido Naturalmente algunos estaraacuten vaciacuteos y otrostendraacuten muchos archivos dentro Le sugiero que utilice ls con y sin la opcioacuten shyF Por ejemplo ls usrlocal debe aparecer maacutes o menos asiacute

homelarry$ ls usrlocal

archives bin emacs etc ka9q lib tcl

homelarry$

La segunda leccioacuten es maacutes general Muchos comandos Unix son como ls Tienen opciones queen general consisten de un caraacutecter precedido por un guioacuten y tienen paraacutemetros Adiferencia de ls algunos comandos requieren ciertos paraacutemetros yu opciones Paramostrar como se usan los comandos utilizaremos el siguiente formato

ls [shyaRF] [directorio]

En general y desde ahora en adelante utilizareacute plantillas de comandos como la mostradaantes de introducir comandos nuevos para Ud La primer palabra es el comando (en estecaso ls) A continuacioacuten del comando siguen todos los paraacutemetros Los paraacutemetrosopcionales se encerraraacuten entre corchetes ([ y ]) Las metashyvariables estaacuteninclinadas_son palabras que toman el lugar de los paraacutemetros reales (Por ejemplo maacutesarriba puede Ud ver que dice directorio lo cual debe ser reemplazado por el nombre deun directorio real)

Las opciones son un caso especial Estaacuten encerradas entre corchetes pero Ud puedeutilizar una sola de ellas sin necesidad de emplear todas juntas Por ejemplo con lastres opciones enumeradas maacutes arriba para el caso de ls Ud tiene ocho maneras posiblesde correr el comando con o sin cada una de las opciones (Contraste ls shyR con ls shyF)

432 El directorio actual y cd

shy pwd

El uso de los directorios puede ser insoportable si se tiene que teclear la trayectoriacompleta cada vez que se quiere acceso a un directorio En lugar de ello los shell deUnix tienen una caracteriacutestica denominada directorio actual presente o detrabajo Es muy probable que su configuracioacuten de shell muestre dicho directorio como

parte del prompt homelarry Si no lo hace pruebe el comando pwd que proviene de lasigla de las palabras present working directory17 (Algunas veces el prompt muestra elnombre de la maacutequina Esto soacutelo es uacutetil realmente en un entorno de red en el cual hay unagran cantidad de maacutequinas diferentes)

mousehousegtpwd

homelarry

mousehousegt

Como puede Ud ver pwd le dice cuaacutel es su directorio actual18_ se trata de un comandomuy simple La mayoriacutea de los comandos actuacutea de forma predeterminada sobre eldirectorio actual

shy cd [directorio]

Podemos cambiar nuestro directorio actual mediante el comando cd Por ejemplo pruebe

homelarry$ cd home

home$ ls shyF

larry sam shutdown steve user1

home$

Si Ud omite el paraacutemetro opcional directorio se lo retornaraacute a su directorio raiacutezpersonal o directorio original De otro modo cd lo cambiaraacute al directorio especificadoPor ejemplo

home$ cd

homelarry$ cd

$ cd home

home$ cd usr

usr$ cd localbin

usrlocalbin$

Como puede ver cd le permite expresar el directorio de destino con trayectoriasabsolutas o relativas Una trayectoria absoluta comienza con una y especifica todoslo directorios que existen antes del archivo que Ud desea Una trayectoria relativa estaacutereferida a su directorio actual En el ejemplo anterior cuando estaba en usr hice unmovimiento relativo a localbin local es un directorio que existe bajo usr ybin es un directorio bajo local (cd home tambieacuten fue un cambio de directoriorelativo)

Existen dos directorios que se utilizan solamente para trayectorias relativas y El directorio se refiere al directorio actual y es el directorio

anterior son abreviaturas de directorio y existen en todos los directorios aunque nocuadran bien en la metaacutefora de carpeta dentro de carpeta Auacuten el directorio raiacutez tieneun directorio anterior eacutel es su propio directorio anterior

_____________________________________________

17 N del T Directorio de trabajo actual

18 En este libro veraacute todos los teacuterminos en uso directorio de trabajo presentedirectorio actual o directorio de trabajo Prefiero directorio actual aunque a vecesrecurra a las otras formas a causa de razones de estilo

El archivo chaptershy1 viene a ser el archivo chaptershy1 que estaacute en el directorio actualOcasionalmente seraacute necesario que Ud coloque expliacutecitamente el para que ciertoscomandos funcionen aunque esto es raro En la mayoriacutea de los casos daraacute igual ponerchaptershy1 o chaptershy1

El directorio es maacutes uacutetil cuando queremos retroceder

usrlocalbin$ cd

usrlocal$ ls shyF

archives bin emacs etc ka9q lib tcl

usrlocal$ ls shyF src

cweb linux xmris

usrlocal$

En este ejemplo me cambieacute al directorio anterior mediante cd y luego listeacute eldirectorio usrsrc desde usrlocal utilizando el nombre src Debe advertir que sihubiese estado en homelarry ejecutar el comando ls shyF src no me habriacutea servido alpropoacutesito de ver lo que hay en usrsrc

El directorio ~ es un alias para su directorio personal

usrlocal$ ls shyF ~

usrlocal$

Puede ver que auacuten no hay nada en su directorio personal ~ seraacute maacutes uacutetil a medida queaprendamos maacutes acerca de como manipular los archivos

433 Creacioacuten y borrado de directorios

shy mkdir directorio1 [directorio2 directorioN]

En Unix crear directorios es extremadamente simple y puede ser una muy uacutetil herramientade organizacioacuten Para crear un nuevo directorio utilice el comando mkdir Por supuestomkdir viene de make directory19

Con un pequentildeo ejemplo veamos como funciona esto

homelarry$ ls shyF

homelarry$ mkdir reportshy1993

homelarry$ ls shyF

reportshy1993

homelarry$ cd reportshy1993

homelarryreportshy1993$

mkdir puede tomar maacutes de un paraacutemetro a los que interpreta como nombres de directoriosque debe crear Puede especificarlos mediante su nombre relativo o absoluto reportshy1993es un caso de ejemplo con trayectoria relativa

homelarryreportshy1993$ mkdir homelarryreportshy1993chap1 ~reportshy1993chap2

homelarryreportshy1993$ ls shyF

chap1 chap2

homelarryreportshy1993$

_____________________________________________

19 N del T Crear directorio

shy rmdir directorio1 [directorio2 directorioN]

El opuesto de mkdir es rmdir (remove directory20) rmdir trabaja exactamente igual quemkdir Un ejemplo de rmdir es

homelarryreportshy1993$ rmdir chap1 chap3

rmdir chap3 No such file or directory

homelarryreportshy1993$ ls shyF

chap2

homelarryreportshy1993$ cd

homelarry$ rmdir reportshy1993

rmdir reportshy1993 Directory not empty

homelarry$

Como puede apreciar rmdir se niega a borrar un directorio que no existe y tampocopermite eliminar directorios que tengan algo dentro (Recuerde que reportshy1993 tiene un

subdirectorio chap2 dentro de eacutel) Existe un tema interesante para pensar entoncesiquestqueacute pasa si intenta eliminar su directorio actual Averiguumleacutemoslo

homelarry$ cd reportshy1993

homelarryreportshy1993$ ls shyF

chap2

homelarryreportshy1993$ rmdir chap2

homelarryreportshy1993$ rmdir

rmdir Operation not permitted

homelarryreportshy1993$

Otra situacioacuten del mismo estilo es que sucede si intenta eliminar el directorio anterioral directorio actual Bien esto no es un problema nuevo el directorio anterior alactual no estaacute vaciacuteo (existe el actual en eacutel) asiacute que no puede ser borrado

44 Informacioacuten en movimiento

Todos este asunto de los directorios estaacute muy lindo pero no son de ninguna ayuda amenos que Ud tenga alguacuten sitio donde almacenar sus datos Los dioses del Unix vieroneste problema y lo solucionaron haciendo que los usuarios tengan archivos21

_____________________________________________

20 N del T Eliminar directorio

21N del T Tambieacuten denominados ficheros

Aprenderemos maacutes acerca de la creacioacuten y edicioacuten de archivos en los proacuteximos capiacutetulos

Los comandos baacutesicos para manipular archivos en Unix son cp mv y rm Sus nombresprovienen de copy22 move23 y remove24 respectivamente

441 cp como un monje

shy cp [shyi] fuente destino

shy cp [shyi] archivo1 archivo2 archivoN directorioshydeshydestino25

cp es una utilidad muy praacutectica en Unix y ademaacutes muy poderosa Permite que una personapueda copiar maacutes informacioacuten en un segundo que lo que podiacutea copiar un monje del siglo XIVen todo un antildeo

Debe ser muy cuidadoso con cp si no dispone de una cantidad importante de espacio endisco A nadie le hace gracia ver el mensaje Disk full26 cuando estaacute trabajando conarchivos importantes

cp tambieacuten puede sobreescribir archivos existentes sin previo aviso trataremos este temamaacutes adelante

Bien hablaremos primero acerca de la primer liacutenea en la plantilla del comando El primerparaacutemetro de cp es el nombre del archivo que hay que copiar el segundo es el lugar dondese desea depositar la copia Puede obtener una copia con un nombre distinto o una en undirectorio diferente Veamos algunos ejemplos

homelarry$ ls shyF etcpasswd

etcpasswd

homelarry$ cp etcpasswd

homelarry$ ls shyF

passwd

homelarry$ cp passwd frog

homelarry$ ls shyF

frog passwd

homelarry$

El primer comando cp que corriacute tomoacute el archivo etcpasswd que contiene los nombres detodos los usuarios en un sistema Unix y lo copioacute en mi directorio raiacutez cp no borra elarchivo fuente asiacute que no hice nada que pudiera dantildear el sistema O sea que ahoraexisten dos copias del contenido del archivo etcpasswd ambas se denominan passwd perouna estaacute en el directorio etc y la otra en homelarry

_____________________________________________

22 N del T Copiar

23 N del T Mover

24 N del T Quitar borrar

25 cp necesita de dos renglones en su plantilla porque el significado del segundoparaacutemetro depende de la cantidad de paraacutemetros

26 N del T Disco lleno

Luego creamos una tercera copia de etcpasswd cuando tecleamos cp passwd frog ahorahay tres copias etcpasswd homelarrypasswd y homelarryfrog El contenido de esostres archivos es el mismo sus nombres de archivo difieren

cp puede copiar archivos entre directorios si el primer paraacutemetro es un archivo y elsegundo es un directorio En este caso el nombre simple (sin el path) de destinocoincidiraacute con el original para cada archivo

Tambieacuten se puede copiar un archivo y cambiar su nombre de destino en una sola operacioacutencaso que se da cuando ambos paraacutemetros son nombres de archivo Aquiacute reside uno de lospeligros de cp Si tecleara cp etcpasswd etcgroup el comando cp creariacuteanormalmente un archivo nuevo con el contenido ideacutentico al de etcpasswd y con el nombre

etcgroup Por lo tanto si etcgroup ya existiera cp destruiriacutea el contenido delantiguo sin darle la oportunidad de guardarlo (Ni siquiera escribiraacute un mensaje en elcual le advierta que estaacute por destruir un archivo al copiarle otro encima) Echemos unamirada a otro ejemplo de cp

homelarry$ ls shyF

frog passwd

homelarry$ mkdir passwd_version

homelarry$ cp frog passwd passwd_version

homelarry$ ls shyF

frog passwd passwd_version

homelarry$ ls shyF passwd_version

frog passwd

homelarry$

iquestCoacutemo useacute cp en este caso Evidentemente cp puede tomar maacutes de dos paraacutemetros como sepuede apreciar en la segunda liacutenea de plantillas del comando Lo que el comando anteriorrealizoacute es copiar los archivos que aparecen listados (frog y passwd) al directoriopasswd_version De hecho cp puede tomar cualquier nuacutemero de paraacutemetros interpreta losprimeros n shy 1 como los nombres de archivo que debe copiar y el neacutesimoparaacutemetro como elnombre del directorio al cual se deben copiar los anteriores

No puede renombrar archivos cuando copia maacutes de uno a la vez siempre mantienen su nombresimple Esto nos lleva a una pregunta interesante iquestQueacute es lo que pasariacutea si tecleamoscp frog passwd toad donde frog y passwd existen y toad no es un directorioInteacutentelo y lo sabraacute

442 La poda con rm

shy rm [shyi] archivo1 archivo2 archivoN

Ahora que hemos aprendido como crear millones de archivos con cp (y creacuteame muy prontoencontraraacute nuevas maneras de crear maacutes archivos) seriacutea uacutetil aprender la manera deborrarlos De hecho es muy simple el comando que anda necesitando es rm y funcionacomo Ud se lo esperariacutea a cualquier archivo cuyo nombre se pasa como paraacutemetro a rm selo borra Por ejemplo

homelarry$ ls shyF

frog passwd passwd_version

homelarry$ rm frog toad passwd

rm toad No such file or directory

homelarry$ ls shyF

passwd_version

homelarry$

Como puede Ud apreciar rm es extremadamente espartano No soacutelo no pide su confirmacioacutensino que borra cosas auacuten en el caso en que haya errores en la liacutenea de comandos Estobien puede ser peligroso Considere la diferencia entre estos dos comandos

homelarry$ ls shyF

toad frog

homelarry$ ls shyF frog

toad

homelarry$ rm frogtoad

homelarry$

y este otro

homelarry$ rm frog toad

rm frog is a directory

homelarry$ ls shyF

frog

homelarry$

Como puede ver la diferencia en un caracter hace una diferencia importante en la salidadel comando iexclEs vital que Ud controle lo que ha escrito en sus liacuteneas de comando antesde presionar |_Intro_|

443 Seriacutea interesante tener un rastrillo

shy mv [shyi] nombreshyviejo nombreshynuevo

shy mv [shyi] archivo1 archivo2 archivoN nuevoshydirectorio

Por uacuteltimo el otro comando del que debe cuidarse es mv mv se parece un montoacuten a cpexcepto que borra el archivo original despueacutes de copiarlo Se puede entender como lautilizacioacuten conjunta de cp y rm Veamos que podemos hacer

homelarry$ cp etcpasswd

homelarry$ ls shyF

passwd

homelarry$ mv passwd frog

homelarry$ ls shyF

frog

homelarry$ mkdir report

homelarry$ mv frog report

homelarry$ ls shyF

report

homelarry$ ls shyF report

frog

homelarry$

Como puede ver mv renombra un archivo (que es el primer paraacutemetro) si el segundoparaacutemetro es un archivo Si el segundo paraacutemetro es un directorio mv moveraacute el archivoal nuevo directorio manteniendo el mismo nombre simple

Debe Ud ser muy cuidadoso con mv el comando no controla si el archivo ya existe yborraraacute cualquier archivo que hubiera con el nombre de destino Por ejemplo si ya tengoun archivo de nombre frog existente en mi directorio report el comando mv frog reportborraraacute el archivo reportfrog y lo reemplazaraacute con frog

De hecho existe una manera de lograr que tanto rm cp y mv le consulten a Ud antes deeliminar archivos Los tres comandos nombrados aceptan la opcioacuten shyi a tal efecto SiUd utiliza un alias puede hacer que el shell ejecute rm shyi automaacuteticamente cuandoteclee rm Aprenderaacute maacutes de estos temas luego en la Seccioacuten 913 en la paacutegina 92

Capiacutetulo 5

El sistema de ventanas X

Lo mejor de los estaacutendares es que haya tantos para elegir Andrew S Tanenbaum

Este capiacutetulo soacutelo es aplicable para aquellos que usen el sistema de ventanas X Si seencuentra con una pantalla con muacuteltiples ventanas colores o un cursor que soacutelo se muevecon el ratoacuten estaacute usted usando X (Si su pantalla contiene caracteres blancos sobrefondo negro no estaacute usando X Para arrancarlo refieacuterase a la Seccioacuten 51)

51 Ejecucioacuten y salida del sistema de ventanas X

511 Ejecucioacuten de X

Incluso cuando X no arranque de forma automaacutetica durante el ingreso en el sistema esposible arrancarlo desde la liacutenea de comandos del inteacuterprete en modo texto Hay doscomandos que arrancan X bien startx o bien xinit Debe intentar startx primero Si elinteacuterprete de comandos se queja de que ese comando no existe entonces pruebe con xinit aver si arranca X de ese modo Si no funciona ninguno de los comandos anteriores puedeque no tenga X instalado en su sistema refieacuterase a la documentacioacuten local de sudistribucioacuten

Si el comando se ejecuta pero regresa al inteacuterprete en modo texto tras un rato X estaacuteinstalado pero no ha sido configurado todaviacutea En ese caso debe consultar ladocumentacioacuten que acompantildeaba su distribucioacuten en lo referente a como configurar X

512 Saliendo de X

Dependiendo de coacutemo se haya configurado X puede haber dos modos diferentes de salir deX El primero es que su gestor de ventanas controle la ejecucioacuten de X En ese casodeberaacute salir de X usando un menuacute (ver Seccioacuten 548 en la paacutegina 41) Para ver el menuacutebasta apretar un botoacuten del ratoacuten sobre el fondo

La entrada del menuacute que busca debe ser algo asiacute como Exit Window Manager1 o Exit X2Trate de encontrar esa entrada (puede que haya maacutes de un menuacute intente usar diferentesbotones) y eliacutejala

El otro meacutetodo utiliza una ventana xterm especial para controlar X En este casoseguramente existiraacute una ventana cuyo tiacutetulo sea login3 o system xterm4 Para salirde X mueva el cursor a esa ventana y escriba exit5

Si X arrancoacute automaacuteticamente tras su ingreso en el sistema uno de estos meacutetodosprobablemente le sacaraacute de eacutel Basta conectarse de nuevo para regresar a eacutel Si ejecutoacute Xde forma manual al salir volveraacute al interprete de comandos en modo texto (Si quieresalir del sistema bastaraacute con escribir logout )

52 iquestQueacute es el sistema de ventanas X

El Sistema de Ventanas X es un meacutetodo de trabajo graacutefico y distribuido desarrolladoprincipalmente en el Instituto Tecnoloacutegico de Massachusetts Actualmente estaacute a cargo deun consorcio de fabricantes (debidamente llamado El Consorcio X) y es mantenido porellos

El Sistema de Ventanas X (que a partir de ahora abreviaremos como X6 tiene revisionescada pocos antildeos conocidas como lanzamientos La uacuteltima revisioacuten ha sido X11R6 o sextolanzamiento7

El nuacutemero 11 indica la versioacuten oficial pero no ha habido cambios en los uacuteltimos antildeos ytampoco hay planes para cambiarla en un futuro proacuteximo

Al ser cliente y servidores programas diferentes es posible ejecutar cada uno en enmaacutequinas completamente diferentes Ademaacutes de constituir un meacutetodo estaacutendar paraaplicaciones graacuteficas es posible ejecutar un programa en una maacutequina remota (iexclincluso alotro lado del paiacutes si quiere) y que los resultados aparezcan en la estacioacuten de trabajoque tiene enfrente suyo

Un tercer concepto con el que debe familiarizarse es el de gestor de ventanas El gestorde ventanas es un cliente especial que le dice al servidor en que posicioacuten debencolocarse las diferentes ventanas y permite al usuario moverlas El servidor por siacutemismo no interacciona con el usuario Se trata de un medio que conecta el usuario y elcliente

53 iquestQueacute es esto que hay en mi pantalla

Al arrancar X varios programas son ejecutados Primero arranca el servidor Luegogeneralmente arrancan varios clientes Desgraciadamente no hay un estaacutendar comuacuten entrelas diferentes distribuciones Es bastante probable que entre los clientes se encuentreun gestor de ventanas bien fvwm o twm un inteacuterprete de comandos xterm y un relojxclock

_____________________________________________

1 NT En ingleacutes salir del gestor de ventanas

2 NT En ingleacutes salir de X

3 NT En ingleacutes ingreso en el sistema o autenticacioacuten

4 NT En ingleacutes xterm del sistema o terminal X del sistema

5 NT En ingleacutes salir

6 Existen varias formas de referirse al Sistema de Ventanas X Una forma que aunque comuacutenes incorrecta es X Window o Ventanas X

7 NT La palabra inglesa es release Por ello los lanzamientos se diferencianantildeadiendo una R y el nuacutemero correspondiente

531 XClock

shy xclock [shydigital] [shyanalog] [shyupdate segundos] [shyhands color]

Primero explicaremos el maacutes simple xclock funciona exaacutectamente como se puede esperarMarca los segundos minutos y horas en una ventana pequentildea

Ni usar los botones del ratoacuten ni escribir en la ventana xclock produce efecto algunoshyeso es todo lo que hace iquestO quizaacute no En realidad hay varias opciones diferentes quepermiten hacer que el programa se comporte de modos diferentes Asiacute por ejemplo xclockshydigital crea un reloj digital xclock shyupdate 1 hace que el segundero se mueva cadasegundo y xclock shyupdate 5 hace que se mueva cada cinco segundos

Para obtener maacutes informacioacuten sobre las opciones de xclock puede consultar la paacutegina delmanual correspondiente man xclock Si piensa ejecutar varias copias de xclockprobablemente deberiacutea consultar la Seccioacuten 64 (Multitarea) para saber como se ejecutan ala vez que sus otros programas

(Si ejecuta una copia de xclock en primer plano que es la forma usual en la que seejecuta un programa y quiere salir de eacutel basta teclear |_Ctrlshyc_|)

532 XTerm

La ventana que muestra el prompt del inteacuterprete de comandos (podraacute ver algo parecido ahomelarry$) es controlada por un programa llamado xterm xterm es un programaengantildeosamente complicado A primera vista no parece que haga mucho pero realmente hacemuchiacutesimo trabajo xterm emula una terminal de forma que las aplicaciones de modo textode Unix funcionen correctamente Tambieacuten mantiene en memoria informacioacuten de forma que sepueden consultar comandos usados previamente (Para ver como hace uso de esto refieacuterasea la Seccioacuten 563)

Gran parte de este libro estaacute dedicada a aprender como usar el interprete de comandos deUnix que se encuentra dentro de la ventana xterm Para poder escribir en la xtermgeneralmente es necesario mover el cursor (que posiblemente aparece en forma de X o deflecha) al interior de la ventana xterm De todos modos este comportamiento esdependiente del gestor de ventanas

Uno de los modos en los que se puede arrancar un programa bajo X es a traveacutes de unaxterm Al tratarse los programas X de programas Unix estaacutendar pueden ser arrancados atraveacutes de un inteacuterprete de comandos como el de las xterms Para evitar bloquear la xtermejecutando un programa largo desde ella generalmente se prefiere arrancar los programasX en segundo plano Para consultar este tema puede referirse a la Seccioacuten 64

54 Gestores de ventanas

Bajo Linux los gestores de ventanas maacutes comunes son dos El primero llamado twm queviene de Tab Window Manager Es un programa mayor que el segundo fvwm (fvwm viene deF() Virtual Window Manager el autor nunca explicoacute que significaba la f8) Ambosgestores de ventanas son altamente configurables lo cual impide dar instruccionesespeciacuteficas sobre que teclas usar para hacer algo en particular

Si le interesa saber algo sobre la configuracioacuten de twm refieacuterase a la Seccioacuten 921 Laconfiguracioacuten de fvwm se describe en la Seccioacuten 922

541 Cuando se crean nuevas ventanas

Hay tres tipos de cosas que un gestor de ventanas puede hacer cuando se crea una nuevaventana Es posible configurar el gestor de ventanas de manera que aparezca la forma dela ventana permitieacutendole colocarla en la posicioacuten que prefiera en la pantalla Este modose llama colocacioacuten manual Si ve aparecer la forma de la ventana puede moverla con elratoacuten y colocarla presionando el botoacuten izquierdo

_____________________________________________

8 N del T En el Linux Journal No 43 Noviembre 1997 hay una entrevista a RobertNation paacutegs 46shy47 y eacuteste dice que la F estaacute por Feeble (Gracias Joseacute Luis Gurpeguipor la aclaracioacuten)

A veces es posible que el gestor de ventanas las coloque por siacute mismo Se trata de lacolocacioacuten aleatoria

Finalmente a veces la aplicacioacuten pregunta por el lugar preciso en el que el quiere quese situacutee Tambieacuten el gestor de ventanas puede configurarse de forma que siempre situacutee lasventanas de ciertas aplicaciones en lugares fijos (Asiacute por ejemplo se puede especificarque xclock siempre aparezca en la esquina superior derecha de la pantalla)

542 Foco

El gestor de ventanas controla otras cosas importantes Lo que probablemente le interesamaacutes es el foco El foco del servidor determina que ventana recibe los caraacutecteresintroducidos mediante el teclado Generalmente en X el foco es determinado por laposicioacuten del cursor del ratoacuten Si mueve el cursor del ratoacuten dentro de una ventana xterm9esa xterm recibe los caracteres tecleados Se trata de un comportamiento diferente al deotros sistemas de ventanas como Windows de Microsoft OS2 o Macintosh donde debepinchar con el ratoacuten en una ventana para que adquiera el foco

Generalmente bajo X si el cursor del ratoacuten se sale de una ventana se pierde el foco yle resultaraacute imposible escribir en ella

Debe notar sin embargo que es posible configurar tanto twm como fvwm de forma que paracambiar el foco necesite pinchar la ventana correspondiente y pinchar fuera paradesenfocarla de forma que se comporten igual que Windows de Microsoft Una de dos tratede averiguar como funciona su gestor de ventanas probando o consulte la documentacioacutenlocal

543 Moviendo ventanas

Otro aspecto de X que es altamente configurable es el meacutetodo para mover ventanas Yotengo configurados tres meacutetodos para mover ventanas en twm El maacutes obvio es mover elcursor del ratoacuten sobre la barra del tiacutetulo y arrastrar la ventana Desgraciadamente laconfiguracioacuten permite definir el movimiento usando cualquiera de los tres botones10 (Paraarrastrar situacutee el cursor sobre la barra del tiacutetulo y mantenga presionado el botoacuten delratoacuten correspondiente mientras se mueve) Lo maacutes probable es que su configuracioacuten use elbotoacuten izquierdo para mover ventanas

Otra forma de mover ventanas puede ser manteniendo una tecla pulsada mientras mueve elratoacuten Asiacute en mi caso si mantengo pulsada la tecla |_Alt_| y muevo el cursor sobre unaventana puedo arrastrarla usando el botoacuten izquierdo de mi ratoacuten

Por supuesto para ver como funciona en su caso puede probar igual que antes o referirsea la documentacioacuten local Alternativamente si quiere tratar de interpretar los ficherosde configuracioacuten de los gestores de ventanas puede referirse a la Seccioacuten 921 para twmo 922 para fvwm

_____________________________________________

9 iexclPuede ejecutar varias copias de xterm al mismo tiempo

10 Muchos ratones de PCs tienen dos botones uacutenicamente En este caso generalmente esposible emular el botoacuten central presionando ambos botones simultaacuteneamente

544 Profundidad

Dado que las ventanas pueden solaparse en X necesitamos el concepto de profundidad Apesar de que tanto las ventanas como la pantalla son bidimensionales unas ventanaspueden estar delante de otras de forma que cubren total o parcialmente aquella situadadetraacutes

Existen varias operaciones que manejan la profundidad

o Subir o poner una ventana delante Generalmente se hace pinchando con alguno de losbotones en la barra de tiacutetulo de la ventana en cuestioacuten El botoacuten usado depende de laconfiguracioacuten del gestor de ventanas (Es posible que sean varios los botones queproduzcan este efecto)

o Bajar o empujar una ventana hacia atraacutes Generalmente se hace pinchando igualmente enla barra de tiacutetulo pero usando otro botoacuten Tambieacuten es posible configurar el gestor deventanas de forma que pinchar traiga la ventana hacia delante siempre que haya algoencima de ella y la lleve hacia atraacutes si no hay nada delante

o Alzar en ciclo de forma que el gestor de ventanas va alzando las ventanas una a unaen orden

545 Iconizar

Existen otras operaciones que pueden tapar ventanas o hacerlas desaparecer completamenteLa primera es iconizacioacuten Dependiendo del gestor de ventanas que use este procesopuede realizarse de varias formas Con twm muchas personas configuran un gestor deiconos Se trata de una ventana especial que contiene una lista con las demaacutes ventanas enuso en la pantalla Pinchando con el ratoacuten en uno de los nombres (o dependiendo de laconfiguracioacuten en uno de los botones) la ventana desaparece es iconizada La ventana estaacuteauacuten activa pero no puede verse Pinchando otra vez en el gestor de iconos la ventanavuelve a aparecer en la pantalla

Se trata de algo muy uacutetil Se podriacutea por ejemplo tener xterm remotas en diferentesmaacutequinas que use ocasionalmente al mismo tiempo Dado sin embargo que soacutelo las usararamente puede mantenerlas iconizadas mientras trabaja con un pequentildeo grupo El uacutenicoproblema es que resulta faacutecil perder alguna ventana Generalmente eso lleva a crearnuevas ventanas que dupliquen la funcionalidad de las que estaacuten iconizadas

Otros gestores de ventanas crean verdaderos iconos en la parte inferior de la pantalla osimplemente en la ventana raiacutez

546 Variando el tamantildeo

Existen diversos meacutetodos para variar el tamantildeo de las ventanas bajo X De nuevo estodepende de su gestor de ventanas y de coacutemo haya sido configurado El meacutetodo al que estaacutenacostumbrados los usuarios de Windows de Microsoft consiste en pinchar en el borde de laventana y arrastrarlo Si las ventanas que produce su gestor tienen un borde gordo quehace que el cursor del ratoacuten cambie al pasar por encima de eacutel seguramente tambieacuten puedeusar ese meacutetodo

Otra forma es crear un botoacuten de variacioacuten de tamantildeo en la barra del tiacutetulo Es el botoacutenvisible en la parte derecha de las barras de los tiacutetulos de la Figura 53 Para usarlopinche con el botoacuten izquierdo del ratoacuten en eacutel y mantenieacutendolo presionado mueacutevalo fuerade la ventana para variar el tamantildeo Para fijar el nuevo tamantildeo basta soltar el botoacuten delratoacuten

547 Maximizacioacuten

La mayoriacutea de los gestores de ventanas soportan maximizacioacuten En twm por ejemplo puedemaximizar la altura de una ventana su ancho o ambos a la vez Aunque twm llama a esteproceso zooming yo prefiero usar maximizacioacuten Las aplicaciones pueden responder demodo diferente a un cambio de tamantildeo (Por ejemplo xterm no cambia el tamantildeo de letrapero aumenta el espacio de trabajo)

Desgraciadamente no hay un modo estaacutendar de maximizar ventanas

548 Menuacutes

Los gestores de ventanas tambieacuten proporcionan al usuario un sistema de menuacutes pararealizar tareas de forma raacutepida una y otra vez Por ejemplo podriacutea tener una opcioacuten queejecute Emacs de forma automaacutetica o una xterm adicional De ese modo no tendriacutea queejecutar el comando dentro de una xterm iexclesto es especialmente bueno si no hay ningunaxterm ejecutaacutendose en la que pueda escribir para ejecutar un programa nuevo

De forma general se puede acceder a los menuacutes pinchando en la ventana raiacutez que es unaventana inmoacutevil que siempre estaacute debajo de las demaacutes Por defecto esta ventana es decolor gris pero puede tener cualquier aspecto11 Si quiere probar a ver un menuacute pinchey mantenga cualquier botoacuten del ratoacuten sobre la ventana raiacutez Deberiacutea aparecer un menuacutePara seleccionar una opcioacuten mantenga presionado el botoacuten y mueva el ratoacuten hasta marcarla opcioacuten deseada Entonces suelte el botoacuten

55 Atributos X

Hay muchos programas que usan X Algunos como emacs puede ejecutarse tanto en modotexto como en una ventana X que eacutel mismo crea automaacuteticamente Pero en general lamayoriacutea de los programas para X soacutelo funcionan bajo X

551 Geometriacutea

Existe una serie de cosas que son comunes a todos los programas que se ejecutan bajo XEn X el concepto de geometriacutea engloba el lugar y el tamantildeo de la ventana La geometriacutea deuna ventana tiene cuatro componentes a saber

_____________________________________________

11 Un programa divertido que puede probar se llama xfishtank Este programa crea unpequentildeo acuario en el fondo de su pantalla

o La dimensioacuten horizontal generalmente medida en pixels (Un pixel es la unidad maacutespequentildea que puede colorearse y representarse en la pantalla Muchas configuraciones X enPCs basados en un procesador Intel tienen una resolucioacuten de 1024 pixels horizontalmentepor 768 pixels verticalmente) Algunas aplicaciones como xterm o emacs miden su tamantildeoen caracteres (Por ejemplo ochenta caracteres por liacutenea)

o La dimensioacuten vertical tambieacuten medida en pixels generalmente Al igual que antes enalgunos casos se puede medir en liacuteneas

o La distancia horizontal a uno de los bordes de la pantalla Por ejemplo +35 significaa treinta y cinco pixels desde la izquierda Sin embargo shy50 significa que el extremoderecho de la ventana estaacute a cincuenta pixels del borde derecho de la pantallaGeneralmente no es posible lanzar una ventana fuera de la pantalla aunque si se puedemover fuera (La principal excepcioacuten es cuando la ventana es demasiado grande)

o La distancia vertical desde la parte superior o inferior de la pantalla la distanciase mide desde la parte superior si es positiva o desde la inferior si es negativa

Los cuatro componentes se unen formando la cadena de geometriacutea 503x73shy78+0 (Esto marcala geometriacutea de una ventana de 503 pixels de largo 73 pixels de alto situada cerca dela esquina superior derecha de la pantalla) O de otro modo tendremos tamantildeoh x tamantildeovshysituacioacutenh + situacioacutenv

552 Presentacioacuten

Toda aplicacioacuten X tiene asociada una presentacioacuten Eacutesta determina cuaacutel es la pantallacontrolada por el servidor X La presentacioacuten estaacute formada por tres elementos

o El nombre de la maacutequina en la que se ejecuta el servidor En el caso de sistemas Linuxaislados el nombre de la maacutequina que ejecuta el servidor coincide con la que ejecuta losclientes En ese caso se puede omitir el nombre por completo

o El nuacutemero del servidor de dicha maacutequina que debe responder a las peticiones de losclientes Dado que una maacutequina puede estar corriendo diferentes servidores a la vez (esalgo improbable pero posible en maacutequinas Linux) cada uno tiene que tener un nuacutemeropropio

o El nuacutemero del monitor X permite que un servidor controle maacutes de un monitor a la vezPor ejemplo puede que alguien quiera tener maacutes espacio de forma que use dos monitores ala vez Para evitar que el rendimiento de la maacutequina sea muy malo en vez de tener dosservidores hacen que sea el mismo servidor el que controle las dos maacutequinas

Si ponemos estas tres cosas juntas obtendremos maacutequinanuacutemeroshydeshyservidornuacutemeroshydeshypantalla Por ejemplo en mousehouse todas mis aplicaciones tienen la presentacioacutenfijada en 00 lo que significa que la salida aparece en la primera pantalla del primerservidor local Sin embargo si uso una computadora remota tendriacutea que sermousehouse00

Figura 51 Opciones Estaacutendar para Programas X

Nombre Seguido de Ejemplo

shygeometry Geometriacutea de la ventana xterm shygeometry 80x24+0+90

shydisplay A doacutende quiere que el programa enviacutee lasalida

xterm shydisplay lionsden00

shyfg Color primario en primer plano xterm shyfg yellow

shybg Color primario en el segundo plano xterm shybg blue

Por defecto la presentacioacuten se toma de una variable de entorno (ver Seccioacuten 914)llamada DISPLAY12 pero puede ser fijada mediante una opcioacuten desde el inteacuterprete decomandos (ver Figura 52) Para ver cuaacutel es el valor de la variable DISPLAY bastaejecutar echo $DISPLAY

56 Caracteriacutesticas comunes

A pesar de que X es una interfaz graacutefica de usuario se trata de una interfaz muydesequilibrada

Resulta imposible predecir como va a comportarse cualquier elemento del sistema porque sepueden reconfigurar cambiar o incluso sustituir muy faacutecilmente Eso significa que es muydifiacutecil explicar como se han de usar los distintos elementos de la interfaz Una de lasrazones que ya conocemos es la posibilidad de utilizar diferentes gestores de ventanasque a su vez son altamente configurables

Otra explicacioacuten para el desequilibrio de la interfaz es que las aplicaciones X se puedenconstruir mediante conjuntos de chismes13 La distribucioacuten X estaacutendar incluye loswidgets Athena desarrollados en el MIT Las aplicaciones gratuitas suelen hacer uso deeste conjunto Tienen la desventaja de que su aspecto no es particularmente atrayente yresultan algo maacutes difiacuteciles de usar en un programa que los otros

Otro conjunto de widget popular es Motif Motif es un conjunto no gratuito similar a lainterfaz de usuario usada por Windows de Microsoft Muchas aplicaciones comerciales asiacutecomo algunas gratuitas usan el conjunto de widget Motif El popular Browser de World WideWeb netscape por ejemplo usa Motif

Veamos cuales son algunas de las cosas maacutes habituales que puede encontrar

561 Botones

Los botones son generalmente los componentes de la interfaz maacutes faacuteciles de usar Un botoacutense invoca situando el cursor del ratoacuten sobre el botoacuten en cuestioacuten y pinchando (pulsando ysoltando inmediatamente) el botoacuten izquierdo Los botones Athena y Motif sonfuncionalmente equivalentes pero tienen diferencias de apariencia

_____________________________________________

12 NT DISPLAY significa presentacioacuten en ingleacutes

13 NT Se trata de la traduccioacuten de la palabra inglesa widget

562 Barras de menuacute

Una barra de menuacute es una coleccioacuten de comandos accesibles mediante el ratoacuten Cada palabraes la cabecera de una categoriacutea File14 contiene comandos que permiten cargar o grabarficheros Por convencioacuten esta categoriacutea incluye tambieacuten el comando que termina laaplicacioacuten

Para utilizar un comando mueva el cursor del ratoacuten sobre la categoriacutea correspondiente(como por ejemplo File) y apriete el botoacuten izquierdo Sin soltarlo arrastre el ratoacutenhacia abajo para ver los diferentes comandos de esa categoriacutea Para seleccionar unomueva el cursor sobre el mismo y suelte el botoacuten del ratoacuten Algunas barras de menuacute lepermiten pinchar sobre la categoriacutea si este es su caso pinche sobre la categoriacutea paraver el menuacute que se mantendraacute hasta que pinche de nuevo para seleccionar un comando otromenuacute o pinche fuera (indicando que no estaacute interesado en ninguacuten comando en particular)

563 Barras de desplazamiento

Una barra de desplazamiento es un meacutetodo que permite ver soacutelo una parte de un documentomientras que mantiene el resto fuera de la pantalla Por ejemplo en la Figura 54 la

ventana de xterm soacutelo presenta el tercio inferior del texto disponible Es muy faacutecil vercual parte del texto es el que se puede ver en cualquier momento la franja oscura de labarra estaacute situada y tiene una longitud relativa a la porcioacuten de texto que se puede verCuando no hay maacutes que lo que se puede ver toda la barra aparece de color oscuro Si setrata de la mitad seraacute la mitad la que aparezca oscurecida

Puede tener una barra de desplazamiento vertical a la derecha o la izquierda de su textoy una horizontal en la parte superior o inferior dependiendo de la aplicacioacuten de que setrate

Barras de desplazamiento Athena

Las barras de desplazamiento Athena funcionan de forma diferente a las de otros sistemasde ventanas Cada uno de los tres botones del ratoacuten tiene una funcioacuten diferente Paradesplazarse hacia arriba (es decir para que ver el material situado por encima de lo quese puede ver en ese momento) puede pinchar en cualquier lugar de la barra con el botoacutenderecho Para desplazarse hacia abajo puede usar el botoacuten izquierdo de forma anaacuteloga

Tambieacuten puede saltar a cualquier lugar en particular usando el botoacuten central del ratoacuten ypinchando en el lugar de la barra que corresponde a la posicioacuten del texto que leinteresa Esto hace a la ventana presentar el material situado en ese punto deldocumento

_____________________________________________

14 NT Del ingleacutes fichero o archivo

Barras de desplazamiento Motif

Una barra Motif actuacutea de un modo maacutes parecido al acostumbrado en Windows de Microsoft oen un Macintosh La parte derecha de la Figura 54 muestra un ejemplo Debe notar queademaacutes de la barra en siacute misma hay unas flechas tanto en la parte superior como en lainferior Estas flechas se pueden usar para ajuste fino de la pantalla pinchando tantoel botoacuten izquierdo como el central mueve la ventana ligeramente (por ejemplo una liacutenea)el botoacuten derecho no hace nada

El comportamiento asociado a pinchar en la barra de desplazamiento es completamentediferente en las barras Motif del que exhiben las barras Athena El botoacuten derecho notiene efecto Asociado al botoacuten izquierdo la ventana se moveraacute hacia arriba si pinchasobre la posicioacuten actual o hacia abajo en el caso contrario Si pincha sobre la barra enel lugar actual y la arrastra podraacute moverse a cualquier posicioacuten a voluntad Al soltar elbotoacuten se fija cual es la posicioacuten final de la ventana

Pinchando el botoacuten central en cualquier lugar de la barra hace que la ventana se desplacehacia ese lugar de forma inmediata igual que ocurre en barras Athena Sin embargo elpunto elegido se convierte en el centro de la nueva pantalla de datos

Capiacutetulo 6

Trabajando con Unix

A UNIX saleslady Lenore

Enjoys work but she likes the beach more

She found a good way

To combine work and play

She sells C shells by the seashore

Unix es un potente sistema para aquellos que saben coacutemo dominar su poder En estecapiacutetulo intentareacute describir varias maneras de usar el shell de Unix bash maacuteseficientemente

61 Comodines

En el capiacutetulo anterior se ensentildearon los comandos para mantener ficheros cp mv y rm Aveces se querraacute tratar con maacutes de un fichero a la vez en realidad con muchos a la vezPor ejemplo se quiere copiar todos los ficheros que empiecen por data en un directoriollamado backup Se podriacutea hacer esto ejecutando muchos comandos cp o escribiendo cadafichero en una liacutenea de comando Estos dos meacutetodos llevan mucho tiempo incluso setienen muchas posibilidades de cometer errores

Una buena manera de hacer este trabajo es teclear

homelarryreport$ ls shyF

1993shy1 1994shy1 data1 data5

1993shy2 datashynew data2

homelarryreport$ mkdir ~backup

homelarryreport$ cp data ~backup

homelarryreport$ ls shyF ~backup

datashynew data1 data2 data5

homelarryreport$

Como se puede observar el asterisco indica a cp que tome todos los ficheros que empiecenpor data y los copie a backup iquestQueacute cree que cp dw backup puede haber hecho

611 iquestQueacute ocurre realmente

Buena pregunta De hecho hay un par de caracteres especiales interceptados por el shellbash El caraacutecter un asterisco dice cambia esta palabra con todos los ficherosque se ajusten a esta especificacioacuten Asiacute el comando cp data backup como el dearriba cambia a cp datashynew data1 data2 data5 backup antes de ejecutarse

Para ilustrar esto introducireacute un comando nuevo echo echo es un comando extremadamentesimple repite o muestra cualquier paraacutemetro De este modo

homelarry$ echo Hola

Hola

homelarry$ echo Como se encuentra

Como se encuentra

homelarry$ cd report

homelarryreport$ ls shyF

1993shy1 1994shy1 data1 data5

1993shy2 datashynew data2

homelarryreport$ echo 199

1993shy1 1993shy2 1994shy1

homelarryreport$ echo 4

1994shy1

homelarryreport$ echo 2

1993shy2 data2

homelarryreport$

Como se puede ver el shell expande el comodiacuten y pasa todos los ficheros al programa quese va a ejecutar Esto plantea una pregunta interesante iquestqueacute ocurre si no hay ficherosque se ajusten a la especificacioacuten del comodiacuten Pruebe echo rcfrog y bash pasaraacuteliteralmente la especificacioacuten del comodiacuten al programa

Otros shells como tcsh en vez de pasar el comodiacuten literalmente contestaraacuten No matchAquiacute estaacute el mismo comando ejecutado bajo tcsh

mousehousegtecho rcfrog

echo No match

mousehousegt

La uacuteltima pregunta que podriacutea hacerse es iquestqueacute pasa si quisiera mostrar data en vez dela lista de nombres Bien tanto en bash como en tcsh soacutelo se debe incluir la cadenaentre comillas

homelarryreport$ echo data mousehousegtecho data

data Oacute bien data

homelarryreport$ mousehousegt

612 El signo de interrogacioacuten

Ademaacutes del asterisco el shell tambieacuten interpreta un signo de interrogacioacuten como uncaraacutecter especial

Un signo de interrogacioacuten coincidiraacute con un caraacutecter y soacutelo uno Por ejemplo ls etc

mostraraacute todos los ficheros de dos letras en el directorio etc

62 Ganar tiempo con bash

621 Editando la liacutenea de comandos

A veces escribe un comando largo a bash y antes de pulsar |_Intro_| se da cuenta deque ha cometido un error al escribirlo Se puede simplemente borrar todo y volver ateclear correctamente pero iexcles demasiado esfuerzo En cambio se pueden usar las flechaspara moverse borrar ellos caraacutecteres incorrectos y escribir la informacioacutencorrectamente

Hay muchas teclas especiales que ayudan a editar la liacutenea de comandos muchas de ellassimilares a los comandos usados en GNU Emacs Por ejemplo |_Cshyt_| intercambia doscaraacutecteres adyacentes1

Se pueden encontrar muchos de los comandos en el capiacutetulo sobre Emacs Capiacutetulo 8

622 Completamiento de comandos y nombres de fichero

Otra peculiaridad de bash es la ejecucioacuten automaacutetica de las liacuteneas de comando Porejemplo veamos el siguiente ejemplo de un comando cp tiacutepico

homelarry$ ls shyF

estoshyesshyunshyficheroshylargo

homelarry$ cp estoshyesshyunshyficheroshylargo corto

homelarry$ ls shyF

corto estoshyesshyunshyficheroshylargo

homelarry$

Es una gran molestia tener que teclear cada letra de estoshyesshyunshyficheroshylargo cada vezque se quiere acceder a eacutel sucede lo mismo si queremos crear estoshyesshyunshyficheroshylargocopiando en eacutel etcpasswd2 Ahora aprenderemos a escribir el anterior comando cp maacutesraacutepidamente y con menos posibilidad de error

En vez de teclear el nombre del fichero entero se escribe cp es se pulsa y suelta latecla |_Tab_| Por arte de magia el resto del nombre del fichero aparece en la liacutenea decomandos y se puede escribir corto Desgraciadamente bash no pude leer lospensamientos por lo que se debe teclear corto

Cuando se pulsa |_Tab_| bash mira lo que hay escrito y busca un fichero que empiece comoeso Por ejemplo si tecleo usrbinema y luego pulso |_Tab_| bash encontraraacuteusrbinemacs ya que es el uacutenico fichero que empieza por usrbinema en mi sistema Encambio si tecleo usrbinld y pulso |_Tab_| bash me avisaraacute Eso es porque tresficheros usrbinld usrbinldd y usrbinld86 empiezan por usrbinld en misistema

Si se intenta un completamiento y bash avisa se puede pulsar inmediatamente |_Tab_| otravez para conseguir una lista de todos los ficheros que coincidan con el patroacuten De estemodo si no se estaacute seguro del nombre exacto del fichero podemos teclear los primeroscaracteres del nombre y buscarlo en una lista maacutes pequentildea de ficheros

______________________________________________

1 |_Cshyt_|significa mantener pulsada la tecla marcada como Ctrl y apretar la tecla tLuego soltar ambas

2 cp etcpasswd estoshyesshyunshyficheroshylargo

63 La entrada estaacutendar y La salida estaacutendar

Intentemos abordar un problema simple conseguir un listado del directorio usrbin Sihacemos ls usrbin algunos de los nombres de los ficheros saldraacuten por arriba de lapantalla iquestComo se pueden ver todos los ficheros

631 Algunos conceptos de Unix

El sistema operativo Unix facilita mucho a los programas el uso del terminal Cuando unprograma escribe algo en la pantalla estaacute usando algo llamado salida estaacutendar Salidaestaacutendar en ingleacutes standard output o stdout es la manera que tiene el programa deescribirle cosas al usuario El nombre por el que se indica un programa es entradaestaacutendar (stdin) Es posible que un programa se comunique con el usuario sin usar laentrada o salida estaacutendar pero la mayoriacutea de los comandos que se tratan en este librousan stdin y stdout

Por ejemplo el comando ls imprime una lista de los directorios en la salida estaacutendarque estaacute normalmente conectada al terminal Un comando interactivo como el shellbash lee los comandos de la entrada estaacutendar

Un programa tambieacuten puede escribir en el error estaacutendar ya que es muy faacutecil hacer que lasalida estaacutendar apunte a cualquier lugar aparte del terminal El error estaacutendar (stderr)estaacute casi siempre conectado al terminal para que alguna persona pueda leer el mensaje

En esta seccioacuten examinaremos tres modos de enredarse con la entrada y salida estaacutendarredireccionar la salida redireccionar la entrada y las tuberiacuteas

632 Redireccionar la salida

Un aspecto muy importante de Unix es la posibilidad de redireccionar la salida Estopermite que en vez de ver los resultados de un comando los salvemos en un fichero o losenviemos directamente a una impresora Por ejemplo para redireccionar la salida delcomando ls usrbin se coloca un signo gt al final de la liacutenea y se indica elfichero donde dejar la salida

homelarry$ ls

homelarry$ ls shyF usrbin gt listado

homelarry$ ls

listado

homelarry$

Como se puede ver en vez de escribir los nombres de todos los ficheros el comando creaun fichero totalmente nuevo en el directorio actual Echemos un vistazo a este ficherousando el comando cat

Si se recuerda cat era un comando bastante inuacutetil que copiaba lo que se escribiacutea(entrada estaacutendar) al terminal (salida estaacutendar) cat tambieacuten imprime un fichero en lasalida estaacutendar si se indica el fichero como paraacutemetro

homelarry$ cat listado

homelarry$

La salida exacta del comando ls usrbin aparece en el contenido de listado Por ahoratodo bien sin embargo no resuelve el problema original3

A pesar de todo cat hace algunas cosas interesantes cuando se redirecciona su salidaiquestQueacute hace el comando cat listado gt fichero Normalmente el gt fichero dice coge todala salida del comando y ponla en fichero La salida del comando cat listado es elfichero listado Asiacute hemos inventado un nuevo (y no tan eficiente) meacutetodo de copiarficheros

iquestQueacute ocurre con el comando cat gt zorro cat lee cada liacutenea escrita en el terminal(entrada estaacutendar) y la imprime de vuelta (salida estaacutendar) hasta que lee |_Ctrlshyd_| Eneste caso la salida estaacutendar se ha redireccionado al fichero zorro Ahora cat sirve comoun editor rudimentario

homelarry$ cat gt zorro

El rapido zorro marron salta sobre el descuidado perro

pulsa Ctrlshyd

Ahora se ha creado el fichero zorro que contiene la frase El rapido zorro marron saltasobre el descuidado perro Un uacuteltimo uso del versaacutetil comando cat es concatenarficheros cat imprimiraacute cada fichero dado como paraacutemetro uno despues de otro El comandocat listado zorro imprimiraacute el listado del directorio usrbin y luego la tonta fraseAsiacute el comando cat listado zorro gt listyzorro crearaacute un nuevo fichero conteniendo loscontenidos de listado y zorro

633 Redireccionar la entrada

Asiacute como cuando se redirecciona la salida estaacutendar es posible redireccionar la entradaEn lugar de que un programa lea su entrada desde el teclado la leeraacute desde un ficheroComo redireccionar la entrada estaacute relacionado con redireccionar la salida parecenatural que lt sea el caraacutecter para redireccionar la entrada Eacuteste tambieacuten se usadespueacutes del comando que se desee ejecutar

Esto es generalmente uacutetil si se tiene un fichero de datos y un comando que espera susdatos desde la entrada estaacutendar Muchos comandos permiten especificar un fichero sobre elcual operar asiacute que en las actividades diarias el lt no se usa tanto como otrasteacutecnicas

634 Las tuberiacuteas

Muchos comandos Unix producen gran cantidad de informacioacuten Por ejemplo es normal que uncomando como ls usrbin produzca maacutes salida que la que se puede ver en pantalla Paraque se pueda ver toda la informacioacuten de un comando como ls usrbin es necesario usarotro comando Unix llamado more4 more pararaacute cada vez que la pantalla se llene deinformacioacuten Por ejemplo more lt etcrc mostraraacute el fichero etcrc como lo hariacutea catetcrc excepto que more permite leerlo more tambieacuten admite el comando more etcrc y esa es la forma normal de invocarlo

_____________________________________________

3 Para lectores impacientes el comando que se debe usar es more Sin embargo hay quehablar un poco sobre algo maacutes antes de llegar ahiacute

4 Se llama more porque ese es el indicador que originalmente mostraba shyshymoreshyshy Envarias versiones de Linux el comando more es identico a un comando maacutes avanzado que hacetodo lo que more puede hacer y maacutes auacuten Como demostracioacuten de que los programadores deordenadores son malos coacutemicos llamaron a este nuevo programa less

Sin embargo eso no ayuda al problema de que ls usrbin muestre maacutes informacioacuten de laque se pueda ver more lt ls usrbin no funciona iexclla redireccioacuten de entrada soacutelofunciona con ficheros no comandos Se podriacutea hacer esto

homelarry$ ls usrbin gt tempshyls

homelarry$ more tempshyls

homelarry$ rm tempshyls

Pero Unix propone una forma maacutes limpia de hacerlo Se puede usar el comando ls usrbin_ more El caraacutecter _ es una tuberiacutea Como una tuberiacutea de agua una tuberiacutea Unixcontrola el flujo En vez de agua se controla el flujo de informacioacuten

Los filtros son programas muy uacutetiles para usarse en conjuncioacuten con las tuberiacuteas Unfiltro es un programa que lee la entrada estaacutendar la cambia de alguna manera y la sacapor la salida estaacutendar

more es un filtro lee los datos que coge de la entrada estaacutendar y los muestra por lasalida estaacutendar pantalla a pantalla permitiendo leer el fichero more no es un granfiltro porque su salida no se puede enviar a otro programa

Otros filtros incluyen los programas cat sort head y tail Por ejemplo si se quiereleer soacutelo las primeras diez liacuteneas de la salida de ls se puede usar ls usrbin _ head

64 Multitarea

641 Usando el control de trabajos

Control de trabajos se refiere a la habilidad de poner procesos (esencialmente otrapalabra para programas) en background (segundo plano) y ponerlos de vuelta en foreground(primer plano)

Esto es como decir que se quiere ser capaz de ejecutar algo mientras se hacen otrascosas pero que esteacuten ahiacute otra vez cuando se les quiera decir algo o pararlos En Unixla principal herramienta para el control de procesos es el shell seguiraacute la pista de losprocesos por usted si se aprende como hablar su lenguaje

Las dos palabras maacutes importantes en ese lenguaje son fg para primer plano y bg parasegundo plano Para entender como funcionan use el comando yes en el indicador delsistema

homelarry$ yes

Esto produce el maravilloso efecto de desplazar una larga columna de yes por la parteizquierda de la pantalla tan raacutepido que no se pueden seguir5 Para pararlo se podriacuteapulsar |_Ctrlshyc_| y matarlo pero esta vez Ud oprimiraacute |_Ctrlshyz_| Parece habersedetenido pero habraacute un mensaje antes del indicador de sistema maacutes o menos parecido aeste

[1]+ Stopped yes

_____________________________________________

5 Hay buenas razones para que este extrantildeo comando exista Ciertos comandos esperan unaconfirmacioacuten un si ([y]es en ingleacutes) a una pregunta El comando yes permite alprogramador automatizar la respuesta a esas preguntas

Significa que el trabajo yes se ha suspendido en el segundo plano Se puede hacer quesiga ejecutaacutendose tecleando fg en el indicador de sistema que lo pondraacute en primer planootra vez Si se desea se pueden hacer otras cosas antes mientras estaacute suspendidoPruebe unos cuantos ls o algo antes de ponerlo en primer plano nuevamente

Una vez que ha vuelto al primer plano las yes empezaraacuten a salir otra vez tan raacutepidocomo antes

No hay que preocuparse de que si mientras ha estado suspendido ha almacenado maacutes yespara enviarlas a la pantalla cuando un trabajo se suspende el programa entero no seejecuta hasta que se lo vuelva de vuelta a la vida (Ahora pulse |_Ctrlshyc_| para matarlode veras)

Pongamos aparte el mensaje que obtuvimos del shell

[1]+ Stopped yes

El nuacutemero entre corchetes es el nuacutemero de trabajo de este proceso y se usaraacute cuando senecesite referenciarlo especiacuteficamente (Naturalmente desde el momento que tengamos enejecucioacuten muacuteltiples trabajos se necesita un modo de acceder a cada uno) El +siguiente indica que eacutese es el trabajo actual esto es el proceso maacutes reciente que seha movido del primer plano al segundo

Si se tecleara fg se pondriacutea el trabajo con el + en primer plano otra vez (Maacutessobre esto despueacutes cuando se discuta la ejecucioacuten de muacuteltiples trabajos a la vez) Lapalabra Stopped significa que el trabajo estaacute parado El trabajo no estaacute muerto peroactualmente no se ejecuta Linux lo ha guardado en un estado especial de suspendidolisto para saltar a la accioacuten cuando alguien lo solicite Finalmente el yes es el nombredel trabajo que se ha detenido

Antes de seguir adelante matemos este trabajo y lo arrancamos otra vez de formadiferente El comando se llama kill y se usa del siguiente modo

homelarry$ kill 1

[1]+ Stopped yes

homelarry$

Ese mensaje sobre el proceso que indica parado otra vez induce a error Para saber siauacuten estaacute vivo (eso es tanto en ejecucioacuten como congelado en un estado suspendido) tecleejobs

homelarry$ jobs

[1]+ Terminated yes

homelarry$

Ahora ya lo sabe iexclel trabajo ha terminado (Es posible que el comando jobs no muestrenada lo que simplemente significa que no hay trabajos ejecutaacutendose en segundo plano Sise acaba de matar un trabajo y al teclear jobs no muestra nada se tiene la seguridad deque el comando kill se ha ejecutado correctamente Normalmente indicaraacute que el trabajo haterminado)

Ahora ejecute yes de nuevo de esta forma

homelarry$ yes gt devnull

Si lee la seccioacuten sobre la redireccioacuten de entrada y salida sabraacute que se estaacute enviando lasalida de yes a un fichero especial llamado devnull devnull es un agujero negro quecome cualquier salida que se le enviacutee (se puede imaginar ese torrente de yes saliendo pordetraacutes del ordenador y perforando un agujero en la pared si eso le hace feliz)

Despueacutes de teclear esto no se recuperaraacute el indicador de sistema pero tampoco saldraacuteesa columna de yes Sin embargo la salida se estaacute enviando a devnull el trabajo auacuten seejecuta en primer plano Como siempre se puede suspender pulsando |_Ctrlshyz_| Haacutegaloahora para volver al indicador del sistema

homelarry$ yes gt devnull

[yes se ejecuta y solamente se ha pulsado Ctrlshyz]

[1]+ Stopped yes gtdevnull

homelarry$

Hmm iquesthay alguna forma de ponerlo en ejecucioacuten en segundo plano mientras deja elindicador del sistema para trabajar de forma interactiva El comando para hacer eso esbg

homelarry$ bg

[1]+ yes gtdevnull amp

homelarry$

Ahora deberaacute tener confianza en miacute sobre esto despueacutes de teclear bg el trabajo yes gtdevnull habraacute continuado con su ejecucioacuten otra vez pero esta vez en segundo plano Dehecho si hace alguna cosa en el prompt como ls u otros se daraacute cuenta que su maacutequinase ha ralentizado un poco (iexclgenerar y descargar continuamente una cadena preparada deyes lleva algo de tiempo al fin y al cabo) Aparte de esto no hay ninguacuten otro efectoSe puede hacer lo que se desee en el indicador del sistema y yes continuaraacute felizmenteenviando su salida al agujero negro

Ahora hay dos formas diferentes de matarlo con el comando kill que ya se explicoacute oponiendo el trabajo en primer plano de nuevo e interrumpirlo con una interrupcioacuten|_Ctrlshyc_| Probemos la segunda forma soacutelo para entender la relacioacuten entre fg y bg unpoco mejor

homelarry$ fg

yes gtdevnull

[ahora esta en primer plano Imagine que pulso Ctrlshyc para terminarlo]

homelarry$

Bueno se acaboacute Ahora ejecute unos cuantos trabajos simultaacuteneamente como estos

homelarry$ yes gt devnull amp

[1] 1024

homelarry$ yes _ sort gt devnull amp

[2] 1026

homelarry$ yes _ uniq gt devnull

[y aqui pulse Ctrlshyz para suspenderlo por favor]

[3]+ Stopped yes _ uniq gtdevnull

homelarry$

La primera cosa que le debe llamar la atencioacuten de estos comandos es la terminacioacuten amp alfinal de los dos primeros Poner un amp despueacutes del comando indica al shell que losejecute en segundo plano desde el principio (Es una forma de evitarse tener que ejecutarel programa pulsar |_Ctrlshyz_| y luego teclear bg ) Asiacute estos dos comandos hanempezado a ejecutarse en segundo plano El tercero estaacute suspendido e inactivo en estemomento Se puede dar cuenta de que la maacutequina se ha vuelto maacutes lenta ya que los que seestaacuten ejecutando requieren un poco de tiempo de CPU

Cada uno indica su nuacutemero de trabajo Los dos primeros tambieacuten muestran sus nuacutemeros deidentificacioacuten de proceso o PID despueacutes del nuacutemero de trabajo Los PIDs normalmente noson algo que se necesite conocer pero a veces viene bien

Matemos el segundo ya que creo que estaacute ralentizando su maacutequina Se puede teclear kill2 pero eso seriacutea demasiado faacutecil Por el contrario haga esto

homelarry$ fg 2

yes _ sort gtdevnull

[pulse Ctrlshyc para matarlo]

homelarry$

Como esto demuestra fg toma paraacutemetros empezando con De hecho se podriacutea teclearsoacutelo esto

homelarry$ 2

yes _ sort gtdevnull

[pulse Ctrlshyc para matarlo]

homelarry$

Esto funciona por que el shell automaacuteticamente interpreta un nuacutemero de trabajo como unapeticioacuten para poner ese trabajo en primer plano Se puede indicar los nuacutemeros de trabajocon otros nuacutemeros precedidos por un Ahora teclee jobs para ver cuaacuteles trabajosquedan en ejecucioacuten

homelarry$ jobs

[1]shy Running yes gtdevnull amp

[3]+ Stopped yes _ uniq gtdevnull

homelarry$

El shy indica que ese trabajo nuacutemero 1 es segundo en la lista para ser puesto en elprimer plano si soacutelo se teclea fg sin dar paraacutemetros El + indica que el trabajoespecificado es el primero en la lista un fg sin paraacutemetros pondraacute al trabajo nuacutemero 3en el primer plano Sin embargo se puede acceder a eacutel llamaacutendolo si se desea mediante

homelarry$ fg 1

yes gtdevnull

[ahora pulse Ctrlshyz para suspenderlo]

[1]+ Stopped yes gtdevnull

homelarry$

Al cambiar al trabajo nuacutemero 1 y luego suspenderlo han cambiado las prioridades de todoslos trabajos de usuario Esto se puede ver con el comando jobs

homelarry$ jobs

[1]+ Stopped yes gtdevnull

[3]shy Stopped yes _ uniq gtdevnull

homelarry$

Ahora los dos estaacuten parados (porque los dos se han suspendido con |_Ctrlshyz_|) y elnuacutemero 1 es el siguiente en la lista a entrar en el primer plano por defecto Esto es asiacuteporque se le puso en el primer plano manualmente y luego fue suspendido El + siemprese refiere al trabajo maacutes reciente que ha sido suspendido del primer plano Se puedecontinuar con su ejecucioacuten otra vez

homelarry$ bg

[1]+ yes gtdevnull amp

homelarry$ jobs

[1]shy Running yes gtdevnull

[3]+ Stopped yes _ uniq gtdevnull

homelarry$

Fiacutejese que ahora estaacute en ejecucioacuten y el otro trabajo se ha movido en la lista y tiene el+ Ahora mateacutemoslos para que el sistema no esteacute permanentemente ralentizado porprocesos que no hacen nada

homelarry$ kill 1 3

[3] Terminated yes _ uniq gtdevnull

homelarry$ jobs

[1]+ Terminated yes gtdevnull

homelarry$

Apareceraacuten varios mensajes sobre la terminacioacuten de los trabajos nada mueretranquilamente al parecer La figura 61 de la paacutegina 59 muestra un breve resumen de loque se debe saber acerca del control de trabajos

642 Teoriacutea del control de trabajos

Es importante entender que el control de procesos lo hace el shell No hay ninguacutenprograma en el sistema llamado fg por eso fg bg amp jobs y kill son internos alshell6 (A veces kill es un programa independiente en el shell bash usado por Linuxpertenece al shell) Esto es una forma loacutegica de hacerlo ya que cada usuario quiere supropio espacio de control de trabajos y cada usuario ya tiene su propio shell es maacutesfaacutecil que el shell siga la pista de los trabajos usuario Por otro lado cada nuacutemero detrabajo de usuario soacutelo tiene significado para ese usuario mi trabajo nuacutemero [1] y sutrabajo nuacutemero [1] son probablemente dos procesos totalmente diferentes De hecho si seestaacute conectado maacutes de una vez cada uno de los shells tendraacute datos uacutenicos sobre elcontrol de trabajos asiacute como tambieacuten un usuario puede tener dos trabajos diferentes conel mismo nuacutemero ejecutaacutendose en dos shells diferentes

_____________________________________________

6 N del T En el original pone shellshybuiltins eso es que se compilan dentro delshell

La manera segura de referenciarlos es usar el nuacutemero IDentificador de Proceso (PID)Estos nuacutemeros abarcan todo el sistema cada proceso tiene su propio (y uacutenico) nuacutemero Dosusuarios diferentes pueden referenciar un proceso por su PID y saber que estaacuten hablandosobre el mismo proceso (iexclasumiendo que estaacuten conectados en la misma maacutequina)

Echeacutemosle un vistazo a un comando maacutes para entender que son los PIDs El comando ps listatodos los procesos en ejecucioacuten incluyendo el shell Prueacutebelo Tiene tambieacuten unascuantas opciones de las cuales las maacutes importantes (para mucha gente) son a u yx La opcioacuten a lista los procesos pertenecientes a alguacuten usuario no soacutelo los suyos

propios La x lista los procesos que no tienen un terminal asociado a ellos7Finalmente la u da informacioacuten adicional sobre los procesos que es frecuentementeuacutetil

Para hacerse una idea de lo que realmente estaacute haciendo el sistema se ponen todosjuntos ps shyaux Se pueden ver los procesos que usan maacutes memoria mirando la columnaMEM y maacutes CPU mirando a la columna CPU (La columna TIME lista la cantidad total detiempo de CPU usado)

Otra nota raacutepida sobre los PIDs kill aparte de tomar opciones de la forma no_trabajotoma opciones de los PIDs en crudo Esto es si pone un yes gt devnull en segundoplano se ejecuta ps y se busca el yes Luego se teclea kill PID 8

Si empieza a programar en C con su sistema Linux pronto aprenderaacute que el control detrabajos del shell es soacutelo una versioacuten interactiva de las llamadas a las funciones fork yexecl Esto es demasiado complejo para explicarlo aquiacute pero seriacutea uacutetil recordarlodespueacutes cuando se esteacute programando y se quieran ejecutar muacuteltiples procesos desde unsimple programa

65 Consolas virtuales como estar en varios lugares a la vez

Linux soporta consolas virtuales Son una manera de hacer que su simple maacutequina aparezcacomo muacuteltiples terminales todos conectados al mismo nuacutecleo Linux Por fortuna usar lasconsolas virtuales es una de las cosas maacutes simples en Linux hay hot keys9 para cambiarentre las consolas raacutepidamente Para probarlo hay que conectarse al sistema pulsar latecla |_Alt_| izquierda y pulsar |_F2_| (esto es la tecla de funcioacuten nuacutemero 2)10 11

_____________________________________________

7 Esto soacutelo tiene sentido para ciertos programas que no tienen que hablar con el usuarioa traveacutes del teclado

8 En general es maacutes faacutecil matar el nuacutemero del trabajo en vez de usar PIDs

9 NT No he creido apropiado traducir este teacutermino ya que muchos usuarios saben a loque se refiere De todas formas para el que no lo sepa esto es una simple combinacioacutende teclas que hace un cierto trabajo

Se encontraraacute con otro indicador para conectarse No se alarme ahora estaacute en la consolavirtual (VC) nuacutemero 2 Coneacutectese y haga algunas cosas unos cuantos ls o lo que sea paraconfirmar que es un shell real Ahora puede volver a la VC nuacutemero 1 pulsando el |_Alt_|izquierdo y |_F1_| O se puede mover a una tercera VC de la forma obvia (|_AltshyF3_|)

Generalmente los sistemas Linux vienen con cuatro VC activadas por defecto Esto se puedeincrementar a ocho estos temas se cubriraacuten en The Linux System Administrators GuideEllo implica editar uno o dos ficheros en el directorio etc Sin embargo cuatro debenser suficientes para la mayoriacutea de las personas

Una vez las haya usado las VC probablemente se convertiraacuten en una herramientaindispensable para tener varias cosas ejecutaacutendose a la vez Por ejemplo yo normalmenteejecuto Emacs en la VC 1 (y hago la mayor parte de mi trabajo ahiacute) mientras tengo unprograma de comunicaciones en la VC 3 (asiacute puede coger o dejar ficheros via modemmientras trabajo o ejecutar programas en maacutequinas remotas) y mantengo un shell en la VC2 soacutelo en caso de que tenga que ejecutar algo sin involucrar a la VC 1

_____________________________________________

10 Hay que asegurarse de que esto se hace desde consolas en modo texto si se estaacuteejecutando X Window u otra aplicacioacuten graacutefica probablemente no funcionaraacute sin embargo

corre el rumor de que pronto se podraacute cambiar entre las consolas virtuales en X Window deLinux

11 N del T De hecho al momento de la traduccioacuten la combinacioacuten es |_CtrlshyAltshyteclashydeshyfuncioacuten_|

Figura 61 Resumen de comandos y teclas usados para el control de trabajos

Comando Explicacioacuten

fg nordm_trabajo Este es un comando del shell que devuelve un trabajo alprimer plano Para saber cuaacutel es eacuteste por defecto se tecleajobs y se busca el que tiene el +

Paraacutemetros nuacutemero de trabajo opcional El trabajo pordefecto se identifica con el +

amp Cuando se antildeade un amp al final de la liacutenea de comandosindica al comando que se ejecute en segundo planoautomaacuteticamente Este trabajo estaacute entonces sujeto a todoslos meacutetodos usuales para el control de trabajos aquiacutedetallados

bg nordm_trabajo Este es un comando del shell que manda a un trabajosuspendido ejecutarse en segundo plano Para saber cual eseacuteste por defecto se teclea jobs y se busca el que tieneel +

Paraacutemetros nuacutemero de trabajo opcional El trabajo pordefecto se identifica con el +

kill nordm_trabajo PID Este es un comando del shell que obliga a un trabajo ensegundo plano ya sea suspendido o en ejecucioacuten a terminarSe debe siempre especificar el nuacutemero de trabajo o PID y sise estaacuten usando nuacutemeros de trabajo no hay que olvidar ponerel

Paraacutemetros El nuacutemero de trabajo (a continuacioacuten del ) o elPID (no es necesario el ) Se puede especificar maacutes de unproceso o trabajo en una liacutenea

jobs Este comando del shell lista informacioacuten sobre los trabajosque estaacuten en ese momento en ejecucioacuten o suspendidos A vecestambieacuten dice cuaacuteles son los que acaban de salir o hanterminado

|_Ctrlshyc_| Este es el caraacutecter geneacuterico de interrupcioacuten Normalmentesi se pulsa mientras un programa se estaacute ejecutando enprimer plano mataraacute al programa (puede que haya que hacerlovarias veces) Sin embargo no todos los programasresponderaacuten a este meacutetodo de terminacioacuten

|_Ctrlshyz_| Esta combinacioacuten de teclas normalmente suspende un programapuede que algunos programas lo ignoren Una vez suspendidoel trabajo se puede reiniciar en el segundo plano o se puedematar

Capiacutetulo 7

Pequentildeos programas potentes

better pout cry

better watchout

lpr why

santa claus ltnorth pole gttown

cat etcpasswd gtlist

ncheck list

ncheck list

cat list _ grep naughty gtnogiftlist

cat list _ grep nice gtgiftlist

santa claus ltnorth pole gt town

who _ grep sleeping

who _ grep awake

who _ egrep bad_good

for (goodness sake) shy

be good

71 El poder de Unix

El poder de Unix1 se esconde en pequentildeos comandos que no parecen ser muy uacutetiles cuando seutilizan por separado pero combinados con otros (directa o indirectamente) proporcionanun entorno mucho maacutes potente y flexible que la mayoriacutea de los otros sistemas operativosLos comandos de los que hablaremos en este capiacutetulo son entre otros sort grep morecat wc spell diff head y tail

Veremos lo que cada una de las utilidades hace por separado y luego daremos algunosejemplos de como utilizarlos conjuntamente2

_____________________________________________

1 N del T El cookie de apertura de este capiacutetulo es la traduccioacuten a comandos Unix deuna cancioacuten de navidad

Santa Claus is coming to town (escrita por H Gillespie J F Coots)

2 Noacutetese que los resuacutemenes de los comandos en este capiacutetulo no son extensos Para masinformacioacuten vea la paacutegina del manual correspondiente con el comando man

72 Trabajando con ficheros

Junto a comandos como cd mv y rm que ya se vieron en el Capiacutetulo 4 hay otros comandosque trabajan con ficheros pero no con los datos contenidos en ellos Estos son touchchmod du y df

Ninguno de ellos se preocupa por lo que contiene el fichero simplemente modificanalgunas de las informaciones que Unix guarda acerca del fichero

Estos comandos manipulan

o Los registros de tiempo Todo fichero tiene tres fechas asociadas a eacutel3 Las tresfechas son las siguientes creacioacuten del fichero uacuteltima modificacioacuten (cuando se produjoel uacuteltimo cambio en el fichero) y uacuteltimo acceso (cuando se produjo la uacuteltima lectura delfichero)

o El duentildeo Cada fichero en Unix pertenece a un uacutenico propietario

o El grupo Cada fichero tiene tambieacuten asociados un grupo de usuarios El grupo maacutes usualpara los ficheros de usuario se denomina users que es al cual por lo generalpertenecen todos los usuarios con cuenta en el sistema

o Los permisos Cada fichero tiene ciertos permisos (tambieacuten llamados privilegios)asociados a eacutel que indican a Unix quieacuten puede acceder a ese fichero cambiarlo o en elcaso de ser un programa ejecutarlo Cada uno de estos permisos puede ser establecido porseparado para el duentildeo el grupo y el resto de usuarios

shy touch fichero1 fichero2 ficheroN

touch actualiza los registros de fecha y hora con la fecha y hora actual de los ficherosindicados en la linea de comandos Si el fichero no existe touch lo crearaacute Tambieacuten esposible especificar la fecha y hora a registrar en la informacioacuten de losficheros_consulte la paacutegina del manual (comando man) para maacutes informacioacuten sobre touch

shy chmod [shyRfv] modo fichero1 fichero2 ficheroN

El comando que se utiliza para modificar los permisos de un fichero es el chmod4 Antesde

meternos en como utilizar este comando veamos primero que permisos hay en Unix Cadafichero tiene asociados un grupo de permisos Estos permisos le indican al sistemaoperativo quien puede leer escribir o ejecutar como programa el fichero (Acontinuacioacuten se explica como puede un usuario hacer estas cosas Un programa ejecutadopor un usuario puede hacer las mismas cosas que las que le esteacuten permitidas al propiousuario esto puede suponer un problema de seguridad si se desconoce lo que hace cadaprograma en particular)

_____________________________________________

3 Los antiguos sistemas de ficheros de Linux soacutelo almacenaban una fecha ya que derivabande Minix Si se utiliza alguno de estos sistemas de ficheros parte de la informacioacuten noestaraacute disponible y las operaciones que se realicen sobre ellas seraacuten inuacutetiles

4 N del T Abreviatura de change mode cambiar modo

Unix reconoce tres tipos diferentes de individuos primero el propietario del fichero (yla persona que puede utilizar el comando chmod sobre ese fichero) Segundo el grupoEl grupo de la mayoriacutea de los ficheros normales de un usuario del sistema seraacute users(Para ver el grupo de un fichero en particular utilizar ls shyl fichero ) Por uacuteltimoestaacute el resto que no son ni propietarios ni pertenecen al grupo denominados otros5

De esta forma por ejemplo un fichero puede tener permisos de lectura y escritura parael propietario permiso de lectura para el grupo y ninguacuten tipo de permisos para otros Opor alguna razoacuten un fichero puede tener permisos de lecturaescritura para el grupo yotros pero iexclninguacuten privilegio para el propietario

Veamos algunos ejemplos de como cambiar permisos utilizando chmod Primero creamos unfichero utilizando cat emacs o cualquier otro programa Por defecto son posibles lasoperaciones de lectura y de escritura sobre el fichero (Los permisos dados a otrosusuarios dependen de coacutemo esteacuten establecidas las variables del sistema y de la cuenta delusuario) Podemos asegurarnos de que tenemos permiso de lectura utilizando el comandocat a continuacioacuten eliminamos el privilegio de lectura para nosotros mismos utilizandochmod ushyr fichero 6 Ahora si intentamos leer el fichero obtendremos el mensaje deerror Permission denied Devolvemos el privilegio de lectura utilizando chmod u+rfichero

Los permisos de directorio utilizan las tres mismas ideas anteriores leer escribir yejecutar pero con ligeras variaciones El privilegio de lectura permite al usuario (o algrupo o a otros) leer el directorio listar los nombres de los ficheros El permiso deescritura permite antildeadir o borrar ficheros El permiso de ejecucioacuten permite al usuarioacceder a ficheros en el directorio o a cualquier subdirectorio (Si un usuario no tienepermisos de ejecucioacuten para un directorio entonces no puede siquiera hacer un cd almismo)

Para utilizar chmod reemplazar el modo por el usuario grupo otro o todos (all) y laoperacioacuten a realizar (Es decir utilizar un signo maacutes + para antildeadir privilegios y unmenos shy para quitarlos

Un signo igual = indica los mismos permisos para los usuarios involucrados en el modo)Los permisos posibles son lectura (read) escritura (write) y ejecucioacuten (execute)

La opcioacuten shyR al utilizar chmod cambiaraacute los permisos de un directorio de todos losficheros contenidos en eacutel y de forma recursiva los permisos del aacuterbol de subdirectoriosa partir de eacutel La opcioacuten shyf fuerza a que chmod intente cambiar los permisos incluso siel usuario no es el duentildeo del fichero (Si se utiliza el paraacutemetro f al ejecutar chmodno se mostraraacute un mensaje de error en caso de que no pueda cambiar los permisos delfichero) por uacuteltimo la opcioacuten v hace que la ejecucioacuten del chmod informe de todo loque hace

_____________________________________________

5 N del T En ingles owner (con u de user) group and othersrespectivamente

6 N del T El paraacutemetro ushyr indica user minus read es decir usuario menos lectura

73 Estadiacutesticas del sistema

Los comandos de esta seccioacuten son de utilidad a la hora de mostrar las estadiacutesticas delsistema operativo o de una parte de eacutel

shy du [shyabs] [trayectoria1 trayectoria2 trayectoriaN]

El comando du7 contabilizaraacute el espacio de disco ocupado por un subdirectorio y todos sussubdirectorios El uso de este comando sin utilizar paraacutemetros devolveraacute una lista decuanto disco consume cada subdirectorio del directorio actual y al final del informecuanto disco utiliza el directorio (y todos sus subdirectorios) Si se le pasa uno o maacutesparaacutemetros devolveraacute la cantidad de espacio utilizado por esos ficheros o directorios enlugar de la del directorio actual

La opcioacuten a mostraraacute ademaacutes del espacio de los directorios el de los ficherosUtilizando b como opcioacuten presentaraacute el total en bytes en lugar de kilobytes (1kilobyte = 1024 caracteres)8

Finalmente el paraacutemetro s informaraacute soacutelo acerca de los directorios expliciacutetos en lalinea de comando y no de sus subdirectorios

shy df

El comando df9 resume la cantidad de espacio utilizada en el disco Para cada sistema deficheros (recuerde que sistemas de ficheros diferentes son o bien unidades fiacutesicas oparticiones diferentes) muestra el espacio total de disco la cantidad utilizada lacantidad disponible y la capacidad total del sistema de ficheros que se utiliza

Un caso extrantildeo que puede darse es la posibilidad de tener una capacidad superior al100 o que la cantidad utilizada maacutes la disponible no sea igual a la total Esto esdebido a que Unix reserva parte del espacio de cada sistema de ficheros para eldirectorio raiacutez De esta forma aunque alguacuten usuario accidentalmente sature el disco elsistema todaviacutea tendraacute un poco de espacio para seguir operativo

Este comando no ofrece opciones que puedan ser de utilidad al usuario

shy uptime

El comando uptime10 informa sobre el tiempo en el que el sistema ha estado activo esdecir el tiempo transcurrido desde que Unix arrancoacute por uacuteltima vez

Este comando tambieacuten devuelve la hora actual y el promedio de carga que soporta elsistema El promedio de carga es el nuacutemero medio de procesos esperando a ejecutar en undeterminado periodo de tiempo uptime muestra el promedio de carga del uacuteltimo minuto y delos cinco y diez uacuteltimos minutos Si este promedio de carga se aproxima a cero indica queel sistema ha estado relativamente desocupado por el contrario si el promedio es cercanoal uno indica que el sistema ha estado casi completamente utilizado pero en ninguacutenmomento sobrecargado Los promedios de carga altos son el resultado de la ejecucioacutensimultaacutenea de varios programas

Extraordinariamente uptime es uno de los pocos comandos de Unix que iexclno tienen opciones

_____________________________________________

7 N del T Abreviatura de disk usage utilizacioacuten del disco

8 Un byte es el equivalente de una letra en un documento de texto

9 N del T Abreviatura de disk filling espacio disponible en el disco

10 N del T Tiempo en estado activo

shy who

El comando who muestra los usuarios activos en ese momento en el sistema y cuando haniniciado su respectiva sesioacuten Si le damos los paraacutemetros am i (es decir who am i) nos devuelve la informacioacuten relativa a nosotros mismos11

shy w [shyf] [nombre_usuario]

El programa w devuelve los usuarios actuales del sistema y que estaacuten haciendo(Baacutesicamente combina la funcionalidad de uptime y who La cabecera del informe quepresenta w es exactamente la misma que uptime siendo la informacioacuten de cada una de lasliacuteneas la siguiente el nombre del usuario hora de inicio de la sesioacuten (y cuanto tiempoha estado ocioso) JCPU es la cantidad total de tiempo de CPU utilizada por ese usuariomientras que PCPU es la cantidad total de tiempo utilizada por sus tareas actuales

Si al comando se le pasa la opcioacuten f mostraraacute los sistemas remotos desde los que losusuarios acceden si los hay Puede indicarse un nombre de usuario como paraacutemetro paramostrar soacutelo informacioacuten relativa a eacutel

74 iquestQueacute hay en un fichero

Principalmente hay dos comandos en Unix para listar ficheros cat y more Sobre ambos yase habloacute en el Capiacutetulo 6

shy cat [shynA] [fichero1 fichero2 ficheroN]

cat no es un comando de uso amigable no espera a que el usuario acabe de leer elfichero y se utiliza generalmente en contextos de tuberiacuteas Aunque pueden utilizarsealgunas opciones muy uacutetiles del comando por ejemplo n numera todas las liacuteneas delfichero y A mostraraacute los caraacutecteres de control como caraacutecteres normales en lugar dehacer (posiblemente) cosas extrantildeas en la pantalla

(Recuerde que para ver las opciones maacutes curiosas y quizaacute menos uacutetiles utilice elcomando man man cat Si no se especifican ficheros en la liacutenea de comandos cataceptaraacute la entrada desde stdin12

_____________________________________________

11 N del T literalmente es como preguntar al sistema iquestquieacuten soy yo

shy more [shyl] [+nuacutemero_liacutenea] [fichero1 fichero2 ficheroN]

more es maacutes uacutetil y ademaacutes es el comando recomendado para ver ficheros de texto ASCII Lauacutenica opcioacuten interesante es l que indica al comando que no se desea interpretar elcaraacutecter |_CtrlshyL_| como caraacutecter de nueva paacutegina El comando comenzaraacute en la liacuteneanuacutemero_liacutenea especificada

Al ser more un comando interactivo hemos resumido a continuacioacuten las oacuterdenes maacutescomunes

|_Barrashyespaciadora_| Pasar a la siguiente pantalla de texto

|_d_| Pasar 11 liacuteneas de pantalla o aproximadamente la mitad de una pantallanormal 25 liacuteneas

|__|Busca una expresioacuten regular La construccioacuten de una expresioacuten regularpuede ser muy complicada por lo que es recomendable teclear simplemente eltexto a buscar Por ejemplo sapo |_Intro_| buscaraacute la primera ocurrencia desapo en el fichero a partir de la posicioacuten actual

La misma tecla seguida por un |_Intro_| buscaraacute la siguiente ocurrencia de lauacuteltima expresioacuten buscada

|_n_| Buscaraacute la proacutexima aparicioacuten de la expresioacuten regular especificada

|__||_n_| Pasar al siguiente fichero en caso de que se especifique maacutes deun fichero en la liacutenea de comandos

|__||_p| Pasar al fichero anterior

|_q_| Terminar more

shy head [shyliacuteneas] [fichero1 fichero2 ficheroN]

head mostraraacute las primeras diez liacuteneas de los ficheros especificados o las primeras diezliacuteneas de la stdin si no se especifica ninguacuten fichero en la liacutenea de comandos Cualquieropcioacuten numeacuterica se tomaraacute como el nuacutemero de liacuteneas a mostrar por ejemplo head shy15 ranamostraraacute las primeras quince liacuteneas del fichero rana

shy tail [shyliacuteneas] [fichero1 fichero2 ficheroN]

Como head tail mostraraacute solo una parte del fichero en este caso el final del ficherolas uacuteltimas diez liacuteneas del fichero o que provengan de la stdin tail tambieacuten acepta laopcioacuten de especificar el nuacutemero de liacuteneas como en el caso anterior

_____________________________________________

12 N del T standard input entrada estaacutendar generalmente entrada de datos porteclado

shy file [fichero1 fichero2 ficheroN]

El comando file intenta identificar que tipo de formato tiene un fichero en particularDebido a que no todos los ficheros tienen extensioacuten o otras formas de identificarlosfaacutecilmente este comando realiza algunas comprobaciones rudimentarias para intentarcomprender exactamente que contiene el fichero

Hay que tener cuidado ya que es bastante posible que file realice una identificacioacutenincorrecta

75 Comandos de edicioacuten

Esta seccioacuten trata de los comandos que alteran un fichero realizando sobre el ficherooperaciones concretas o mostrando estadiacutesticas del mismo

shy grep [shynvwx] [shynuacutemero] expresioacuten [fichero1 fichero2 ficheroN ]

Uno de los comandos maacutes uacutetiles de Unix es el grep13 utilizado para buscar expresiones enun fichero de texto La forma maacutes sencilla de usarlo es

homelarry$ cat animales

Los animales son unas criaturas muy interesantes Uno de mis animalesfavoritos es el tigre una temible bestia con grandes colmillos

Tambien me gusta el leonshyshyshy realmente increible

homelarry$ grep igre animales

el tigre una temible bestia con grandes colmillos

homelarry$

Una de los problemas de esta forma de usarlo es que simplemente muestra las liacuteneas quecontienen la palabra a buscar no aporta informacioacuten acerca de donde buscar en elfichero es decir el nuacutemero de liacutenea Pero dependiendo de lo que se pretenda puede serhasta maacutes que suficiente por ejemplo si se buscan los errores de la salida de unprograma se puede probar aout _ grep error donde aout es el nombre del programa

Cuando es necesario conocer donde estaacuten las palabras a buscar es decir el nuacutemero deliacutenea hay que utilizar la opcioacuten n Si lo que se desea es ver todas las liacuteneas dondeno se encuentra la expresioacuten especificada entonces utilice la opcioacuten v

Otra posibilidad que ofrece el grep es la buacutesqueda de partes de una palabra como en elejemplo anterior que igre se equiparoacute con tigre Para buscar soacutelo palabras completashay que pasarle al grep la opcioacuten w y para liacuteneas completas la opcioacuten es x

Si no se especifica ninguacuten fichero (por ejemplo grep igre ) grep examinaraacute la stdin

_____________________________________________

13 N del T Abreviatura de generalized regular expression parser analizador general deexpresiones regulares

shy wc [shyclw] [fichero1 fichero2 ficheroN ]

El comando wc14 simplemente cuenta el nuacutemero de palabras liacuteneas y caracteres en losficheros pasados como paraacutemetros Si no se especifica ninguacuten fichero operaraacute sobre lastdin Los tres paraacutemetros clw indican el elemento a contar caracteres liacuteneas yw para palabras

Por ejemplo wc shycw contaraacute el nuacutemero de caracteres y palabras pero no el nuacutemero deliacuteneas Si no se indica ninguacuten paraacutemetro wc cuenta todo palabras liacuteneas y caracteres

Se puede utilizar wc para saber el nuacutemero de ficheros de un directorio ls _ wc shyw Sise desea saber el nuacutemero de ficheros que acaban en c entonces ejecute ls c _ wc shyw

shy spell [fichero1 fichero2 ficheroN]

spell es el corrector ortograacutefico maacutes sencillo de Unix generalmente para ingleacutesamericano15

spell es un filtro igual que la mayoriacutea de los comandos que hemos comentado antes quetoma el fichero de texto ASCII y devuelve todas las palabras que considera erroacuteneasspell opera sobre los ficheros especificados y si no se incluye ninguno entoncesutiliza la stdin

Tambieacuten es posible que esteacute disponible en su maacutequina ispell que es un correctorortograacutefico un poco maacutes sofisticado ispell ofrece diversos vocabularios y un menuacute maacutesmanejable en caso de ejecutarlo con un fichero en la liacutenea de comandos Tambieacuten puedeejecutarse como un filtro si no se especifica ninguacuten fichero

La forma de trabajar con ispell es bastante obvia pero si necesita maacutes ayuda consulte lapaacutegina del manual correspondiente man ispell

shy cmp fichero1 [fichero2]

cmp compara dos ficheros El primero debe ser obligatoriamente pasado como paraacutemetromientras que el segundo puede ser pasado como un segundo paraacutemetro o leiacutedo desde laentrada estaacutendar cmp es muy sencillo y simplemente dice donde se diferencian los dosficheros

shy diff fichero1 fichero2

Uno de los comandos estaacutendar maacutes complejos de Unix es el diff La versioacuten GNU de difftiene hasta iexclveinte opciones en la liacutenea de comandos Es una versioacuten mucho maacutes potenteque cmp y muestra cuales son las diferencias en lugar de decir simplemente donde estaacute laprimera

Ya que una buena parte de las opciones del diff estaacuten maacutes allaacute del alcance de estemanual simplemente hablaremos del funcionamiento baacutesico Brevemente diff toma dosparaacutemetros y muestra las diferencias entre ellos liacutenea a liacutenea Por ejemplo

homelarry$ cat rana

Los animales son una criaturas muy interesantes Uno de mis animalesfavoritos es el tigre una temible bestia con grandes colmillos

Tambien me gusta el leonshyshyshy realmente increible

homelarry$ cp rana sapo

homelarry$ diff rana sapo

homelarry$ cat perro

Los animales son una criaturas muy nteresantes Uno de mis animales favoritoses

el tigre una temible bestia con grandes colmillos

Tambien me gusta el leonshyshyshy realmente increible

homelarry$ diff rana perro

1c12

lt Los animales son una criaturas muy interesantes Uno de mis animalesfavoritos es

shyshyshyshy

gt Los animales son una criaturas muy nteresantes Uno de mis animalesfavoritos es

gt

3c4

lt Tambien me gusta el leonshyshyshy realmente increible

shyshyshyshy

gt Tambien me gusta el leonshyshyshy realmente increible

homelarry$

_____________________________________________

14 N del T Abreviatura de word count contar palabras

15 Aunque hay versiones del corrector para diversas lenguas europeas la copia que puedeencontrarse en su maacutequina Linux es con toda probabilidad para ingleacutes americano

Como puede observarse diff no devuelve nada cuando los dos ficheros son iguales Perocuando hemos comparado dos ficheros diferentes se muestra una cabecera de seccioacuten1c12 indicando que ha comparando la liacutenea 1 del fichero de la izquierda rana con lasliacuteneas 1shy2 de perro y las diferencias que ha encontrado Luego ha comparado la liacutenea 3 derana con la liacutenea 4 de perro

Aunque pueda parecer extrantildeo que compare diferentes nuacutemeros de liacutenea es bastanteeficiente ya que es posible que pueda haber alguacuten retorno de liacutenea de maacutes en alguno delos ficheros

shy gzip [shyv] [fichero1 fichero2 ficheroN]

shy gunzip [shyv] [fichero1 fichero2 ficheroN]

shy zcat [fichero1 fichero2 ficheroN]

Estos tres programas se utilizan para comprimir y descomprimir datos gzip o GNU Zip esun programa que lee de los ficheros originales y devuelve ficheros maacutes pequentildeos borralos ficheros especificados en la liacutenea de comandos y los reemplaza con ficheros quetienen el mismo nombre pero con gz antildeadido a su nombre

shy tr cadena1 cadena2

El comando de traduccioacuten de caracteres opera sobre la entrada estaacutendar no acepta unnombre de fichero como paraacutemetro Reemplaza todas las ocurrencias de cadena1 en laentrada con la cadena2 En comparacioacuten con llamadas tan sencillas como tr rana sapo tr puede aceptar comandos maacutes complejos Por ejemplo hay una forma raacutepida de convertirlos caracteres en minuacutescula por otros en mayuacutescula

homelarry$ tr shylower] [upper]

Esta es una frase RARA

ESTA ES UNA FRASE RARA

tr es relativamente complejo y se usa normalmente en pequentildeos programas shell comofiltro

Capiacutetulo 8

Editando archivos con Emacs

FUNNY SOMETHING OR OTHER

81 iquestQueacute es Emacs

Para obtener algo en una computadora necesita una forma de introducir texto en losarchivos y una manera de cambiar el texto que ya estaacute en los archivos Un editor es unprograma para este tipo de tareas emacs es uno de los editores maacutes populares en parteporque es muy faacutecil para un principiante hacer trabajos con eacutel (El editor de Unixclaacutesico el vi se trata en el Apeacutendice A)

Para aprender emacs tiene que encontrar un archivo de texto (letras nuacutemeros etc)coacutepielo a su directorio de usuario 1 (no queremos modificar el archivo original si eacutestecontiene informacioacuten importante) y luego llame a Emacs con el archivo

homelarry$ emacs LEAME

(Por supuesto si decide copiar etcrc etcinittab o cualquier otro archivosustituya ese nombre de archivo por LEAME Por ejemplo si cp etcrc ~rc entoncesemacs rc)

Llamar a Emacs puede tener efectos diferentes dependiendo en doacutende lo haga Desde unaconsola que muestra soacutelo caracteres de texto Emacs se apoderaraacute de toda la consola Si lollama desde X Emacs abriraacute su propia ventana Asumireacute que lo estaacute haciendo desde unaconsola de texto pero todo sucede de la misma manera en la versioacuten de X loacutegicamentesimplemente sustituya la palabra ventana en los lugares en donde lea pantallaiexclAdemaacutes recuerde que debe mover el puntero del ratoacuten a la ventana de Emacs paraescribir

Su pantalla (o ventana si estaacute usando X) deberiacutea parecerse a la Figura 81 La mayorparte de la pantalla contiene su documento de texto pero las dos uacuteltimas liacuteneas sonespecialmente interesantes si estaacute tratando de aprender Emacs La penuacuteltima liacutenea (la quetiene una cadena larga de guiones) se denomina liacutenea de modo (mode line en ingleacutes)

_____________________________________________

1 Por ejemplo cp usrsrclinuxLEAME LEAME

En mi liacutenea de modo ve Top Deberiacutea decir All y puede haber otras pequentildeasdiferencias

(A muchas personas les aparece la hora actual en la liacutenea de modo) La liacuteneainmediatamente inferior a la liacutenea de modo se denomina minibuffer o a veces el aacuterea deeco Emacs usa el minibuffer para enviar mensajes al usuario y ocasionalmente cuando esnecesario para leer informacioacuten que introduce el usuario De hecho ahora mismo Emacs leestaacute diciendo Para obtener informacioacuten acerca del Proyecto GNU y sus objetivos teclee

Cshyh Cshyp (soacutelo que en ingleacutes) Ignoacuterelo por ahora no vamos a usar mucho el minibufferpor un tiempo

Antes de realizar cualquier cambio en el texto del archivo necesita aprender coacutemomoverse El cursor deberaacute estar al principio del archivo en la esquina superiorizquierda de la pantalla

Para avanzar presione |_Cshyf_| (reteniendo la tecla |_Control_| mientras presiona fpara forward (avanzar) Avanzaraacute un caraacutecter cada vez y si retiene ambas teclas larepeticioacuten automaacutetica de teclas de su sistema deberaacute surtir efecto en medio segundoaproximadamente Notaraacute como cuando llega al fin de la liacutenea el cursor automaacuteticamentese mueve a la proacutexima liacutenea |_Cshyb_| (para backward (retroceder) tiene elcomportamiento opuesto Y ya que estamos en ello |_Cshyn_| y ||_Cshyp_|| le llevan a lasliacuteneas siguiente y anterior respectivamente 2

Usar las teclas de control es comuacutenmente la manera maacutes raacutepida de moverse cuando estaacuteeditando

El objetivo de Emacs es mantener sus manos sobre las teclas alfashynumeacutericas del tecladodonde se realiza la mayoriacutea del trabajo Sin embargo si quiere las teclas de movimientodeberaacuten funcionar tambieacuten

De hecho cuando usa X deberiacutea ser capaz de ubicar el puntero del ratoacuten y hacer clickcon el botoacuten izquierdo para mover el cursor donde quiera Sin embargo esto es muy lentoiexcltiene que mover la mano hasta el ratoacuten La mayoriacutea de la gente que usa Emacs usaprincipalmente el teclado para moverse por el texto

_____________________________________________

2 En caso de que auacuten no lo haya notado muchos de los comandos de movimiento de emacsconsisten en combinar |_Control_| con una uacutenica letra mnemoteacutecnica

Use ||_Cshyp_|| y |_Cshyb_| para ir a la esquina superior izquierda Ahora mantenga |_Cshyb_|un poco maacutes

Deberiacutea oiacuter un sonido molesto de campana y ver el mensaje Beginning of buffer(Principio del buffer) que aparece en el minibuffer En este punto se puede preguntariquestPero queacute es un buffer Cuando Emacs trabaja sobre un archivo no trabaja realmentesobre el archivo en siacute En vez de eso copia los contenidos del archivo en un aacuterea detrabajo especial de Emacs llamada buffer donde puede modificar el contenido Cuando haacabado de trabajar debe decirle a Emacs que guarde los buffers en otras palabras queescriba el contenido de los buffers en el archivo correspondiente

Hasta que haga esto el archivo permanece sin cambiar y el contenido de los buffersexiste uacutenicamente dentro de Emacs

Con esto en mente prepaacuterese a insertar su primer caraacutecter en el buffer Hasta ahoratodo lo que hemos hecho ha sido no destructivo este es un gran momento Puede escogercualquier caraacutecter que quiera pero si quiere hacer esto con estilo yo sugiero usar unabonita y soacutelida X mayuacutescula

Mientras lo teclea eche un vistazo al principio de la liacutenea de modo al pie de lapantalla Cuando cambia los buffer de modo que sus contenidos no sean iguales que los delarchivo sobre el disco Emacs muestra dos asteriscos a principios de la liacutenea de modopara hacerle saber que el buffer ha sido modificado

shyshyshy Emacs algun_archivotxt (Fundamental)shyshyTopshyshyshyshyshyshyshyshyshyshyshyshyshyshyshyshyshyshyshyshyshyshyshyshy

Estos dos asteriscos se muestran tan pronto como modifica el buffer y permanecenvisibles hasta que guarde el buffer Puede guardar los buffer muchas veces durante unasesioacuten de edicioacuten el comando para hacerlo es simplemente |_Cshyx_Cshys_| (presione|_Control_| y pulse x y s mientras la mantiene apretada iexclprobablemente ya se loimaginoacute) Es deliberadamente faacutecil de escribir porque lo mejor es salvar sus buffers alprincipio y frecuentemente

Ahora voy a enumerar maacutes comandos ademaacutes de los que ya ha aprendido y los puedepracticar del modo que prefiera Yo sugiero familiarizarse con ellos antes de proseguir

Cshyf Avanza un caraacutecter

Cshyb Retrocede un caraacutecter

Cshyn Va a la proacutexima liacutenea

Cshyp Va a la liacutenea anterior

Cshya Va al comienzo de la liacutenea

Cshye Va al final de la liacutenea

Cshyv Va a la proacutexima paacuteginapantalla de texto

Cshyl Redibuja la pantalla con la liacutenea actual en el centro

Cshyd Borra este caraacutecter (practica este)

Cshyk Borra el texto desde aquiacute hasta el fin de liacutenea

Cshyx Cshys Salva el buffer en su archivo correspondiente

|_Retroceso_| Borra el caraacutecter anterior (el uacuteltimo que escribiste)

82 Comenzar raacutepidamente en X

Si estaacute interesado en editar unos archivos raacutepidamente un usuario de X no tiene que irmucho maacutes allaacute de los menuacutes en la parte superior de la pantalla Estos menuacutes no estaacutendisponibles en el modo texto

Cuando ejecute por primera vez Emacs habraacute cuatro menuacutes en la parte superior de lapantalla Buffers File Edit y Help Para usar un menuacute simplemente mueva el punterodel ratoacuten sobre el nombre (como File haga click y retenga el botoacuten izquierdo) Entoncesmueva el puntero a la accioacuten que quiere y libere el botoacuten del ratoacuten Si cambia de idearetire el puntero del ratoacuten del menuacute y libere el botoacuten

El menuacute Buffers enumera los diferentes archivos que han sido editados en esta instanciade Emacs

El menuacute Files muestra un grupo de comandos para cargar y guardar archivos muchos deellos se describiraacuten maacutes adelante El menuacute Edit muestra algunos comandos para editar unbuffer y el menuacute Help deberiacutea dar la documentacioacuten en liacutenea

Notaraacute que las equivalencias del teclado se enumeran junto a las opciones del menuacutePuesto que a largo plazo eacutestas seraacuten maacutes raacutepidas podriacutea quererlas aprender Tambieacutenpara bien o para mal la mayoriacutea de la funcionalidad de Emacs estaacute uacutenicamente disponiblemediante el teclado asiacute que puede que le interese leer el resto de este capiacutetulo

83 Editando varios archivos al mismo tiempo

Emacs puede trabajar sobre maacutes de un de archivo a la vez De hecho el uacutenico liacutemite sobrecuantos buffers puede contener Emacs es la cantidad real de memoria disponible en lamaacutequina El comando para traer un nuevo archivo a un buffer de Emacs es |_Cshyx_Cshyf_|Cuando lo teclee se le pediraacute un nombre de archivo en el minibuffer

Find file (Buscar archivo)~

La sintaxis aquiacute es la misma que la usada para especificar archivos desde la liacutenea decomandos las barras representan subdirectorios ~ es su directorio de usuario Tambieacutenconsigue terminacioacuten automaacutetica de nombre de archivo significa que si ha escritosuficiente de un nombre de archivo en la liacutenea de comandos para identificar el archivosingularmente puede simplemente presionar |_Tab_| para completarlo (o para ver lasterminaciones posibles si hay maacutes de una) ||_Espacio_|| tambieacuten tiene un papel en laterminacioacuten automaacutetica de nombres de ficheros en el minibuffer parecido a |_Tab_| perodejareacute que experimente para que averiguumle coacutemo difieren las dos Una vez que tiene elnombre completo en el minibuffer presione |_Intro_| y Emacs crearaacute un buffer mostrandoel archivo En Emacs este proceso es conocido como encontrar un archivo Siga adelante ybusque ahora alguacuten otro archivo de texto sin importancia y traacuteigalo a Emacs (haga estodesde nuestro buffer original algun_archivotxt) Ahora tiene un nuevo buffer Supondreacuteque se llama otro_archivotxt ya que no puedo ver su liacutenea de modo

Su buffer original parece haber desaparecido (probablemente) se pregunta doacutende fue Estaacutetodaviacutea dentro de Emacs y puede volver a eacutel con |_Cshyx_b_| Cuando teclee esto veraacute queen el minibuffer le pide el nombre un buffer al que cambiar y nombra uno por defecto Elbuffer por defecto lo consigue soacutelo con presionar |_Intro_| en la liacutenea de comandos sinescribir un nombre de buffer El buffer por defecto al que cambiar es siempre el maacutesrecientemente usado para que cuando esteacute haciendo mucho trabajo entre dos buffers |_Cshyx_b_| tenga por defecto el otro buffer (salvaacutendole de tener que escribir el nombre delbuffer) Incluso si el buffer por defecto es el que quiere deberiacutea probar a teclear sunombre de todos modos

Note que consigue el mismo tipo de terminacioacuten automaacutetica que obtuvo al buscar unarchivo al pulsar |_Tab_| completa todo lo que puede del nombre de un buffer y asiacutesucesivamente Cada vez que se le pida algo en el minibuffer es una buena idea ver siEmacs hace terminacioacuten automaacutetica

Aprovechando la terminacioacuten automaacutetica cuando se le ofrezca ahorraraacute teclear muchoEmacs comuacutenmente hace la terminacioacuten automaacutetica cuando elige un elemento de alguna listapredefinida

Todo lo que ha aprendido para moverse y editar texto en el primer buffer se aplica a losnuevos Siga adelante y cambie alguacuten texto en el nuevo buffer pero no lo guarde (esdecir no teclee |_Cshyx_Cshys_|)

Deacutejeme asumir que quiere desechar los cambios sin guardarlos en el archivo El comandopara esto es Cshyx k que mata (kill) el buffer Tecleacuteelo ahora Primero se le preguntaraacutequeacute buffer matar pero por defecto es el buffer actual y casi siempre es el que sequiere matar simplemente presione |_Intro_| Entonces le preguntaraacute si realmente quierematar el buffer Emacs siempre controla antes de matar un buffer que tiene cambios sinsalvar Simplemente escriba yes (siacute) y presione |_Intro_| si quiere matarlo

Siga adelante y practique cargar archivos modificarlos guardarlos y matar sus buffersPor supuesto cercioacuterese de no modificar ninguacuten archivo de sistema importante de unaforma que cause problemas 3 pero trate de tener por lo menos cinco buffers abiertos almismo tiempo para que se pueda dar el gusto de moverse entre ellos

84 Terminando una sesioacuten de edicioacuten

Cuando haya hecho su trabajo en Emacs aseguacuterese de que se guarden todos los buffers quedeben guardarse y salga de Emacs con |_Cshyx_Cshyc_|

A veces |_Cshyx_Cshyc_| le haraacute una pregunta o dos en el minibuffer antes de dejarle salirno se alarme simplemente conteste en las maneras obvias Si piensa que podriacutea volver aEmacs luego no use |_Cshyx_Cshyc_| use |_Cshyz_| que suspenderaacute Emacs Puede volver luegocon el comando fg del shell

Esto es maacutes eficiente que detener a Emacs y comenzar varias veces especialmente si tieneque editar los mismos archivos nuevamente

Bajo X presionar |_Cshyz_| reduciraacute a icono la ventana Mire la seccioacuten sobre minimizar enel Capitulo 5 Esto le da dos formas de minimizar Emacs la manera normal que ofrece elgestor de ventanas y |_Cshyz_| Recuerde cuando minimice un simple fg no traeraacute laventana anterior tendraacute que usar el gestor de ventanas

_____________________________________________

3 De cualquier manera si no es el usuario root de la maacutequina no deberiacutea ser capaz dedantildear el sistema pero tenga cuidado igualmente

85 La tecla Meta

Ha aprendido ya sobre una tecla modificadora en Emacs la tecla |_Control_| Hay unasegunda llamada la tecla Meta que se usa casi tan frecuentemente Sin embargo no todoslos teclados tienen su tecla Meta en el mismo lugar y algunos ni siquiera la tienen Loprimero que necesita hacer es encontrar doacutende se encuentra su tecla Meta Es probable quelas teclas |_Alt_| de su teclado sean tambieacuten teclas Meta si usa un PC IBM o alguacuten otroteclado que tenga una tecla |_Alt_|

La forma de probar esto es mantener presionada una tecla que crea que puede ser una teclaMeta y teclear x Si ve que un pequentildeo prompt aparece en el minibuffer (como esto |_Mshyx_|) entonces la ha encontrado Para librarse del prompt y regresar al buffer de Emacsteclee ||_Cshyg_||

Si no consigue un prompt entonces todaviacutea queda una solucioacuten Puede usar la tecla||_Escape_|| como una tecla Meta Pero en vez de mantenerla pulsada mientras teclea laproacutexima letra tiene que pulsarla y soltarla raacutepidamente y entonces teclee la letraEste meacutetodo funcionaraacute tenga o no una tecla Meta verdadera tambieacuten es la manera maacutessegura para hacerlo Intente ahora pulsar ligeramente ||_Escape_|| y entonces teclee xDeberiacutea conseguir otra vez ese pequentildeo prompt

Simplemente use ||_Cshyg_|| para salir ||_Cshyg_|| es la manera general en Emacs para salirde alguacuten lugar donde no quiere estar Los fastidiosos y comunes pitidos son para hacerlesaber que ha interrumpido algo pero estaacute bien porque es lo que queriacutea hacer cuandotecleoacute ||_Cshyg_||4

La notacioacuten |_Mshyx_| es anaacuteloga a |_Cshyx_| (ponga cualquier caraacutecter en el lugar de lax) Si ha encontrado una verdadera tecla Meta use eacutesta de otra manera simplemente usela tecla ||_Escape_|| Yo escribireacute simplemente |_Mshyx_| y ud tendraacute que usar su propiatecla Meta

86 Cortar pegar destruir y tirar

Emacs como cualquier buen editor le permite cortar y pegar bloques de texto A fin dehacer esto necesita una forma de definir el comienzo y fin del bloque En Emacs se haceesto estableciendo dos ubicaciones en el buffer conocidas como marca y puntero Paracolocar la marca vaya al lugar donde quiere que comience el bloque y teclee |_CshySPC_|(SPC significa ||_Espacio_|| por supuesto)

Deberiacutea ver el mensaje Mark set (Marca establecida) que aparece en el minibuffer5Ahora la marca ha sido establecida en ese lugar No habraacute ninguacuten indicador especialdestacando este hecho pero Ud sabe doacutende la ha puesto y eso es lo que importa

iquestY queacute hay del puntero Bien resulta que ha colocado un puntero cada vez que ha movidoel cursor porque puntero simplemente se refiere a su ubicacioacuten actual en el buffer Enteacuterminos formales el puntero es el punto donde se insertaraacute el texto si escribe algo Alcolocar la marca y luego moverse al final del bloque ha definido un bloque de textoEste bloque es conocido como la regioacuten La regioacuten siempre significa el aacuterea entre lamarca y el puntero

El soacutelo hecho de definir la regioacuten no la deja disponible para pegar Tiene que decirle aEmacs que lo copie para poder ser capaz de pegarlo Para copiar la regioacuten aseguacuterese deque la marca y el puntero estaacuten correctamente establecidos y teclee |_Mshyw_| Ahora hasido grabada por Emacs Para pegarlo en alguna otra parte simplemente vaya alliacute y teclee||Cshyy_|| Esto es conocido como tirar el texto en el buffer

______________________________________________

4 Ocasionalmente un Cshyg no es suficiente para persuadir a emacs que realmente quiereinterrumpir lo que hace Simplemente insista y normalmente Emacs volveraacute a un modo maacutescuerdo

5 Sobre algunos terminales |_CshySPC_| no funciona Para estas maacutequinas debe usar |_Cshy_|

Si quiere mover el texto de la regioacuten a alguna otra parte teclee |_Cshyw_| en vez de |_Mshyw_| Esto mataraacute la regioacuten todo el texto dentro de ella desapareceraacute De hecho se haguardado del mismo modo que si hubiera usado |_Mshyw_| Puede tirar de nuevo con ||_Cshyy_||como siempre El lugar donde emacs guarda todo este texto es conocido como el ciacuterculo demuerte Algunos editores lo llaman el porta papeles o el buffer de pegado

Existe otra manera para cortar y pegar cuando usa |_Cshyk_| para matar hasta el final deuna liacutenea el texto matado se guarda en el ciacuterculo de muerte Si mata maacutes de una liacuteneaseguida se guardaraacuten todas juntas en el ciacuterculo de muerte para que la proacutexima tiradapegue todas las liacuteneas al mismo tiempo Por ello casi siempre es maacutes raacutepido usarrepetidas veces |_Cshyk_| para matar alguacuten texto que establecer la marca y el puntero yusar |_Cshyw_| Sin embargo de una u otra manera funcionaraacute Es realmente una cuestioacuten depreferencia personal coacutemo lo hace

87 Buscar y reemplazar

Hay varias maneras para buscar texto en Emacs Muchas son maacutes bien complejas y no merecela pena tratarlas aquiacute La maacutes faacutecil y la maacutes entretenida es usar isearch

Isearch se refiere a incremental search (buacutesqueda incremental) Supongamos que quierebuscar la cadena taacutebano en el siguiente buffer

Yo estaba temeroso que nos quedaacuteramos sin gasolina cuando mi taacutecito pasajero

exclamoacute ``Auch un aguijoacuten Hay un taacutebano aquiacute dentro

Deberiacutea moverse al comienzo del buffer o por lo menos a alguacuten punto que sabe que estaacuteantes de la primera aparicioacuten de la palabra taacutebano y teclear |_Cshys_| Eso le pondraacuteen el modo de buacutesqueda isearch Ahora comience a escribir la palabra que estaacute buscandotaacutebano Pero tan pronto como escribe la t ve que Emacs ha saltado a la primeraaparicioacuten de t en el buffer Si la cita de arriba es todo el contenido del buffer

entonces la primera t es de la palabra temeroso Ahora escriba la aacute de taacutebano yEmacs saltaraacute sobre taacutecito que contiene la primer ocurrencia de taacute Y finalmenteb consigue taacutebano sin haber tenido que escribir la palabra entera

Lo que hace en una isearch es definir una cadena para buscarla Cada vez que agrega uncaraacutecter al final de la cadena el nuacutemero de posibles cadenas se reduce hasta que hayaescrito lo suficiente para definir la cadena singularmente Una vez que ha encontrado lapalabra puede salir de la buacutesqueda con |_Intro_| o cualquiera de los comandos normalesde movimiento Si piensa que la cadena que buscas esta atraacutes en el buffer entoncesdeberiacutea usar |_Cshyr_| que hace isearch hacia atraacutes

Si encuentra una palabra pero no es la que buscaba entonces presione |_Cshys_| nuevamentemientras todaviacutea esteacute en la buacutesqueda Esto le moveraacute hasta la proacutexima palabracoincidente cada vez que lo haga Si no existe una proacutexima palabra diraacute que la buacutesquedafracasoacute pero si presiona |_Cshys_| nuevamente en este punto la buacutesqueda volveraacute acomenzar desde el principio del buffer Se puede decir lo opuesto de |_Cshyr_| comienza alfinal del buffer

Intente introducir un buffer de texto en ingleacutes y haga un isearch para la cadena thePrimero teclee todos los the que quiera y luego use |_Cshys_| para ir a todas lasapariciones Note que tambieacuten apareceraacuten palabras como them dado que tambieacuten contienela subcadena the Para buscar un uacutenico the deberaacute agregar un espacio al final de lacadena de buacutesqueda Puede agregar nuevos caracteres a la cadena en cualquier punto de labuacutesqueda despueacutes tiene que presionar |_Cshys_| repetidamente para encontrar las proacuteximaspalabras coincidentes Puede usar tambieacuten la |_Retroceso_| o ||_Supr_|| para quitarcaracteres de la cadena en cualquier punto de la buacutesqueda y presionando |_Intro_| salede la buacutesqueda dejaacutendole en la uacuteltima coincidencia

Emacs tambieacuten permite reemplazar todas las apariciones de una cadena con alguna nuevacadena esto es conocido como queryshyreplace (preguntarshyreemplazar) Para invocarloteclee queryshyreplace y |_Intro_|

Como se hace terminacioacuten automaacutetica sobre el nombre del comando una vez que has escritoqueryshyre puede simplemente presionar |_Tab_| para terminarlo Digamos que deseareemplazar todas las ocurrencias de taacutebano por mosca En el prompt Query replace (preguntarshyreemplazar) escriba taacutebano y presione |_Intro_| Entonces apareceraacute elprompt nuevamente y deberaacute introducir mosca Entonces Emacs recorreraacute el bufferparando a cada aparicioacuten de la palabra taacutebano y preguntando si quiere reemplazarlaSimplemente presione en cada instancia y o n por Yes o No hasta que termineSi no entiende esto mientras lo lee prueacutebelo

88 iquestQueacute es lo que ocurre realmente

Realmente todas estas teclas ligadas que ha aprendido son los atajos a funciones deEmacs Por ejemplo ||_Cshyp_|| es una manera abreviada de decirle a Emacs que ejecute lafuncioacuten interna previousshyline (liacutenea_previa) Sin embargo todas estas funciones internaspueden ser llamadas por el nombre usando |_Mshyx_| Si olvida que previousshyline estaacuteligado a ||Cshyp_|| puede escribir simplemente |_Mshyx_| previousshyline |_Intro_| y semoveraacute una liacutenea hacia arriba Pruebe esto ahora para que comprenda como |_Mshyx_|previousshyline y ||_Cshyp_ || son realmente la misma cosa

El disentildeador de Emacs comenzoacute desde la base hacia arriba primero definioacute un lotecompleto de funciones internas y entonces les asocioacute o ligoacute ciertas teclas a las maacutescomuacutenmente usadas A veces es maacutes faacutecil llamar a una funcioacuten expliacutecitamente con |_Mshyx_|que recordar a queacute tecla estaacute ligada

La funcioacuten queryshyreplace por ejemplo estaacute ligada a ||_Mshy_|| en algunas versiones deEmacs Pero iquestquieacuten puede recordar tan rara combinacioacuten A menos que use queryshyreplace muyfrecuentemente es maacutes faacutecil simplemente llamarla con |_Mshyx_|

La mayoriacutea de las teclas que pulsa son letras cuya funcioacuten es ser insertadas en el textodel buffer Cada una de esas teclas estaacute ligada a la funcioacuten selfshyinsertshycommand que no

hace nada maacutes que insertar la letra en el buffer Las combinaciones que usan la tecla|_Control_| con una letra generalmente estaacuten ligadas a funciones que hacen otras cosascomo mover el cursor Por ejemplo |_Cshyv_| estaacute ligada a una funcioacuten llamada scrollshyup(avanzar paacutegina) que mueve el buffer una pantalla hacia arriba (lo que quiere decir quesu posicioacuten en el buffer se mueve hacia abajo por supuesto)

Si alguna vez quisiera realmente insertar un caraacutecter de Control en el buffer entoncesiquestcoacutemo lo hariacutea Despueacutes de todo los caracteres de Control son caracteres ASCII aunquerara vez usados y puede querer tenerlos en un archivo Hay una manera para_impedir_quelos caracteres de Control sean interpretados como comandos por Emacs La tecla ||_Cshyq_||6estaacute ligada a una funcioacuten especial llamada quotedshyinsert (insertar lo citado) Todo loque quotedshyinsert hace es leer la proacutexima tecla e insertarla literalmente en el buffersin tratar de interpretarla como un comando Asiacute es coacutemo puede poner los caracteres deControl en sus archivos usando Emacs iexclNaturalmente la manera de insertar un Cshyq espresionar ||Cshyq_|| dos veces

Emacs tambieacuten tiene muchas funciones que no estaacuten ligadas a ninguna tecla Por ejemplosi escribe un mensaje largo y no quiere tener que presionar |_Intro_| al final de cadaliacutenea Puede hacer que emacs lo haga por Ud (de hecho puede hacer que Emacs hagacualquier cosa por Ud) el comando para hacerlo se llama autoshyfillshymode (modo de autollenado pero no estaacute ligado a ninguna tecla por defecto A fin de invocar este comandodebe escribir Mshyx autoshyfillshymode

Mshyx es la tecla usada para llamar a funciones por el nombre Podriacutea usarlo para llamara funciones como nextshyline y previousshyline pero eso seriacutea muy ineficaz ya que esasfunciones estaacuten ligadas a |_Cshyn_| y ||_Cshyp_||

A propoacutesito si mira su liacutenea de modo despueacutes de invocar autoshyfillshymode notaraacute que lapalabra Fill se ha agregado al lado derecho Mientras esteacute alliacute Emacs llenaraacute(rellenaraacute) el texto automaacuteticamente Puede desactivarlo escribiendo Mshyx autoshyfillshymodenuevamente es un comando de palanca

La incomodidad de escribir largos nombres de funcioacuten en el minibuffer disminuye porqueEmacs hace terminacioacuten automaacutetica en los nombres de funciones de la misma manera que lohace en los nombres de archivo Por lo tanto rara vez deberiacutea encontrarse escribiendo elnombre entero de la funcioacuten letra a letra Si no estaacute totalmente seguro de si puede o nousar la terminacioacuten automaacutetica simplemente presione |_Tab_| No puede hacer dantildeo lopeor que puede suceder es que consiga un caraacutecter Tab y si es afortunado resultaraacute quepuede usar la terminacioacuten automaacutetica

89 Pidiendo ayuda a Emacs

Emacs tiene extensas facilidades de ayuda tan extensas de hecho que soacutelo podemoscomentarlas un poco aquiacute A las facilidades de ayuda maacutes baacutesicas se accede tecleando |_Cshyh_| y luego una uacutenica letra Por ejemplo |_Cshyh_k_| muestra la ayuda sobre una tecla (lepide que presiones una tecla y entonces le dice lo que esa tecla hace) |_Cshyh_t_| abreun breve manual sobre Emacs Maacutes importante auacuten |_Cshyh_Cshyh_Cshyh_| le da ayuda sobre laayuda para decirle que estaacute disponible una vez que ha tecleado |_Cshyh_| por primera vezSi sabe el nombre de una funcioacuten de Emacs (saveshybuffer (grabar el buffer) por ejemplo)pero no puede recordar cuaacutel es la combinacioacuten de teclas a la que estaacute ligada use |_Cshyh_w_| para whereshyis (doacutende estaacute) y escriba el nombre de la funcioacuten O si quiereconocer queacute hace una funcioacuten con detalle use |_Cshyh_f_| que preguntaraacute por un nombre defuncioacuten

______________________________________________

6 Llamamos a Cshyq una tecla aunque se produce manteniendo presionada la tecla Controlypresionando q porque es un uacutenico caraacutecter ASCII

Recuerde que como Emacs hace terminacioacuten automaacutetica del nombre de la funcioacuten realmenteno tiene que estar seguro de coacutemo se llama para pedir ayuda sobre ella Si piensa quepuedes adivinar la palabra con la que podriacutea comenzar teclee eacutesa y presione |_Tab_ |paraver si se completa Si no vuelva atraacutes e intente otra cosa Lo mismo ocurre con losnombres de archivo auacuten cuando no pueda recordar del todo como nombroacute cierto archivo alque no ha accedido en tres meses puede probar y usar la terminacioacuten automaacutetica paraaveriguar si estaacute en lo cierto Usa la terminacioacuten automaacutetica como una forma depreguntar y no soacutelo como una manera de teclear menos

Hay otros caracteres que puede pulsar despueacutes de |_Cshyh_| y con cada uno consigue ayudade una manera diferente Los que usaraacute maacutes frecuentemente son |_Cshyh_k_| |_Cshyh_w_| y|_Cshyh_f_| Una vez que esteacute maacutes familiarizado con Emacs otra para probar es |_Cshyh_a_|que le pregunta por una cadena y le comenta todas las funciones que tienen esa cadenacomo parte de su nombre (la a seriacutea para apropos [a propoacutesito] o about[acerca])

Otra fuente de informacioacuten es el lector de documentacioacuten Info Info es demasiado complejopara tratarlo aquiacute pero si estaacute interesado en explorarlo por si mismo teclee |_Cshyh_i_|y lea el paacuterrafo en la parte superior de la pantalla Le diraacute coacutemo conseguir maacutes ayuda

810 Especializando buffers Modos

Los buffers de Emacs tienen modos asociados7 La razoacuten para esto es que sus necesidadescuando escribe un mensaje de correo son muy diferentes de sus necesidades cuando porejemplo escribe un programa Mejor que tratar de crear un editor que satisfaga cadanecesidad particular en todo momento (que seriacutea imposible) el disentildeador de Emacs8 eligioacutehacer que Emacs se comporte de manera diferente dependiendo de queacute hace Ud en cadabuffer individual Asiacute los buffers tienen modos cada uno disentildeado para alguna actividadespeciacutefica Los aspectos principales que distinguen un modo de otros son lascombinaciones de teclas pero tambieacuten pueden existir otras diferencias

El modo maacutes baacutesico es el modo Fundamental que realmente no tiene ninguacuten comandoespecial

De hecho esto es todo lo que Emacs dice sobre el Modo Fundamental

Modo Fundamental

Modo mayor no especializado para nada en particular Los otros modos mayoresson definidos por comparacioacuten con este

Obtuve asiacute esa informacioacuten Teclee |_Cshyx_b_| que es switchshytoshybuffer (cambiar albuffer) e introduje foo cuando se me preguntoacute por un nombre de buffer al que cambiarComo no habiacutea anteriormente ninguacuten buffer llamado foo Emacs creoacute uno y me cambio a eacutelEstaba en el modo fundamental por defecto pero si no lo hubiese estado podriacutea habertecleado Mshyx fundamentalshymode para que estuviese Todos los nombres de modo tienen uncomando llamado ltnombreshydeshymodogtshymode que pone el buffer actual en ese modo Entoncespara averiguar maacutes sobre este modo mayor tecleeacute |_Cshyh_m_| que consigue ayuda sobre elmodo mayor actual del buffer en que estaacute

_____________________________________________

7 para colmo de males hay Modos Mayores y Modos Menores pero en este momento nonecesita conocer nada acerca de esto

8 Richard Stallman a veces tambieacuten conocido como rms porque es su login

Hay un modo ligeramente maacutes uacutetil llamado textshymode (modo texto que tiene los comandosespeciales |_MshyS_| para centrar paacuterrafo y |_Mshys_| que invoca centrar liacutenea |_MshyS_| apropoacutesito significa exactamente lo que piensa mantenga pulsadas la |_Meta__|y la tecla|_Shift_| y presiona S

Pero no me tome la palabra en esto cree un nuevo buffer poacutengalo en modo texto y teclee|_Cshyh_m_| Puede que no entienda todo lo que Emacs le diga cuando lo haga pero deberiacuteaser capaz de conseguir sacar alguna informacioacuten uacutetil de ello

Esto es una introduccioacuten a algunos de los modos maacutes comuacutenmente usados Si los usaaseguacuterese de que teclea en cada uno |_Cshyh_m_| alguna vez para averiguar maacutes sobre cadamodo

811 Modos de programacioacuten

8111 Modo C

Si usa Emacs para programar en el lenguaje C puede conseguir que eacutel le haga toda laindentacioacuten automaacuteticamente Los archivos cuyos nombres terminan en c o h se abriraacutenautomaacuteticamente en el modo C Esto significa que ciertos comandos especiales de edicioacutenuacutetiles para escribir programas en C estaacuten disponibles En el modo C |_Tab_| estaacute ligadoa cshyindentshycommand (indentar comandos C) Esto significa que presionando la tecla |_Tab_|no inserta realmente un caraacutecter de Tabulacioacuten En cambio si presiona |_Tab_| encualquier parte de una liacutenea Emacs automaacuteticamente indenta esta liacutenea correctamente parasu ubicacioacuten en el programa Esto implica que Emacs sabe algo sobre la sintaxis de C(aunque nada sobre semaacutentica (iexclno puede asegurar que su programa no tenga errores)

Para hacer esto asuma que las liacuteneas anteriores estaacuten indentadas correctamente Estosignifica que si en la liacutenea anterior falta un pareacutentesis un punto y coma llaves ocualquier otra cosa Emacs indentaraacute la liacutenea actual de una manera peculiar inesperadaCuando vea que hace esto sabraacute que debe buscar un error de puntuacioacuten en la liacuteneaanterior

Puede usar esta caracteriacutestica para verificar que ha puntuado correctamente susprogramas

en vez de leer el programa entero_buscado_problemas simplemente comience a indentar lasliacuteneas desde arriba hasta abajo con |_Tab_| y cuando alguna se indenta de forma raraverifique las liacuteneas inmediatamente anteriores En otras palabras iexcldeje a Emacs hacer eltrabajo por Ud

8112 Modo Scheme

Este es un modo mayor que no le serviraacute de nada a menos que tenga un compilador o uninterprete para el lenguaje de programacioacuten Scheme en su sistema Tener uno no es tannormal como digamos un compilador de C pero se estaacute haciendo cada vez maacutes comuacuten asiacuteque lo trataremos tambieacuten

Mucho de lo que es cierto para el modo Scheme es tambieacuten cierto para el modo Lisp siprefiere escribir en Lisp

Bien para complicar las cosas Emacs viene con dos modos Scheme diferentes porque lagente no podiacutea decidir coacutemo queriacutean que funcionara El que estoy describiendo se llamacmuscheme y luego en la seccioacuten personalizando a Emacs hablareacute de coacutemo puede haber dosmodos Scheme diferentes y queacute hacer acerca de ello Por ahora no se preocupe si lascosas en su Emacs no coinciden con las que yo digo aquiacute Un editor personalizablesignifica un editor impredecible iexcly no hay vuelta de hoja

Puede ejecutar un proceso Scheme interactivo en Emacs con el comando Mshyx runshyscheme Estocrea un buffer llamado scheme que tiene el prompt habitual de Scheme Puede teclearexpresiones de Scheme en el prompt presionar |_Intro_| y Scheme las evaluaraacute y mostraraacutela respuesta Asiacute a fin de interactuar con el proceso de Scheme podraacute simplementeescribir todas sus aplicaciones y definiciones de funcioacuten en el prompt Es posible quehaya escrito previamente coacutedigo fuente Scheme en un alguacuten archivo y seriacutea maacutes faacutecilhacer su trabajo en el archivo y enviar las definiciones al buffer de proceso Schemeseguacuten sea necesario

Si el archivo fuente termina en ss o scm automaacuteticamente se abriraacute en el modo Schemecuando lo encuentre con |_Cshyx_Cshyf_| Si por alguna razoacuten no surge en el modo Schemepuede hacerlo a mano con Mshyx schemeshymode Este modo scheme no es lo mismo que el bufferque ejecuta el proceso Scheme maacutes bien el que el buffer de coacutedigo fuente esteacute en modoscheme significa que tiene comandos especiales para comunicar con el buffer de proceso

Si estaacute dentro de la definicioacuten de una funcioacuten en el buffer de coacutedigo fuente Scheme yteclea |_Cshyc_Cshye_| entonces esa definicioacuten seraacute enviada al buffer de procesoexactamente como si lo hubiera tecleado Ud mismo |_Cshyc_Mshye_| enviacutea la definicioacuten yentonces le lleva al buffer de proceso para hacer algo de trabajo interactivo |_Cshyc_Cshyl_| carga un archivo de coacutedigo Scheme (eacuteste funciona desde el buffer de proceso o elbuffer de coacutedigo fuente) Y como otros modos de lenguajes de programacioacuten al presionar|_Tab_| en cualquier lugar de una liacutenea de coacutedigo se indentaraacute correctamente esa liacutenea

Si estaacute en el prompt del buffer de proceso puede usar ||_Mshyp_|| y |_Mshyn_| para moverseentre sus comandos anteriores (tambieacuten conocido como la historia de entrada) Asiacute que siestaacute depurando la funcioacuten rotar y ya lo ha aplicado a los argumentos en el buffer deproceso como

gt(rotar (a b c d e))

entonces puede recuperar ese comando anterior tecleando ||_Mshyp_||en el prompt Aquiacute nodeberiacutea ser necesario volver a escribir expresiones largas en el prompt de Schemehabituacuteese a usar la historia de entrada y ahorraraacute mucho tiempo

Emacs conoce bastantes lenguajes de programacioacuten C C++ Lisp y Scheme son simplementealgunos Generalmente sabe coacutemo indentarlos de forma intuitiva

8113 Modo de correo

Tambieacuten puede editar y enviar correo en Emacs Para entrar en un buffer de correo teclee|_Cshyx_m_| Necesita llenar los campos To (A) y Subjet (Asunto) y entonces use |_Cshyn_| para ir por debajo de la liacutenea de separacioacuten al cuerpo del mensaje (que estaacute vaciacuteocuando comienza por primera vez) No cambie o borre la liacutenea de separacioacuten o sino Emacsno seraacute capaz de enviar su correo use esa liacutenea para distinguir el encabezamiento delcorreo que le dice doacutende enviar el correo de los contenidos del mensaje

Puede escribir lo que quiera por debajo de la liacutenea de separacioacuten Cuando esteacute listo paraenviar el mensaje simplemente teclee |_Cshyc_Cshyc_| y Emacs lo enviaraacute y haraacute que elbuffer de correo desaparezca

812 Como ser maacutes eficiente auacuten

Los usuarios experimentados de Emacs son fanaacuteticos de la eficiencia ltDe hechofrecuentemente acaban derrochando mucho tiempo buscando formas para ser maacutes eficientesNo quiero que le suceda esto aunque hay algunas cosas faacuteciles con las que puede llegar aser un mejor usuario de Emacs A veces los usuarios experimentados hacen que los novatos

se sientan tontos por no saber todos estos trucos por alguna razoacuten la gente llega ahacerse religiosas sobre el uso correcto de Emacs Allaacute vamos

Cuando se mueve de un lado a otro usa los medios maacutes raacutepidos disponibles Ud sabe que|_Cshyf_| es forwardshychar (un caraacutecter hacia adelante) iquestsuponiacutea que |_Mshyf_| es forwardshyword(una palabra hacia delante) |_Cshyb_| es backwardshychar (un caraacutecter hacia atraacutes) iquestSuponequeacute hace |_Mshyb_| Sin embargo esto no es todo puede avanzar una frase cada vez con |_Mshye_ | siempre que escriba sus frases de modo que haya siempre dos espacios despueacutes delpunto final (de otra manera Emacs no puede distinguir donde termina una frase y comienzala siguiente) |_Mshya_| es backwardshysentence (una frase atraacutes)

Si ve que usa repetidamente |_Cshyf_| para llegar al final de la liacutenea averguumleacutencese yaseguacuterese de usar |_Cshye_| en su lugar y |_Cshya_| para ir al principio de la liacutenea Si usamuchos |_Cshyn_| para bajar pantallas de texto averguumleacutencese mucho y usa |_Cshyv_| siempreSi usa repetidamente ||_Cshyp_|| para avanzar pantallas no se atreva a ensentildear la cara yuse |_Mshyv_| en su lugar

Si se estaacute acercando al final de una liacutenea y se da cuenta de que hay una palabra maltecleada o de que se ha olvidado alguna en alguacuten lugar anterior de la liacutenea no use la|_Retroceso_| o ||_Supr_|| para volver a ese punto Eso requeririacutea volver a escribirporciones enteras de texto perfecto En vez de eso use combinaciones de |_Mshyb_| |_Cshyb_| y |_Cshyf_| para moverse a la ubicacioacuten precisa del error arreacuteglelo y entonces use|_Cshye_| para moverse al fin de la liacutenea nuevamente

Cuando tiene que escribir un nombre de archivo nunca teclee el nombre completoSolamente escriba lo suficiente para identificarlo singularmente y deje que Emacstermine el trabajo presionando |_Tab_| o ||_Espacio_|| iquestPor queacute teclear de maacutes cuandopuede derrochar ciclos de CPU en su lugar

Si escribe alguacuten tipo de texto simple y de alguacuten modo su autoshyllenando (autoshyfilling)loha fastidiado use |_|Mshyq_|| que es rellenado de paacuterrafo en los modos de texto comunesEsto ajustaraacute el paacuterrafo en el que estaacute como si hubiese sido llenado liacutenea a liacuteneapero sin tener que liarse hacieacutendolo a mano ||_Mshyq_|| trabajaraacute desde dentro delpaacuterrafo o desde su comienzo o final

A veces es uacutetil usar |_Cshyx_u_| (undo [deshacer]) que trataraacute de deshacer el (los)uacuteltimo(s) cambio(s) que hizo Emacs decidiraacute cuanto deshacer habitualmente decide muyinteligentemente

Llamaacutendolo repetidamente desharaacute maacutes y maacutes hasta que Emacs no pueda recordar queacute cambiosse hicieron

813 Personalizando Emacs

Emacs es tan grande y tan complejo que de hecho tiene iexclsu propio lenguaje deprogramacioacuten No bromeo para personalizar Emacs ajustaacutendolo a sus necesidades tieneque escribir programas en este lenguaje Se llama Emacs Lisp y es un dialecto de Lispasiacute que si tiene experiencia previa en Lisp le pareceraacute bastante amistoso Si no no sepreocupe no voy a profundizar mucho porque definitivamente se aprende mejorpracticando Para aprender realmente a programar Emacs deberaacute consultar las paacuteginas deinformacioacuten de Emacs Lisp y leer mucho coacutedigo fuente de Emacs Lisp

La mayor parte de la funcionalidad de Emacs estaacute definida en archivos de coacutedigo de EmacsLisp9 La mayoriacutea de estos archivos se distribuyen con Emacs y colectivamente sonconocidos como la Biblioteca de Emacs Lisp La ubicacioacuten de esta biblioteca depende decoacutemo se instaloacute Emacs en su sistema son ubicaciones comunes usrlibemacslispusrlibemacs1919lisp etc

El 1919 es el nuacutemero de versioacuten de Emacs y podriacutea ser diferente en su sistema

No necesita hurgar por su sistema de archivos buscando la biblioteca de lisp porqueEmacs tiene la informacioacuten almacenada internamente en una variable llamada loadshypath(trayectoria de carga) Para averiguar el valor de esta variable es necesario evaluarlaesto es hacer que el inteacuterprete de lisp de Emacs consiga su valor Hay un modo especialpara evaluar las expresiones de Lisp en Emacs llamado modo lisp interactivo (lispshyinteractionshymode) Comuacutenmente hay un buffer llamado scratch que estaacute ya en estemodo Si no lo puede encontrar cree un nuevo buffer con cualquier nombre y escriba Mshyxlispshyinteractionshymode dentro de eacutel

Ahora tiene un espacio de trabajo para interactuar con el inteacuterprete Lisp de EmacsTeclee esto

loadshypath

y entonces presione ||_Cshyj_|| al finalizar En el modo Lisp interactivo ||_Cshyj_|| estaacuteligado a evalshyprintshylastshysexp (evaluarshyimprimirshyuacuteltimashysexp) Una sexp es una sshyexpresion lo que significa un grupo balanceado de pareacutentesis incluido el caso de queno haya ninguno Bueno esto es simplificarlo un poco pero iraacute entendiendo que son seguacutenprograme con Emacs Lisp De cualquier manera al evaluar loadshypath deberiacutea conseguir algocomo esto

loadshypath ||_Cshyj_||

(usrlibemacssiteshylispvmshy535 homekfogelelithp

usrlibemacssiteshylisp usrlibemacs1919lisp)

Por supuesto no tendraacute el mismo aspecto en cada sistema puesto que es dependiente decoacutemo se instaloacute Emacs El ejemplo de arriba viene de mi PC 386 que funciona con LinuxComo indica lo anterior loadshypath es una lista de cadenas Cada cadena nombra undirectorio que podriacutea contener archivos de Emacs Lisp Cuando Emacs necesita cargar unarchivo de coacutedigo Lisp va buscaacutendolo en cada uno de estos directorios en orden Si undirectorio se nombra pero no existe en el sistema de archivos Emacs simplemente loignora

_____________________________________________

9 A veces llamados no oficialmente Elisp

Cuando Emacs arranca automaacuteticamente trata de cargar el archivo emacs desde sudirectorio de usuario Por lo tanto si quiere hacer personalizaciones en Emacs deberaacuteponerlas en emacs La personalizacioacuten maacutes comuacuten son las teclas ligadas asiacute que aquiacuteestaacute coacutemo hacerlo

(globalshysetshykey Cshycl gotoshyline)

globalshysetshykey (fijar teclas globalmente) es una funcioacuten de dos argumentos la tecla a laque ha de ser ligada y la funcioacuten a la que ligarla La palabra global significa queesta tecla ligada tendraacute efecto en todos los modos mayores (hay otra funcioacuten localshysetshykey (fijar teclas localmente) que liga una tecla en un uacutenico buffer) Arriba he ligado|_Cshyc_l_| a la funcioacuten gotoshyline (ir a tal liacutenea)

La tecla se describe usando una cadena La sintaxis especial Cshyltcaraacutectergt significamantener pulsada la tecla |_Control_| mientras se presiona ltcaraacutectergt Asiacute mismo Mshyltcaraacutectergt indica la tecla |_Meta_|

Todo eso estaacute muy bien iquestpero coacutemo supe que el nombre de la funcioacuten era gotoshylinePuedo saber que quiero ligar |_Cshyc_l_| a alguna funcioacuten que pregunta por un nuacutemero deliacutenea y mueve el cursor a esa liacutenea pero iquestcoacutemo hice para averiguar el nombre de esafuncioacuten

Aquiacute es donde intervienen las facilidades de ayuda de Emacs Una vez que ha decidido queacutetipo de funcioacuten busca puede usar Emacs para rastrear su nombre exacto He aquiacute unamanera raacutepida y sucia para hacerlo puesto que Emacs completa los nombres de funcioacutensimplemente escriba |_Cshyh_f_| (que es describeshyfunction (describir funcioacuten) recueacuterdelo)y entonces presione |_Tab_| sin escribir nada maacutes Esto pide a Emacs que complete lacadena vaciacutea _en otras palabras iexclla terminacioacuten automaacutetica se corresponderaacute con cada unade las funciones Puede tardar un momento en construir la lista de funciones ya queEmacs tiene muchas funciones internas pero mostraraacute todo lo que entre en la pantallacuando esteacute listo

En este momento presione ||_Cshyg_|| para abandonar la funcioacuten describir funcioacuten Habraacute unbuffer llamado Completions que contiene la lista de terminaciones automaacuteticas queacaba de generar

Cambie a este buffer Ahora puede usar |_Cshys_| isearch para buscar las funcionesprobables Por ejemplo es una suposicioacuten segura que una funcioacuten que pregunta por unnuacutemero de liacutenea y entonces va a esa liacutenea contendraacute la cadena line (liacutenea) en sunombre Por lo tanto simplemente comience buscando la cadena line y acabaraacuteencontrando lo que busca

Si quiere otro meacutetodo puede usar |_Cshyh_a_| commandshyapropos para mostrar todas lasfunciones cuyos nombres se ajustan a la cadena dada La salida de commandshyapropos es unpoco maacutes difiacutecil de clasificar que simplemente buscar una lista de terminacioacutenautomaacutetica en mi opinioacuten pero puede encontrar que tiene distintas sensaciones Pruebeambos meacutetodos y a ver que opina

Siempre existe la posibilidad de que Emacs no tenga ninguna funcioacuten predefinida parahacer lo que estaacute buscando En esta situacioacuten tiene que escribir la funcioacuten Ud mismoNo voy a hablar de coacutemo hacer eso deberiacutea buscar en la biblioteca de Emacs Lisp ejemplosde definiciones de funcioacuten y leer las paginas Info sobre Emacs Lisp Si resulta queconoce a un guruacute local de Emacs preguacutentele coacutemo hacerlo Definir sus propias funcionesde Emacs no es un gran asunto para darle una idea yo he escrito 131 de ellas durantemaacutes o menos el uacuteltimo antildeo Requiere un poco de praacutectica pero la curva de aprendizaje noes empinada

Otra cosa que la gente hace a menudo en su emacs es asignar a ciertas variables losvalores preferidos Por ejemplo ponga esto en su emacs y entonces inicie un nuevoEmacs

(setq inhibitshystartupshymessage t)

Emacs verifica el valor de la variable inhibitshystartupshymessage (bloquear mensaje dearranque) para decidir si muestra la informacioacuten sobre la versioacuten y la falta de garantiacuteacuando arranca La expresioacuten de Lisp de arriba usa el comando setq para asignar a esavariable el valor `t que es un valor especial de Lisp que significa true (verdadero)Lo contrario de `t es `nil (nada o nulo) que es el valor false (falso) designado enEmacs Lisp He aquiacute dos cosas que estaacuten en mi |_emacs_| que podriacutea encontrar uacutetiles

(setq caseshyfoldshysearch nil) causa la insensibilidad a mayuacutesculas yminuacutesculas para la buacutesqueda

Hacer indentar los programas C de la manera que me gusta

(setq cshyindentshylevel 2)

La primera expresioacuten hace que las buacutesquedas (incluyendo isearch) sean insensibles amayuacutesculas y minuacutesculas esto es la buacutesqueda encontraraacute versiones de un mismo caraacutectersea mayuacutescula o minuacutescula aunque la cadena de buacutesqueda contenga uacutenicamente la versioacuten enminuacutescula La segunda expresioacuten establece que la indentacioacuten por defecto para lassentencias en lenguaje C sea un poco menor de lo normal esto es solamente unapreferencia personal encuentro que esto hace el coacutedigo C maacutes legible

El caraacutecter de comentario en Lisp es Emacs ignora cualquier cosa que siga a uno deeacutestos a menos que aparezca dentro de una cadena literal como esta

estas dos liacuteneas son ignoradas por el inteacuterprete de Lisp pero la

sshyexpression que le sigue se evaluaraacute totalmente

(setq algunashycadenashyliteral Una pausa torpe sin ninguacuten propoacutesito)

Es una buena idea comentar sus cambios en los archivos Lisp porque seis meses despueacutes nose acordaraacute en queacute estaba pensando cuando los modificoacute Si el comentario aparece soacutelo enuna liacutenea preceacutedalo con dos punto y coma Esto ayuda a Emacs a indentar los archivosLisp correctamente

Puede encontrar informacioacuten sobre las variables internas de Emacs de las mismas formasque con las funciones Use |_Cshyh_v_| describeshyvariable para hacer una lista determinacioacuten automaacutetica o use |_Cshyh_Cshya_| apropos Apropos difiere de |_Cshyh_a_|commandshyapropos en que muestra variables y funciones en vez de solamente funciones

La extensioacuten por defecto para los archivos de Emacs Lisp es el como en cshymodeel Sinembargo para hacer que el coacutedigo Lisp se ejecute maacutes raacutepido Emacs permite que sea byteshycompiled (compilado a un formato interno) y estos archivos de coacutedigo Lisp compiladoterminan en elc en vez de el La excepcioacuten a esto es su archivo emacs que no necesitala extensioacuten el porque Emacs sabe buscarlo para arrancar

Para cargar un archivo de coacutedigo Lisp interactivamente use el comando Mshyx loadshyfile(cargar archivo) Le preguntaraacute por el nombre del archivo Para cargar archivos Lispdesde dentro de otros archivos Lisp haga esto

(load cshymode)fuerza a Emacs a cargar el contenido de cshymodeel o elc

Emacs antildeadiraacute la extensioacuten elc al nombre del archivo e intentaraacute encontrarlo en alguacutenlugar del loadshypath Si falla lo intenta con la extensioacuten el si falla esto usa lacadena literal tal y como es pasada a load Puede compilar (byteshycompile) un archivo conel comando Mshyx byteshycompileshyfile pero si modifica el archivo a menudo probablemente nomerezca la pena Sin embargo no deberiacutea compilar de esa manera su emacs ni siquieradarle la extensioacuten el

Despueacutes de que emacs se ha cargado Emacs busca un archivo llamado defaultel paracargarlo

Comuacutenmente se ubica en un directorio en la trayectoria de carga (loadshypath) llamado siteshylisp o localshyelisp o algo parecido (ver el ejemplo loadshypath que di hace un rato) Lagente que mantiene Emacs en un sistema multiusuario usa defaultel para hacer cambios queafectaraacuten los Emacs de todos puesto que todos los Emacs lo cargan despueacutes de los emacspersonales defaultel no deberiacutea ser compilado ya que tiende a ser modificadofrecuentemente

Si el emacs de una persona contiene alguacuten error Emacs no intentaraacute cargar defaultelsino que simplemente se detendraacute destellando un mensaje diciendo Error in init file(Error en el archivo de inicio) o algo similar Si ve este mensaje probablemente algovaya mal con su emacs

Hay un tipo maacutes de expresioacuten que a menudo va en un emacs La libreria de Emacs Lisp aveces ofrece muacuteltiples paquetes para hacer lo mismo de diferentes formas Esto significaque tiene que especificar cuaacutel quiere usar (o tendraacute el paquete por defecto que no essiempre el mejor para todos los propoacutesitos) Un aacuterea donde esto sucede es en lascaracteriacutesticas de interaccioacuten del Scheme de Emacs Hay dos interfaces diferentes deScheme distribuidos con Emacs (al menos en la versioacuten 19) xscheme y cmuscheme

promptgt ls usrlibemacs1919lispscheme

usrlibemacs1919lispcmuschemeel

usrlibemacs1919lispcmuschemeelc

usrlibemacs1919lispschemeel

usrlibemacs1919lispschemeelc

usrlibemacs1919lispxschemeel

usrlibemacs1919lispxschemeelc

Resulta que el interfaz ofrecido por cmuscheme me gusta mucho maacutes que el que ofrecexscheme pero el que Emacs usaraacute por defecto es xscheme iquestCoacutemo puedo hacer que Emacsactuacutee de acuerdo con mi preferencia Puse esto en mi emacs

note coacutemo la expresioacuten puede quebrarse en dos liacuteneas Lisp

ignora los espacios en blanco generalmente

(autoload runshyscheme cmuscheme

Corre un Scheme inferior de la forma que me gusta t)

La funcioacuten autoload (auto carga) toma el nombre de una funcioacuten (citada con porrazones que tienen que ver con coacutemo funciona Lisp) y le dice a Emacs que esta funcioacutenestaacute definida en un determinado archivo El archivo es el segundo argumento una cadena(sin la extensioacuten el o elc) indicando el nombre del archivo a buscar en la trayectoriade carga loadshypath

Los argumentos restantes son opcionales pero necesarios en este caso el tercerargumento es una cadena de documentacioacuten para la funcioacuten de modo que si llama adescribeshyfunction (describirshyfuncioacuten) consigue alguna informacioacuten uacutetil El cuartoargumento le dice a Emacs que esta funcioacuten autocargable puede ser llamadainteractivamente (esto es usando |_Mshyx_|) Esto es muy importante en este caso porqueuno deberiacutea poder teclear Mshyx runshyscheme para comenzar un proceso de scheme que seejecuta bajo Emacs

Ahora que runshyscheme ha sido definido como una funcioacuten autocargable iquestqueacute sucede cuandotecleo Mshyx runshyscheme Emacs mira la funcioacuten runshyscheme ve que estaacute establecida paraser autocargable y carga el archivo nombrado por la autocarga (en este caso cmuscheme)El archivo compilado cmuschemeelc existe asiacute que Emacs lo cargaraacute Ese archivo debedefinir la funcioacuten runshyscheme o habraacute un error de autocarga Por suerte define runshyscheme asiacute que todo va sin tropiezos y consigo mi interfaz preferida de Scheme10

Una autocarga es como una promesa a Emacs de que cuando llegue el momento puedeencontrar la funcioacuten especificada en el archivo en el que le dice que mire A cambioconsigue alguacuten control sobre lo que se carga Tambieacuten la autocarga ayuda a reducir eltamantildeo de Emacs en la memoria al no cargar ciertas caracteriacutesticas hasta que se pidan

Muchos comandos no estaacuten definidos realmente como funciones cuando Emacs se inicia Maacutesbien estaacuten simplemente preparados para autocargarse desde cierto archivo Si nuncainvoca el comando nunca se carga Este ahorro de espacio es vital para el funcionamientode Emacs si cargara todos los archivos disponibles en la biblioteca Lisp Emacs tomariacuteaveinte minutos simplemente para arrancar y una vez hecho podriacutea ocupar la mayor partede la memoria disponible en su maacutequina No se preocupe no tiene que establecer todasestas autocargas en su emacs ya se tomaron en cuenta cuando Emacs se desarrolloacute

814 Averiguando maacutes

No le he contado todo lo que se puede saber sobre Emacs De hecho no creo haberlecontado siquiera un 1 de lo que se puede saber sobre Emacs Aunque sabe suficiente paraproseguir todaviacutea hay montones de comodidades y trucos que ahorran tiempo que deberiacuteaaveriguar La mejor forma de hacerlo es esperar hasta que vea que necesita algo y buscarentonces una funcioacuten que lo haga

La importancia de estar coacutemodo con las facilidades de ayuda en liacutenea de Emacs no puedeenfatizarse lo suficiente Por ejemplo suponga que quiere poder insertar los contenidosde alguacuten archivo en un buffer que ya estaacute trabajando sobre un archivo diferente para queel buffer contenga a ambos Si intuyese que hay un comando llamado insertshyfile (insertararchivo) tendriacutea razoacuten Para verificar su acertada suposicioacuten teclee Cshyh f En elprompt del minibuffer introduzca el nombre de una funcioacuten sobre la que quiera ayudaPuesto que sabe que hay terminacioacuten automaacutetica en los nombres de funciones_y_puedesuponer que el comando que busca comienza con insert escriba insert y presiona|_Tab_| Esto le muestra todos los nombres de funcioacuten que comienzan con insert einsertshyfile es uno de ellos

De este modo completa el nombre de funcioacuten y lee sobre como trabaja y entonces usa Mshyxinsertshyfile_Si se estaacute preguntando si tambieacuten estaacute ligado a una tecla escribe Cshyh winsertshyfile |_Intro_| y averiacuteguumlelo Cuanto maacutes sepa de las facilidades de ayuda deEmacs maacutes faacutecilmente podraacute hacer preguntas a Emacs acerca de siacute mismo La capacidad dehacerlo combinada con un espiacuteritu de exploracioacuten y un deseo de aprender nuevas formas dehacer las cosas puede acabar por ahorrarle mucho tecleado

_____________________________________________

10 A propoacutesito cmuscheme era la interfaz de la que hablaba antes en la seccioacuten sobre eltrabajo con Scheme asiacute que si quiere usar algo de este manual necesita asegurarse deque ejecuta cmuscheme

Para pedir una copia del manual de usuario de Emacs (Emacs users manual) yo el manualde Programacioacuten en Emacs Lisp (Emacs Lisp Programming manual) debe escribir a

Free Software Foundation

675 Mass Ave

Cambridge MA 02139

USA

Ambos manuales se distribuyen electroacutenicamente con Emacs en una forma legible usando ellector de documentacioacuten Info (Cshyh i) pero puede encontrar maacutes faacutecil tratar con freewareque con las versiones en liacutenea Ademaacutes sus precios son bastantes razonables y el dinerova a una buena causa iexclsoftware gratuito de calidad En alguacuten momento deberiacutea teclear

Cshyh Cshyc para leer las condiciones de copyright de Emacs Es maacutes interesante de lo quepuede pensar y le ayudaraacute a aclarar el concepto de software libre Si cree que eltermino free software simplemente significa que el programa no cuesta nada por favoriexcllea el copyright en cuanto tenga tiempo

Capiacutetulo 9

iexclTengo que ser yo mismo

Si Dios hubiera sabido que necesitariacuteamos previsioacuten nos la habriacutea dado

91 Personalizacioacuten del bash

Una de las cosas que distinguen la filosofiacutea de Unix es que los disentildeadores de sistemasno intentaron predecir cada necesidad que los usuarios podriacutean tener en lugar de esointentaron hacer faacutecil para cada usuario individual la configuracioacuten del entorno a susnecesidades particulares Esto se consigue principalmente a traveacutes de ficheros deconfiguracioacuten Tambieacuten son conocidos como ficheros de inicio ficheros rc (por runcontrol control de arranque) o incluso ficheros punto (dot files) porque losnombres de los ficheros siempre empiezan con Recordemos que los ficheros queempiezan por no se visualizan normalmente con ls

Los ficheros de configuracioacuten maacutes importantes son los usados por el shell El shell pordefecto de Linux es el bash y eacuteste es el shell que cubre este capiacutetulo Antes de empezara explicar coacutemo personalizar el bash tenemos que saber cuales son los archivos que mira

911 Arranque del shell

Hay diferentes modos de funcionamiento del bash Puede funcionar como shell de ingresoque es el modo en que arranca cuando se ingresa por primera vez El shell de ingresodeberiacutea ser el primer shell que vea

Otro modo en que puede funcionar bash es como shell interactivo Este es un shell quepresenta un prompt a un humano y espera una entrada de datos Un shell de ingreso tambieacutenes un shell interactivo Una manera de conseguir un shell interactivo sin ingresar en elsistema es por ejemplo un shell dentro de xterm Cualquier shell que sea creado porotro medio distinto del ingreso registrado en el sistema es un shell de noshyingreso

Finalmente hay shells no interactivos Estos shells se usan para ejecutar un archivo decomandos muy parecidos a los ficheros de procesamiento por lotes del MSshyDOS losarchivos que acaban en BAT Estas macros de shell funcionan como minishyprogramas Aunqueson usualmente mucho maacutes lentos que un programa normal compilado suele ser ciertotambieacuten que son mucho maacutes faacuteciles de escribir Dependiendo del tipo de shell se usaraacutendistintos tipos de archivo al arrancarlo

Tipo de Shell Accioacuten

Ingreso interactivo Se lee y ejecuta el archivo bash_profile

Interactivo Se lee y ejecuta el archivo bashrc

No_interactivo Se lee y ejecuta la macro de shell

912 Ficheros de arranque

Como muchos usuarios quieren tener mayormente el mismo entorno sin importar que tipo deshell interactivo acaben teniendo y sea o no un shell de ingreso empezaremos nuestraconfiguracioacuten poniendo un comando muy simple en nuestro archivo bash_profile source~bashrc El comando source ordena al shell que interprete el argumento como una macrode shell Lo que significa para nosotros es que cada vez que bash_profile se ejecutatambieacuten se ejecuta bashrc Ahora soacutelo antildeadiremos comandos a nuestro archivo bashrc Sialguna vez queremos que se ejecute un comando uacutenicamente cuando hemos hecho un ingresoregistrado lo antildeadiremos a nuestro bash_profile

913 Creando alias

iquestCuales son algunas de las cosas que interesariacutea personalizar Esto es algo que creo queel 90 de los usuarios de Bash han puesto en su bashrc

alias ll=ls shyl

Este comando define un alias de shell llamado ll que expande el comando normal de shellls shyl cuando se invoca por el usuario De modo que asumiendo que Bash ha leiacutedo estecomando del fichero bashrc podemos teclear ll para conseguir el efecto de ls__shyl_ consolo la mitad de pulsaciones Lo que ocurre es que cuando tecleamos ll y pulsamos|_Intro_| Bash lo intercepta lo reemplaza por ls shyl y ejecuta eacuteste en su lugar Nohay ninguacuten programa llamado ll en el sistema pero el shell automaacuteticamente traduce elalias a un programa vaacutelido

Hay algunos alias de ejemplo en la figura 913 Puede ponerlos en su propio bashrc Unoespecialmente interesante es el primero Con eacutel cada vez que alguien teclea ls automaticamente tiene una opcioacuten shyF antildeadida (El alias no intenta expandirse a siacute mismootra vez) Este es un modo muy comuacuten de antildeadir opciones que se usan constantemente alllamar a un programa

Noacutetese los comentarios con el caracter en la figura 913 Cada vez que aparece un el shell ignora el resto de la liacutenea

Quizaacute haya notado unas cuantas cosas sueltas sobre los ejemplos Primero me he dejadolas comillas en algunos de los alias como pu Estrictamente hablando las comillas no sonnecesarias cuando soacutelo se tiene una palabra a la derecha del signo igual

Figura 91 Algunos alias de ejemplo para bash

Alias Comentario

alias ls=ls shyF

alias ll=ls shyl

alias la=ls shya

alias ro=rm ~ rm ~

alias rd=rmdir

alias md=mkdir

alias pu=pushd

muestra los caracteres al final del listado

ls especial

este borra las copias de seguridad creadas por Emacs

ahorra teclas

pushd popd y dirs no estan incluidos en este

alias po=popd

alias ds=dirs

manualshyshyshyquiza quiera echarles un vistazo

en la pagina man de Bash

alias to=telnet csoberlinedu

alias ta=telnet altairmcsanlgov

alias tg=telnet wombatgnuaimitedu

alias tko=tpalk koldcsoberlinedu

alias tjo=talk jimbcsoberlinedu

alias mroe=more

alias moer=more

alias email=emacs shyf rmail

alias ed2=emacs shyd floss0 shyfg grey95shybg grey50

estos solo son atajos de teclado

correcion ortografica

mi lector de correo

asi llamo a Emacs

Pero no hace dantildeo poner comillas asiacute que no me dejeacuteis crearos malos haacutebitos Ciertamentehabraacute que usarlas si se va a crear un alias de un comando con opciones yo argumentos

alias rf=refrobnicate shyverbose shyprolix shywordy shyo fooout

Ademaacutes el uacuteltimo alias tiene alguacuten entrecomillado gracioso

alias ed2=emacs shyd floss0 shyfg grey95 shybg grey50

Como es faacutecil suponer he querido pasar entrecomillados dentro de las opciones asiacute quetengo que anteponerles una contrabarra para que bash no crea que ya ha llegado al finaldel alias

Finalmente he creado dos alias de dos errores de escritura comunes mroe y moerapuntando al comando que pretendiacutea escribir more Los alias no interfieren con el pasode argumentos a un programa Lo siguiente funciona bien

homelarry$ mroe hurdtxt

De hecho saber como crear sus propios alias es probablemente por lo menos la mitad delas personalizaciones que haraacute jamaacutes Experimente un poco descubra cuaacuteles son loscomandos largos que teclea frecuentemente y cree alias para ellos De esta manera leresultaraacute maacutes confortable trabajar con el prompt del shell

914 Variables de entorno

Otra cosa que uno hace frecuentemente en bashrc es definir variables de entorno Y gtqueacuteson las variables de entorno Vamos a mirarlo desde otra direccioacuten Supongamos que estaacuteleyendo la documentacioacuten del programa fruggle y se encuentra con una de estasexpresiones

Fruggle normalmente busca su fichero de configuracioacuten frugglerc en el directorio raiacutezdel usuario Sin embargo si la variable de entorno FRUGGLEPATH indica un nombre dearchivo diferente miraraacute ahiacute en su lugar

Cada programa se ejecuta en un entorno y ese entorno es definido por el shell que llamoacuteal programa1 Se puede decir que el entorno existe dentro del shell Los programadorestienen una rutina especial para interrogar al entorno y el programa fruggle usa esarutina Comprueba el valor de la variable de entorno FRUGGLEPATH Si esa variable no estaacutedefinida sencillamente usaraacute el archivo frugglerc del directorio raiacutez Si estaacutedefinida usaraacute el valor de esa variable (que debe ser el nombre de un archivo quefruggle pueda usar) en lugar del archivo por defecto frugglerc Asiacute es como se puedecambiar el entorno en bash

homelarry$ export PGPPATH=homelarrysecretspgp

Hay que pensar en el comando export con este significado Por favor exporta estavariable fuera del entorno donde estareacute llamando programas de modo que su valor seavisible para ellos Realmente hay razones para llamarlo export como se veraacute despueacutes

Esta variable en particular es usada por el infame programa de encriptacioacuten medianteclave puacuteblica de Phil Zimmerman pgp Por defecto pgp usa el directorio raiacutez como lugarpara encontrar determinados archivos que necesita (que contienen claves de encriptacioacuten)y tambieacuten un lugar para guardar archivos temporales que crea mientras estaacute en marcha Aldarle este valor a la variable PGPPATH le he dicho que use el directoriohomelarrysecretspgp en lugar de homelarry

He tenido que leer el manual de pgp para encontrar el nombre exacto de la variable y loque hace pero es bastante estaacutendar el uso del nombre del programa en mayuacutesculas seguidodel sufijo PATH Tambieacuten es uacutetil saber como preguntar al entorno

homelarry$ echo $PGPPATH

homelarrypgp

homelarry$

Noacutetese el $ se precede la variable de entorno con un signo de doacutelar para extraer elvalor de la variable Si lo hubiera escrito sin el signo de doacutelar echo simplementehabriacutea mostrado su(s) argumento(s)

homelarry$ echo PGPPATH

PGPPATH

homelarry$

El $ se usa para evaluar variables de entorno pero soacutelo lo hace dentro del contextodel shell o sea cuando el shell estaacute interpretando iquestCuando estaacute el shellinterpretando Bueno cuando se escriben comandos en el prompt o cuando bash estaacuteleyendo comandos de un archivo como bashrc se puede decir que estaacute interpretando loscomandos

_____________________________________________

1 Ahora se puede comprobar porqueacute los shells son tan importantes ltNo hay que andarpasando un entorno completo a mano cada vez que se llame a un programa

Figura 92 Algunas variables de entorno importantes

Nombre Contenido Ejemplo

HOME Directorio principal del usuario homelarry

TERM Tipo de terminal del usuario xterm vt100 o console

SHELL Path del shell del usuario binbash

USER Nombre de ingreso larry

PATH Lista de buacutesqueda de programas binusrbinusrlocalbinusrbinX11

Hay otro comando muy uacutetil para preguntar al entorno env env ensentildearaacute un listado detodas las variables de entorno Es posible especialmente si se usa X que la lista sesalga de la pantalla

Si esto ocurre hay que canalizar env a traveacutes de more env _ more

Unas cuantas de estas variables pueden ser muy uacutetiles asiacute que las comentaremos Mire laFigura 914 Estas cuatro variables estaacuten definidas automaacuteticamente cuando se ingresa enel sistema no se definen en bashrc o bash_login

Vamos a echar un vistazo maacutes de cerca a la variable TERM Para comprenderla vamos amirar hacia atraacutes en la historia del Unix El sistema operativo necesita conocer ciertosdatos sobre su consola para poder realizar funciones baacutesicas como escribir un caraacutecteren la pantalla mover el cursor a la liacutenea siguiente etc En los primeros diacuteas de losordenadores los fabricantes estaban continuamente antildeadiendo nuevas caracteriacutesticas a susterminales primero el viacutedeo inverso luego quizaacutes juegos de caracteres europeoseventualmente incluso primitivas funciones de dibujo (hay que recordar que eacutestos eran lostiempos anteriores a los sistemas de ventanas y el ratoacuten) Pero todas estas funcionesrepresentaban un problema para los programadores iquestCoacutemo iban a saber lo que un terminalpodiacutea soportar y lo que no Y iquestcoacutemo podiacutean emplear nuevas caracteriacutesticas sin convertirlos viejos terminales en inservibles

En Unix la respuesta a estas cuestiones fue etctermcap etctermcap es una lista detodos los terminales que un sistema conoce y como controlan el cursor Si unadministrador de sistema consigue un terminal nuevo todo lo que tiene que hacer esantildeadir una entrada para ese terminal en etctermcap en lugar de recompilar todo el UnixA veces es incluso maacutes simple Al pasar el tiempo el vt100 de Digital EquipmentCorporation se convirtioacute en un pseudoshyestaacutendar y muchos nuevos terminales fueronconstruidos para que pudieran emularlo o comportarse como si fueran un vt100

Bajo Linux el valor de TERM es a veces console un cloacutenico de vtshy100 con algunascaracteriacutesticas antildeadidas

Otra variable PATH es tambieacuten crucial para el funcionamiento correcto del shell Aquiacuteestaacute la miacutea

homelarry$ env _ grep ^PATH

PATH=homelarrybinbinusrbinusrlocalbinusrbinX11usrTeXbin

homelarry$

El PATH es una lista separada por el caraacutecter dos puntos de los directorios dondeel shell buscaraacute el nombre del programa a ejecutar Cuando yo tecleo ls y pulso|_Intro_| por ejemplo Bash primero busca en homelarrybin un directorio que he hechopara guardar los programas que escribo Pero yo no he escrito ls (de hecho iexclcreo que seescribioacute antes de que yo naciera) Como no lo encuentra en homelarrybin Bash miradespueacutes en bin iexcly ahiacute hay una coincidencia binls existe y es ejecutable de modo queBash deja de buscar un programa llamado ls y lo arranca Podriacutea haber habidoperfectamente otro ls esperando en el directorio usrbin pero bash nunca lo ejecutaraacutesi no lo pido especificando una ruta de directorios expliacutecita

homelarry$ usrbinls

La variable PATH existe para no tener que teclear rutas de directorio completas para cadacomando Cuando se escribe un comando Bash lo busca en los directorios nombrados en elPATH en orden y si lo encuentra lo ejecuta Si no lo encuentra devuelve un descorteacutesmensaje de error

homelarry$ clubly

clubly command not found

Notar que en mi PATH no existe el directorio actual Si estuviera tendriacutea esteaspecto

homelarry$ echo $PATH

homelarrybinbinusrbinusrlocalbinusrbinX11usrTeXbin

homelarry$

Esto es asunto de debate en los ciacuterculos de Unix (de los cuales ahora es miembro leguste o no) El problema es que tener el directorio actual en el path puede ser unagujero en la seguridad Supongamos que entramos en un directorio en el que alguien hadejado un Caballo de Troya llamado ls y hacemos un ls como es natural despueacutes deentrar en un directorio nuevo Como el directorio actual viene primero en nuestroPATH el shell encontraraacute esta versioacuten de ls y la ejecutaraacute Sea cual sea el dantildeo quehayan puesto en ese programa lo acabamos de activar (y puede ser un montoacuten de dantildeo)Quien fuera no necesita permisos de root para hacerlo soacutelo hace falta permisos deescritura en el directorio donde se encuentra el falso ls Incluso podriacutea ser su propiodirectorio home si sabe que vamos a estar husmeando por ahiacute en alguacuten momento

En su propio sistema es muy improbable que las personas se esteacuten dejando trampas unas aotras Pero en un gran sistema multiusuario (como muchos ordenadores de universidades)hay un montoacuten de programadores hostiles con los que nunca se ha encontrado Que quieratentar a la suerte o no teniendo en el path depende de la situacioacuten no voy a serdogmaacutetico en ninguacuten sentido soacutelo quiero informar de los riesgos impliacutecitos2 Lossistemas multiusuario son verdaderas comunidades donde la gente puede hacerles cosas alos demaacutes en todo tipo de maneras nunca vistas

El modo en que he dejado mi PATH incluye la mayoriacutea de lo que se ha aprendido hasta ahorasobre variables de entorno Esto es lo que hay actualmente en mi bashrc

export PATH=$shyPATH$shyHOMEbinbinusrbinusrlocalbinusrbinX11usrTeXbin

_____________________________________________

2 Recueacuterdese que siempre se puede ejecutar un programa en el directorio actual siendoexpliacutecito pej foo

Me aprovecho de que la variable HOME se activa antes de que Bash lea el fichero bashrcusando su valor en la construccioacuten del PATH Las llaves () son un nivel antildeadido decita delimitan el tamantildeo de lo que va a evaluar $ de modo que el shell no se confundapor culpa del texto inmediatamente posterior (bin en este caso) Aquiacute hay otro ejemplodel efecto que tienen

homelarry$ echo $shyHOMEfoo

homelarryfoo

homelarry$

Sin las llaves no connseguiriacutea nada porque no hay ninguna variable de entorno llamadaHOMEfoo

homelarry$ echo $HOMEfoo

homelarry$

Quisiera aclarar una cosa en este path el significado de $PATH Lo que hace es incluirel valor de cualquier variable PATH previamente activada en mi nuevo PATH iquestDoacutende sehabraacute activado la variable anterior El archivo etcprofile sirve como una especie debash_profile global comuacuten a todos los usuarios Tener un archivo centralizado como estehace maacutes sencillo para el administrador del sistema antildeadir un directorio nuevo al PATH detodo el mundo sin que cada uno tenga que hacerlo individualmente Si se incluye el pathantiguo en el nuevo no se perderaacuten ninguno de los directorios que el sistema ya hayapreparado

Tambieacuten se puede controlar como aparece el prompt Esto se consigue mediante la variablede entorno PS1 Personalmente quiero un prompt que me indique el path del directorioactual asiacute es como lo hago en mi bashrc

export PS1=$PWD$

Como se puede ver en realidad se usan dos variables La que se activa es PS1 y toma elvalor de PWD que puede ser interpretada como Print Working Directory (imprime eldirectorio de trabajo) o Path to Working Directory(trayectoria al directorio detrabajo) Pero la evaluacioacuten de PWD tiene lugar entre apoacutestrofos agudos Estos apoacutestrofossirven para evaluar la expresioacuten en su interior la cual a su vez evaluacutea la variable PWDSi soacutelo hubieacuteramos hecho export PS1=$PWD nuestro prompt nos habriacutea mostradoconstantemente el path del directorio de trabajo en el momento en que PS1 fue activadaen lugar de actualizarse constantemente mientras cambiamos de directorios Bueno es unpoco confuso y no muy importante en realidad Soacutelo hay que tener en cuenta que senecesita esa clase de apoacutestrofos si se quiere mostrar el directorio actual en el prompt

Quizaacute se prefiera export PS1=$PWDgt o incluso el nombre del sistema

export PS1=`hostname`gt

Diseccionemos este ejemplo un poco maacutes Aquiacute se usa un nuevo tipo de literal elapoacutestrofo grave Esta clase de literal no protege nada de hecho hostname no apareceen ninguna parte del prompt cuando intentamos arrancarlo Lo que sucede realmente es quese evaluacutea el comando dentro de los apoacutestrofos graves y el resultado se guarda en lugardel nombre del comando entrecomillado

Probemos con echo `ls` o wc `ls` A medida que se consiga maacutes experiencia usando elshell esta teacutecnica se hace maacutes y maacutes potente

Hay mucho maacutes por comentar de como se configura el fichero bashrc y aquiacute no haybastante espacio para hacerlo Se puede aprender maacutes leyendo la paacutegina man de bash opreguntando a usuarios experimentados Aquiacute hay un bashrc completo para poderestudiarlo es razonablemente estaacutendar aunque el path es un poco largo

Algunas cosas al azar

ulimit shyc unlimited

export history_control=ignoredups

export PS1=$PWDgt

umask 022

paths especiacuteficos de aplicaciones

export MANPATH=usrlocalmanusrman

export INFOPATH=usrlocalinfo

export PGPPATH=$shyHOMEpgp

PATH principal

homepath=$shyHOME~bin

stdpath=binusrbinusrlocalbinusrucbetcusretcusrgames

pubpath=usrpublicbinusrgnusoftbinusrlocalcontribsbin

softpath=usrbinX11usrlocalbinX11usrTeXbin

export PATH=$shyhomepath$shystdpath$shypubpath$shysoftpath

Teacutecnicamente las llaves no eran necesarias porque los dos puntos son

delimitadores vaacutelidos pero las llaves son una buena costumbre

y no hacen dantildeo

alias

alias ls=ls shyCF

alias fg1=fg 1

alias fg2=fg 2

alias tba=talk sussmanternmcsanlgov

alias tko=talk koldcsoberlinedu

alias tji=talk jimbtotorobioindianaedu

alias mroe=more

alias moer=more

alias email=emacs shyf vm

alias pu=pushd

alias po=popd

alias b=~b

alias ds=dirs

alias ro=rm ~ rm ~

alias rd=rmdir

alias ll=ls shyl

alias la=ls shya

alias rr=rm shyr

alias md=mkdir

alias ed2=emacs shyd floss0 shyfg grey95 shybg grey50

function gco

shy

gcc shyo $1 $1c shyg

92 Los ficheros de inicio de X Window

Mucha gente prefiere trabajar dentro de un entorno graacutefico y para las maacutequinas bajo Unixeso suele significar usar X Si se estaacute acostumbrado al Macintosh o al Microsoft Windowspuede costar un poco acostumbrarse al sistema X Window especialmente al modo en que seconfigura

Con Macintosh o Microsoft Windows se personaliza el entorno desde dentro si se quierecambiar el fondo por ejemplo se pulsa con el ratoacuten sobre el nuevo color en alguacutenprograma graacutefico especial de configuracioacuten En X las opciones por defecto del sistema secontrolan mediante ficheros de texto que se editan directamente en otras palabras seescribe el nombre del color en un fichero para cambiar el color del fondo

No se puede negar que este meacutetodo no es tan llano como el de algunos sistemas de ventanascomerciales Creo que esta tendencia a permanecer basado en texto incluso en un entornograacutefico tiene mucho que ver con el hecho de que X fueacute creado por un puntildeado deprogramadores que simplemente no estaban tratando de escribir un software que pudieranusar sus abuelos Esta tendencia puede cambiar en futuras versiones de X (por lo menosasiacute lo espero3) pero por ahora hay que aprender como entenderse con unos cuantosficheros de texto maacutes Por lo menos nos da un control muy flexible y preciso de nuestraconfiguracioacuten

Aquiacute estaacuten los ficheros maacutes importantes para configurar X

xinitrc Un script arrancado por X cuando se inicia

twmrc Leido por el gestor de X Window twm

fvwmrc Leido por el gestor de X Window fvwm

Todos estos ficheros deberiacutean estar en el directorio $HOME si es que existen

xinitrc es una macro de shell muy simple que se ejecuta cuando invocamos a X Puedehacer cualquiera de las cosas que pueden hacer otras macros de shell pero por supuestosu uso principal es arrancar varios programas de X y establecer paraacutemetros del sistema deventanas El uacuteltimo comando en xinitrc es usualmente el nombre de un gestor de ventanasa ejecutar por ejemplo usrbinX11twm

iquestQueacute tipo de cosas nos gustariacutea poner en xinitrc Quizaacute algunas llamadas al programaxsetroot para hacer que la ventana de fondo (escritorio) y el ratoacuten tengan el aspectoque deseamos Llamadas a xmodmap que informa al servidor4 de como interpretar lassentildeales del teclado

_____________________________________________

3 N del T Yo tambieacuten shy)

4 El servidor soacutelo se refiere al proceso principal en la maacutequina con el que todos losdemaacutes programas de X tienen que comunicar para usar la pantalla Estos otros programas seconocen como clientes y todo el paquete se llama sistema clienteshyservidor

O cualquier otro programa que se quiera iniciar cada vez que se arranque X (por ejemploxclock) Aquiacute estaacute una parte de mi xinitrc el suyo seguramente seraacute distinto asiacute quehay que tomaacuterselo soacutelo como ejemplo

binsh

La primera liacutenea le dice al sistema operativo que shell usar para

interpretar esta macro La macro en siacute misma debe estar marcada como

ejecutable se puede hacer con chmod +x ~xinitrc

xmodmap es un programa que informa al servidor X de como interpretar las

sentildeales del teclado Es definitivamente aconsejable aprender como

funciona Se puede probar con man xmodmap xmodmap shyhelp

xmodmap shygrammar y otras opciones

No garantizo que las expresiones abajo escritas signifiquen nada en tu

sistema (ni siquiera garantizo que signifiquen algo en el miacuteo)

xmodmap shye clear Lock

xmodmap shye keycode 176 = Control_R

xmodmap shye add control = Control_R

xmodmap shye clear Mod2

xmodmap shye add Mod1 = Alt_L Alt_R

xset es un programa para establecer otros paraacutemetros del servidor X

xset m 3 2 amp paraacutemetros del ratoacuten

xset s 600 5 amp preferencias del salvapantallas

xset s noblank amp lo mismo

xset fp+ homelarryxfonts para cxterm

Para aprender maacutes xset shyhelp

Ordena al servidor X que sobreponga fishcursor sobre fishmask y use

el patroacuten resultante como cursor del ratoacuten

xsetroot shycursor homelablarryxfishcursor homelablarryxfishmask amp

Un placentero patroacuten y color de fondo

xsetroot shybitmap homelablarryxpyramidxbm shybg tan

para hacer xrdb aquiacute Y que hay del fichero Xdefaults

Hay que mirar man xsetroot o xsetroot shyhelp para maacutes

informacioacuten sobre el programa usado arriba

Un programa cliente el imponente reloj circular de color de Jim Blandy

usrlocalbincircles amp

Quizaacute os gustariacutea tener un reloj en la pantalla a todas horas

usrbinX11xclock shydigital amp

Permite a programas cliente de X ejecutaacutendose en occscsoberlinedu

mostrarse a siacute mismos aquiacute y lo mismo para jujumcsanlgov

xhost occscsoberlinedu

xhost jujumcsanlgov

Se puede simplemente decirle al servidor X que permita usar aquiacute

a clientes que esteacuten ejecutaacutendose en cualquier otra maacutequina

pero esto es un agujero en la seguridad shyshy ltestos clientes pueden ser

usados por cualquier otro que puede vigilar lo que se teclea cuando se

entra una contrasentildea o algo asiacute

Si se quiere hacerlo de todos modos se puede usar un + para indicar

cualquier nombre de host posible en lugar de un nombre especiacutefico

asiacute

xhost +

Y finalmente arrancar el gestor de ventanas

usrbinX11twm

Alguna gente prefiere otros gestores de ventanas Yo uso twm pero fvwm se

distribuye tambieacuten muchas veces con Linux

usrbinX11fvwm

Noacutetese que algunos comandos son iniciados en segundo plano (pej los que van seguidosde amp) mientras que otros no lo son La distincioacuten estaacute en que algunos programas seiniciaraacuten cuando arranquemos X y seguiraacuten en marcha hasta que salgamos Los otros seejecutan una vez y se cierran inmediatamente xsetroot es uno de eacutestos soacutelo establece laventana principal o el cursor a lo que sea y luego se cierra

Una vez que el gestor de ventanas ha arrancado leeraacute su propio fichero de inicio quecontrola cosas como la composicioacuten de los menuacutes en queacute posiciones se presentan lasventanas cuando se abren control de iconos y otros asuntos terriblemente importantesSi se usa twm el fichero es twmrc en nuestro directorio home Si se usa fvwm elfichero es fvwmrc etc Explicaremos soacutelo estos dos ya que son los gestores de ventanasque maacutes frecuentemente se encontraraacuten con Linux

921 Configuracioacuten de twm

twmrc no es una macro de shell_estaacute escrito en un lenguaje especialmente hecho para twmiexclcreacutealo o no5 Principalmente a la gente en su twmrc le gusta jugar con los estilos dela ventana (colores y demaacutes) y hacer interesantes menuacutes asiacute que ahiacute va un twmrc deejemplo

Indica colores para varias partes de una ventanas Tiene un gran impacto

en la sensacioacuten que transmite el entorno

Color

shy

BorderColor OrangeRed

BorderTileForeground Black

BorderTileBackground Black

TitleForeground black

TitleBackground gold

MenuForeground black

MenuBackground LightGrey

MenuTitleForeground LightGrey

MenuTitleBackground LightSlateGrey

MenuShadowColor black

IconForeground DimGray

IconBackground Gold

IconBorderColor OrangeRed

IconManagerForeground black

IconManagerBackground honeydew

Espero que no tengas un sistema monocromo pero si lo tienes

Monochrome

shy

BorderColor black

BorderTileForeground black

BorderTileBackground white

TitleForeground black

TitleBackground white

He creado beifangbmp con el programa bitmap Aquiacute le digo a twm

que lo use como el patroacuten por defecto para destacar las barras de

tiacutetulo de las ventanas

Pixmaps

shy

TitleHighlight homelarryxbeifangbmp

No os preocupeacuteis por estas cosas son soacutelo para usuarios avanzados shy)

BorderWidth 2

TitleFont shyadobeshynew century schoolbookshyboldshyrshynormalshyshy14shy140shy75shy75shypshy87shyiso8859shy1

MenuFont 6x13

IconFont lucidasansshyitalicshy14

ResizeFont fixed

Zoom 50

RandomPlacement

Estos programas no tendraacuten una barra de tiacutetulo por defecto

NoTitle

shy

stamp

xload

xclock

xlogo

xbiff

xeyes

oclock

xoid

AutoRaise significa que una ventana aparece al frente cuando el ratoacuten

entra en ella Lo encuentro desconcertante asiacute que lo he desactivado

Como puedes ver he heredado mi twmrc de otra gente a quien tampoco le

gustaba Autoraise

AutoRaise

shy

nothing No me gusta autoshyraise Ni a mi A mi tampoco

Aquiacute es donde se define la funcioacuten de los botones del mouse

Noacutetese el patroacuten Un botoacuten del ratoacuten pulsado en la ventana

principal si no se estaacute pulsando ninguna tecla modificadora siempre

hace aparecer un menuacute Otras posiciones usualmente producen

modificaciones de la ventana en alguacuten modo y las teclas modificadoras

se usan junto con los botones del ratoacuten para acceder a las funciones

maacutes avanzadas de manipulacioacuten de ventanas

No hay porqueacute seguir este patroacuten en twmrc shyshy el coacutemo

establecer el entorno es un asunto totalmente personal

Button = KEYS CONTEXT FUNCTION

shyshyshyshyshyshyshyshyshyshyshyshyshyshyshyshyshyshyshyshyshyshyshyshyshyshyshyshyshyshyshyshyshyshy

Button1 = root fmenu main

Button1 = title fraise

Button1 = frame fraise

Button1 = icon ficonify

Button1 = m window ficonify

Button2 = root fmenu stuff

Button2 = icon fmove

Button2 = m window fmove

Button2 = title fmove

Button2 = frame fmove

Button2 = s frame fzoom

Button2 = s window fzoom

Button3 = root fmenu x

Button3 = title flower

Button3 = frame flower

Button3 = icon fraiselower

Puedes escribir tus propias funciones esta se usa en el menuacute

windowops cerca del final de este fichero

Function raiseshynshyfocus

shy

fraise

ffocus

Muy bien abajo estaacuten los menuacutes a los que me referiacutea en la

seccioacuten de los botones del ratoacuten Noacutetese que muchas de estas

entradas de menuacute llaman a submenuacutes a su vez Se pueden tener tantos

niveles como se quiera pero no se pueden tener menuacutes recursivos Ya

lo he probado

menu main

shy

Vanilla ftitle

Emacs fmenu emacs

Logins fmenu logins

Xlock fmenu xlock

Misc fmenu misc

Esto me permite llamar a emacs desde varias maacutequinas diferentes Ver

la seccioacuten sobre ficheros rhosts para maacutes informacioacuten sobre

como funciona

menu emacs

shy

Emacs ftitle

here usrbinemacs amp

fnop

phylo rsh phylo emacs shyd floss0 amp

geta rsh geta emacs shyd floss0 amp

darwin rsh darwin emacs shyd floss0 amp

ninja rsh ninja emacs shyd floss0 amp

indy rsh indy emacs shyd floss0 amp

oberlin rsh csoberlinedu emacs shyd flosslifeuiucedu0 amp

gnu rsh gateshy1gnuaimitedu emacs shyd flosslifeuiucedu0 amp

Esto me permite llamar a xterms desde varias maacutequinas diferentes Ver

la seccioacuten sobre ficheros rhosts para maacutes informacioacuten sobre

como funciona

menu logins

shy

Logins ftitle

here usrbinX11xterm shyls shyT `hostname` shyn `hostname` amp

phylo rsh phylo xterm shyls shydisplay floss0 shyT phylo amp

geta rsh geta xterm shyls shydisplay floss0 shyT geta amp

darwin rsh darwin xterm shyls shydisplay floss0 shyT darwin amp

ninja rsh ninja xterm shyls shydisplay floss0 shyT ninja amp

indy rsh indy xterm shyls shydisplay floss0 shyT indy amp

El salvapantallas xlock llamado con varias opciones (cada una de

ellas da una bonita imagen)

menu xlock

shy

Hop xlock shymode hop amp

Qix xlock shymode qix amp

Flame xlock shymode flame amp

Worm xlock shymode worm amp

Swarm xlock shymode swarm amp

Hop NL xlock shymode hop shynolock amp

Qix NL xlock shymode qix shynolock amp

Flame NL xlock shymode flame shynolock amp

Worm NL xlock shymode worm shynolock amp

Swarm NL xlock shymode swarm shynolock amp

Programas de todo tipo que uso ocasionalmente

menu misc

shy

Xload usrbinX11xload amp

XV usrbinX11xv amp

Bitmap usrbinX11bitmap amp

Tetris usrbinX11xtetris amp

Hextris usrbinX11xhextris amp

XRoach usrbinX11xroach amp

Analog Clock usrbinX11xclock shyanalog amp

Digital Clock usrbinX11xclock shydigital amp

Esto es para lo que uso el botoacuten central del ratoacuten

menu stuff

shy

Chores ftitle

Sync binsync

Who who _ xmessage shyfile shy shycolumns 80 shylines 24 amp

Xhost + usrbinX11xhost + amp

Rootclear homelarrybinrootclear amp

Funciones de X que a veces conviene usar

menu x

shy

X Stuff ftitle

Xhost + xhost + amp

Refresh frefresh

Source twmrc ftwmrc

(De)Iconify ficonify

Move Window fmove

Resize Window fresize

Destroy Window fdestroy

Window Ops fmenu windowops

fnop

Kill twm fquit

Este es un submenuacute del de arriba

menu windowops

shy

Window Ops ftitle

Show Icon Mgr fshowiconmgr

Hide Icon Mgr fhideiconmgr

Refresh frefresh

Refresh Window fwinrefresh

twm version fversion

Focus on Root funfocus

Source twmrc ftwmrc

Cut File fcutfile

(De)Iconify ficonify

DeIconify fdeiconify

Move Window fmove

ForceMove Window fforcemove

Resize Window fresize

Raise Window fraise

Lower Window flower

Raise or Lower fraiselower

Focus on Window ffocus

RaiseshynshyFocus ffunction raiseshynshyfocus

Destroy Window fdestroy

Kill twm fquit

_____________________________________________

5 Eacuteste es uno de los problemas de los ficheros de configuracioacuten normalmente usan supropio lenguaje de comandos Esto significa que los usuarios se vuelven muy buenos a lahora de aprender lenguajes nuevos raacutepidamente Supongo que habriacutea estado bien que losprimeros programadores de Unix se hubieran puesto de acuerdo en alguacuten estaacutendar de ficherode inicio pero para ser justo es difiacutecil de predecir que tipo de informacionesnecesitaraacuten los programas

iexclGuau Creedme este no es el twmrc maacutes largo que he llegado a ver Es probable que convuestra versioacuten de X vinieran algunos ejemplos de archivos twmrc bastante decentes Sepueden buscar dentro del directorio usrlibX11twm o en usrX11libX11twm

Un defecto de programa que hay que vigilar en los ficheros twmrc es no olvidarse deponer el amp despueacutes de un comando en un menuacute Si se nota que X se cuelga cuando se usanciertos comandos lo maacutes probable es que eacutesta sea la causa Hay que salir de X con|_Ctrl_|shy|_Alt_|shy|_Retroceso_| editar twmrc y probar otra vez

922 Configuracioacuten de fvwm

Si se usa fvwm el directorio usrlibX11fvwm (o usrX11libX11fvwm) tiene algunosejemplos de ficheros de configuracioacuten

[Compantildeeros No seacute nada sobre fvwm aunque supongo que sacareacute algo en claro de losficheros de ejemplo igual que el lector shy) Ademaacutes dado el pequentildeo pero decentesystemtwmrc en el directorio arriba mencionado me pregunto si vale la pena que de estelargo ejemplo con mi propio twmrc De momento estaacute aquiacute pero no seacute si lo dejaremos onoshyKarl]

93 Otros ficheros de inicio

Otros ficheros de inicio dignos de mencioacuten son

emacs Leiacutedo por el editor de texto Emacs cuando arranca

netrc Da los nombres y contrasentildeas por defecto para ftp

rhosts Hace una cuenta accesible remotamente

forward Para redireccioacuten automaacutetica del correo

931 El fichero de configuracioacuten de Emacs

Si se usa emacs como editor principal entonces el fichero emacs es muy importante Sediscute con extensioacuten en el Capiacutetulo 8

932 Configuracioacuten por defecto del FTP

El fichero netrc permite tener ciertas configuraciones por defecto cada vez que searranca ftp Aquiacute hay un pequentildeo netrc de ejemplo

machine flosslifeuiucedu login larry password fishSticks

machine darwinlifeuiucedu login larry password fishSticks

machine getalifeuiucedu login larry password fishSticks

machine phylolifeuiucedu login larry password fishSticks

machine ninjalifeuiucedu login larry password fishSticks

machine indylifeuiucedu login larry password fishSticks

machine clonemcsanlgov login fogel password doorm

machine ospreymcsanlgov login fogel password doorm

machine ternmcsanlgov login fogel password doorm

machine altairmcsanlgov login fogel password doorm

machine dalekmcsanlgov login fogel password doorm

machine jujumcsanlgov login fogel password doorm

machine sunsiteuncedu login anonymous password larrycsoberlinedu

Cada liacutenea de netrc especifica un nombre de maacutequina un nombre de cuenta de acceso ausar por defecto con esa maacutequina y una contrasentildea Esto es muy uacutetil si se usa ftpcontinuamente y se estaacute harto de teclear el nombre de acceso y la contrasentildea en cada unoEl programa de ftp intentaraacute acceder automaacuteticamente usando los datos del fichero netrcsi se hace ftp a una de las maacutequinas listadas alliacute

Se puede obligar a ftp a ignorar el fichero netrc y no intentar acceder de maneraautomaacutetica arrancaacutendolo con la opcioacuten shyn ftp shyn

Hay que asegurarse de que el fichero netrc soacutelo es legible por el usuario Se puede usarel programa chmod para establecer los permisos de lectura Si otra gente puede leerlosignifica que pueden encontrar su contrasentildea de acceso a varios otros ordenadores Estoes un agujero en la seguridad tan grande como uno pueda tenerlo Como recomendacioacuten paraser cuidadoso ftp y otros programas que miran el fichero netrc no funcionaraacuten si lospermisos de lectura del fichero son incorrectos

Hay mucho maacutes sobre el fichero netrc de lo que se ha explicado aquiacute Cuando se tenga unaoportunidad hay que probar man netrc o man ftp

933 Permitiendo un acceso remoto sencillo a su cuenta

Si tiene un fichero rhosts en su directorio $HOME le permitiraacute usar programas en estamaacutequina de forma remota Por ejemplo se puede estar registrado en la maacutequinacsoberlinedu pero con un rhosts correctamente configurado en flosslifeuiucedu sepuede usar un programa en floss y presentar el resultado en cs sin tener que registrarseo teclear una contrasentildea frente a floss

El archivo rhosts se ve maacutes o menos asiacute

frobnozzcsknowledgeedu jsmith

aphroditeclassicshahvaahdedu wphilps

frobbohoolacom trixie

El formato es muy directo un nombre de maacutequina seguido de un nombre de usuarioSupongamos que este ejemplo es en realidad mi archivo rhosts en flosslifeuiuceduEsto significariacutea que puedo usar programas en floss y ver el resultado en cualquiera delas maacutequinas listadas siempre y cuando yo esteacute tambieacuten registrado como el usuariocorrespondiente a cada maacutequina cuando intento ejecutar el programa

El mecanismo exacto con el que uno usa un programa remoto es normalmente el programa rshSignifica remote shell(shell remoto) y lo que hace es iniciar un shell en la maacutequinaremota y ejecutar el comando especificado Por ejemplo

frobbo$ whoami

trixie

frobbo$ rsh flosslifeuiucedu ls ~

footxt mbox urlps snaxtxt

frobbo$ rsh flosslifeuiucedu more ~snaxtxt

[snaxtxt aparece pagina a pagina aqui]

El usuario trixie en flosslifeuiucedu que teniacutea el fichero rhosts de ejemplomostrado antes permite expliacutecitamente a trixie en frobbohoolacom usar programascomo si fuera trixie de floss

No hay porqueacute tener el mismo nombre de usuario en todas las maacutequinas para que rhostsfuncione Se puede usar la opcioacuten shyl con rsh para especificar a la maacutequina remota cualnombre de usuario se quiere usar para registrarse Si ese nombre existe en la maacutequinaremota y tiene un fichero rhosts con el nombre de la maacutequina local y el nombre deusuario correspondiente entonces la orden incluida con rsh se ejecutaraacute

frobbo$ whoami

trixie

frobbo$ rsh shyl larry flosslifeuiucedu ls ~

[Inserta aqui un listado de mi directorio en floss]

Esto funcionaraacute si el usuario larry en flosslifeuiucedu tiene un fichero rhostsque permite a trixie de frobbohooplacom usar programas en su cuenta Si son o no lamisma persona es irrelevante la uacutenica cosa importante son los nombres de usuario losnombres de las maacutequinas y la fila referente a floss en el rhosts de Larry Noacutetese queel fichero rhosts de Trixie en frobbo no importa soacutelo cuenta el de la maacutequina remota

Hay otras combinaciones que se pueden poner en un fichero rhosts por ejemplo se puededejar en blanco el nombre de usuario detraacutes del nombre de una maacutequina remota parapermitir a cualquier usuario de esa maacutequina que ejecute programas en la maacutequina localEsto es por supuesto un riesgo en la seguridad alguien podriacutea ejecutar remotamente unprograma que borre mis archivos por el simple hecho de tener una cuenta en ciertamaacutequina Si se va a hacer cosas como esta entonces hay que asegurarse de que el ficherorhosts es legible soacutelo por el usuario implicado y por nadie maacutes

934 Redireccioacuten de correo

Tambieacuten se puede tener un fichero forward el cual no es un fichero de configuracioacutenestrictamente hablando Si contiene direcciones de eshymail entonces todo el correo quellegue al usuario se redirigiraacute a esas direcciones Esto es uacutetil cuando se tienen cuentasen varios sistemas pero se quiere leer el correo desde un solo sitio

Hay una gran cantidad de otros ficheros de configuracioacuten posibles La cantidad exactavariaraacute de sistema a sistema y depende de los programas instalados Una manera de sabermaacutes es mirar todos los archivos en el directorio $HOME que empiecen por No es seguroque todos sean ficheros de configuracioacuten pero seguro que la mayoriacutea siacute lo es

94 Veamos algunos ejemplos

El ejemplo definitivo que puedo dar es mostrar un sistema Linux en funcionamiento Asiacuteque si teneacuteis acceso a Internet estaacuteis invitados a hacer telnet a flosslifeuiuceduRegistraacuteos como guest contrasentildea explorer y husmead por dentro Muchos de losarchivos de ejemplo se pueden encontrar en homekfogel pero tambieacuten hay otrosdirectorios de usuarios Sois libres de copiar cualquier cosa que se pueda leer Porfavor tened cuidado floss no es un sitio terriblemente seguro y ciertamente se puedeconseguir acceso como root si uno lo intenta lo suficiente Prefiero creer en laconfianza maacutes que en la vigilancia constante para mantener la seguridad

Capiacutetulo 10

Hablando con los demaacutes

Una nocioacuten fundamental de Usenet es que es una cooperativa

Cuando ya van para diez los antildeos que llevo en Usenet discrepo con loanterior La nocioacuten fundamental de Usenet es el insulto airado

Chuq Von Rospach

Los modernos sistemas operativos tipo Unix son muy buenos a la hora de hablar con otrasmaacutequinas y funcionar en red Dos maacutequinas Unix diferentes pueden intercambiar informacioacutende muchas muchas maneras distintas Este capiacutetulo va a intentar contar coacutemo se puedesacar provecho de esta gran facilidad para la comunicacioacuten

Trataremos de cubrir el correo electroacutenico las noticias de Usenet y diversas utilidadesbaacutesicas de comunicaciones de Unix

101 Correo electroacutenico

Una de las facilidades maacutes populares que ofrece Unix de forma estaacutendar es el correoelectroacutenico

Con eacutel evitamos el habitual folloacuten de buscar un sobre una hoja de papel un laacutepiz unsello y un servicio postal A cambio debemos enfrentarnos al folloacuten de pelear con elordenador

1011 Enviar correo

Todo lo que hay que hacer es teclear mail nombre y escribir el mensaje

Por ejemplo supongamos que queremos enviar correo a un usuario que se llama sam

homelarry$ mail sam

Subject Documentacion del usuario

Solo estoy probando el sistema de correo

[Ctrlshyd]

homelarry$

homelarry$

El programa mail es muy simple Como cat acepta texto de la entrada estaacutendar liacutenea aliacutenea hasta que recibe un caraacutecter de finshydeshytexto como uacutenico caraacutecter en una liacutenea|_Ctrlshyd_| Asiacute para enviar nuestro mensaje tuvimos que pulsar |_Intro_| y despueacutes|_Ctrlshyd_| Usar mail es la manera maacutes raacutepida de mandar correo y es bastante uacutetil cuandose usa con redireccioacuten de entrada yo salida Por ejemplo si quisieacuteramos enviar porcorreo electroacutenico el fichero report1 a Sam podriacuteamos escribir mail sam lt report1 o incluso sort report1 _ mail sam

Sin embargo la desventaja de usar mail para enviar correo es su primitiviacutesimo editoriexclNo se puede cambiar ni una liacutenea una vez se ha pulsado |_Intro_| Asiacute que yo recomiendomandar correo (cuando no se use redireccioacuten) con el modo mail del Emacs El tema se trataen la Seccioacuten 810

1012 Leer el correo

shy mail [nombre]

El programa mail ofrece una forma algo liosa de leer el correo Si se teclea mail sinparaacutemetros apareceraacute lo siguiente

homelarry$ mail

No mail for larry

homelarry$

No mail for larry significa No hay correo para larry

Me voy a enviar correo a miacute mismo para poder utilizar el lector

homelarry$ mail larry

Subject Sapos

Y ranas

EOT

homelarry$ echo culebras _ mail larry

homelarry$ mail

Mail version 55 6190 Type for help

usrspoolmaillarry 2 messages 2 new

gtN 1 larry Tue Aug 30 1811 10211 Sapos

N 2 larry Tue Aug 30 1812 9191

amp

El siacutembolo peticioacuten de oacuterdenes del programa mail es un et a la inglesa (amp) Acepta unpar de oacuterdenes sencillas y muestra una breve pantalla de ayuda si se pulsa seguidode |_Intro_| Las oacuterdenes baacutesicas de mail son

t listashydeshymensajes Mostrar los mensajes en la pantalla

d listashydeshymensajes Borrar los mensajes

s listashydeshymensajes fichero Guardar los mensajes en fichero

r listashydeshymensajes Responder a los mensajes_esto es comenzar a escribir unnuevo mensaje dirigido a quien fuera que envioacute los mensajes referidos

q Salir y guardar los mensajes que no hayan sido borrados en un ficherollamado mbox en el directorio raiacutez del usuario

iquestQueacute es una listashydeshymensajes Consiste en una lista de nuacutemeros separados por espacios oincluso un rango de los mismos como 2shy4 (lo que es equivalente a 2 3 4) Asiacute mismo sepuede introducir el nombre del remitente de este modo la orden t sam mostraraacute todos losmensajes provenientes de Sam Si se omite la listashydeshymensajes se supone que la orden serefiere al uacuteltimo mensaje mostrado

Leer el correo con el programa mail presenta varios inconvenientes El primero es que siun mensaje es maacutes largo que la pantalla iexclel programa mail no se detiene Habraacute queguardar el mensaje en un fichero y usar more sobre eacutel despueacutes El segundo es que noofrece una buena interfaz para manejar el correo antiguo cuando se quiere guardar elcorreo para leerlo maacutes tarde

Emacs tambieacuten permite leer el correo con rmail pero este libro no lo cubreAdicionalmente la mayoriacutea de los sistemas Linux vienen con algunos lectores de correoadicionales ademaacutes de mail como elm o pine

102 Noticias maacutes que de sobra

103 Localizar a la gente

El programa finger permite obtener informacioacuten de otros usuarios del sistema y de todo elmundo Sin duda el programa finger recibioacute este nombre por los anuncios de la ATampT queexhortaban a la gente a salir y tocar a alguien Dado que el Unix tiene sus oriacutegenes enla ATampT probablemente eso le hiciera gracia al autor

shy finger [shyslpm] [usuario][maquina]

Los paraacutemetros opcionales de finger pueden resultar algo liosos La verdad es que no estan difiacutecil Se puede solicitar informacioacuten de un usuario local (sam) informacioacuten deotra maacutequina (lionsden) informacioacuten sobre un usuario remoto (samlionsden) osimplemente informacioacuten sobre la maacutequina local (nada)

Otra caracteriacutestica es que si se pide informacioacuten sobre un usuario y no hay ninguacuten nombrede cuenta que coincida exactamente con el dado trataraacute de emparejar el nombre real conlo que se haya especificado Eso significa que si ejecutamos finger Greenfield noscontestaraacute que existe la cuenta sam de Sam Greenfield

homelarry$ finger sam

Login sam Name Sam Greenfield

Directory homesam Shell bintcsh

Last login Sun Dec 25 1447 (EST) on tty2

No Plan

homelarry$ finger greenfiegaussrutgersedu

[gaussrutgersedu]

Login name greenfie In real life Greenfie

Directory gaussu1greenfie Shell bintcsh

On since Dec 25 151941 on ttyp0 from tiptopshyslipshy6439

13 minutes Idle Time

No unread mail

Project Debes estar bromeando de que proyecto me hablas

No Plan

homelarry$ finger

Login Name Tty Idle Login Time Office Office Phone

larry Larry Greenfield 1 351 Dec 25 1250

larry Larry Greenfield p0 Dec 25 1251

homelarry$

La opcioacuten shys hace que finger utilice siempre la forma abreviada (la que se obtienenormalmente cuando se hace finger a una maacutequina) y la opcioacuten shyl hace que use siemprela forma larga incluso al hacer finger a una maacutequina La opcioacuten shyp hace que finger nomuestre los ficheros forward plan ni project y la shym hace que cuando se hapedido informacioacuten sobre un usuario soacutelo de informacioacuten de un nombre de cuenta que nointente emparejar el nombre que se le da con un nombre real

1031 Planes y proyectos

Pero iquestqueacute es eso de plan y project Son ficheros que existen en el directorio raiacutez deun usuario y que se muestran cuando se le hace finger Cada uno puede crear sus propiosficheros plan y project la uacutenica restriccioacuten es que soacutelo se muestra la primera liacuteneadel fichero project Ademaacutes todo el mundo debe tener permisos de buacutesqueda (la x deejecucioacuten) del directorio raiacutez del usuario en cuestioacuten (chmod a+x ~) y debe serposible para todo el mundo leer los ficheros plan y project (chmod a+r ~plan~project )

104 Uso remoto de sistemas

shy telnet sistemashyremoto

La forma maacutes habitual de usar un sistema Unix remoto es con telnet telnet es normalmenteun programa muy sencillo de usar

homelarry$ telnet lionsden

Trying 12823641

Connected to lionsden

Escape character is ^]

lionsden login

Como puede verse despues de teclear telnet se nos presenta un mensaje de acceso alsistema remoto Podemos introducir cualquier nombre de usuario (iexclsiempre que conozcamosla contrasentildea) y despueacutes usar el sistema remoto casi como si estuvieacuteramos sentados alliacute

La manera normal de salir de telnet es hacer logout en el sistema remoto Otra forma estecleando la secuencia de escape que (como en el ejemplo de arriba) es habitualmente||_Ctrlshy]_||

Esto nos presenta un nuevo siacutembolo del peticioacuten de oacuterdenes telnetgt Entonces podemosteclear quit y |_Intro_| y la conexioacuten con el otro sistema seraacute cerrada y el programatelnet finalizaraacute (Si cambiaacuteramos de idea simplemente pulsando |_Intro_| volveriacuteamos alsistema remoto)

Si se estaacuten usando las X se puede crear un nuevo xterm para el otro sistema al queestamos saltando Con la orden xterm shytitle lionsden shye telnet lionsden amp crearemosuna nueva ventana xterm que automaacuteticamente ejecute telnet (Si eso se hace confrecuencia probablemente seraacute deseable crear un alias o un programa de shell que lo hagaautomaacuteticamente)

105 Intercambio de ficheros

shy ftp sistemashyremoto

La manera usual de intercambiar ficheros entre sistemas Unix es ftp acroacutenimo queproviene de file transfer protocol (protocolo de transferencia de ficheros) Trasejecutar la orden ftp se nos pediraacute que nos identifiquemos de forma muy parecida a contelnet Despueacutes de hacerlo aparece un siacutembolo de peticioacuten de oacuterdenes especial el siacutemboloftp

La orden cd funciona de la manera habitual pero en el sistema remoto cambia dedirectorio en el otro sistema De la misma forma la orden ls lista los ficheros en elsistema remoto

Las dos oacuterdenes maacutes importantes son get y put get transfiere un fichero del sistemaremoto al local y put lleva un fichero del sistema local al remoto Ambas oacuterdenes tienenefecto en el directorio local en el que se haya arrancado ftp y en el directorio remotoen el que se esteacute en ese momento (que se puede haber cambiado con la orden cd )

Un problema habitual con ftp es la distincioacuten entre ficheros de texto y binarios ftp esun protocolo muy antiguo y antes teniacutea ventajas suponer que los ficheros que setransferiacutean eran de texto El comportamiento por omisioacuten de algunas versiones de ftp eseacutese lo que significa que los programas que se enviacuteen o reciban se corromperaacuten Porseguridad conviene usar la orden binary antes de empezar a transferir ficheros

Para salir de ftp se usa la orden bye

106 Viajando por la telarantildea

La Telarantildea Mundial (World Wide Web) o WWW es un uso muy popular de la InternetConsiste en un conjunto de paacuteginas cada una con su propia URL_Localizador Uniforme deRecursos asociado

Los URLs son simpaacuteticas secuencias de caracteres de la forma lthttpwwwrutgersedugtLas paacuteginas estaacuten por lo general escritas en HTML (Lenguaje de Composicioacuten deHipertexto) El HTML permite al autor de un documento enlazar ciertas palabras frases oimaacutegenes con otros documentos que se hallen en cualquier lugar de la telarantildea Cuando unusuario lee un documento puede moverse raacutepidamente a otro picando en una palabra clave oen un botoacuten y se le mostraraacute el otro documento en cuestioacuten que posiblemente esteacute a milesde kiloacutemetros del primero

shy netscape [url]

El navegador maacutes popular de Linux es netscape se trata de un navegador comercial quevende (y regala) Netscape Communications Corporation netscape soacutelo funciona con las X

netscape trata de ser tan faacutecil de usar como sea posible y utiliza el conjunto de widgetsMotif para lograr una apariencia muy a lo Microsoft Windows El conocimiento baacutesico parapoder usar netscape es que las palabras azules subrayadas son enlaces asiacute como muchas delas imaacutegenes (Se puede averiguar cuales imaacutegenes son enlaces picando en ellas) Picandoen esas palabras con el botoacuten izquierdo del ratoacuten aparece una nueva paacutegina

Linux soporta muchos navegadores maacutes incluyendo el navegador original lynx lynx es unnavegador orientado a texto_no muestra ninguna imagen que es con lo que actualmente serelaciona al Web pero funciona sin las X

shy lynx [url]

Es un poco maacutes complicado aprender a usar lynx pero normalmente se le coge el trucodespueacutes de jugar un rato con las flechas del cursor Las flechas hacia arriba y haciaabajo nos mueven entre los enlaces de una paacutegina La flecha hacia la derecha sigue elenlace seleccionado (resaltado) La flecha hacia la izquierda vuelve a la paacuteginaanterior Para salir de lynx se debe pulsar |_q_| lynx tiene muchas oacuterdenes maacutesconsuacuteltese la paacutegina del manual

Capiacutetulo 11

Comandos divertidos

Bueno la mayoriacutea de la gente que tiene que ver con los comandos de UNIX expuestos eneste capiacutetulo no estaraacuten de acuerdo con este tiacutetulo iexclQue diablos Se me ha ensentildeado queel interfaz del Linux es muy estaacutendar y ahora tenemos un grupo de comandos cada unotrabajando de una manera completamente diferente Nunca recordareacute todas esas opciones iquestydice que son divertidos

Siacute Vd ha visto un ejemplo del humor de los hackers1 Ademaacutes miacuterelo desde el ladopositivo no hay comandos del MSshyDOS equivalentes a eacutestos Si los necesita tiene queadquirirlos por separado y nunca sabraacute como seraacute su interfaz Aquiacute hay un uacutetil (yeconoacutemico) valor antildeadido iexcliexclasiacute que disfruacutetelo

El conjunto de comandos explicados en este capiacutetulo cubre find que permite al usuariobuscar grupos de ficheros especificados dentro del aacuterbol de directorios tar uacutetil paraempaquetar alguacuten archivo para ser enviado o soacutelo salvado dd el multicopista de bajonivel y sort el cual siacute clasifica ficheros Una uacuteltima condicioacuten estos comandosno estaacuten bajo ninguacuten concepto estandarizados y si bien podriacuteamos encontrar un nuacutecleo deopciones comunes en todos los sistemas IX las versiones (de GNU) que se explican maacutesabajo y Vd puede encontrar en su sistema Linux usualmente poseen muchas maacutescapacidades Por tanto si Vd planea usar otros sistemas operativos UNIX por favor noolvide comprobar la paacutegina del manual del sistema en cuestioacuten para aprender las quizaacutes notan pequentildeas diferencias

111 find el buscador de ficheros

1111 Generalidades

Entre los diversos comandos vistos hasta aquiacute habiacutea algunos que permitiacutean al usuariobajar recursivamente el aacuterbol del directorio para llevar a cabo alguna accioacuten losejemplos canoacutenicos son ls shyR y rm shyR Bien find es el comando recursivo Cada vezque piense Bueno tengo que hacer tal cosa con todos esos ficheros en mi propiaparticioacuten hariacutea mejor en pensar en usar find En cierto sentido el hecho que findencuentre ficheros es solo un efecto secundario su ocupacioacuten real es evaluar

_____________________________________________

1 NT La palabra Hacker en este contexto se refiere a una persona con profundosconocimientos de informaacutetica

La estructura baacutesica del comando es como sigue

shy find ruta [ ] expresioacuten [ ]

Esto es al menos en la versioacuten de GNU otras versiones no permiten especificar maacutes queuna ruta y ademaacutes es muy infrecuente la necesidad de hacer tal cosa La explicacioacutenburda de la sintaxis del comando es bastante simple Vd indica desde doacutende quiereempezar la buacutesqueda (la parte de la ruta con el find de GNU puede omitir esto y seraacute

tomado por defecto el directorio en uso ) y que clase de buacutesqueda quiere realizar (laparte de la expresioacuten)

El comportamiento estaacutendar del comando es un poco engantildeoso por lo que maacutes vale tenerloen cuenta Supongamos que en su directorio principal de usuario existe un directoriollamado basura el cual contiene un fichero foobar Vd felizmente escribe find shynamefoobar (lo que como puede adivinar busca ficheros llamados foobar) y obtiene nadamaacutes que otra vez el prompt El problema reside en el hecho de que find es por defecto uncomando silencioso soacutelo devuelve 0 si la buacutesqueda fue completada (con o sin haberencontrado algo) o un valor distinto de cero si hubiera habido alguacuten problema Esto noocurre con la versioacuten que Vd puede encontrar en el Linux pero de todas maneras es uacutetilrecordarlo

1112 Expresiones

La parte de la expresioacuten puede ser dividida en cuatro grupos diferentes de palabrasclave opciones tests acciones y operadores Cada uno de ellos puede devolver un valorverdaderofalso junto con un efecto secundario La diferencia entre los grupos semuestra a continuacioacuten

opciones afecta a la funcioacuten general de find maacutes que al procesamiento de un solofichero Un ejemplo es shyfollow el cual instruye a find para seguir enlaces simboacutelicosen vez de soacutelo presentar el nodoshyi Siempre devuelven verdadero

tests son verdaderos tests (por ejemplo shyempty comprueba si el fichero estaacute vaciacuteo) ypuede devolver verdadero o falso

acciones tienen tambieacuten un efecto secundario sobre el nombre del fichero consideradoPueden asimismo devolver verdadero o falso

operadores no devuelven realmente un valor (convencionalmente pueden ser consideradoscomo verdaderos) y se usan para construir expresiones sinteacuteticas Un ejemplo es shyor el cual hace la OR loacutegica de las dos subexpresiones a su lado Note que cuando seyuxtaponen expresiones estaacute involucrada una shyand

Debe advertir que find depende del inteacuterprete de comandos para tener la liacutenea de comandosanalizada sintaacutecticamente esto significa que todas las palabras clave deben serintroducidas entre espacios en blanco y ademaacutes que hay un montoacuten de caracteres bonitosque deberaacuten precederse de escape si no seriacutean destrozados por el propio inteacuterprete decomandos Cada viacutea de escape (barra invertida simples y dobles comillas) estaacute bien enlos ejemplos las palabras clave de un solo caraacutecter se sentildealizaraacuten en general mediantecon una barra invertida porque es la manera maacutes simple (al menos en mi opinioacuten iexclY soyyo quien estaacute escribiendo estas notas)

1113 Opciones

Aquiacute estaacute la lista de todas las opciones conocidas de la versioacuten GNU de find Recuerdeque siempre devuelven verdadero

shydaystart mide el tiempo transcurrido no desde hace 24 horas si no desde la uacuteltimamedianoche

Un auteacutentico hacker probablemente no entenderaacute la utilidad de tal opcioacuten pero untrabajador que programa de ocho a cinco si lo apreciaraacute

shydepth procesa el contenido de cada directorio antes que el directorio en si A decirverdad no conozco muchos usos de esto aparte de una emulacioacuten del comando rm shyF (por

supuesto Vd no puede borrar un directorio antes de que todos sus ficheros sean borradostambieacuten

shyfollow respeta (es decir sigue) los enlaces simboacutelicos Implica la opcioacuten shynoleaf ver abajo

shynoleaf desactiva una optimizacioacuten que dice Un directorio contiene dos subdirectoriosmenos que su cuenta de enlaces riacutegidos2 Si el mundo fuera perfecto todos losdirectorios seriacutean referenciados por cada uno de sus subdirectorios (a causa de la opcioacuten) como dentro de siacute mismo y por su nombre real desde su directorio padre

Esto significa que cada directorio debe ser referenciado al menos dos veces (una por siacutemismo otra por su directorio padre) y cualquier referencia adicional es porsubdirectorios En la praacutectica sin embargo los enlaces simboacutelicos y los sistemas defichero distribuidos3 pueden alterar esto Esta opcioacuten hace que find funcione ligeramentemaacutes despacio pero debe dar los resultados esperados

shymaxdepth niveles shymindepth niveles donde niveles es un entero no negativo Indicanrespectivamente que a lo sumo o que al menos niveles de directorios deberiacutean explorarseUn par de ejemplos son obligados shymaxdepth 0 indica que el comando deberiacutea realizarsesoacutelo sobre los argumentos de la liacutenea de comandos es decir sin bajar recursivamente elaacuterbol de directorios shymindepth 1 inhibe el procesamiento del comando para losargumentos en la liacutenea de comandos pero se consideran todos los otros ficheros debajo

shyversion imprime la versioacuten en uso del programa

shyxdev el cual es un nombre engantildeoso instruye a find para no cruzarse de dispositivo4es decir no cambiarse de sistema de ficheros Es muy uacutetil cuando se tiene que buscaralgo en el sistema de ficheros raiacutez en muchas maacutequinas es una particioacuten algo pequentildeapero sino iexclun find buscariacutea en la estructura entera Podemos asiacute evitar lossistemas de archivo que no son promisorios

_____________________________________________

2 NT hard link count

3 Los sistemas de fichero distribuidos permiten a los ficheros mostrarse como si fueranlocales a una maacutequina cuando realmente estaacuten situados en alguacuten otro lugar

4 NT to cross device

1114 Test

Los dos primeros test son muy simples de comprender shyfalse siempre devuelve falsomientras que shytrue siempre devuelve verdadero Otros test que no necesitan laespecificacioacuten de un valor son shyempty el cual devuelve verdadero si el fichero estaacutevaciacuteo y el par shynouser shynogroup los cuales devuelven verdadero en el caso queninguna entrada en etcpasswd o etcgroup cuadre con el identificador de usuariogrupodel propietario del fichero Veamos un problema comuacuten en los sistemas multiusuario seborra un usuario pero los ficheros pertenecientes a eacutel permanecen en la parte maacutesextrantildea de los sistemas de ficheros y debido a las leyes de Murphy ocupan mucho espacio

El par de test que hemos visto en uacuteltimo lugar nos permitiraacute encontrar esos archivos Porsupuesto es posible buscar un usuario o grupo especiacutefico Los test son shyuid nn y shygidnn Desafortunadamente no es posible dar directamente el nombre del usuario sino quees necesario usar el identificador numeacuterico nn

Ademaacutes estaacute permitido usar las formas +nn que significa un valor estrictamente maacutesgrande que nn y shynn que significa un valor estrictamente maacutes pequentildeo que nn Estoes bastante estuacutepido en el caso de identificadores de usuario5 pero se volveraacute praacutecticocon otros test

Otra opcioacuten uacutetil es shytype c la cual devuelve verdadero si el fichero es del tipoespecial de caraacutecter Los mnemoacutenicos para las posibles selecciones son las mismas letrasque se encuentran en ls entonces tenemos bloque cuando el fichero es uno especial debloque directorio pipes para tuberiacuteas designadas6 link para enlaces simboacutelicos ysocketssockets7 Los ficheros regulares se indican con file

Un test relacionado es shyxtype que es similar a shytype excepto en el caso de enlacessimboacutelicos

Si se ha proporcionado la opcioacuten shyfollow se examina el enlace en lugar del ficheroal que se apunta El test shyfstype type no tiene nada que ver en este caso lo que seexamina es el tipo del sistema de ficheros Creo que la informacioacuten se consigue delfichero etcmtab el uacutenico que presenta los sistemas de ficheros montados estoy seguroque los tipos nfs tmp msdos y ext2 estaacuten entre los reconocidos

Los test shyinum nn y shylinks nn examinan si el fichero tiene nuacutemero de nodoshyi nn onn enlaces mientras que shysizenn es verdadero si el fichero tiene nn bloques de 512bytes asignados (Bueno no precisamente para ficheros disgregados los bloques noasignados tambieacuten se cuentan)

Como hoy en diacutea el resultado de ls shys no siempre se mide en trozos de 512 bytes (Linuxpor ejemplo usa 1 kbyte como la unidad) es posible adicionar a nn el caracter b elcual significa contar en bytes o k contar en kilobytes

Los bits de permiso son examinados a traveacutes del test shyperm mode Si el modo no estaacuteantecedido por un signo entonces los bits de permiso del fichero deben cuadrarexactamente con ellos

Un shy al principio significa que todos los bits de permiso deben ser puestos a uno perono hace suposiciones sobre los otros un + al principio se satisface soacutelo si cualquierade los bits estaacute a uno

_____________________________________________

5 NT UIDs

6 NT named pipes

7 NT enchufe

iexclUps Olvideacute decir que el modo se escribe en octal o simboacutelicamente como se usa enchmod El proacuteximo grupo de test estaacute relacionado con el tiempo que hace que se hautilizado un fichero por uacuteltima vez Esto viene bien cuando un usuario ha llenado suespacio ya que usualmente hay muchos ficheros que no usaba desde hace antildeos y cuyosignificado ha olvidado El problema es localizarlos y find es la uacutenica esperanza a lavista shyatime nn es verdadero si la uacuteltima vez que se accedioacute al fichero fue hace nndiacuteas shyctime nn si el estado del fichero fue cambiado por uacuteltima vez hace nn diacuteas porejemplo con un chmod y shymtime nn si el fichero fue modificado por uacuteltima vez hace nndiacuteas Algunas veces Vd necesita una marca de tiempo 8 maacutes precisa el test shynewerarchivo se satisface si el fichero considerado ha sido modificado maacutes tarde que elarchivo Por lo tanto Vd soacutelo tiene que usar touch con la fecha deseada y ya estaacute Elfind de GNU antildeade los test shyanewer y shycnewer los cuales se comportan de una manerasimilar y los test shyamin shycmin y shymmin que cuentan el tiempo en minutos en vezde periacuteodos de 24 horas

Por uacuteltimo pero no menos importante el test que yo uso maacutes a menudo shyname patroacuten esverdadero si el nombre del fichero concuerda exactamente con patroacuten el cual es maacutes omenos el uacutenico que se usariacutea en un ls estaacutendar (iquestPor queacute maacutes o menos Porque porsupuesto Vd tiene que recordar que todos los paraacutemetros son procesados por elinteacuterprete de comandos y esos encantadores metacaracteres sufren una expansioacuten Asiacute untest como shyname foo no devolveraacute lo que Vd desea y Vd deberiacutea escribir cualquierade los dos shyname foo o shyname foo Este es probablemente uno de los maacutes comuneserrores cometidos por usuarios descuidados asiacute que escriacutebalo en letras GRANDES en supantalla Otro problema es que como con ls no se reconocen los puntos al principio delnombre del archivo Para hacer frente a esto puede usar el test shypath patroacuten el cualno se preocupa acerca de los puntos y barras inclinadas cuando compara la ruta delfichero considerado con patroacuten

1115 Acciones

Hemos dicho que las acciones son aquellas que realmente hacen algo Bueno shyprune maacutesbien no hace nada es decir al descender el aacuterbol de directorios (a menos que se leagregue shydepth ) Se la encuentra usualmente junto con shyfstype para elegir entrevarios sistemas de ficheros a aquellos que deberiacutean examinarse

Las otras acciones pueden ser divididas en dos amplias categoriacuteas Acciones que imprimenalgo La maacutes obvia de estas y en realidad la accioacuten por defecto de find es shyprintque imprime el nombre del(os) fichero(s) que concuerde(n) con las otras condiciones en laliacutenea de comandos y devuelve verdadero Una variante sencilla de shyprint es shyfprintarchivo en la cual se usa archivo en vez de la salida estaacutendar otra es shyls listael fichero en uso en el mismo formato que ls shydils shyprintfformato se comporta maacuteso menos como la funcioacuten de C printf() para que se pueda especificar que formato deberiacuteatener la salida y shyfprintf archivo formato hace lo mismo pero escribieacutendolo enarchivo Estas acciones tambieacuten devuelven verdadero

_____________________________________________

8 NT timestamp

Acciones que ejecutan algo Su sintaxis es un poco extrantildea y su uso estaacute muy extendidopor lo que por favor consideacuterelas

shyexec comando ejecuta el comando y la accioacuten devuelve verdadero si el estadoretornado por el comando es 0 lo que significa que la ejecucioacuten fue correcta La razoacutenpara el es bastante loacutegica find no sabe donde termina el comando y el truco deponer la accioacuten ejecutable al final del comando no es aplicable Bueno la mejor manerapara sentildealar el final del comando es usar el caracter que usa el inteacuterprete de comandospara este fin que es pero por supuesto un punto y coma solo en la liacutenea decomandos seriacutea comido por el inteacuterprete de comandos y nunca llegariacutea a find asiacute quetienen que ser precedidos de escape La segunda cosa a recordar es como especificar elnombre del fichero en uso dentro del comando ya que probablemente Vd hizo todo elesfuerzo al construir la expresioacuten para hacer algo y no soacutelo para ver la hora Esto sehace por medio de la cadena de caracteres Algunas versiones antiguas de findrequieren que coloque las llaves entre espacios en blanco (no muy praacutectico si Vdnecesita por ejemplo la ruta entera y no soacutelo el nombre del fichero) pero con el findde GNU podriacutea ser cualquier lugar de la cadena de caracteres que compone el comando iquestYno deberiacutea estar precedido de escape o entrecomillado seguramente se estaraacutepreguntando Asombrosamente yo nunca tuve que hacer esto ni bajo tcsh ni bajo bash (shno considera shy y como caraacutecteres especiales asiacute que no es ni mucho menos un problema)Mi idea es que los inteacuterpretes de comandos saben que shy no es una opcioacuten que tengasentido por tanto no intentan expandirlas afortunadamente para find que puede obtenerlaintacta shyok comando se comporta como shyexec con la diferencia que para cadafichero seleccionado se pregunta al usuario que confirme el comando si la respuestaempieza por y o Y se ejecuta de otra manera no y la accioacuten devuelve falso

1116 Operadores

Hay una cierta cantidad de operadores aquiacute hay una lista en orden de prioridaddecreciente

( expr )

Fuerza el orden de prioridad Los pareacutentesis deben por supuesto estar entrecomillas ya que tambieacuten son muy significativos para el inteacuterprete decomandos

expr

shynot expr

Cambia el verdadero valor de la expresioacuten esto es si expr es verdadera sevuelve falsa El signo de exclamacioacuten no tiene que ser precedido de escapeporque estaacute seguido por un espacio en blanco

expr1 expr2

expr1 shya expr2

expr1 shyand expr2

Todas corresponden con la operacioacuten loacutegica AND El caso maacutes comuacuten es elprimero en el cual estaacute impliacutecita expr2 no se evaluacutea si expr1 es falsa

expr1 shyo expr2

expr1 shyor expr2

corresponden a la operacioacuten loacutegica OR expr2 no es evaluada si expr1 esverdadera

expr1 expr2

es la declaracioacuten de lista ambas expr1 y expr2 se evaluacutean (junto con todoslos efectos secundarios iexclpor supuesto) y el valor final de la expresioacuten esel de expr2

1117 Ejemplos

Siacute find tiene demasiadas opciones lo se Pero hay un montoacuten de casos preparados quevalen la pena recordar porque son usados muy a menudo Veamos algunos de ellos

$ find shyname foo shyprint

encuentra todos los nombres de fichero que empiezan con foo Si la cadena de caracteresestaacute incluida en el nombre probablemente tiene maacutes sentido escribir algo como fooen vez de foo

$ find usrinclude shyxtype f shyexec grep foobar

devnull shy

Es un grep ejecutado recursivamente que empieza del directorio usrinclude En estecaso estamos interesados tanto en ficheros regulares como en enlaces simboacutelicos queapuntan a ficheros regulares por tanto el test shyxtype Muchas veces es maacutes simpleevitar especificarlo especialmente si estamos bastante seguros cuales ficheros binariosno contienen la cadena de caracteres deseada

(iquestY por queacute el devnull en el comando Es un truco para forzar al grep a escribir elfichero del nombre donde se ha encontrado un emparejamiento El comando grep se aplica acada fichero con una invocacioacuten diferente y por tanto no cree que sea necesario mostrara la salida el nombre del fichero Pero ahora hay dos ficheros esto es iexclel activo ydevnull Otra posibilidad podriacutea ser redirigir la salida9 del comando a xargs y dejarlellevar a cabo el grep Yo lo intenteacute e hice pedazos completamente mi sistema de ficheros(junto con estas notas que estoy intentando recuperar a mano shy( )

$ find shyatime +1 shyfstype ext2 shyname core

shyexec rm shy

Es un trabajo claacutesico para la tabla de tareas preplaneadas Borra todos los ficherosllamados core en el sistema de ficheros del tipo ext2 al cual no se ha accedido en lasuacuteltimas 24 horas Es posible que alguien quiera usar los ficheros de imagen de memoria10para realizar un volcado post mortem pero nadie podriacutea recordar lo que estuvo haciendodespueacutes de 24 horas

$ find home shyxdev shysize +500k shyls gt piggies

_____________________________________________

9 NT to pipe

10 NT core file

Es uacutetil para ver quieacuten tiene esos archivos que atascan el sistema de ficheros Note eluso de shyxdev como soacutelo estamos interesados en un sistema de ficheros no es necesariodescender otro sistema de ficheros montado bajo home

1118 Una uacuteltima palabra

Tenga en mente que find es un comando que consume mucho tiempo ya que tiene que accedera cada uno de los nodosshyi del sistema para realizar su operacioacuten Por lo tanto es sabiocombinar cuantas operaciones sean posibles en una uacutenica invocacioacuten de find especialmenteen las tareas de mantenimiento interno que usualmente se administran mediante un

trabajo de la tabla de tareas planificadas Un ejemplo informativo es el siguientesupongamos que queremos borrar los ficheros que acaban en BAK y cambiar la proteccioacuten detodos los directorios a 771 y todos los ficheros que acaban en sh a 755 Y quizaacutestengamos montado el sistema de ficheros NFS en un enlace telefoacutenico y no queramosexaminar los ficheros ahiacute (iquestPor queacute escribir tres comandos diferentes La manera maacutesefectiva para realizar la tarea es eacutesta

$ find ( shyfstype nfs shyprune ) shyo

( shytype d shya shyexec chmod 771 shy ) shyo

( shyname BAK shya shyexec binrm shy ) shyo

( shyname sh shya shyexec chmod 755 shy )

Parece feo (iexcly con mucho abuso de barras invertidas) pero miraacutendolo fijamente revelaque la loacutegica subyacente es bastante sencilla Recuerde lo que se hace es una evaluacioacutenverdaderofalso el comando introducido es soacutelo un efecto secundario Pero esto significaque se ejecuta soacutelo si find puede evaluar la parte ejecutable de la expresioacuten esto essoacutelo si la parte izquierda de la subexpresioacuten se evaluacutea como verdadera Asiacute si porejemplo el fichero considerado en el momento es un directorio entonces el primerejecutable se evaluacutea y el permiso del nodoshyi se cambia a 771 de otra manera olvida todoy pasa a la siguiente subexpresioacuten Probablemente es maacutes faacutecil verlo en la praacutectica queescribirlo pero despueacutes de un momento llegaraacute a ser una cosa natural para Vd

112 tar el archivador en cinta

1121 Introduccioacuten

1122 Opciones principales

1123 Modificadores

1124 Ejemplos

113 dd el duplicador de datos

La leyenda dice que allaacute lejos en las nieblas del tiempo cuando el primer UNIX fuecreado sus desarrolladores necesitaron un comando de bajo nivel para copiar datos entredispositivos Como teniacutean prisa decidieron tomar prestada la sintaxis usada en lasmaacutequinas IBMshy360 y desarrollar maacutes tarde un interfaz consistente con la de los otroscomandos El tiempo pasoacute y todos se acostumbraron tanto con la manera extrantildea de usar ddque ya ha quedado asiacute No se si es verdad pero es una bonita historia para contar

1131 Opciones

A decir verdad dd no es totalmente distinto de los otros comandos de UNIX es enrealidad un filtro esto es lee por defecto de la entrada estaacutendar y escribe en lasalida estaacutendar Por tanto si Vd escribe soacutelo dd la terminal se queda quietaesperando una entrada y un |_CtrlshyC_| es la uacutenica cosa con sentido a teclear (paracortarlo)

La sintaxis del comando es como sigue

shy dd [if=archivo_entrada] [of=archivo_salida] [ibs=cant_bytes] [obs=cant_bytes]

[bs=cant_bytes] [cbs=cant_bytes] [skip=cant_bloques]

[seek=cant_bloques] [count=cant_bloques] [conv=ascii ebcdic ibm block

unblock lcase ucase swab noerror notrunc sync]

Todas las opciones son de la forma opcioacuten=valor No se permite ninguacuten espacio ni antes nidespueacutes del signo de igual esto soliacutea ser molesto porque el inteacuterprete de comandos noexpandiacutea un nombre de fichero en esta situacioacuten pero la versioacuten de bash presente enLinux es bastante inteligente asiacute que Vd no tiene que preocuparse por eso Es tambieacutenimportante recordar que todos los valores numerables (cant_bytes y cant_bloques citadosarriba) pueden ser seguidos por un multiplicador

Las opciones posibles son b para bloque el cual multiplica por 512 k para kilobytes(1024) w para palabra (2) y xm que multiplica por m

El significado de las opciones se explica a continuacioacuten

if=archivo_entrada y of=archivo_salida instruye a dd a respectivamente leerde archivo_entrada y escribir a archivo_salida En el uacuteltimo caso el ficherode salida es truncado al valor dado por seek o si la palabra clave noestaacute presente a 0 (esto es borrado) antes de realizar la operacioacuten Miretambieacuten la opcioacuten notrunc

ibs=nn y obs=nn especifican cuantos bytes deben ser leiacutedos o escritos a lavez Creo que por defecto es 1 bloque esto es 512 bytes pero no estoy muyseguro de ello desde luego funciona de esa manera con ficheros planos11Estos paraacutemetros son muy importantes cuando se usa dispositivos especialescomo entrada o salida por ejemplo leer de la red deberiacutea establecer ibs a10 kbyte mientras que una disquetera 12 de 35de alta densidad tiene comotamantildeo natural de bloque 18 kbyte Fallar al establecer estos valores podriacutearepercutir no soacutelo a largo plazo al llevar a cabo el comando sino inclusiveen errores de expiracioacuten de plazo asiacute que tenga cuidado

bs=nn tanto lee y escribe nn bytes a la vez Este no hace caso a las palabrasclave ibs y obs

cbs=nn establece el buffer de conversioacuten a nn bytes Este buffer se usacuando se traduce de ASCII a EBCDIC o desde un dispositivo no ablocado a unoablocado13 Por ejemplo los ficheros creados bajo VMS tienen a menudo untamantildeo de bloque de 512 asiacute que se tiene que poner cbs a 1b cuando se leeuna cinta externa de VMS iexclEspero que Vd no tenga que entretenerse en estascosas

skip=nbl y seek=nbl le dicen al programa que omita nbl bloquesrespectivamente al final de la entrada y al principio de la salida Porsupuesto el uacuteltimo caso tiene sentido si se da la conversioacuten notrunc (verabajo) Cada tamantildeo de bloque es el valor de ibs (obs) Cuidado si noestablece el ibs y escribe skip=1b Vd estaacute realmente omitiendo 512x512bytes esto es 256KB No es precisamente lo que Vd queriacutea iquestno

count=nbl pretende copiar soacutelo nbl bloques de la entrada cada uno de lostamantildeos dados por ibs Esta opcioacuten junto con la previa se vuelve uacutetil sipor ejemplo Vd tiene un fichero corrupto y quiere recuperar cuanto seaposible de eacutel Vd debe omitir la parte ilegible y copiar lo que resta

conv=conversioacuten[conversioacuten ] transforma el fichero de la manera que seespecifica en sus argumentos Transformaciones posibles son ascii queconvierte de EBCDIC a ASCII ebcdic y ibm las cuales realizan unaconversioacuten inversa (iexclsiacute no existe una uacutenica conversioacuten de EBCDIC a ASCII Laprimera es la estaacutendar pero la segunda funciona mejor cuando se imprimenficheros en una impresora IBM) block la cual rellena registros terminadosen nueva liacutenea del tamantildeo de cbs reemplazando los cambios de liacutenea conespacios finales unblock que realiza lo contrario (elimina espaciosfinales y los reemplaza con cambios de liacutenea) lcase y ucase paraconvertir a minuacutesculas y mayuacutesculas respectivamente swab que intercambiacada par de bytes de entrada (por ejemplo para usar un fichero que contieneenteros de tipo short escritos en una maacutequina 680x0 en una maacutequina basada enIntel se necesita dicha conversioacuten) noerror para continuar procesando auacutendespueacutes de encontrar errores sync que rellena los bloques de entrada deltamantildeo de ibs con caracteres NUL finales

_____________________________________________

11 NT plain files

12 NT floppy

13 N del T ablocado se refiere a la caracteriacutestica de agrupamiento en bloques de losdatos en el dispositivo

1132 Ejemplos

El ejemplo canoacutenico es con el uacutenico que Vd probablemente ha chocado hasta ahora cuandointentoacute crear el primer disco de Linux como escribir a un disco sin un sistema deficheros MSshyDOS La solucioacuten es simple

$ dd if=diskimg of=devfd0 obs=18k count=80

Decidiacute no usar ibs porque no se cual es el mejor tamantildeo de bloque para un disco duropero en este caso no habriacutea hecho ninguacuten perjuicio si en vez de obs usara sencillamenteel bs inclusive podriacutea haber sido un poquito maacutes raacutepido Observe la explicacioacuten delnuacutemero de sectores a escribir (18 kbyte es lo que ocupa un sector asiacute que count sepone a 80) y el uso del nombre de bajo nivel del dispositivo de la disquetera

Otra aplicacioacuten uacutetil de dd estaacute relacionada con la copia de seguridad de la redSupongamos que estamos en una maacutequina alfa y que en la maacutequina beta estaacute la unidad decinta devrst0 con un fichero tar que estamos interesados en obtener Tenemos los mismosprivilegios en ambas maacutequinas pero no hay espacio en beta para volcar 14 el fichero tarEn este caso podriacuteamos escribir

$ rsh beta dd if=devrst0 ibs=8k obs=20k _ tar xvBf shy

para hacer en un solo paso la operacioacuten completa En este caso hemos usado lasfacilidades de rsh para realizar la lectura de la cinta Los tamantildeos de entrada y salidaestaacuten establecidos a los valores por defecto por estas operaciones esto es 8 kbyte parala lectura de la cinta y 20 kbyte para la escritura en ethernet desde el punto de vistade la otra cara del tar hay el mismo flujo de bytes el cual podriacutea ser obtenido de la

cinta excepto el hecho de que llega de una manera bastante erraacutetica y la opcioacuten B esnecesaria

iexclAh Casi lo olvidaba No creo para nada que dd sea un acroacutenimo de data duplicatorpero al menos es una manera divertida de recordar su significado

114 sort el clasificador de datos

1141 Introduccioacuten

1142 Opciones

1143 Ejemplos

_____________________________________________

14 NT dump

Capiacutetulo 12

Errores equivocaciones bugs y otras molestias

Unix nunca fue disentildeado para evitar que la gente hiciera cosas estuacutepidas porque esapoliacutetica les habriacutea evitado tambieacuten hacer cosas inteligentes

Doug Gwyn

121 Evitando errores

Muchos usuarios hablan de su frustracioacuten con el sistema operativo Unix en alguna ocasioacutena menudo a causa de lo que ellos mismos han hecho Una caracteriacutestica del sistemaoperativo Unix que muchos usuarios adoran cuando estaacuten trabajando bien y odian despueacutesde una sesioacuten hasta bien avanzada la noche es que muy pocas oacuterdenes piden confirmacioacutenCuando un usuario estaacute despierto y funcionando raramente piensa sobre ello y esto esuna ventaja ya que le permite trabajar maacutes eficientemente

De todos modos hay algunas desventajas rm y mv no piden nunca confirmacioacuten y estoconduce frecuentemente a problemas Por eso veamos una pequentildea lista que puede ayudarlea evitar el desastre total

o iexclTenga copias de seguridad Esto va dirigido especialmente a sistemas de un solousuario iexcltodos los administradores de sistema deben realizar copias de seguridad de susistema regularmente Una vez a la semana es suficiente para salvar muchos ficheros Paramaacutes informacioacuten consulte The Linux System Administrators Guide

o Los usuarios individuales deben tener sus propias copias de seguridad si es posibleSi usa maacutes de una maacutequina regularmente intente mantener copias actualizadas de todos susficheros en cada una de las maacutequinas Si tiene acceso a una unidad de disquetes puedehacer copias de seguridad en disquetes de su material criacutetico En el peor de los casosmantenga copias adicionales del material maacutes importante que haya en su cuenta en undirectorio separado

o Piense sobre las oacuterdenes especialmente las destructivas como mv rm y cp antes deactuar Debe ser tambieacuten cuidadoso con las redirecciones (gt) sobreescribiraacuten susficheros cuando no esteacute prestando atencioacuten Incluso el maacutes inofensivo de los comandospuede convertirse en siniestro

homelarryreport$ cp reportshy1992 reportshy1993 backups

puede convertirse faacutecilmente en desastre

homelarryreport$ cp reportshy1992 reportshy1993

o El autor tambieacuten recomienda a partir de su propia experiencia personal no hacerlimpieza de ficheros a altas horas de la madrugada iquestQue su estructura de directoriosparece un poco desordenada a la 132am Deacutejelo estar un poco de desorden nunca ha dantildeadoun ordenador

o Siacutegale la pista a su directorio actual A veces el prompt que estaacute usando no muestraen que directorio estaacute usted trabajando y el peligro acecha iexclEs triste leer un mensajeen compunixadmin1 sobre un usuario root que estaba en en vez de en tmp Por ejemplo

mousehousegt pwd

etc

mousehousegt ls tmp

passwd

mousehousegt rm passwd

La anterior serie de comandos podriacutea hacer muy infeliz al usuario al ver como eliminaronel fichero de contrasentildeas de su sistema iexclSin eacutel la gente no puede acceder

122 Queacute hacer cuando algo va mal

123 No es fallo tuyo

Por desgracia para los programadores del mundo no todos los problemas son a causa deerrores del usuario Unix y Linux son sistemas complicados y todas las versionesconocidas tienen errores de programacioacuten (bugs2) Algunas veces esos errores sondifiacuteciles de encontrar y soacutelo aparecen bajo ciertas circunstancias

Ante todo iquestqueacute es un error Un ejemplo de error es si le pide al ordenador que calcule5+3 y contesta 7 Aunque este es un ejemplo trivial de que puede ir mal la mayoriacuteade los errores en programas de computadoras se relacionan con la aritmeacutetica en algunaforma extremadamente extrantildea

_____________________________________________

1 Un foro de discusioacuten internacional en Usenet que trata sobre la administracioacuten decomputadoras Unix

2 Bug (polilla fam bicho) Se denomina asiacute a los errores que aparecen en un programaCuenta la leyenda que cuando los ordenadores eran unos monstruos llenos de vaacutelvulas queocupaban habitaciones enteras un teacutecnico que trataba de resolver un error en el Mark IIde Harvard detectoacute que la causa era una polilla de verdad que se habiacutea colado entre lasvaacutelvulas y provocaba pequentildeos cortocircuitos al revolotear de un lado a otro

1231 Cuando hay un error

Si la computadora da una respuesta erroacutenea (iexclcompruebe que la respuesta es erroacutenea) o sebloquea eso es un error Si cualquier programa se bloquea o da un mensaje de error delsistema operativo eso es un error

Si un comando no finaliza nunca su ejecucioacuten puede ser un error pero debe asegurarse deque no le ha pedido que esteacute durante mucho tiempo haciendo lo que usted queriacutea quehiciera Pida ayuda si no sabe lo que haciacutea el comando

Algunos mensajes le alertaraacuten de la existencia de errores Algunos mensajes no sonerrores Revise la seccioacuten 34 y el resto de la documentacioacuten para estar seguro de que noson mensajes informativos normales Por ejemplo mensajes como disk full (disco lleno)o lp0 on fire (lp0 ardiendo) no son problemas de software sino algo incorrecto en suhardware no hay suficiente espacio libre en el disco o la impresora estaacute mal

Si no puede encontrar informacioacuten sobre un programa es un error en la documentacioacuten ydeberiacutea ponerse en contacto con el autor de dicho programa y ofrecerse para escribirlausted mismo Si algo estaacute incorrecto en la documentacioacuten existente3 es un error en esemanual Si algo aparece incompleto o poco claro en el manual eso es un error

Si no puede vencer al gnuchess al ajedrez es un fallo de disentildeo en el algoritmo deajedrez que usted usa pero no necesariamente un error en su cerebro

1232 Notificando un error

Cuando esteacute seguro de haber encontrado un error es importante asegurarse de que suinformacioacuten llega al lugar adecuado Intente encontrar que programa causa el error si nopuede encontrarlo tal vez pueda pedir ayuda en composlinuxhelp o compunixmisc Unavez encuentre el programa intente leer la paacutegina del manual para ver quien lo escribioacute

El meacutetodo preferido para enviar notificaciones de errores en el mundo Linux es viacutea correoelectroacutenico Si no tiene acceso al correo electroacutenico puede ponerse en contacto con lapersona que le suministroacute Linux eventualmente encontraraacute alguien que o bien tienecorreo electroacutenico o vende Linux comercialmente y por tanto quiere eliminar el mayornuacutemero de errores posibles Recuerde en todo caso que nadie estaacute obligado a corregirninguacuten error a menos que tenga un contrato

Cuando enviacutee una notificacioacuten de error incluya toda la informacioacuten que se le ocurraEsto incluye

o Una descripcioacuten de lo que usted piensa que es incorrecto Por ejemplo Obtengo 5cuando calculo 2+2 o Dice segmentation violation shyshy core dumped Es importante decirexactamente que esteacute sucediendo para que el responsable del mantenimiento pueda corregirsu error

o Incluya cualquier variable de entorno relevante

o La versioacuten de su nuacutecleo (mire en el fichero procversion) y sus bibliotecas de sistema(mire en el directorio lib si no puede descifrarlo enviacutee un listado de lib)

o iquestCoacutemo ejecutoacute el programa en cuestioacuten o si era un error del nuacutecleo iquestqueacute estabahaciendo en ese momento

o Toda la informacioacuten complementaria Por ejemplo el comando w puede no mostrar elproceso actual para ciertos usuarios No diga simplemente w no funciona para ciertousuario El error podriacutea ocurrir debido a que el nombre del usuario tiene ochocaracteres de longitud o cuando estaacute accediendo a traveacutes de la red En su lugar diga wno muestra el proceso actual para el usuario greenfie cuando accede a traveacutes de la red

o Y recuerde sea amable La mayoriacutea de la gente trabaja en el software libre por elgusto de hacerlo y porque tienen un gran corazoacuten No los amargue la comunidad Linux hadesilusionado ya a demasiados desarrolladores y auacuten es pronto en la vida del Linux

_____________________________________________

3 iexclEspecialmente en eacutesta

Apeacutendice A

Introduccioacuten a vi

vi (pronunciado vi ai en ingleacutes o uve i) es en realidad el uacutenico editor que se puedeencontrar en praacutecticamente cualquier instalacioacuten de Unix Este editor fue escritooriginalmente en la Universidad de California en Berkeley y se puede encontrar versionesen casi cualquier edicioacuten de Unix incluido Linux Al principio cuesta un pocoacostumbrarse a eacutel pero tiene muchas caracteriacutesticas muy potentes En generalrecomendamos que un nuevo usuario aprenda Emacs que generalmente es maacutes faacutecil de usarSin embargo la gente que usa maacutes de una plataforma o que encuentra que no le gustaEmacs puede estar interesada en aprender vi

Es necesaria una breve resentildea histoacuterica de vi para comprender coacutemo la tecla |_k_| puedesignificar mover el cursor arriba una liacutenea y porqueacute hay tres diferentes modos de uso Sino le apetece aprender a usar el editor los dos tutoriales le llevaraacuten de ser un crudoprincipiante hasta tener el suficiente conocimiento del grupo de comandos que usted puedellegar a usar El capiacutetulo tambieacuten incluye una guiacutea de comandos que sirve de uacutetilreferencia para tenerla cerca del terminal

Incluso si vi no se convierte en su editor de texto normal el conocimiento de su uso noseraacute desperdiciado Es casi seguro que el sistema de Unix que use tendraacute alguna variantedel editor vi

Puede ser necesario usar vi mientras instala otro editor como Emacs Muchas herramientasde Unix aplicaciones y juegos usan un subconjunto del grupo de comandos de vi

A1 Una raacutepida historia de Vi

Los editores de texto en la antiguumledad funcionaban en modo de una liacutenea y se usabantiacutepicamente desde terminales no inteligentes de impresioacuten Un editor tiacutepico que operabaen este modo es Ed El editor es potente y eficiente y usa una cantidad muy pequentildea derecursos del sistema y funcionaba con las pantallas de aquel entonces vi ofrece alusuario una alternativa visual con un grupo de comandos notablemente amplio comparado coned

vi como lo conocemos hoy comenzoacute como el editor de liacutenea ex De hecho ex se ve como unmodo especial de edicioacuten en vi aunque ahora lo contrario es verdad El componente visualde ex puede ser iniciado desde la liacutenea de comando usando el comando vi o desde dentrode ex

El editor exvi fue desarrollado en la universidad de California en Berkeley por WilliamJoy Originalmente se suministraba como una utilidad no soportada hasta su inclusioacutenoficial en la distribucioacuten del Unix ATampT System V Se ha ido haciendo cada vez maacutespopular incluso con la competencia de los modernos editores de pantalla completa

Debido a la popularidad de vi existen muchas variantes cloacutenicas y se pueden encontrarvarias versiones para la mayoriacutea de los sistemas operativos No es el propoacutesito de estecapiacutetulo el incluir todos los comandos disponibles bajo vi o sus variantes Muchos cloneshan aumentado y modificado el comportamiento original de vi La mayoriacutea de los clones nosoportan todos los comandos originales de vi

Si tiene un buen conocimiento de trabajo con ed entonces vi presenta una curva deaprendizaje maacutes suave Aunque usted no tenga ninguna intencioacuten de usar vi como su editorregular el conocimiento baacutesico de vi solamente puede serle una ventaja

A2 Raacutepido tutorial de Ed

El propoacutesito de esta guiacutea es que usted empiece a usar ed ed estaacute disentildeado para ser faacutecilde usar y requiere poco entrenamiento para comenzar La mejor manera de aprender espracticando asiacute que siga las instrucciones y pruebe el editor antes de descontar susventajas praacutecticas

A21 Crear un fichero

ed soacutelo puede editar un fichero a la vez Siga el siguiente ejemplo para crear su primerfichero de texto usando ed

homelarry$ ed

a

Este es mi primer fichero de texto usando Ed

Esto es divertido de verdad

w primerotxt

q

homelarry$

Ahora puede verificar el contenido del fichero usando la utilidad de concatenacioacuten deUnix

homelarry$ cat primerotxt

El ejemplo anterior ha mostrado un nuacutemero de puntos importantes Cuando invoca ed como enel ejemplo tendraacute un fichero vaciacuteo La tecla |_a_| se usa para antildeadir texto al ficheroPara finalizar la sesioacuten de entrada de texto se usa un punto |__| en la primera columnadel texto Para salvar el texto a un fichero la tecla |_w_| se usa en combinacioacuten con elnombre del fichero y finalmente la tecla |_q_| se usa para salir del editor

La observacioacuten maacutes importante es que hay dos modos de operacioacuten Al principio el editorestaacute en modo de comandos Un comando se define por caracteres para asegurarse de cualesson las intenciones del usuario ed usa un modo de texto y un modo de comando

A22 Editar un fichero existente

Para antildeadir una liacutenea de texto a un fichero existente siga el siguiente ejemplo

homelarry$ ed primerotxt

a

Esta es una nueva linea de texto

w

q

Si comprueba el fichero con cat veraacute que hay una nueva liacutenea insertada entre las dosliacuteneas originales iquestCoacutemo supo ed doacutende poner la nueva liacutenea de texto

Cuando ed lee el fichero se acuerda de cual es la liacutenea actual El comando |_a_| antildeadiraacuteel texto despueacutes de la liacutenea actual ed tambieacuten puede poner el texto antes de la liacuteneaactual con la tecla |_i_| El efecto seraacute la insercioacuten del texto antes de la liacuteneaactual

Ahora es faacutecil ver que ed opera en el texto liacutenea por liacutenea Todos los comandos se puedenaplicar a una liacutenea elegida

Para antildeadir una liacutenea de texto al final de un fichero

homelarry$ ed primerotxt

$a

La ultima linea de texto

w

q

El modificador de comandos ||_$_|| le dice a ed que antildeada la liacutenea despueacutes de la uacuteltimaliacutenea Para antildeadir la liacutenea despues de la primera liacutenea el modificador seriacutea |_1_| Ahoratenemos la posibilidad de seleccionar la liacutenea para antildeadir una liacutenea de texto despueacutes delnuacutemero de liacutenea o insertar una liacutenea antes del nuacutemero de liacutenea

iquestCoacutemo sabemos lo que hay en la liacutenea actual El comando |_p_| muestra el contenido de laliacutenea actual Si quiere hacer que la liacutenea actual sea la liacutenea 2 y a la vez quiere verel contenido de esa liacutenea entonces haga lo siguiente

homelarry$ ed primerotxt

2p

q

A23 Nuacutemeros de liacutenea en detalle

Ha visto coacutemo mostrar el contenido de la liacutenea actual usando el comando |_p_| Tambieacutensabemos que hay modificadores del nuacutemero de liacutenea para los comandos Para ver el texto dela segunda liacutenea

2p

Hay algunos modificadores especiales que se refieren a posiciones que pueden cambiardurante el tiempo que edita un fichero El ||_$_||es la uacuteltima liacutenea del texto Para verla uacuteltima liacutenea

$p

El nuacutemero de liacutenea actual usa un siacutembolo de modificador especial ___|_| Para mostrar laliacutenea actual usando un modificador

p

Esto puede parecer innecesario aunque es muy uacutetil en el contexto de los grupos denuacutemeros de liacutenea

Para mostrar el contenido del texto desde la liacutenea 1 a la liacutenea 2 se le debe pasar elalcance

12p

El primer nuacutemero se refiere a la liacutenea de comienzo y el segundo se refiere a la uacuteltimaliacutenea La liacutenea actual seraacute por consiguiente el segundo nuacutemero del grupo de liacuteneas

Si quiere mostrar el contenido del fichero desde el comienzo hasta la liacutenea actual

1p

Para mostrar el contenido desde la liacutenea actual hasta el final del fichero

$p

Todo lo que queda es mostrar el contenido de todo el fichero y esto queda como unejercicio para usted

iquestCoacutemo puede borrar las dos primeras liacuteneas del fichero

12d

El comando |_d_| borra el texto liacutenea por liacutenea Si usted quisiera borrar el contenidocompleto lo hariacutea con

1$d

Si usted ha hecho muchos cambios y no quiere salvar los contenidos del fichero lo mejores salir del editor sin escribir el fichero antes

La mayoriacutea de los usuarios no usan ed como el principal editor Los editores maacutes modernosofrecen una pantalla completa de edicioacuten y grupos de comandos maacutes flexibles ed ofreceuna buena introduccioacuten a vi y ayuda a explicar coacutemo se originaron los comandos de vi

A3 Raacutepido tutorial de Vi

El propoacutesito de este tutorial es que comience a usar el editor vi Este tutorial asumeque no tiene ninguna experiencia con vi asiacute que le mostraremos los diez comandos maacutesbaacutesicos de vi Estos comandos fundamentales son suficientes para realizar la mayoriacutea desus necesidades de edicioacuten y puede expandir su vocabulario de vi cuanto necesite Serecomienda que tenga un ordenador para practicar seguacuten avanza con el tutorial

A31 Ejecutar vi

Para ejecutar vi simplemente tiene que teclear las letras vi seguidas del nombre defichero que desea crear Veraacute una pantalla con una columna de tildes (~) en el ladoizquierdo vi estaacute ahora en modo de comando Cualquier cosa que teclee seraacute interpretadocomo un comando no como texto que usted desea escribir Para introducir texto tiene queteclear un comando Los dos comandos de entrada baacutesicos son los siguientes

i insertar texto a la izquierda del cursor

a antildeadir texto a la derecha del cursor

Dado que estaacute al comienzo de un fichero vaciacuteo no importa cual de estos usar Escriba unode ellos y despueacutes teclee el siguiente texto (un poema de Augustus DeMorgan encontradoen The Unix Programming Environment por BW Kernighan y R Pike)

Las pulgas grandes tienen pequentildeas pulgasltIntrogt

sobre sus espaldas para que les muerdanltIntrogt

Y las pulgas pequentildeas tienen pulgas maacutes pequentildeasltIntrogt

y asiacute hasta el infinitoltIntrogt

Y las pulgas grandes a su vezltIntrogt

tienen pulgas maacutes grandes sobre las que estarltIntrogt

Mientras que estas de nuevo tienen otras maacutes grandes aunltIntrogt

y maacutes grandes aun y asiacuteltIntrogt

ltEscgt

Fiacutejese que tiene que pulsar la tecla |_Esc_| para finalizar la insercioacuten y volver al modode comando

A32 Comandos de movimiento del cursor

h mueve el cursor un espacio a la izquierda

j mueve el cursor un espacio abajo

k mueve el cursor un espacio arriba

l mueve el cursor un espacio a la derecha

Estos comandos se pueden repetir manteniendo la tecla pulsada Intente mover el cursorpor el texto ahora Si intenta un movimiento imposible por ejemplo pulsar la tecla|_k_| cuando el cursor estaacute en la liacutenea superior la pantalla parpadearaacute momentaacuteneamenteo el terminal sonaraacute No se preocupe no muerde y su fichero no saldraacute dantildeado

A33 Borrar texto

x borra el caraacutecter que hay en el cursor

dd borra la liacutenea donde estaacute el cursor

Mueva el cursor a la primera liacutenea y poacutengalo de modo que esteacute bajo la n Pulse la letra|_x_| y la n desapareceraacute Ahora pulse la letra |_i_| para cambiarse al modo deinsercioacuten y vuelva a teclear la n Pulse |_Esc_| cuando haya terminado

A34 Salvar un fichero

w salvar (escribir al disco)

q salir

Aseguacuterese de que estaacute en modo de comando pulsando la tecla |_Esc_| Ahora pulse w Estosalvaraacute su trabajo escribieacutendolo a un fichero de disco

El comando para salir de vi es |_q_| Si quiere combinar el salvar y salir escriba wqTambieacuten hay una abreviacioacuten para wq _ ZZ Dado que gran parte del trabajo deprogramacioacuten consiste en ejecutar un programa encontrar alguacuten problema y llamar elprograma en el editor para hacer alguacuten pequentildeo cambio y luego volver a salir del editorpara ejecutar el programa otra vez ZZ seraacute un comando que usaraacute a menudo (En realidadZZ no es un sinoacutenimo exacto de wq _ si no ha hecho ninguacuten cambio al fichero que estaacuteeditando desde la ultima vez que lo salvo ZZ simplemente saldraacute del editor mientras quewq salvaraacute (redundantemente) el fichero antes de salir)

Si usted se lo ha cargado todo sin esperanzas y simplemente quiere volver a empezarlotodo puede teclear q (recuerde pulsar la tecla |_Esc_| primero) Si omite el vi nole permitiraacute salir sin salvar

A35 iquestQueacute viene a continuacioacuten

Los diez comandos que acaba de aprender deberiacutean ser suficientes para su trabajo Sinembargo solamente ha rozado la superficie del editor vi Hay comandos para copiarmaterial de un lugar del fichero a otro para mover material de un lugar a otro paramover material de un fichero a otro para ajustar el editor a sus gustos personales etcCon todo hay unos 150 comandos

A4 Tutorial avanzado de Vi

La ventaja y la potencia de vi estaacute en la habilidad de usarlo con eacutexito con soacutelo saberunos pocos comandos La mayoriacutea de los usuarios de vi se sienten un poco incoacutemodos alprincipio sin embargo despueacutes de alguacuten tiempo se encuentran aacutevidos de mayor conocimientode los comandos disponibles

El siguiente tutorial asume que el usuario ha completado el tutorial raacutepido (arriba) ypor lo tanto se siente a gusto con vi Este tutorial expone algunas de lascaracteriacutesticas maacutes poderosas de exvi desde copiar texto hasta la definicioacuten de macrosHay una seccioacuten sobre ex y los paraacutemetros para ajustar el editor a su gusto Estetutorial describe los comandos en vez de llevarle grupo por grupo

Se recomienda que usted disponga de alguacuten tiempo para probar los comandos en alguacuten textode ejemplo que se pueda permitir destruir

Este tutorial no expone todos los comandos de vi aunque se cubren los maacutes comuacutenmenteusados y auacuten otros adicionales Aunque usted elija usar otro editor de texto se esperaque apreciaraacute vi y lo que ofrece a quienes deciden usarlo

A41 Movimiento

La funcionalidad maacutes baacutesica de un editor es el mover el cursor por el texto Aquiacute estaacutenlos comandos de movimiento

h mueve el cursor un espacio a la izquierda

j mueve el cursor una liacutenea hacia abajo

k mueve el cursor una liacutenea hacia arriba

l mueve el cursor un espacio a la derecha

Algunas implementaciones tambieacuten permiten el uso de las teclas de cursor para mover elcursor

w mueve al principio de la siguiente palabra

e mueve al final de la siguiente palabra

E mueve al final de la siguiente palabra antes de un espacio

b mueve al principio de la palabra anterior

0 mueve al principio de la liacutenea actual

^ mueve a la primera palabra de la liacutenea actual

$ mueve al final de la liacutenea

ltCRgt mueve al principio de la siguiente liacutenea

shy mueve al principio de la liacutenea anterior

G mueve al final del fichero

1G mueve al principio del fichero

nG mueve a la liacutenea n

ltCntlgt G muestra el nuacutemero de liacutenea actual

va al pareacutentesis correspondiente

H mueve a la liacutenea superior en pantalla

M mueve a la liacutenea de en medio de la pantalla

L mueve al final de la pantalla

n_ mueve el cursor a la columna n

El texto se desplaza automaacuteticamente cuando el cursor alcanza la parte superior oinferior de la pantalla Tambieacuten hay comandos que permiten controlar el desplazamientodel texto

ltCntlgt f desplaza una pantalla hacia delante

ltCntlgt b desplaza una pantalla hacia atraacutes

ltCntlgt d desplaza media pantalla hacia abajo

ltCntlgt u desplaza media pantalla hacia arriba

Los comandos anteriores controlan el movimiento del cursor Algunos de los comandos usanun modificador de comandos en la forma de un nuacutemero que precede al comando Estacaracteriacutestica normalmente repite el comando ese nuacutemero de veces

Para mover el cursor ocho posiciones a la izquierda

8l mueve el cursor 8 posiciones a la izquierda

Si desea introducir un nuacutemero de espacios delante de un texto podriacutea usar el modificadorde comandos con el comando insertar Introduzca el nuacutemero de repeticiones (n) y despueacutes|_i_| seguido por el espacio y luego pulse la tecla |_Esc_|

ni inserta alguacuten texto y lo repite n veces

Los comandos que tratan con liacuteneas usan el modificador para referirse al nuacutemero de liacuteneaEl |_G_| es un buen ejemplo

1G mueve el cursor a la primera liacutenea

vi tiene un voluminoso grupo de comandos que se puede usar para mover el cursor por eltexto

vi tambieacuten puede posicionar el cursor en una liacutenea desde la liacutenea de comandos

vi +10 mi_ficherotex

Este comando abre el fichero llamado mi_ficherotex y pone el cursor 10 liacuteneas maacutes abajodel comienzo del fichero

Pruebe los comandos de esta seccioacuten Muy poca gente los recuerda todos en una solasesioacuten La mayor parte de los usuarios solamente utiliza una parte de estos comandos

Ahora se puede mover pero iquestcoacutemo modificar el texto

A42 Modificacioacuten del texto

El propoacutesito es cambiar el contenido del fichero y vi ofrece un amplio conjunto decomandos para ayudarnos en este proceso

Esta seccioacuten se concentra en antildeadir texto cambiar el texto existente y borrar texto Alfinal de esta seccioacuten usted tendraacute el conocimiento para crear cualquier fichero de textoque desee Las secciones restantes se concentran en comandos maacutes especializados yconvenientes

Cuando usted teclea nuevo texto puede introducir varias liacuteneas usando la tecla |_Intro_|Si hay que corregir un error tipograacutefico mientras introduce texto puede usar la tecla|_Retroceso_| para mover el cursor sobre el texto Las varias implementaciones de vi secomportan de manera diferente Algunas simplemente mueven el cursor hacia atraacutes y eltexto sigue vieacutendose y es aceptado Otras borran el texto cuando pulsa la tecla deborrado Otras versiones incluso permiten usar las teclas de cursores para mover elcursor mientras se estaacute en modo de entrada de texto Este modo de funcionamiento no es elnormal de vi Si el texto es visible y usa la tecla |_Esc_| mientras estaacute en la liacutenea enla que pulsoacute |_Retroceso_| entonces el texto que hay despueacutes del cursor se borraraacute Useel editor para acostumbrarse a este comportamiento

a Antildeadir texto a partir de la posicioacuten actual del cursor

A Antildeadir al final de la liacutenea

i Insertar texto a la izquierda del cursor

I Insertar texto a la izquierda del primer caracter que no sea espacio en laliacutenea actual

o Abrir una nueva liacutenea y antildeade texto debajo de la liacutenea actual

O Abrir una nueva liacutenea y antildeade texto encima de la liacutenea actual

vi tiene un pequentildeo grupo de comandos para borrar texto que se pueden mejorar con el usode modificadores

x Borrar el caraacutecter que estaacute debajo del cursor

dw Borrar desde la posicioacuten actual al final de la palabra

dd Borrar la liacutenea actual

D Borrar desde la posicioacuten actual al final de la liacutenea

Los modificadores se pueden usar para aumentar la potencia de los comandos Lossiguientes ejemplos son un subgrupo de las posibilidades

nx Borrar n caracteres desde el que estaacute bajo el cursor

ndd Borrar n liacuteneas

dnw Borrar n palabras (igual que ndw)

dG Borrar desde la posicioacuten actual hasta el final del fichero

d1G Borrar desde la posicioacuten actual hasta el principio del fichero

d$ Borrar desde la posicioacuten actual al final de la liacutenea (Esto es igual queD)

dn$ Borrar desde la liacutenea actual al final de la eneacutesima liacutenea

La lista de comandos anterior muestra que la operacioacuten de borrado puede ser muy uacutetilEsto se hace patente cuando se aplica en combinacioacuten con los comandos de movimiento decursor Hay que hacer notar que el comando |_D_| ignora los modificadores que se leapliquen

En ocasiones usted puede necesitar deshacer los cambios al texto Los siguientes comandosrecuperan el texto que habiacutea antes de hacer cambios

u Deshacer el uacuteltimo comando

U Deshacer todos los cambios ocurridos en la liacutenea actual

e Editar otra vez Recupera el estado del fichero desde la uacuteltima vez quese salvoacute

vi no soacutelo le permite deshacer cambios tambieacuten puede dar la vuelta al comandodeshacer Por ejemplo si usamos el comando |_5dd_| para borrar 5 liacuteneas se puedenrecuperar usando el comando |_u_| Si usted usa |_u_| una vez maacutes las 5 liacuteneasdesapareceraacuten de nuevo

vi ofrece comandos que permiten que se hagan cambios al texto sin tener que borrar yvolver a escribir

rc Reemplaza del caracter bajo el cursor con la letra c Se Mueve el cursoral modificador de repeticioacuten por ejemplo 2rc

R Sobreescribe el texto con el nuevo texto

cw Cambia el texto de la palabra actual

c$ Cambia el texto desde la posicioacuten actual al final de la liacutenea

cnw Cambia las siguientes n palabras (Igual que ncw)

cn$ Hacer cambios hasta el final de la eneacutesima liacutenea

C Hacer cambios hasta el final de la liacutenea actual

cc Hacer cambios en la liacutenea actual

s Sustituye el texto que escriba por el caracter actual

ns Sustituye el texto que escriba por los siguientes n caracteres

Las series de comandos de cambio que permiten que se introduzca un grupo de caracteres seterminan con la tecla |_Esc_|

El comando |_cw_| empieza en la posicioacuten actual en la palabra y termina al final de lapalabra

Cuando use un comando de cambio que especifica la distancia sobre la que se aplicaraacute elcambio vi pondraacute un $ en la uacuteltima posicioacuten de caraacutecter El nuevo texto puede sobrepasaro no llegar a la longitud original de texto

A43 Copiar y mover bloques de texto

El movimiento de texto supone la combinacioacuten de un nuacutemero de comandos para conseguir elpropoacutesito final Esta seccioacuten introduce los buffers1 con y sin nombre junto a loscomandos que cortan y pegan el texto

La copia de texto se realiza en tres pasos principales

1 Copia del texto a un buffer

2 Movimiento del cursor al lugar de destino

3 Pegar (poner) el texto en el buffer de edicioacuten

El buffer de edicioacuten no es sino el propio fichero en el que usted estaacute trabajando

Para Copiar texto al buffer sin nombre use el comando |_y_|

yy Mueve una copia de la liacutenea actual al buffer sin nombre

Y Mueve una copia de la liacutenea actual al buffer sin nombre

nyy Mueve las siguientes n lineas al buffer sin nombre

nY Mueve las siguientes n liacuteneas al buffer sin nombre

yw Mueve una palabra al buffer sin nombre

ynw Mueve n palabras al buffer sin nombre

nyw Mueve n palabras al buffer sin nombre

y$ Mueve el texto desde la posicioacuten actual al final de la liacutenea al buffer sinnombre

_____________________________________________

1 N del T buffer es una palabra inglesa que se refiere a un espacio reservado enmemoria para guardar alguna informacioacuten temporalmente En este caso se usan buffers paraalmacenar una copia temporal del texto que usted desea copiar o mover

El buffer sin nombre es un buffer temporal que puede ser faacutecilmente afectado por otroscomandos comunes Hay ocasiones en las cuales necesitamos mantener el contenido de unbuffer durante un periacuteodo maacutes extenso de tiempo En este caso se usariacutea un buffer connombre vi tiene 26 buffers con nombre Los buffers usan las letras del alfabeto como elnombre de identificacioacuten Para distinguir un comando de un buffer con nombre vi usa elcaraacutecter |__| Cuando use un buffer con nombre de letra minuacutescula los contenidos sesobre escriben mientras que el uso del nombre en letra mayuacutescula antildeade el nuevo texto alcontenido actual

ayy Mueve la liacutenea actual al buffer con nombre a

aY Mueve la liacutenea actual al buffer con nombre a

byw Mueve la palabra actual al buffer con nombre b

Byw Antildeade la palabra actual al contenido del buffer b

by3w Mueve las siguientes 3 palabras al buffer b

Use el comando |_p_| para pegar el contenido del buffer al buffer de edicioacuten

p Pegar del buffer sin nombre a la DERECHA del cursor

P Pegar del buffer sin nombre a la IZQUIERDA del cursor

nP Pegar n copias del buffer sin nombre a la IZQUIERDA del cursor

aP Pegar del buffer con nombre a a la DERECHA del cursor

b3P Pegar 3 copias del buffer con nombre b a la IZQUIERDA del cursor

Cuando use vi dentro de un xterm tiene otra opcioacuten para copiar texto Marque el bloque detexto que desea copiar arrastrando el cursor del ratoacuten sobre el texto Si mantienepulsado el botoacuten izquierdo del ratoacuten y arrastra el ratoacuten desde el comienzo al finalinvertiraacute el viacutedeo del texto Esta operacioacuten automaacuteticamente coloca el texto en un bufferreservado para el servidor de X Window

Para pegar el texto pulse el botoacuten de enmedio Acueacuterdese de poner vi en modo deinsercioacuten dado que la entrada de texto se podriacutea interpretar como comandos y el resultadoseriacutea cuando menos desagradable Usando la misma teacutecnica se puede copiar una sola palabrahaciendo doble click con el botoacuten izquierdo del ratoacuten sobre la palabra Solamente secopiaraacute esa uacutenica palabra Para pegarla se usa el mismo procedimiento que anteriormenteLos contenidos del buffer soacutelo cambian cuando se marca otro bloque de texto

Para mover un bloque de texto son necesarios tres pasos

1 Borrar el texto para ponerlo en un buffer con o sin nombre

2 Mover el cursor a la posicioacuten de destino

3 Pegar el buffer

El proceso es el mismo que el de copia con un solo cambio en el primer paso para borrarCuando

se usa el comando |_dd_| la liacutenea se borra y se coloca en el buffer sin nombre Luegopuede poner el

contenido del mismo modo que lo hizo cuando copioacute el texto en la posicioacuten deseada

add Borrar la liacutenea y ponerla en el buffer con nombre a

a4dd Borrar cuatro liacuteneas y ponerlas en el buffer con nombre a

dw Borrar una palabra y ponerla en el buffer sin nombre

Vea la seccioacuten sobre el modificado de texto para ver maacutes ejemplos de borrado de texto

En el caso de que el sistema falle el contenido de todos los buffers se pierde exceptoel contenido de los buffers de edicioacuten que se puede recuperar (ver comandos Uacutetiles)

A44 Buacutesqueda y cambio de texto

vi dispone de varios comandos para buacutesqueda Usted puede buscar desde un solo caraacutecterhasta una expressioacuten completa

Los dos comandos principales de buacutesqueda basados en caracteres son |_f_| y |_t_|

fc Encuentra el siguiente caracter c Se mueve a la derecha del siguiente

Fc Encuentra el siguiente caracter c Se mueve a la izquierda del anterior

tc Se mueve a la DERECHA al caracter anterior al siguiente c

Tc Se mueve a la IZQUIERDA al caraacutecter que sigue al c anterior vi(En algunasesto es lo mismo que Fc)

Repite el uacuteltimo comando fFtT

Igual que () pero cambiando la direccioacuten del comando original

Si el caracter que usted buscaba no se encuentra vi emitiraacute un pitido o le daraacute otrotipo de sentildeal (tal vez un parpadeo de toda la pantalla)

vi le permite buscar una cadena de texto en el buffer de edicioacuten

tira Busca hacia la derecha y abajo la siguiente instancia de tira

tira Busca hacia la izquierda y arriba la siguiente instancia de tira

n Repite el uacuteltimo comando o

N Repite el uacuteltimo comando o en la direccioacuten opuesta

Cuando use los comandos ||_||or |__| la uacuteltima liacutenea en la parte baja de la pantallase vaciaraacute

Introduzca en esa liacutenea la tira de caracteres que desea buscar y pulse |_Intro_|

La tira en el comando ||_||or |__|puede ser una expresioacuten regular Una expresioacutenregular puede ser una descripcioacuten de un conjunto de tiras La descripcioacuten se construyeusando texto entremezclado con caracteres especiales Los caracteres especiales de unaexpresioacuten regular son [ ] ^ $

Vale por cualquier caraacutecter excepto el caraacutecter de nueva liacutenea

Tecla de escape para cualquier caracter especial

Vale por 0 o maacutes instancias del caracter anterior

[ ] Busca exactamente uno de los caracteres incluiacutedos entre los corchetes

^ El caracter que sigue a ^ debe estar al principio de la liacutenea

$ El caracter que precede a $ se busca al final de la liacutenea

[^] Busca cualquier cosa que no se encuentre despues de ^ dentro de loscorchetes

[shy] Busca un rango de caracteres

El uacutenico modo de acostumbrarse a usar las expresiones regulares es usaacutendolas Acontinuacioacuten mostramos varios ejemplos de uso

cch Coincide con coche cacho cochera etc

cpe Coincide con cpe cper etc

stop Coincide con stp stop stoop etc

carn Coincide con cartoacuten carrilloacuten carmen etc

xyz Coincide con xyz al final de la liacutenea

^Los Encuentra cualquier liacutenea que empiece con Los

abcdef$ Encuentra cualquier liacutenea que termine con abcdef

^Solo$ Coincide con cualquier liacutenea que soacutelo tenga la palabra Solo

p[aiue]so Coincide con paso piso puso peso

Ver[DshyF] Coincide con VerD VerE VerF

Ver[^1shy9] Coincide con Ver siempre que a continuacioacuten NO haya un nuacutemero

the[ir][re] Coincide con their therr there theie

[AshyZashyz][AshyZashyz] Coincide con cualquier palabra

vi usa el modo de comandos de ex para llevar a cabo buacutesquedas y sustituciones Todos loscomandos que empiezan con dos puntos son comandos en modo ex

Los comandos de buacutesqueda y sustitucioacuten permiten que se usen expresiones regulares sobreun rango de liacuteneas y sustituir la tira de caracteres que se busca El usuario puede pedirconfirmacioacuten antes de que se realice la sustitucioacuten Merece la pena hacer una revisioacuten dela representacioacuten de los nuacutemeros de liacutenea en el tutorial de ed

ltprimgtltultgtsltbuscagtltsustgtg Comando general

1$slosLosg Buscar el fichero entero y sustituir los por Los

stheTheg siginifica el fichero entero (igual que arriba)

5s^g Borra el contenido de la liacutenea actual hasta la quinta

slosLosgc Sustituye los con Los preguntando antes de hacer laoperacioacuten

s^g Borra los primeros cuatro caraacutecteres de cada liacutenea

El comando de buacutesqueda es muy potente cuando se combina con las expresiones regulares Sino se incluye la directiva |_g_| entonces el cambio soacutelo se aplica a la primera instanciaque se encuentre en cada liacutenea

En ocasiones usted quiere usar los caracteres de buacutesqueda en los caracteres desustitucioacuten Se puede reescribir todo el comando en la liacutenea pero vi permite que loscaracteres de sustitucioacuten incluyan algunos caracteres especiales

15sayudaampndog Sustituye ayuda por ayudando en las cinco primeras liacuteneas

s ampampg Duplica el nuacutemero de espacios entre palabras

El uso de la tira de caracteres completa_para buacutesqueda_tiene sus liacutemites y por lo tantovi usa los pareacutentesis en secuencia de escape ||_(_|| y ||_)_||para seleccionar el rangode la sustitucioacuten El uso de un diacutegito en secuencia de escape |_1_| identifica el rangoen el orden de la definicioacuten y la sustitucioacuten se puede hacer

s^()1g Borra todo despues de e incluyendo los dos puntos

s()()21g Da la vuelta a las palabras a los dos lados de losdos puntos

vi ofrece comandos muy potentes que muchos editores de texto modernos no tienen o nopueden ofrecer El coste de esta potencia suele ser tambieacuten el principal argumento encontra de vi Los comandos pueden ser difiacuteciles de aprender y leer Sin embargo lamayoriacutea de las cosas buenas suelen ser un poco extrantildeas al principio Con un poco depraacutectica y tiempo los comandos de vi se convertiraacuten en una segunda naturaleza para Ud

Apeacutendice B

The GNU General Public License

GNU GENERAL PUBLIC LICENSE

Version 2 June 1991

Copyright Oc 1989 1991 Free Software Foundation Inc 675 Mass Ave Cambridge MA 02139USA

Everyone is permitted to copy and distribute verbatim copies of this license documentbut changing it is not allowed

Preamble

The licenses for most software are designed to take away your freedom to share and changeit By contrast the GNU General Public License is intended to guarantee your freedom toshare and change free software to make sure the software is free for all its users ThisGeneral Public License applies to most of the Free Software Foundations software and toany other program whose authors commit to using it (Some other Free Software Foundationsoftware is covered by the GNU Library General Public License instead) You can apply itto your programs too

When we speak of free software we are referring to freedom not price Our GeneralPublic Licenses are designed to make sure that you have the freedom to distribute copiesof free software (and charge for this service if you wish) that you receive source codeor can get it if you want it that you can change the software or use pieces of it in newfree programs and that you know you can do these things

To protect your rights we need to make restrictions that forbid anyone to deny you theserights or to ask you to surrender the rights These restrictions translate to certainresponsibilities for you if you distribute copies of the software or if you modify it

For example if you distribute copies of such a program whether gratis or for a fee youmust give the recipients all the rights that you have You must make sure that they tooreceive or can get the source code And you must show them these terms so they know theirrights

We protect your rights with two steps (1) copyright the software and (2) offer you thislicense which gives you legal permission to copy distribute andor modify the software

Also for each authors protection and ours we want to make certain that everyoneunderstands that there is no warranty for this free software If the software is modifiedby someone else and passed on we want its recipients to know that what they have is notthe original so that any problems introduced by others will not reflect on the originalauthors reputations

Finally any free program is threatened constantly by software patents We wish to avoidthe danger that redistributors of a free program will individually obtain patentlicenses in effect making the program proprietary To prevent this we have made itclear that any patent must be licensed for everyones free use or not licensed at all

The precise terms and conditions for copying distribution and modification follow

Terms and Conditions

0 This License applies to any program or other work which contains a notice placed bythe copyright holder saying it may be distributed under the terms of this General PublicLicense

The Program below refers to any such program or work and a work based on theProgram means either the Program or any derivative work under copyright law that is tosay a work containing the Program or a portion of it either verbatim or withmodifications andor translated into another language (Hereinafter translation isincluded without limitation in the term modification) Each licensee is addressed asyou

Activities other than copying distribution and modification are not covered by thisLicense they are outside its scope The act of running the Program is not restrictedand the output from the Program is covered only if its contents constitute a work basedon the Program (independent of having been made by running the Program) Whether that istrue depends on what the Program does

1 You may copy and distribute verbatim copies of the Programs source code as youreceive it in any medium provided that you conspicuously and appropriately publish oneach copy an appropriate copyright notice and disclaimer of warranty keep intact all thenotices that refer to this License and to the absence of any warranty and give any otherrecipients of the Program a copy of this License along with the Program

You may charge a fee for the physical act of transferring a copy and you may at youroption offer warranty protection in exchange for a fee

2 You may modify your copy or copies of the Program or any portion of it thus forming awork based on the Program and copy and distribute such modifications or work under theterms of Section 1 above provided that you also meet all of these conditions

a You must cause the modified files to carry prominent notices stating that you changedthe files and the date of any change

b You must cause any work that you distribute or publish that in whole or in partcontains or is derived from the Program or any part thereof to be licensed as a whole atno charge to all third parties under the terms of this License

c If the modified program normally reads commands interactively when run you must causeit when started running for such interactive use in the most ordinary way to print ordisplay an announcement including an appropriate copyright notice and a notice that thereis no warranty (or else saying that you provide a warranty) and that users mayredistribute the program under these conditions and telling the user how to view a copyof this License (Exception if the Program itself is interactive but does not normallyprint such an announcement your work based on the Program is not required to print anannouncement)

These requirements apply to the modified work as a whole If identifiable sections ofthat work are not derived from the Program and can be reasonably considered independentand separate works in themselves then this License and its terms do not apply to thosesections when you distribute them as separate works But when you distribute the samesections as part of a whole which is a work based on the Program the distribution of thewhole must be on the terms of this License whose permissions for other licensees extendto the entire whole and thus to each and every part regardless of who wrote it

Thus it is not the intent of this section to claim rights or contest your rights to workwritten entirely by you rather the intent is to exercise the right to control thedistribution of derivative or collective works based on the Program

In addition mere aggregation of another work not based on the Program with the Program(or with a work based on the Program) on a volume of a storage or distribution mediumdoes not bring the other work under the scope of this License

3 You may copy and distribute the Program (or a work based on it under Section 2) inobject code or executable form under the terms of Sections 1 and 2 above provided thatyou also do one of the following

a Accompany it with the complete corresponding machineshyreadable source code which mustbe distributed under the terms of Sections 1 and 2 above on a medium customarily used forsoftware interchange or b Accompany it with a written offer valid for at least threeyears to give any third party for a charge no more than your cost of physicallyperforming source distribution a complete machineshyreadable copy of the correspondingsource code to be distributed under the terms of Sections 1 and 2 above on a mediumcustomarily used for software interchange or

c Accompany it with the information you received as to the offer to distributecorresponding source code (This alternative is allowed only for noncommercialdistribution and only if you received the program in object code or executable form withsuch an offer in accord with Subsection b above)

The source code for a work means the preferred form of the work for making modificationsto it For an executable work complete source code means all the source code for allmodules it contains plus any associated interface definition files plus the scriptsused to control compilation and installation of the executable However as a specialexception the source code distributed need not include anything that is normallydistributed (in either source or binary form) with the major components (compilerkernel and so on) of the operating system on which the executable runs unless thatcomponent itself accompanies the executable

If distribution of executable or object code is made by offering access to copy from adesignated place then offering equivalent access to copy the source code from the sameplace counts as distribution of the source code even though third parties are notcompelled to copy the source along with the object code

4 You may not copy modify sublicense or distribute the Program except as expresslyprovided under this License Any attempt otherwise to copy modify sublicense ordistribute the Program is void and will automatically terminate your rights under thisLicense However parties who have received copies or rights from you under thisLicense will not have their licenses terminated so long as such parties remain in fullcompliance

5 You are not required to accept this License since you have not signed it Howevernothing else grants you permission to modify or distribute the Program or its derivativeworks These actions are prohibited by law if you do not accept this License Thereforeby modifying or distributing the Program (or any work based on the Program) you indicateyour acceptance of this License to do so and all its terms and conditions for copyingdistributing or modifying the Program or works based on it

6 Each time you redistribute the Program (or any work based on the Program) therecipient automatically receives a license from the original licensor to copy distributeor modify the Program subject to these terms and conditions You may not impose anyfurther restrictions on the recipients exercise of the rights granted herein You arenot responsible for enforcing compliance by third parties to this License

7 If as a consequence of a court judgment or allegation of patent infringement or forany other reason (not limited to patent issues) conditions are imposed on you (whetherby court order agreement or otherwise) that contradict the conditions of this Licensethey do not excuse you from the conditions of this License If you cannot distribute soas to satisfy simultaneously your obligations under this License and any other pertinentobligations then as a consequence you may not distribute the Program at all Forexample if a patent license would not permit royaltyshyfree redistribution of the Programby all those who receive copies directly or indirectly through you then the only way youcould satisfy both it and this License would be to refrain entirely from distribution ofthe Program

If any portion of this section is held invalid or unenforceable under any particularcircumstance the balance of the section is intended to apply and the section as a wholeis intended to apply in other circumstances

It is not the purpose of this section to induce you to infringe any patents or otherproperty right claims or to contest validity of any such claims this section has thesole purpose of protecting the integrity of the free software distribution system whichis implemented by public license practices Many people have made generous contributionsto the wide range of software distributed through that system in reliance on consistentapplication of that system it is up to the authordonor to decide if he or she iswilling to distribute software through any other system and a licensee cannot impose thatchoice

This section is intended to make thoroughly clear what is believed to be a consequence ofthe rest of this License

8 If the distribution andor use of the Program is restricted in certain countrieseither by patents or by copyrighted interfaces the original copyright holder who placesthe Program under this License may add an explicit geographical distribution limitationexcluding those countries so that distribution is permitted only in or among countriesnot thus excluded In such case this License incorporates the limitation as if writtenin the body of this License

9 The Free Software Foundation may publish revised andor new versions of the GeneralPublic License from time to time Such new versions will be similar in spirit to thepresent version but may differ in detail to address new problems or concerns

Each version is given a distinguishing version number If the Program specifies a versionnumber of this License which applies to it and any later version you have the optionof following the terms and conditions either of that version or of any later versionpublished by the Free Software Foundation If the Program does not specify a versionnumber of this License you may choose any version ever published by the Free SoftwareFoundation

10 If you wish to incorporate parts of the Program into other free programs whosedistribution conditions are different write to the author to ask for permission Forsoftware which is copyrighted by the Free Software Foundation write to the Free SoftwareFoundation we sometimes make exceptions for this Our decision will be guided by the two

goals of preserving the free status of all derivatives of our free software and ofpromoting the sharing and reuse of software generally

NO WARRANTY

11 BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE THERE IS NO WARRANTY FOR THE PROGRAMTO THE EXTENT PERMITTED BY APPLICABLE LAW EXCEPT WHEN OTHERWISE STATED IN WRITING THECOPYRIGHT HOLDERS ANDOR OTHER PARTIES PROVIDE THE PROGRAM AS IS WITHOUT WARRANTY OFANY KIND EITHER EXPRESSED OR IMPLIED INCLUDING BUT NOT LIMITED TO THE IMPLIEDWARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE THE ENTIRE RISK AS TOTHE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU SHOULD THE PROGRAM PROVEDEFECTIVE YOU ASSUME THE COST OF ALL NECESSARY SERVICING REPAIR OR CORRECTION

12 IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING WILL ANYCOPYRIGHT HOLDER OR ANY OTHER PARTY WHO MAY MODIFY ANDOR REDISTRIBUTE THE PROGRAM ASPERMITTED ABOVE BE LIABLE TO YOU FOR DAMAGES INCLUDING ANY GENERAL SPECIAL INCIDENTALOR CONSEQUENTIAL DAMAGES ARISING OUT OF THE USE OR INABILITY TO USE THE PROGRAM(INCLUDING BUT NOT LIMITED TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSESSUSTAINED BY YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHERPROGRAMS) EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF SUCHDAMAGES

How to Apply These Terms to Your New Programs

If you develop a new program and you want it to be of the greatest possible use to thepublic the best way to achieve this is to make it free software which everyone canredistribute and change under these terms

To do so attach the following notices to the program It is safest to attach them to thestart of each source file to most effectively convey the exclusion of warranty and eachfile should have at least the copyright line and a pointer to where the full notice isfound

one line to give the programs name and an idea of what it does

Copyright Oc 19yy name of author

This program is free software you can redistribute it andor modify it under the termsof the GNU General Public License as published by the Free Software Foundation eitherversion 2 of the License or (at your option) any later version

This program is distributed in the hope that it will be useful but WITHOUT ANY WARRANTYwithout even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSESee the GNU General Public License for more details

You should have received a copy of the GNU General Public License along with thisprogram if not write to the Free Software Foundation Inc 675 Mass Ave Cambridge MA02139

Also add information on how to contact you by electronic and paper mail

If the program is interactive make it output a short notice like this when it starts inan interactive mode

Gnomovision version 69 Copyright Oc 19yy name of author

Gnomovision comes with ABSOLUTELY NO WARRANTY for details type `show w

This is free software and you are welcome to redistribute it under certain conditionstype show c for details

The hypothetical commands show w and show c should show the appropriate parts of theGeneral Public License Of course the commands you use may be called something otherthan show w and show c they could even be mouseshyclicks or menu items whatever suitsyour program

You should also get your employer (if you work as a programmer) or your school if anyto sign a copyright disclaimer for the program if necessary Here is a sample alterthe names

Yoyodyne Inc hereby disclaims all copyright interest in the program `Gnomovision(which makes passes at compilers) written by James Hacker

signature of Ty Coon 1 April 1989

Ty Coon President of Vice

This General Public License does not permit incorporating your program into proprietaryprograms If your program is a subroutine library you may consider it more useful topermit linking proprietary applications with the library If this is what you want to douse the GNU Library General Public License instead of this License

Apeacutendice C

The GNU Library General Public

License

GNU LIBRARY GENERAL PUBLIC LICENSE

Version 2 June 1991

Copyright Oc 1991 Free Software Foundation Inc 675 Mass Ave Cambridge MA 02139 USAEveryone is permitted to copy and distribute verbatim copies of this license documentbut

changing it is not allowed [This is the first released version of the library GPL It isnumbered 2 because it goes with version 2 of the ordinary GPL]

Preamble

The licenses for most software are designed to take away your freedom to share and changeit By contrast the GNU General Public Licenses are intended to guarantee your freedomto share and change free softwareshyto make sure the software is free for all its users

This license the Library General Public License applies to some specially designatedFree Software Foundation software and to any other libraries whose authors decide to useit You can use it for your libraries too

When we speak of free software we are referring to freedom not price Our GeneralPublic Licenses are designed to make sure that you have the freedom to distribute copiesof free software (and charge for this service if you wish) that you receive source codeor can get it if you want it that you can change the software or use pieces of it in newfree programs and that you know you can do these things

To protect your rights we need to make restrictions that forbid anyone to deny you theserights or to ask you to surrender the rights These restrictions translate to certainresponsibilities for you if you distribute copies of the library or if you modify it

For example if you distribute copies of the library whether gratis or for a fee youmust give the recipients all the rights that we gave you You must make sure that theytoo receive or can get the source code If you link a program with the library you mustprovide complete object files to the recipients so that they can relink them with thelibrary after making changes to the library and recompiling it And you must show themthese terms so they know their rights

Our method of protecting your rights has two steps (1) copyright the library and (2)offer you this license which gives you legal permission to copy distribute andor modifythe library

Also for each distributors protection we want to make certain that everyoneunderstands that there is no warranty for this free library If the library is modifiedby someone else and passed on we want its recipients to know that what they have is notthe original version so that any problems introduced by others will not reflect on theoriginal authors reputations

Finally any free program is threatened constantly by software patents We wish to avoidthe danger that companies distributing free software will individually obtain patentlicenses thus in effect transforming the program into proprietary software To preventthis we have made it clear that any patent must be licensed for everyones free use ornot licensed at all

Most GNU software including some libraries is covered by the ordinary GNU GeneralPublic License which was designed for utility programs This license the GNU LibraryGeneral Public License applies to certain designated libraries This license is quitedifferent from the ordinary one be sure to read it in full and dont assume thatanything in it is the same as in the ordinary license

The reason we have a separate public license for some libraries is that they blur thedistinction we usually make between modifying or adding to a program and simply using itLinking a program with a library without changing the library is in some sense simplyusing the library and is analogous to running a utility program or application programHowever in a textual and legal sense the linked executable is a combined work aderivative of the original library and the ordinary General Public License treats it assuch

Because of this blurred distinction using the ordinary General Public License forlibraries did not effectively promote software sharing because most developers did notuse the libraries We concluded that weaker conditions might promote sharing better

However unrestricted linking of nonshyfree programs would deprive the users of thoseprograms of all benefit from the free status of the libraries themselves This LibraryGeneral Public License is intended to permit developers of nonshyfree programs to use freelibraries while preserving your freedom as a user of such programs to change the freelibraries that are incorporated in them (We have not seen how to achieve this as regardschanges in header files but we have achieved it as regards changes in the actualfunctions of the Library) The hope is that this will lead to faster development of freelibraries

The precise terms and conditions for copying distribution and modification follow Payclose attention to the difference between a work based on the library and a work thatuses the library

The former contains code derived from the library while the latter only works togetherwith the library

Note that it is possible for a library to be covered by the ordinary General PublicLicense rather than by this special one

Terms and Conditions for Copying Distribution and Modification

0 This License Agreement applies to any software library which contains a notice placedby the copyright holder or other authorized party saying it may be distributed under theterms of this Library General Public License (also called this License) Each licenseeis addressed as you

A library means a collection of software functions andor data prepared so as to beconveniently linked with application programs (which use some of those functions anddata) to form executables

The Library below refers to any such software library or work which has beendistributed under these terms A work based on the Library means either the Library orany derivative work under copyright law that is to say a work containing the Library ora portion of it either verbatim or with modifications andor translatedstraightforwardly into another language

(Hereinafter translation is included without limitation in the term modification)

Source code for a work means the preferred form of the work for making modifications toit For a library complete source code means all the source code for all modules itcontains plus any associated interface definition files plus the scripts used tocontrol compilation and installation of the library

Activities other than copying distribution and modification are not covered by thisLicense they are outside its scope The act of running a program using the Library isnot restricted and output from such a program is covered only if its contents constitutea work based on the Library (independent of the use of the Library in a tool for writingit) Whether that is true depends on what the Library does and what the program that usesthe Library does

1 You may copy and distribute verbatim copies of the Librarys complete source code asyou receive it in any medium provided that you conspicuously and appropriately publishon each copy an appropriate copyright notice and disclaimer of warranty keep intact allthe notices that refer to this License and to the absence of any warranty and distributea copy of this License along with the Library

You may charge a fee for the physical act of transferring a copy and you may at youroption offer warranty protection in exchange for a fee

2 You may modify your copy or copies of the Library or any portion of it thus forming awork based on the Library and copy and distribute such modifications or work under theterms of Section 1 above provided that you also meet all of these conditions

a The modified work must itself be a software library

b You must cause the files modified to carry prominent notices stating that you changedthe files and the date of any change

c You must cause the whole of the work to be licensed at no charge to all third partiesunder the terms of this License

d If a facility in the modified Library refers to a function or a table of data to besupplied by an application program that uses the facility other than as an argumentpassed when the facility is invoked then you must make a good faith effort to ensurethat in the event an application does not supply such function or table the facilitystill operates and performs whatever part of its purpose remains meaningful

(For example a function in a library to compute square roots has a purpose that isentirely wellshydefined independent of the application Therefore Subsection 2d requiresthat any applicationshysupplied function or table used by this function must be optionalif the application does not supply it the square root function must still compute squareroots)

These requirements apply to the modified work as a whole If identifiable sections ofthat work are not derived from the Library and can be reasonably considered independentand separate works in themselves then this License and its terms do not apply to thosesections when you distribute them as separate works But when you distribute the same

sections as part of a whole which is a work based on the Library the distribution of thewhole must be on the terms of this License whose permissions for other licensees extendto the entire whole and thus to each and every part regardless of who wrote it

Thus it is not the intent of this section to claim rights or contest your rights to workwritten entirely by you rather the intent is to exercise the right to control thedistribution of derivative or collective works based on the Library

In addition mere aggregation of another work not based on the Library with the Library(or with a work based on the Library) on a volume of a storage or distribution mediumdoes not bring the other work under the scope of this License

3 You may opt to apply the terms of the ordinary GNU General Public License instead ofthis License to a given copy of the Library To do this you must alter all the noticesthat refer to this License so that they refer to the ordinary GNU General PublicLicense version 2 instead of to this License (If a newer version than version 2 of theordinary GNU General Public License has appeared then you can specify that versioninstead if you wish) Do not make any other change in these notices

Once this change is made in a given copy it is irreversible for that copy so theordinary GNU General Public License applies to all subsequent copies and derivative worksmade from that copy

This option is useful when you wish to copy part of the code of the Library into aprogram that is not a library

4 You may copy and distribute the Library (or a portion or derivative of it underSection 2) in object code or executable form under the terms of Sections 1 and 2 aboveprovided that you accompany it with the complete corresponding machineshyreadable sourcecode which must be distributed under the terms of Sections 1 and 2 above on a mediumcustomarily used for software interchange

If distribution of object code is made by offering access to copy from a designatedplace then offering equivalent access to copy the source code from the same placesatisfies the requirement to distribute the source code even though third parties arenot compelled to copy the source along with the object code

5 A program that contains no derivative of any portion of the Library but is designedto work with the Library by being compiled or linked with it is called a work that usesthe Library

Such a work in isolation is not a derivative work of the Library and therefore fallsoutside the scope of this License

However linking a work that uses the Library with the Library creates an executablethat is a derivative of the Library (because it contains portions of the Library) ratherthan a work that uses the library The executable is therefore covered by this LicenseSection 6 states terms for distribution of such executables

When a work that uses the Library uses material from a header file that is part of theLibrary the object code for the work may be a derivative work of the Library even thoughthe source code is not Whether this is true is especially significant if the work can belinked without the Library or if the work is itself a library The threshold for this tobe true is not precisely defined by law

If such an object file uses only numerical parameters data structure layouts andaccessors and small macros and small inline functions (ten lines or less in length)

then the use of the object file is unrestricted regardless of whether it is legally aderivative work (Executables containing this object code plus portions of the Librarywill still fall under Section 6)

Otherwise if the work is a derivative of the Library you may distribute the object codefor the work under the terms of Section 6 Any executables containing that work also fallunder Section 6 whether or not they are linked directly with the Library itself

6 As an exception to the Sections above you may also compile or link a work that usesthe Library with the Library to produce a work containing portions of the Library anddistribute that work under terms of your choice provided that the terms permitmodification of the work for the customers own use and reverse engineering for debuggingsuch modifications

You must give prominent notice with each copy of the work that the Library is used in itand that the Library and its use are covered by this License You must supply a copy ofthis License If the work during execution displays copyright notices you must includethe copyright notice for the Library among them as well as a reference directing theuser to the copy of this License Also you must do one of these things

a Accompany the work with the complete corresponding machineshyreadable source code forthe Library including whatever changes were used in the work (which must be distributedunder Sections 1 and 2 above) and if the work is an executable linked with the Librarywith the complete machineshyreadable work that uses the Library as object code andorsource code so that the user can modify the Library and then relink to produce amodified executable containing the modified Library (It is understood that the user whochanges the contents of definitions files in the Library will not necessarily be able torecompile the application to use the modified definitions)

b Accompany the work with a written offer valid for at least three years to give thesame user the materials specified in Subsection 6a above for a charge no more than thecost of performing this distribution

c If distribution of the work is made by offering access to copy from a designatedplace offer equivalent access to copy the above specified materials from the same place

d Verify that the user has already received a copy of these materials or that you havealready sent this user a copy

For an executable the required form of the work that uses the Library must include anydata and utility programs needed for reproducing the executable from it However as aspecial exception the source code distributed need not include anything that is normallydistributed (in either source or binary form) with the major components (compilerkernel and so on) of the operating system on which the executable runs unless thatcomponent itself accompanies the executable

It may happen that this requirement contradicts the license restrictions of otherproprietary libraries that do not normally accompany the operating system Such acontradiction means you cannot use both them and the Library together in an executablethat you distribute

7 You may place library facilities that are a work based on the Library sideshybyshyside ina single library together with other library facilities not covered by this License anddistribute such a combined library provided that the separate distribution of the workbased on the Library and of the other library facilities is otherwise permitted andprovided that you do these two things

a Accompany the combined library with a copy of the same work based on the Libraryuncombined with any other library facilities This must be distributed under the terms ofthe Sections above

b Give prominent notice with the combined library of the fact that part of it is a workbased on the Library and explaining where to find the accompanying uncombined form ofthe same work

8 You may not copy modify sublicense link with or distribute the Library except asexpressly provided under this License Any attempt otherwise to copy modify sublicenselink with or distribute the Library is void and will automatically terminate yourrights under this License

However parties who have received copies or rights from you under this License willnot have their licenses terminated so long as such parties remain in full compliance

9 You are not required to accept this License since you have not signed it Howevernothing else grants you permission to modify or distribute the Library or its derivativeworks These actions are prohibited by law if you do not accept this License Thereforeby modifying or distributing the Library (or any work based on the Library) you indicateyour acceptance of this License to do so and all its terms and conditions for copyingdistributing or modifying the Library or works based on it

10 Each time you redistribute the Library (or any work based on the Library) therecipient automatically receives a license from the original licensor to copydistribute link with or modify the Library subject to these terms and conditions Youmay not impose any further restrictions on the recipients exercise of the rights grantedherein You are not responsible for enforcing compliance by third parties to thisLicense

11 If as a consequence of a court judgment or allegation of patent infringement or forany other reason (not limited to patent issues) conditions are imposed on you (whetherby court order agreement or otherwise) that contradict the conditions of this Licensethey do not excuse you from the conditions of this License If you cannot distribute soas to satisfy simultaneously your obligations under this License and any other pertinentobligations then as a consequence you may not distribute the Library at all Forexample if a patent license would not permit royaltyshyfree redistribution of the Libraryby all those who receive copies directly or indirectly through you then the only way youcould satisfy both it and this License would be to refrain entirely from distribution ofthe Library

If any portion of this section is held invalid or unenforceable under any particularcircumstance the balance of the section is intended to apply and the section as a wholeis intended to apply in other circumstances

It is not the purpose of this section to induce you to infringe any patents or otherproperty right claims or to contest validity of any such claims this section has thesole purpose of protecting the integrity of the free software distribution system whichis implemented by public license practices Many people have made generous contributionsto the wide range of software distributed through that system in reliance on consistentapplication of that system it is up to the authordonor to decide if he or she iswilling to distribute software through any other system and a licensee cannot impose thatchoice

This section is intended to make thoroughly clear what is believed to be a consequence ofthe rest of this License

12 If the distribution andor use of the Library is restricted in certain countrieseither by patents or by copyrighted interfaces the original copyright holder who placesthe Library under this License may add an explicit geographical distribution limitationexcluding those countries so that distribution is permitted only in or among countriesnot thus excluded In such case this License incorporates the limitation as if writtenin the body of this License

13 The Free Software Foundation may publish revised andor new versions of the LibraryGeneral Public License from time to time Such new versions will be similar in spirit tothe present version but may differ in detail to address new problems or concerns

Each version is given a distinguishing version number If the Library specifies a versionnumber of this License which applies to it and any later version you have the option offollowing the terms and conditions either of that version or of any later versionpublished by the Free Software Foundation If the Library does not specify a licenseversion number you may choose any version ever published by the Free SoftwareFoundation

14 If you wish to incorporate parts of the Library into other free programs whosedistribution conditions are incompatible with these write to the author to ask forpermission For software which is copyrighted by the Free Software Foundation write tothe Free Software Foundation we sometimes make exceptions for this Our decision will beguided by the two goals of preserving the free status of all derivatives of our freesoftware and of promoting the sharing and reuse of software generally

NO WARRANTY

11 BECAUSE THE LIBRARY IS LICENSED FREE OF CHARGE THERE IS NO WARRANTY FOR THE LIBRARYTO THE EXTENT PERMITTED BY APPLICABLE LAW EXCEPT WHEN OTHERWISE STATED IN WRITING THECOPYRIGHT HOLDERS ANDOR OTHER PARTIES PROVIDE THE LIBRARY AS IS WITHOUT WARRANTY OFANY KIND EITHER EXPRESSED OR IMPLIED INCLUDING BUT NOT LIMITED TO THE IMPLIEDWARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE THE ENTIRE RISK AS TOTHE QUALITY AND PERFORMANCE OF THE LIBRARY IS WITH YOU SHOULD THE LIBRARY PROVEDEFECTIVE YOU ASSUME THE COST OF ALL NECESSARY SERVICING REPAIR OR CORRECTION

12 IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING WILL ANYCOPYRIGHT HOLDER OR ANY OTHER PARTY WHO MAY MODIFY ANDOR REDISTRIBUTE THE LIBRARY ASPERMITTED ABOVE BE LIABLE TO YOU FOR DAMAGES INCLUDING ANY GENERAL SPECIAL INCIDENTALOR CONSEQUENTIAL DAMAGES ARISING OUT OF THE USE OR INABILITY TO USE THE LIBRARY(INCLUDING BUT NOT LIMITED TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSESSUSTAINED BY YOU OR THIRD PARTIES OR A FAILURE OF THE LIBRARY TO OPERATE WITH ANY OTHERSOFTWARE) EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF SUCHDAMAGES

How to Apply These Terms to Your New Libraries

If you develop a new library and you want it to be of the greatest possible use to thepublic we recommend making it free software that everyone can redistribute and changeYou can do so by permitting redistribution under these terms (or alternatively underthe terms of the ordinary General Public License)

To apply these terms attach the following notices to the library It is safest to attachthem to the start of each source file to most effectively convey the exclusion ofwarranty and each file should have at least the copyright line and a pointer to wherethe full notice is found

one line to give the librarys name and a brief idea of what it does

Copyright (C) year name of author

This library is free software you can redistribute it andor modify it under the termsof the GNU Library General Public License as published by the Free Software Foundationeither version 2 of the License or (at your option) any later version

This library is distributed in the hope that it will be useful but WITHOUT ANY WARRANTYwithout even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSESee the GNU Library General Public License for more details

You should have received a copy of the GNU Library General Public License along with thislibrary if not write to the Free Software Foundation Inc 675 Mass Ave Cambridge MA02139 USA

Also add information on how to contact you by electronic and paper mail

You should also get your employer (if you work as a programmer) or your school if anyto sign a copyright disclaimer for the library if necessary Here is a sample alterthe names

Yoyodyne Inc hereby disclaims all copyright interest in the library `Frob (a libraryfor tweaking knobs) written by James Random Hacker

signature of Ty Coon 1 April 1990

Ty Coon President of Vice

Thats all there is to it

Apeacutendice D

iquestQueacute es LuCAS

El proyecto LuCAS (Linux en CAStellano) comenzoacute como tantas otras cosas ligadas a Linuxen un bar tomando cervezas (reales no virtuales) Era allaacute por marzo de 1995 y ya sehabiacutea comentado en las aacutereas de FidoNet la necesidad de disponer de textos en castellanosobre Linux Fue en aquel bar el bar Ekin de Algorta (Bizkaia) donde nos reuniacuteamos losusuarios de FidoNet todos los domingos donde surgioacute la idea de pasar a la accioacuten Trasdiscutirlo un poco decidimos comenzar por traducir algo que fuese uacutetil para aquellos quecomenzaban a dar sus primeros pasos en linux y creiacutemos que el Installation amp GettingStarted de Matt Welsh era el documento maacutes adecuado Como era mucho trabajo para unasola persona y habiacutea mucha gente que se habiacutea mostrado dispuesta a colaborar habiacutea quehacerlo bien y el trabajo de traducir un libro como eacuteste requeriacutea una labor decoordinacioacuten que inmediatamente asumimos Ramoacuten Gutieacuterrez y yo Alfonso Belloso Yo mehice cargo de coordinar a los traductores para que no hiciesen trabajo repetido y Ramoacutense encargaba de juntar los trabajos y generar el documento final Pedimos permiso alpropio Matt Welsh y asiacute echamos a andar

Hubo que esperar un largo tiempo a tener una primera versioacuten presentable del libro perose consiguioacute Fundamentalmente el hecho de que era una experiencia nueva y ladiversidad de gente que colaboroacute hizo que este primer paso durase casi un antildeo peromerecioacute la pena esperar Hay que decir que a pesar de que todo este movimiento surgioacute deFidoNet y que desde alliacute se sigue muy de cerca al poco de comenzar a trabajar en ellofue cuando conseguiacute mi primera cuenta de Internet y comprobeacute que la forma maacutes praacutecticade coordinarnos era a traveacutes de La Red ya que por Fidonet las comunicaciones se haciacuteandemasiado largas en el tiempo y no siempre eran seguras (para contactar con alguacutencolaborador a veces se podiacutea tardar 2 semanas o no saber nada de eacutel jamaacutes) Y con ellocomenzamos a disponer de maacutes herramientas primero un servidor de ftp luego una lista decorreo un servidor de Web y asiacute hasta hoy Bueno pues una vez terminado este primerlibro nos quedoacute el gusanillo de hacer maacutes y visto que yo acabeacute un poco cansado vinoJuan Joseacute Amor me tomoacute el relevo y comenzamos a traducir la Network AdministratorGuide de Olaf Kirch Esta vez y con la infraestructura ya montada tardamos unos pocosmeses en tener la primera versioacuten

Y despueacutes de eacuteste ya se estaacuten haciendo maacutes Ya esta terminada la traduccioacuten de la LinuxUser Guide (en su fase alfa) y hay alguacuten proyecto maacutes en marcha No quiero dejar demencionar otros proyectos que trabajan en paralelo a eacuteste LuCAS en siacute se ha idodedicando maacutes a la labor de traduccioacuten de textos tipo libro maacutes concretamente a los delLDP y creaciones propias si bien en su origen se ideoacute para traducir cualquier tipo dedocumento e incluso para crear documentos directamente en castellano El SLUG (SpanishLinux User Group) ya existiacutea cuando surgioacute LuCAS o acababa de aparecer Al amparo deLuCAS surgioacute el INSFLUG que se centra en la traduccioacutencreacioacuten de FAQs HOWTOs ydocumentos maacutes pequentildeos Y probablemente existan maacutes grupos haciendo tareas similarespero que ahora no conozco ni soy capaz de recordar

Para contactar con los coordinadores del grupo LuCAS puede hacerlo con Alfonso Belloso

Martiacutenez ltalfonbipv02biehuesgt o en ltalfoniiesesgt y con Juan Joseacute Amor Iglesiasltjjamorlsfiupmesgt

Apeacutendice E

iquestQueacute es INSFLUG

El INSFLUG nacioacute allaacute por marzo del 96 siendo su seno materno el aacuterea echomail deFidoNet R34LINUX Surge ante el entusiasmo de los que empezaacutebamos por aquel entonces aadentrarnos en el mundo del Linux maravillados por como un SO tan potente dedistribucioacuten libre podiacutea haberse hecho realidad gracias al buen hacer generosidad eincreiacuteble colaboracioacuten entre tantas personas dispersas por el globo

Nos sentimos auacuten maacutes maravillados al observar la increiacuteble participacioacuten de la gente quefrecuentaba el aacuterea modeacutelica en FidoNet y por la inestimable ayuda que alliacute seprestaba eso fue (haciendo un poco de psicoacutelogo) lo que produjo la formacioacuten delINSFLUG un inmenso y sincero agradecimiento ademaacutes de enormes ganas de corresponder pornuestra parte aportando nuestro granito de arena a la comunidad Linux en forma detraducciones de Howtos y FAQs documentos que generalmente no superan la decena depaacuteginas y con cuya traduccioacuten ademaacutes de aportar el novel o no tan novel profundiza enel tema del que trate el Howto a medida que lo traduce redundando en beneficio para eacutelmismo shy)

El INSFLUG se centra en la traduccioacuten de Howtos y FAQs (Frecuently Asked Questions algoasiacute como Preguntas de Uso Frecuente PUFs)

Para la traduccioacuten no necesitas maacutes que un editor de texto (En Linux hay muchos) normaly el paquete linuxdocshysgml con el que empleando un lenguaje muy sencillo similar alHTML una vez escrito un soacutelo fuente se podraacuten obtener a partir de eacutel el documento enformatos dvi ps txt lyx rtf info html etc

Cuentas ademaacutes con una guiacutea traducida del uso del linuxdocshysgml en la que se antildeadendetalles de configuracioacuten para el castellano ademaacutes de la facilidad que supone eltraducir editando el fuente original en ingleacutes ya que los coacutedigos etc ya estaacuten noobstante es un lenguaje sencilliacutesimo ademaacutes de ser el formato oficial de todos losHowtos

El INSFLUG colabora estrechamente con LuCAS es maacutes hay varias personas que colaborancon ambos grupos El grupo LuCAS se dedica mayormente a las guiacuteas (guides) los librosmaacutes extensos del LDP o (Linux Documentation Project)

El coordinador de INSFLUG es Francisco J Montilla (email ltpacopepeinamecomgt ircpukka FiDO 234540222) Si desea maacutes informacioacuten puede consultar su paacutegina en WWW enlthttpwwwinsflugnovaesgt y su espacio de FTP en ltftpftpinsflugnovaesgt

Page 6: G.L.U.P.€€Guía€de€Linux€Para€el€Usuariomural.uv.es/~jalto/LINUX.pdf3 En€el€principio€11 3.1€La€computadora€despierta 3.2€Linux€despierta 3.3€La€actuación€del€usuario
Page 7: G.L.U.P.€€Guía€de€Linux€Para€el€Usuariomural.uv.es/~jalto/LINUX.pdf3 En€el€principio€11 3.1€La€computadora€despierta 3.2€Linux€despierta 3.3€La€actuación€del€usuario
Page 8: G.L.U.P.€€Guía€de€Linux€Para€el€Usuariomural.uv.es/~jalto/LINUX.pdf3 En€el€principio€11 3.1€La€computadora€despierta 3.2€Linux€despierta 3.3€La€actuación€del€usuario
Page 9: G.L.U.P.€€Guía€de€Linux€Para€el€Usuariomural.uv.es/~jalto/LINUX.pdf3 En€el€principio€11 3.1€La€computadora€despierta 3.2€Linux€despierta 3.3€La€actuación€del€usuario
Page 10: G.L.U.P.€€Guía€de€Linux€Para€el€Usuariomural.uv.es/~jalto/LINUX.pdf3 En€el€principio€11 3.1€La€computadora€despierta 3.2€Linux€despierta 3.3€La€actuación€del€usuario
Page 11: G.L.U.P.€€Guía€de€Linux€Para€el€Usuariomural.uv.es/~jalto/LINUX.pdf3 En€el€principio€11 3.1€La€computadora€despierta 3.2€Linux€despierta 3.3€La€actuación€del€usuario
Page 12: G.L.U.P.€€Guía€de€Linux€Para€el€Usuariomural.uv.es/~jalto/LINUX.pdf3 En€el€principio€11 3.1€La€computadora€despierta 3.2€Linux€despierta 3.3€La€actuación€del€usuario
Page 13: G.L.U.P.€€Guía€de€Linux€Para€el€Usuariomural.uv.es/~jalto/LINUX.pdf3 En€el€principio€11 3.1€La€computadora€despierta 3.2€Linux€despierta 3.3€La€actuación€del€usuario
Page 14: G.L.U.P.€€Guía€de€Linux€Para€el€Usuariomural.uv.es/~jalto/LINUX.pdf3 En€el€principio€11 3.1€La€computadora€despierta 3.2€Linux€despierta 3.3€La€actuación€del€usuario
Page 15: G.L.U.P.€€Guía€de€Linux€Para€el€Usuariomural.uv.es/~jalto/LINUX.pdf3 En€el€principio€11 3.1€La€computadora€despierta 3.2€Linux€despierta 3.3€La€actuación€del€usuario
Page 16: G.L.U.P.€€Guía€de€Linux€Para€el€Usuariomural.uv.es/~jalto/LINUX.pdf3 En€el€principio€11 3.1€La€computadora€despierta 3.2€Linux€despierta 3.3€La€actuación€del€usuario
Page 17: G.L.U.P.€€Guía€de€Linux€Para€el€Usuariomural.uv.es/~jalto/LINUX.pdf3 En€el€principio€11 3.1€La€computadora€despierta 3.2€Linux€despierta 3.3€La€actuación€del€usuario
Page 18: G.L.U.P.€€Guía€de€Linux€Para€el€Usuariomural.uv.es/~jalto/LINUX.pdf3 En€el€principio€11 3.1€La€computadora€despierta 3.2€Linux€despierta 3.3€La€actuación€del€usuario
Page 19: G.L.U.P.€€Guía€de€Linux€Para€el€Usuariomural.uv.es/~jalto/LINUX.pdf3 En€el€principio€11 3.1€La€computadora€despierta 3.2€Linux€despierta 3.3€La€actuación€del€usuario
Page 20: G.L.U.P.€€Guía€de€Linux€Para€el€Usuariomural.uv.es/~jalto/LINUX.pdf3 En€el€principio€11 3.1€La€computadora€despierta 3.2€Linux€despierta 3.3€La€actuación€del€usuario
Page 21: G.L.U.P.€€Guía€de€Linux€Para€el€Usuariomural.uv.es/~jalto/LINUX.pdf3 En€el€principio€11 3.1€La€computadora€despierta 3.2€Linux€despierta 3.3€La€actuación€del€usuario
Page 22: G.L.U.P.€€Guía€de€Linux€Para€el€Usuariomural.uv.es/~jalto/LINUX.pdf3 En€el€principio€11 3.1€La€computadora€despierta 3.2€Linux€despierta 3.3€La€actuación€del€usuario
Page 23: G.L.U.P.€€Guía€de€Linux€Para€el€Usuariomural.uv.es/~jalto/LINUX.pdf3 En€el€principio€11 3.1€La€computadora€despierta 3.2€Linux€despierta 3.3€La€actuación€del€usuario
Page 24: G.L.U.P.€€Guía€de€Linux€Para€el€Usuariomural.uv.es/~jalto/LINUX.pdf3 En€el€principio€11 3.1€La€computadora€despierta 3.2€Linux€despierta 3.3€La€actuación€del€usuario
Page 25: G.L.U.P.€€Guía€de€Linux€Para€el€Usuariomural.uv.es/~jalto/LINUX.pdf3 En€el€principio€11 3.1€La€computadora€despierta 3.2€Linux€despierta 3.3€La€actuación€del€usuario
Page 26: G.L.U.P.€€Guía€de€Linux€Para€el€Usuariomural.uv.es/~jalto/LINUX.pdf3 En€el€principio€11 3.1€La€computadora€despierta 3.2€Linux€despierta 3.3€La€actuación€del€usuario
Page 27: G.L.U.P.€€Guía€de€Linux€Para€el€Usuariomural.uv.es/~jalto/LINUX.pdf3 En€el€principio€11 3.1€La€computadora€despierta 3.2€Linux€despierta 3.3€La€actuación€del€usuario
Page 28: G.L.U.P.€€Guía€de€Linux€Para€el€Usuariomural.uv.es/~jalto/LINUX.pdf3 En€el€principio€11 3.1€La€computadora€despierta 3.2€Linux€despierta 3.3€La€actuación€del€usuario
Page 29: G.L.U.P.€€Guía€de€Linux€Para€el€Usuariomural.uv.es/~jalto/LINUX.pdf3 En€el€principio€11 3.1€La€computadora€despierta 3.2€Linux€despierta 3.3€La€actuación€del€usuario
Page 30: G.L.U.P.€€Guía€de€Linux€Para€el€Usuariomural.uv.es/~jalto/LINUX.pdf3 En€el€principio€11 3.1€La€computadora€despierta 3.2€Linux€despierta 3.3€La€actuación€del€usuario
Page 31: G.L.U.P.€€Guía€de€Linux€Para€el€Usuariomural.uv.es/~jalto/LINUX.pdf3 En€el€principio€11 3.1€La€computadora€despierta 3.2€Linux€despierta 3.3€La€actuación€del€usuario
Page 32: G.L.U.P.€€Guía€de€Linux€Para€el€Usuariomural.uv.es/~jalto/LINUX.pdf3 En€el€principio€11 3.1€La€computadora€despierta 3.2€Linux€despierta 3.3€La€actuación€del€usuario
Page 33: G.L.U.P.€€Guía€de€Linux€Para€el€Usuariomural.uv.es/~jalto/LINUX.pdf3 En€el€principio€11 3.1€La€computadora€despierta 3.2€Linux€despierta 3.3€La€actuación€del€usuario
Page 34: G.L.U.P.€€Guía€de€Linux€Para€el€Usuariomural.uv.es/~jalto/LINUX.pdf3 En€el€principio€11 3.1€La€computadora€despierta 3.2€Linux€despierta 3.3€La€actuación€del€usuario
Page 35: G.L.U.P.€€Guía€de€Linux€Para€el€Usuariomural.uv.es/~jalto/LINUX.pdf3 En€el€principio€11 3.1€La€computadora€despierta 3.2€Linux€despierta 3.3€La€actuación€del€usuario
Page 36: G.L.U.P.€€Guía€de€Linux€Para€el€Usuariomural.uv.es/~jalto/LINUX.pdf3 En€el€principio€11 3.1€La€computadora€despierta 3.2€Linux€despierta 3.3€La€actuación€del€usuario
Page 37: G.L.U.P.€€Guía€de€Linux€Para€el€Usuariomural.uv.es/~jalto/LINUX.pdf3 En€el€principio€11 3.1€La€computadora€despierta 3.2€Linux€despierta 3.3€La€actuación€del€usuario
Page 38: G.L.U.P.€€Guía€de€Linux€Para€el€Usuariomural.uv.es/~jalto/LINUX.pdf3 En€el€principio€11 3.1€La€computadora€despierta 3.2€Linux€despierta 3.3€La€actuación€del€usuario
Page 39: G.L.U.P.€€Guía€de€Linux€Para€el€Usuariomural.uv.es/~jalto/LINUX.pdf3 En€el€principio€11 3.1€La€computadora€despierta 3.2€Linux€despierta 3.3€La€actuación€del€usuario
Page 40: G.L.U.P.€€Guía€de€Linux€Para€el€Usuariomural.uv.es/~jalto/LINUX.pdf3 En€el€principio€11 3.1€La€computadora€despierta 3.2€Linux€despierta 3.3€La€actuación€del€usuario
Page 41: G.L.U.P.€€Guía€de€Linux€Para€el€Usuariomural.uv.es/~jalto/LINUX.pdf3 En€el€principio€11 3.1€La€computadora€despierta 3.2€Linux€despierta 3.3€La€actuación€del€usuario
Page 42: G.L.U.P.€€Guía€de€Linux€Para€el€Usuariomural.uv.es/~jalto/LINUX.pdf3 En€el€principio€11 3.1€La€computadora€despierta 3.2€Linux€despierta 3.3€La€actuación€del€usuario
Page 43: G.L.U.P.€€Guía€de€Linux€Para€el€Usuariomural.uv.es/~jalto/LINUX.pdf3 En€el€principio€11 3.1€La€computadora€despierta 3.2€Linux€despierta 3.3€La€actuación€del€usuario
Page 44: G.L.U.P.€€Guía€de€Linux€Para€el€Usuariomural.uv.es/~jalto/LINUX.pdf3 En€el€principio€11 3.1€La€computadora€despierta 3.2€Linux€despierta 3.3€La€actuación€del€usuario
Page 45: G.L.U.P.€€Guía€de€Linux€Para€el€Usuariomural.uv.es/~jalto/LINUX.pdf3 En€el€principio€11 3.1€La€computadora€despierta 3.2€Linux€despierta 3.3€La€actuación€del€usuario
Page 46: G.L.U.P.€€Guía€de€Linux€Para€el€Usuariomural.uv.es/~jalto/LINUX.pdf3 En€el€principio€11 3.1€La€computadora€despierta 3.2€Linux€despierta 3.3€La€actuación€del€usuario
Page 47: G.L.U.P.€€Guía€de€Linux€Para€el€Usuariomural.uv.es/~jalto/LINUX.pdf3 En€el€principio€11 3.1€La€computadora€despierta 3.2€Linux€despierta 3.3€La€actuación€del€usuario
Page 48: G.L.U.P.€€Guía€de€Linux€Para€el€Usuariomural.uv.es/~jalto/LINUX.pdf3 En€el€principio€11 3.1€La€computadora€despierta 3.2€Linux€despierta 3.3€La€actuación€del€usuario
Page 49: G.L.U.P.€€Guía€de€Linux€Para€el€Usuariomural.uv.es/~jalto/LINUX.pdf3 En€el€principio€11 3.1€La€computadora€despierta 3.2€Linux€despierta 3.3€La€actuación€del€usuario
Page 50: G.L.U.P.€€Guía€de€Linux€Para€el€Usuariomural.uv.es/~jalto/LINUX.pdf3 En€el€principio€11 3.1€La€computadora€despierta 3.2€Linux€despierta 3.3€La€actuación€del€usuario
Page 51: G.L.U.P.€€Guía€de€Linux€Para€el€Usuariomural.uv.es/~jalto/LINUX.pdf3 En€el€principio€11 3.1€La€computadora€despierta 3.2€Linux€despierta 3.3€La€actuación€del€usuario
Page 52: G.L.U.P.€€Guía€de€Linux€Para€el€Usuariomural.uv.es/~jalto/LINUX.pdf3 En€el€principio€11 3.1€La€computadora€despierta 3.2€Linux€despierta 3.3€La€actuación€del€usuario
Page 53: G.L.U.P.€€Guía€de€Linux€Para€el€Usuariomural.uv.es/~jalto/LINUX.pdf3 En€el€principio€11 3.1€La€computadora€despierta 3.2€Linux€despierta 3.3€La€actuación€del€usuario
Page 54: G.L.U.P.€€Guía€de€Linux€Para€el€Usuariomural.uv.es/~jalto/LINUX.pdf3 En€el€principio€11 3.1€La€computadora€despierta 3.2€Linux€despierta 3.3€La€actuación€del€usuario
Page 55: G.L.U.P.€€Guía€de€Linux€Para€el€Usuariomural.uv.es/~jalto/LINUX.pdf3 En€el€principio€11 3.1€La€computadora€despierta 3.2€Linux€despierta 3.3€La€actuación€del€usuario
Page 56: G.L.U.P.€€Guía€de€Linux€Para€el€Usuariomural.uv.es/~jalto/LINUX.pdf3 En€el€principio€11 3.1€La€computadora€despierta 3.2€Linux€despierta 3.3€La€actuación€del€usuario
Page 57: G.L.U.P.€€Guía€de€Linux€Para€el€Usuariomural.uv.es/~jalto/LINUX.pdf3 En€el€principio€11 3.1€La€computadora€despierta 3.2€Linux€despierta 3.3€La€actuación€del€usuario
Page 58: G.L.U.P.€€Guía€de€Linux€Para€el€Usuariomural.uv.es/~jalto/LINUX.pdf3 En€el€principio€11 3.1€La€computadora€despierta 3.2€Linux€despierta 3.3€La€actuación€del€usuario
Page 59: G.L.U.P.€€Guía€de€Linux€Para€el€Usuariomural.uv.es/~jalto/LINUX.pdf3 En€el€principio€11 3.1€La€computadora€despierta 3.2€Linux€despierta 3.3€La€actuación€del€usuario
Page 60: G.L.U.P.€€Guía€de€Linux€Para€el€Usuariomural.uv.es/~jalto/LINUX.pdf3 En€el€principio€11 3.1€La€computadora€despierta 3.2€Linux€despierta 3.3€La€actuación€del€usuario
Page 61: G.L.U.P.€€Guía€de€Linux€Para€el€Usuariomural.uv.es/~jalto/LINUX.pdf3 En€el€principio€11 3.1€La€computadora€despierta 3.2€Linux€despierta 3.3€La€actuación€del€usuario
Page 62: G.L.U.P.€€Guía€de€Linux€Para€el€Usuariomural.uv.es/~jalto/LINUX.pdf3 En€el€principio€11 3.1€La€computadora€despierta 3.2€Linux€despierta 3.3€La€actuación€del€usuario
Page 63: G.L.U.P.€€Guía€de€Linux€Para€el€Usuariomural.uv.es/~jalto/LINUX.pdf3 En€el€principio€11 3.1€La€computadora€despierta 3.2€Linux€despierta 3.3€La€actuación€del€usuario
Page 64: G.L.U.P.€€Guía€de€Linux€Para€el€Usuariomural.uv.es/~jalto/LINUX.pdf3 En€el€principio€11 3.1€La€computadora€despierta 3.2€Linux€despierta 3.3€La€actuación€del€usuario
Page 65: G.L.U.P.€€Guía€de€Linux€Para€el€Usuariomural.uv.es/~jalto/LINUX.pdf3 En€el€principio€11 3.1€La€computadora€despierta 3.2€Linux€despierta 3.3€La€actuación€del€usuario
Page 66: G.L.U.P.€€Guía€de€Linux€Para€el€Usuariomural.uv.es/~jalto/LINUX.pdf3 En€el€principio€11 3.1€La€computadora€despierta 3.2€Linux€despierta 3.3€La€actuación€del€usuario
Page 67: G.L.U.P.€€Guía€de€Linux€Para€el€Usuariomural.uv.es/~jalto/LINUX.pdf3 En€el€principio€11 3.1€La€computadora€despierta 3.2€Linux€despierta 3.3€La€actuación€del€usuario
Page 68: G.L.U.P.€€Guía€de€Linux€Para€el€Usuariomural.uv.es/~jalto/LINUX.pdf3 En€el€principio€11 3.1€La€computadora€despierta 3.2€Linux€despierta 3.3€La€actuación€del€usuario
Page 69: G.L.U.P.€€Guía€de€Linux€Para€el€Usuariomural.uv.es/~jalto/LINUX.pdf3 En€el€principio€11 3.1€La€computadora€despierta 3.2€Linux€despierta 3.3€La€actuación€del€usuario
Page 70: G.L.U.P.€€Guía€de€Linux€Para€el€Usuariomural.uv.es/~jalto/LINUX.pdf3 En€el€principio€11 3.1€La€computadora€despierta 3.2€Linux€despierta 3.3€La€actuación€del€usuario
Page 71: G.L.U.P.€€Guía€de€Linux€Para€el€Usuariomural.uv.es/~jalto/LINUX.pdf3 En€el€principio€11 3.1€La€computadora€despierta 3.2€Linux€despierta 3.3€La€actuación€del€usuario
Page 72: G.L.U.P.€€Guía€de€Linux€Para€el€Usuariomural.uv.es/~jalto/LINUX.pdf3 En€el€principio€11 3.1€La€computadora€despierta 3.2€Linux€despierta 3.3€La€actuación€del€usuario
Page 73: G.L.U.P.€€Guía€de€Linux€Para€el€Usuariomural.uv.es/~jalto/LINUX.pdf3 En€el€principio€11 3.1€La€computadora€despierta 3.2€Linux€despierta 3.3€La€actuación€del€usuario
Page 74: G.L.U.P.€€Guía€de€Linux€Para€el€Usuariomural.uv.es/~jalto/LINUX.pdf3 En€el€principio€11 3.1€La€computadora€despierta 3.2€Linux€despierta 3.3€La€actuación€del€usuario
Page 75: G.L.U.P.€€Guía€de€Linux€Para€el€Usuariomural.uv.es/~jalto/LINUX.pdf3 En€el€principio€11 3.1€La€computadora€despierta 3.2€Linux€despierta 3.3€La€actuación€del€usuario
Page 76: G.L.U.P.€€Guía€de€Linux€Para€el€Usuariomural.uv.es/~jalto/LINUX.pdf3 En€el€principio€11 3.1€La€computadora€despierta 3.2€Linux€despierta 3.3€La€actuación€del€usuario
Page 77: G.L.U.P.€€Guía€de€Linux€Para€el€Usuariomural.uv.es/~jalto/LINUX.pdf3 En€el€principio€11 3.1€La€computadora€despierta 3.2€Linux€despierta 3.3€La€actuación€del€usuario
Page 78: G.L.U.P.€€Guía€de€Linux€Para€el€Usuariomural.uv.es/~jalto/LINUX.pdf3 En€el€principio€11 3.1€La€computadora€despierta 3.2€Linux€despierta 3.3€La€actuación€del€usuario
Page 79: G.L.U.P.€€Guía€de€Linux€Para€el€Usuariomural.uv.es/~jalto/LINUX.pdf3 En€el€principio€11 3.1€La€computadora€despierta 3.2€Linux€despierta 3.3€La€actuación€del€usuario
Page 80: G.L.U.P.€€Guía€de€Linux€Para€el€Usuariomural.uv.es/~jalto/LINUX.pdf3 En€el€principio€11 3.1€La€computadora€despierta 3.2€Linux€despierta 3.3€La€actuación€del€usuario
Page 81: G.L.U.P.€€Guía€de€Linux€Para€el€Usuariomural.uv.es/~jalto/LINUX.pdf3 En€el€principio€11 3.1€La€computadora€despierta 3.2€Linux€despierta 3.3€La€actuación€del€usuario
Page 82: G.L.U.P.€€Guía€de€Linux€Para€el€Usuariomural.uv.es/~jalto/LINUX.pdf3 En€el€principio€11 3.1€La€computadora€despierta 3.2€Linux€despierta 3.3€La€actuación€del€usuario
Page 83: G.L.U.P.€€Guía€de€Linux€Para€el€Usuariomural.uv.es/~jalto/LINUX.pdf3 En€el€principio€11 3.1€La€computadora€despierta 3.2€Linux€despierta 3.3€La€actuación€del€usuario
Page 84: G.L.U.P.€€Guía€de€Linux€Para€el€Usuariomural.uv.es/~jalto/LINUX.pdf3 En€el€principio€11 3.1€La€computadora€despierta 3.2€Linux€despierta 3.3€La€actuación€del€usuario
Page 85: G.L.U.P.€€Guía€de€Linux€Para€el€Usuariomural.uv.es/~jalto/LINUX.pdf3 En€el€principio€11 3.1€La€computadora€despierta 3.2€Linux€despierta 3.3€La€actuación€del€usuario
Page 86: G.L.U.P.€€Guía€de€Linux€Para€el€Usuariomural.uv.es/~jalto/LINUX.pdf3 En€el€principio€11 3.1€La€computadora€despierta 3.2€Linux€despierta 3.3€La€actuación€del€usuario
Page 87: G.L.U.P.€€Guía€de€Linux€Para€el€Usuariomural.uv.es/~jalto/LINUX.pdf3 En€el€principio€11 3.1€La€computadora€despierta 3.2€Linux€despierta 3.3€La€actuación€del€usuario
Page 88: G.L.U.P.€€Guía€de€Linux€Para€el€Usuariomural.uv.es/~jalto/LINUX.pdf3 En€el€principio€11 3.1€La€computadora€despierta 3.2€Linux€despierta 3.3€La€actuación€del€usuario
Page 89: G.L.U.P.€€Guía€de€Linux€Para€el€Usuariomural.uv.es/~jalto/LINUX.pdf3 En€el€principio€11 3.1€La€computadora€despierta 3.2€Linux€despierta 3.3€La€actuación€del€usuario
Page 90: G.L.U.P.€€Guía€de€Linux€Para€el€Usuariomural.uv.es/~jalto/LINUX.pdf3 En€el€principio€11 3.1€La€computadora€despierta 3.2€Linux€despierta 3.3€La€actuación€del€usuario
Page 91: G.L.U.P.€€Guía€de€Linux€Para€el€Usuariomural.uv.es/~jalto/LINUX.pdf3 En€el€principio€11 3.1€La€computadora€despierta 3.2€Linux€despierta 3.3€La€actuación€del€usuario
Page 92: G.L.U.P.€€Guía€de€Linux€Para€el€Usuariomural.uv.es/~jalto/LINUX.pdf3 En€el€principio€11 3.1€La€computadora€despierta 3.2€Linux€despierta 3.3€La€actuación€del€usuario
Page 93: G.L.U.P.€€Guía€de€Linux€Para€el€Usuariomural.uv.es/~jalto/LINUX.pdf3 En€el€principio€11 3.1€La€computadora€despierta 3.2€Linux€despierta 3.3€La€actuación€del€usuario
Page 94: G.L.U.P.€€Guía€de€Linux€Para€el€Usuariomural.uv.es/~jalto/LINUX.pdf3 En€el€principio€11 3.1€La€computadora€despierta 3.2€Linux€despierta 3.3€La€actuación€del€usuario
Page 95: G.L.U.P.€€Guía€de€Linux€Para€el€Usuariomural.uv.es/~jalto/LINUX.pdf3 En€el€principio€11 3.1€La€computadora€despierta 3.2€Linux€despierta 3.3€La€actuación€del€usuario
Page 96: G.L.U.P.€€Guía€de€Linux€Para€el€Usuariomural.uv.es/~jalto/LINUX.pdf3 En€el€principio€11 3.1€La€computadora€despierta 3.2€Linux€despierta 3.3€La€actuación€del€usuario
Page 97: G.L.U.P.€€Guía€de€Linux€Para€el€Usuariomural.uv.es/~jalto/LINUX.pdf3 En€el€principio€11 3.1€La€computadora€despierta 3.2€Linux€despierta 3.3€La€actuación€del€usuario
Page 98: G.L.U.P.€€Guía€de€Linux€Para€el€Usuariomural.uv.es/~jalto/LINUX.pdf3 En€el€principio€11 3.1€La€computadora€despierta 3.2€Linux€despierta 3.3€La€actuación€del€usuario
Page 99: G.L.U.P.€€Guía€de€Linux€Para€el€Usuariomural.uv.es/~jalto/LINUX.pdf3 En€el€principio€11 3.1€La€computadora€despierta 3.2€Linux€despierta 3.3€La€actuación€del€usuario
Page 100: G.L.U.P.€€Guía€de€Linux€Para€el€Usuariomural.uv.es/~jalto/LINUX.pdf3 En€el€principio€11 3.1€La€computadora€despierta 3.2€Linux€despierta 3.3€La€actuación€del€usuario
Page 101: G.L.U.P.€€Guía€de€Linux€Para€el€Usuariomural.uv.es/~jalto/LINUX.pdf3 En€el€principio€11 3.1€La€computadora€despierta 3.2€Linux€despierta 3.3€La€actuación€del€usuario
Page 102: G.L.U.P.€€Guía€de€Linux€Para€el€Usuariomural.uv.es/~jalto/LINUX.pdf3 En€el€principio€11 3.1€La€computadora€despierta 3.2€Linux€despierta 3.3€La€actuación€del€usuario
Page 103: G.L.U.P.€€Guía€de€Linux€Para€el€Usuariomural.uv.es/~jalto/LINUX.pdf3 En€el€principio€11 3.1€La€computadora€despierta 3.2€Linux€despierta 3.3€La€actuación€del€usuario
Page 104: G.L.U.P.€€Guía€de€Linux€Para€el€Usuariomural.uv.es/~jalto/LINUX.pdf3 En€el€principio€11 3.1€La€computadora€despierta 3.2€Linux€despierta 3.3€La€actuación€del€usuario
Page 105: G.L.U.P.€€Guía€de€Linux€Para€el€Usuariomural.uv.es/~jalto/LINUX.pdf3 En€el€principio€11 3.1€La€computadora€despierta 3.2€Linux€despierta 3.3€La€actuación€del€usuario
Page 106: G.L.U.P.€€Guía€de€Linux€Para€el€Usuariomural.uv.es/~jalto/LINUX.pdf3 En€el€principio€11 3.1€La€computadora€despierta 3.2€Linux€despierta 3.3€La€actuación€del€usuario
Page 107: G.L.U.P.€€Guía€de€Linux€Para€el€Usuariomural.uv.es/~jalto/LINUX.pdf3 En€el€principio€11 3.1€La€computadora€despierta 3.2€Linux€despierta 3.3€La€actuación€del€usuario
Page 108: G.L.U.P.€€Guía€de€Linux€Para€el€Usuariomural.uv.es/~jalto/LINUX.pdf3 En€el€principio€11 3.1€La€computadora€despierta 3.2€Linux€despierta 3.3€La€actuación€del€usuario
Page 109: G.L.U.P.€€Guía€de€Linux€Para€el€Usuariomural.uv.es/~jalto/LINUX.pdf3 En€el€principio€11 3.1€La€computadora€despierta 3.2€Linux€despierta 3.3€La€actuación€del€usuario
Page 110: G.L.U.P.€€Guía€de€Linux€Para€el€Usuariomural.uv.es/~jalto/LINUX.pdf3 En€el€principio€11 3.1€La€computadora€despierta 3.2€Linux€despierta 3.3€La€actuación€del€usuario
Page 111: G.L.U.P.€€Guía€de€Linux€Para€el€Usuariomural.uv.es/~jalto/LINUX.pdf3 En€el€principio€11 3.1€La€computadora€despierta 3.2€Linux€despierta 3.3€La€actuación€del€usuario
Page 112: G.L.U.P.€€Guía€de€Linux€Para€el€Usuariomural.uv.es/~jalto/LINUX.pdf3 En€el€principio€11 3.1€La€computadora€despierta 3.2€Linux€despierta 3.3€La€actuación€del€usuario
Page 113: G.L.U.P.€€Guía€de€Linux€Para€el€Usuariomural.uv.es/~jalto/LINUX.pdf3 En€el€principio€11 3.1€La€computadora€despierta 3.2€Linux€despierta 3.3€La€actuación€del€usuario
Page 114: G.L.U.P.€€Guía€de€Linux€Para€el€Usuariomural.uv.es/~jalto/LINUX.pdf3 En€el€principio€11 3.1€La€computadora€despierta 3.2€Linux€despierta 3.3€La€actuación€del€usuario
Page 115: G.L.U.P.€€Guía€de€Linux€Para€el€Usuariomural.uv.es/~jalto/LINUX.pdf3 En€el€principio€11 3.1€La€computadora€despierta 3.2€Linux€despierta 3.3€La€actuación€del€usuario
Page 116: G.L.U.P.€€Guía€de€Linux€Para€el€Usuariomural.uv.es/~jalto/LINUX.pdf3 En€el€principio€11 3.1€La€computadora€despierta 3.2€Linux€despierta 3.3€La€actuación€del€usuario
Page 117: G.L.U.P.€€Guía€de€Linux€Para€el€Usuariomural.uv.es/~jalto/LINUX.pdf3 En€el€principio€11 3.1€La€computadora€despierta 3.2€Linux€despierta 3.3€La€actuación€del€usuario
Page 118: G.L.U.P.€€Guía€de€Linux€Para€el€Usuariomural.uv.es/~jalto/LINUX.pdf3 En€el€principio€11 3.1€La€computadora€despierta 3.2€Linux€despierta 3.3€La€actuación€del€usuario
Page 119: G.L.U.P.€€Guía€de€Linux€Para€el€Usuariomural.uv.es/~jalto/LINUX.pdf3 En€el€principio€11 3.1€La€computadora€despierta 3.2€Linux€despierta 3.3€La€actuación€del€usuario
Page 120: G.L.U.P.€€Guía€de€Linux€Para€el€Usuariomural.uv.es/~jalto/LINUX.pdf3 En€el€principio€11 3.1€La€computadora€despierta 3.2€Linux€despierta 3.3€La€actuación€del€usuario
Page 121: G.L.U.P.€€Guía€de€Linux€Para€el€Usuariomural.uv.es/~jalto/LINUX.pdf3 En€el€principio€11 3.1€La€computadora€despierta 3.2€Linux€despierta 3.3€La€actuación€del€usuario
Page 122: G.L.U.P.€€Guía€de€Linux€Para€el€Usuariomural.uv.es/~jalto/LINUX.pdf3 En€el€principio€11 3.1€La€computadora€despierta 3.2€Linux€despierta 3.3€La€actuación€del€usuario
Page 123: G.L.U.P.€€Guía€de€Linux€Para€el€Usuariomural.uv.es/~jalto/LINUX.pdf3 En€el€principio€11 3.1€La€computadora€despierta 3.2€Linux€despierta 3.3€La€actuación€del€usuario
Page 124: G.L.U.P.€€Guía€de€Linux€Para€el€Usuariomural.uv.es/~jalto/LINUX.pdf3 En€el€principio€11 3.1€La€computadora€despierta 3.2€Linux€despierta 3.3€La€actuación€del€usuario
Page 125: G.L.U.P.€€Guía€de€Linux€Para€el€Usuariomural.uv.es/~jalto/LINUX.pdf3 En€el€principio€11 3.1€La€computadora€despierta 3.2€Linux€despierta 3.3€La€actuación€del€usuario
Page 126: G.L.U.P.€€Guía€de€Linux€Para€el€Usuariomural.uv.es/~jalto/LINUX.pdf3 En€el€principio€11 3.1€La€computadora€despierta 3.2€Linux€despierta 3.3€La€actuación€del€usuario
Page 127: G.L.U.P.€€Guía€de€Linux€Para€el€Usuariomural.uv.es/~jalto/LINUX.pdf3 En€el€principio€11 3.1€La€computadora€despierta 3.2€Linux€despierta 3.3€La€actuación€del€usuario
Page 128: G.L.U.P.€€Guía€de€Linux€Para€el€Usuariomural.uv.es/~jalto/LINUX.pdf3 En€el€principio€11 3.1€La€computadora€despierta 3.2€Linux€despierta 3.3€La€actuación€del€usuario
Page 129: G.L.U.P.€€Guía€de€Linux€Para€el€Usuariomural.uv.es/~jalto/LINUX.pdf3 En€el€principio€11 3.1€La€computadora€despierta 3.2€Linux€despierta 3.3€La€actuación€del€usuario
Page 130: G.L.U.P.€€Guía€de€Linux€Para€el€Usuariomural.uv.es/~jalto/LINUX.pdf3 En€el€principio€11 3.1€La€computadora€despierta 3.2€Linux€despierta 3.3€La€actuación€del€usuario
Page 131: G.L.U.P.€€Guía€de€Linux€Para€el€Usuariomural.uv.es/~jalto/LINUX.pdf3 En€el€principio€11 3.1€La€computadora€despierta 3.2€Linux€despierta 3.3€La€actuación€del€usuario
Page 132: G.L.U.P.€€Guía€de€Linux€Para€el€Usuariomural.uv.es/~jalto/LINUX.pdf3 En€el€principio€11 3.1€La€computadora€despierta 3.2€Linux€despierta 3.3€La€actuación€del€usuario
Page 133: G.L.U.P.€€Guía€de€Linux€Para€el€Usuariomural.uv.es/~jalto/LINUX.pdf3 En€el€principio€11 3.1€La€computadora€despierta 3.2€Linux€despierta 3.3€La€actuación€del€usuario
Page 134: G.L.U.P.€€Guía€de€Linux€Para€el€Usuariomural.uv.es/~jalto/LINUX.pdf3 En€el€principio€11 3.1€La€computadora€despierta 3.2€Linux€despierta 3.3€La€actuación€del€usuario
Page 135: G.L.U.P.€€Guía€de€Linux€Para€el€Usuariomural.uv.es/~jalto/LINUX.pdf3 En€el€principio€11 3.1€La€computadora€despierta 3.2€Linux€despierta 3.3€La€actuación€del€usuario
Page 136: G.L.U.P.€€Guía€de€Linux€Para€el€Usuariomural.uv.es/~jalto/LINUX.pdf3 En€el€principio€11 3.1€La€computadora€despierta 3.2€Linux€despierta 3.3€La€actuación€del€usuario
Page 137: G.L.U.P.€€Guía€de€Linux€Para€el€Usuariomural.uv.es/~jalto/LINUX.pdf3 En€el€principio€11 3.1€La€computadora€despierta 3.2€Linux€despierta 3.3€La€actuación€del€usuario
Page 138: G.L.U.P.€€Guía€de€Linux€Para€el€Usuariomural.uv.es/~jalto/LINUX.pdf3 En€el€principio€11 3.1€La€computadora€despierta 3.2€Linux€despierta 3.3€La€actuación€del€usuario
Page 139: G.L.U.P.€€Guía€de€Linux€Para€el€Usuariomural.uv.es/~jalto/LINUX.pdf3 En€el€principio€11 3.1€La€computadora€despierta 3.2€Linux€despierta 3.3€La€actuación€del€usuario
Page 140: G.L.U.P.€€Guía€de€Linux€Para€el€Usuariomural.uv.es/~jalto/LINUX.pdf3 En€el€principio€11 3.1€La€computadora€despierta 3.2€Linux€despierta 3.3€La€actuación€del€usuario
Page 141: G.L.U.P.€€Guía€de€Linux€Para€el€Usuariomural.uv.es/~jalto/LINUX.pdf3 En€el€principio€11 3.1€La€computadora€despierta 3.2€Linux€despierta 3.3€La€actuación€del€usuario
Page 142: G.L.U.P.€€Guía€de€Linux€Para€el€Usuariomural.uv.es/~jalto/LINUX.pdf3 En€el€principio€11 3.1€La€computadora€despierta 3.2€Linux€despierta 3.3€La€actuación€del€usuario
Page 143: G.L.U.P.€€Guía€de€Linux€Para€el€Usuariomural.uv.es/~jalto/LINUX.pdf3 En€el€principio€11 3.1€La€computadora€despierta 3.2€Linux€despierta 3.3€La€actuación€del€usuario
Page 144: G.L.U.P.€€Guía€de€Linux€Para€el€Usuariomural.uv.es/~jalto/LINUX.pdf3 En€el€principio€11 3.1€La€computadora€despierta 3.2€Linux€despierta 3.3€La€actuación€del€usuario
Page 145: G.L.U.P.€€Guía€de€Linux€Para€el€Usuariomural.uv.es/~jalto/LINUX.pdf3 En€el€principio€11 3.1€La€computadora€despierta 3.2€Linux€despierta 3.3€La€actuación€del€usuario
Page 146: G.L.U.P.€€Guía€de€Linux€Para€el€Usuariomural.uv.es/~jalto/LINUX.pdf3 En€el€principio€11 3.1€La€computadora€despierta 3.2€Linux€despierta 3.3€La€actuación€del€usuario
Page 147: G.L.U.P.€€Guía€de€Linux€Para€el€Usuariomural.uv.es/~jalto/LINUX.pdf3 En€el€principio€11 3.1€La€computadora€despierta 3.2€Linux€despierta 3.3€La€actuación€del€usuario
Page 148: G.L.U.P.€€Guía€de€Linux€Para€el€Usuariomural.uv.es/~jalto/LINUX.pdf3 En€el€principio€11 3.1€La€computadora€despierta 3.2€Linux€despierta 3.3€La€actuación€del€usuario
Page 149: G.L.U.P.€€Guía€de€Linux€Para€el€Usuariomural.uv.es/~jalto/LINUX.pdf3 En€el€principio€11 3.1€La€computadora€despierta 3.2€Linux€despierta 3.3€La€actuación€del€usuario
Page 150: G.L.U.P.€€Guía€de€Linux€Para€el€Usuariomural.uv.es/~jalto/LINUX.pdf3 En€el€principio€11 3.1€La€computadora€despierta 3.2€Linux€despierta 3.3€La€actuación€del€usuario
Page 151: G.L.U.P.€€Guía€de€Linux€Para€el€Usuariomural.uv.es/~jalto/LINUX.pdf3 En€el€principio€11 3.1€La€computadora€despierta 3.2€Linux€despierta 3.3€La€actuación€del€usuario
Page 152: G.L.U.P.€€Guía€de€Linux€Para€el€Usuariomural.uv.es/~jalto/LINUX.pdf3 En€el€principio€11 3.1€La€computadora€despierta 3.2€Linux€despierta 3.3€La€actuación€del€usuario
Page 153: G.L.U.P.€€Guía€de€Linux€Para€el€Usuariomural.uv.es/~jalto/LINUX.pdf3 En€el€principio€11 3.1€La€computadora€despierta 3.2€Linux€despierta 3.3€La€actuación€del€usuario
Page 154: G.L.U.P.€€Guía€de€Linux€Para€el€Usuariomural.uv.es/~jalto/LINUX.pdf3 En€el€principio€11 3.1€La€computadora€despierta 3.2€Linux€despierta 3.3€La€actuación€del€usuario
Page 155: G.L.U.P.€€Guía€de€Linux€Para€el€Usuariomural.uv.es/~jalto/LINUX.pdf3 En€el€principio€11 3.1€La€computadora€despierta 3.2€Linux€despierta 3.3€La€actuación€del€usuario
Page 156: G.L.U.P.€€Guía€de€Linux€Para€el€Usuariomural.uv.es/~jalto/LINUX.pdf3 En€el€principio€11 3.1€La€computadora€despierta 3.2€Linux€despierta 3.3€La€actuación€del€usuario
Page 157: G.L.U.P.€€Guía€de€Linux€Para€el€Usuariomural.uv.es/~jalto/LINUX.pdf3 En€el€principio€11 3.1€La€computadora€despierta 3.2€Linux€despierta 3.3€La€actuación€del€usuario
Page 158: G.L.U.P.€€Guía€de€Linux€Para€el€Usuariomural.uv.es/~jalto/LINUX.pdf3 En€el€principio€11 3.1€La€computadora€despierta 3.2€Linux€despierta 3.3€La€actuación€del€usuario
Page 159: G.L.U.P.€€Guía€de€Linux€Para€el€Usuariomural.uv.es/~jalto/LINUX.pdf3 En€el€principio€11 3.1€La€computadora€despierta 3.2€Linux€despierta 3.3€La€actuación€del€usuario
Page 160: G.L.U.P.€€Guía€de€Linux€Para€el€Usuariomural.uv.es/~jalto/LINUX.pdf3 En€el€principio€11 3.1€La€computadora€despierta 3.2€Linux€despierta 3.3€La€actuación€del€usuario
Page 161: G.L.U.P.€€Guía€de€Linux€Para€el€Usuariomural.uv.es/~jalto/LINUX.pdf3 En€el€principio€11 3.1€La€computadora€despierta 3.2€Linux€despierta 3.3€La€actuación€del€usuario
Page 162: G.L.U.P.€€Guía€de€Linux€Para€el€Usuariomural.uv.es/~jalto/LINUX.pdf3 En€el€principio€11 3.1€La€computadora€despierta 3.2€Linux€despierta 3.3€La€actuación€del€usuario
Page 163: G.L.U.P.€€Guía€de€Linux€Para€el€Usuariomural.uv.es/~jalto/LINUX.pdf3 En€el€principio€11 3.1€La€computadora€despierta 3.2€Linux€despierta 3.3€La€actuación€del€usuario
Page 164: G.L.U.P.€€Guía€de€Linux€Para€el€Usuariomural.uv.es/~jalto/LINUX.pdf3 En€el€principio€11 3.1€La€computadora€despierta 3.2€Linux€despierta 3.3€La€actuación€del€usuario
Page 165: G.L.U.P.€€Guía€de€Linux€Para€el€Usuariomural.uv.es/~jalto/LINUX.pdf3 En€el€principio€11 3.1€La€computadora€despierta 3.2€Linux€despierta 3.3€La€actuación€del€usuario
Page 166: G.L.U.P.€€Guía€de€Linux€Para€el€Usuariomural.uv.es/~jalto/LINUX.pdf3 En€el€principio€11 3.1€La€computadora€despierta 3.2€Linux€despierta 3.3€La€actuación€del€usuario
Page 167: G.L.U.P.€€Guía€de€Linux€Para€el€Usuariomural.uv.es/~jalto/LINUX.pdf3 En€el€principio€11 3.1€La€computadora€despierta 3.2€Linux€despierta 3.3€La€actuación€del€usuario
Page 168: G.L.U.P.€€Guía€de€Linux€Para€el€Usuariomural.uv.es/~jalto/LINUX.pdf3 En€el€principio€11 3.1€La€computadora€despierta 3.2€Linux€despierta 3.3€La€actuación€del€usuario
Page 169: G.L.U.P.€€Guía€de€Linux€Para€el€Usuariomural.uv.es/~jalto/LINUX.pdf3 En€el€principio€11 3.1€La€computadora€despierta 3.2€Linux€despierta 3.3€La€actuación€del€usuario
Page 170: G.L.U.P.€€Guía€de€Linux€Para€el€Usuariomural.uv.es/~jalto/LINUX.pdf3 En€el€principio€11 3.1€La€computadora€despierta 3.2€Linux€despierta 3.3€La€actuación€del€usuario
Page 171: G.L.U.P.€€Guía€de€Linux€Para€el€Usuariomural.uv.es/~jalto/LINUX.pdf3 En€el€principio€11 3.1€La€computadora€despierta 3.2€Linux€despierta 3.3€La€actuación€del€usuario