Post on 25-Mar-2021
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
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
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
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
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