+ All Categories
Home > Documents > Manual de Super Vive Nci a en Linux

Manual de Super Vive Nci a en Linux

Date post: 25-Nov-2015
Category:
Upload: juan-alberto-castillejos-gordillo
View: 61 times
Download: 1 times
Share this document with a friend
Description:
Una guia mul completa sobre el mundo de linux
371
Manual de supervivencia en Linux E DITORES : Francisco L. Solsona Elisa Viso Facultad de Ciencias, UNAM
Transcript
  • Manual de supervivencia en Linux

    EDITORES:

    Francisco L. SolsonaElisa VisoFacultad de Ciencias, UNAM

  • AUTORES:

    Mauricio AldazosaJos Galaviz

    Ivn HernndezCanek PelezKarla Ramrez

    Fernanda Snchez PuigFrancisco SolsonaManuel SugawaraArturo Vzquez

    Elisa Viso

  • ndice general

    Prefacio XII

    1. Introduccin a Unix 11.1. Historia . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1

    1.1.1. Sistemas UNIX libres . . . . . . . . . . . . . . . . . . . . . . 21.1.2. El proyecto GNU . . . . . . . . . . . . . . . . . . . . . . . . . 3

    1.2. Sistemas de tiempo compartido . . . . . . . . . . . . . . . . . . . . . . 41.2.1. Los sistemas multiusuario . . . . . . . . . . . . . . . . . . . . 4

    1.3. Inicio de sesin . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 51.4. Emacs . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6

    1.4.1. Introduccin a Emacs . . . . . . . . . . . . . . . . . . . . . . . 61.4.2. Emacs y t . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7

    2. Ambientes grficos en Linux 92.1. Ambientes de escritorio . . . . . . . . . . . . . . . . . . . . . . . . . . 92.2. KDE . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10

    2.2.1. Configuracin de KDE . . . . . . . . . . . . . . . . . . . . . . 102.2.2. KDE en 1, 2, 3 . . . . . . . . . . . . . . . . . . . . . . . . . . 142.2.3. Quemado de discos con K3b . . . . . . . . . . . . . . . . . . . 142.2.4. Amarok . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 18

    2.3. Emacs . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 202.4. Comenzando con Emacs . . . . . . . . . . . . . . . . . . . . . . . . . 20

    3. Sistema de Archivos 233.1. El sistema de archivos . . . . . . . . . . . . . . . . . . . . . . . . . . . 23

    3.1.1. Rutas absolutas y relativas . . . . . . . . . . . . . . . . . . . . 263.2. Movindose en el rbol del sistema de archivos . . . . . . . . . . . . . 27

    3.2.1. Permisos de archivos . . . . . . . . . . . . . . . . . . . . . . . 303.2.2. Archivos estndar y redireccionamiento . . . . . . . . . . . . . 34

    3.3. Otros comandos de Unix . . . . . . . . . . . . . . . . . . . . . . . . . 373.3.1. Sintaxis estndar de comandos . . . . . . . . . . . . . . . . . . 37

  • ii

    3.4. Agrupando nombres de archivos . . . . . . . . . . . . . . . . . . . . . 443.5. Konqueror: administrador de archivos y algo ms . . . . . . . . . . . . 45

    3.5.1. Iniciando Konqueror . . . . . . . . . . . . . . . . . . . . . . . 463.5.2. Konqueror como administrador de archivos . . . . . . . . . . . 463.5.3. Konqueror como un navegador web . . . . . . . . . . . . . . . 483.5.4. Konqueror como una aplicacin integrada . . . . . . . . . . . . 49

    3.6. Emacs . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 503.6.1. Ejecutando Emacs desde la lnea de comandos . . . . . . . . . 503.6.2. Conceptos esenciales . . . . . . . . . . . . . . . . . . . . . . . 523.6.3. Dired . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 533.6.4. Ejecucin de comandos de Unix desde Emacs . . . . . . . . . . 54

    4. Edicin 554.1. La guerra de los editores de texto . . . . . . . . . . . . . . . . . . . . . 55

    4.1.1. Vieja guardia contra nueva guardia . . . . . . . . . . . . . . . . 564.2. Kate: un editor para programadores . . . . . . . . . . . . . . . . . . . 56

    4.2.1. Introduccin . . . . . . . . . . . . . . . . . . . . . . . . . . . 564.2.2. Empezando a utilizar Kate . . . . . . . . . . . . . . . . . . . . 574.2.3. Editando archivos . . . . . . . . . . . . . . . . . . . . . . . . . 59

    4.3. Emacs . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 644.3.1. Comandos . . . . . . . . . . . . . . . . . . . . . . . . . . . . 654.3.2. Movimiento . . . . . . . . . . . . . . . . . . . . . . . . . . . . 664.3.3. Matando y borrando . . . . . . . . . . . . . . . . . . . . . . . 674.3.4. Reencarnacin de texto . . . . . . . . . . . . . . . . . . . . . . 684.3.5. Regiones . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 684.3.6. Rectngulos . . . . . . . . . . . . . . . . . . . . . . . . . . . . 684.3.7. Registros . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 694.3.8. Archivos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 704.3.9. Buscar . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 704.3.10. Reemplazar . . . . . . . . . . . . . . . . . . . . . . . . . . . . 704.3.11. Guardar . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 714.3.12. Ventanas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 714.3.13. Marcos (frames) . . . . . . . . . . . . . . . . . . . . . . . . . 714.3.14. Ayuda en lnea . . . . . . . . . . . . . . . . . . . . . . . . . . 724.3.15. Lista de buffers . . . . . . . . . . . . . . . . . . . . . . . . . . 724.3.16. Anzuelos (Hooks), setq y otros . . . . . . . . . . . . . . . . . . 724.3.17. Ortografa . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 734.3.18. Extendiendo Emacs . . . . . . . . . . . . . . . . . . . . . . . . 74

  • iii

    5. Internet 775.1. Redes de computadoras . . . . . . . . . . . . . . . . . . . . . . . . . . 77

    5.1.1. Relacin cliente-servidor . . . . . . . . . . . . . . . . . . . . . 785.1.2. TCP/IP . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 79

    5.2. Web . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 805.3. Redes y direcciones . . . . . . . . . . . . . . . . . . . . . . . . . . . . 81

    5.3.1. Domicilios estndar en Internet . . . . . . . . . . . . . . . . . 815.3.2. Nomenclatura antigua e internacional . . . . . . . . . . . . . . 81

    5.4. WWW . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 825.4.1. URL: especificacin de objetos en Internet . . . . . . . . . . . 835.4.2. Navegadores . . . . . . . . . . . . . . . . . . . . . . . . . . . 835.4.3. Google . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 855.4.4. Wikipedia . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 85

    5.5. Los programas de correo de Unix . . . . . . . . . . . . . . . . . . . . . 865.6. Netiquete . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 87

    5.6.1. Algunos puntos del netiquete . . . . . . . . . . . . . . . . . . . . 875.7. KMail: lector de correo electrnico . . . . . . . . . . . . . . . . . . . . 89

    5.7.1. Introduccin . . . . . . . . . . . . . . . . . . . . . . . . . . . 895.7.2. Utilizando KMail . . . . . . . . . . . . . . . . . . . . . . . . . 90

    5.8. FTP . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 935.8.1. Qu es un FTP annimo? . . . . . . . . . . . . . . . . . . . . 935.8.2. Comandos para FTP . . . . . . . . . . . . . . . . . . . . . . . 93

    5.9. SSH: Secure Shell . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 955.9.1. Accediendo a sistemas remotos . . . . . . . . . . . . . . . . . 965.9.2. Copiando archivos entre sistemas . . . . . . . . . . . . . . . . 96

    5.10. PGP: Pretty Good Privacy . . . . . . . . . . . . . . . . . . . . . . . . 975.10.1. Funcionamiento de PGP . . . . . . . . . . . . . . . . . . . . . 98

    5.11. RSS: sistema de noticias . . . . . . . . . . . . . . . . . . . . . . . . . 995.11.1. Introduccin . . . . . . . . . . . . . . . . . . . . . . . . . . . 995.11.2. Akregator . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 99

    5.12. Mensajera instantnea . . . . . . . . . . . . . . . . . . . . . . . . . . 1015.12.1. Introduccin . . . . . . . . . . . . . . . . . . . . . . . . . . . 1015.12.2. Kopete . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1015.12.3. Creando cuentas . . . . . . . . . . . . . . . . . . . . . . . . . 1035.12.4. Funciones bsicas . . . . . . . . . . . . . . . . . . . . . . . . . 1045.12.5. Extensiones . . . . . . . . . . . . . . . . . . . . . . . . . . . . 105

    5.13. Rdesktop: Remote Desktop Protocol Client . . . . . . . . . . . . . . . 1065.13.1. Utilizando Rdesktop . . . . . . . . . . . . . . . . . . . . . . . 106

    5.14. Kontact, una suite de productividad en KDE . . . . . . . . . . . . . . . 1065.14.1. Resumen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1085.14.2. Correo, KMail . . . . . . . . . . . . . . . . . . . . . . . . . . 108

  • iv

    5.14.3. Contactos, KAddressBook . . . . . . . . . . . . . . . . . . . . 1085.14.4. Calendario y pendientes con KOrganizer . . . . . . . . . . . . 112

    5.15. Emacs . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1195.15.1. VM . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1215.15.2. BBDB . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1285.15.3. w3m . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1315.15.4. ERC . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1365.15.5. TRAMP . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1395.15.6. Diccionario . . . . . . . . . . . . . . . . . . . . . . . . . . . . 140

    6. LATEX 1436.1. Introduccin . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1436.2. Componentes de un texto . . . . . . . . . . . . . . . . . . . . . . . . . 1446.3. Ambientes para formato . . . . . . . . . . . . . . . . . . . . . . . . . 145

    6.3.1. Posibles errores . . . . . . . . . . . . . . . . . . . . . . . . . . 1476.4. Formato general de un documento . . . . . . . . . . . . . . . . . . . . 149

    6.4.1. Cartas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1526.5. Tipos y tamaos de letras . . . . . . . . . . . . . . . . . . . . . . . . . 1536.6. Listas de enunciados o prrafos . . . . . . . . . . . . . . . . . . . . . . 156

    6.6.1. Numeraciones . . . . . . . . . . . . . . . . . . . . . . . . . . 1576.6.2. Listas marcadas . . . . . . . . . . . . . . . . . . . . . . . . . . 1606.6.3. Descripciones . . . . . . . . . . . . . . . . . . . . . . . . . . . 1616.6.4. Listas ms compactas . . . . . . . . . . . . . . . . . . . . . . . 163

    6.7. Tablas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1646.7.1. Multicolumnas . . . . . . . . . . . . . . . . . . . . . . . . . . 1666.7.2. Separacin de renglones y columnas . . . . . . . . . . . . . . . 1686.7.3. Lneas incompletas verticales y horizontales . . . . . . . . . 1726.7.4. Espacio entre los renglones . . . . . . . . . . . . . . . . . . . . 173

    6.8. Matemticas en LATEX . . . . . . . . . . . . . . . . . . . . . . . . . . . 1746.8.1. Frmulas matemticas . . . . . . . . . . . . . . . . . . . . . . 176

    6.9. Emacs y LATEX . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1786.9.1. Anotaciones en los smbolos . . . . . . . . . . . . . . . . . . . 1926.9.2. Arreglos de frmulas . . . . . . . . . . . . . . . . . . . . . . . 193

    6.10. Imgenes y figuras . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1976.10.1. Tablas, figuras, etc. . . . . . . . . . . . . . . . . . . . . . . . . 1976.10.2. Cortando figuras . . . . . . . . . . . . . . . . . . . . . . . . . 2046.10.3. Colores . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2056.10.4. Dibujando objetos geomtricos . . . . . . . . . . . . . . . . . . 2076.10.5. Lneas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2076.10.6. Acomodando objetos . . . . . . . . . . . . . . . . . . . . . . . 226

    6.11. Referencias e ndices . . . . . . . . . . . . . . . . . . . . . . . . . . . 231

  • v6.11.1. Referencias bibliogrficas . . . . . . . . . . . . . . . . . . . . 2316.11.2. ndices . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 237

    6.12. Emacs . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2376.12.1. AUCTEX . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2386.12.2. RefTEX . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2416.12.3. Preview . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 242

    7. Lenguajes de marcado 2457.1. XML . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2467.2. HTML . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 249

    7.2.1. XHTML . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2497.3. CSS . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 250

    7.3.1. Javascript . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2537.4. Emacs . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 255

    8. Herramientas para desarrollo 2568.1. Control de versiones . . . . . . . . . . . . . . . . . . . . . . . . . . . 256

    8.1.1. subversion . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2568.1.2. Introduccin a subversion . . . . . . . . . . . . . . . . . . . . 257

    8.2. Emacs . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2608.2.1. JDEE . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2608.2.2. psvn . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 268

    9. Extendiendo tu ambiente 2719.1. Programacin en shell . . . . . . . . . . . . . . . . . . . . . . . . . . . 271

    9.1.1. Variables . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2729.1.2. Preparacin . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2729.1.3. Vigilando el espacio en disco . . . . . . . . . . . . . . . . . . . 2739.1.4. Listado de directorios . . . . . . . . . . . . . . . . . . . . . . . 2759.1.5. Recorridos recursivos . . . . . . . . . . . . . . . . . . . . . . . 2789.1.6. Comparando archivos . . . . . . . . . . . . . . . . . . . . . . 2839.1.7. Otra vez el problema de borrar la basura . . . . . . . . . . . . . 2859.1.8. Para saber ms . . . . . . . . . . . . . . . . . . . . . . . . . . 289

    9.2. Emacs . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2899.2.1. La madre de todos los lenguajes . . . . . . . . . . . . . . . . . 2899.2.2. LISP en 15 minutos . . . . . . . . . . . . . . . . . . . . . . . . 2909.2.3. Resumen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 298

    9.3. Evaluaciones . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2999.3.1. Nombres de buffers . . . . . . . . . . . . . . . . . . . . . . . . 299

    9.4. Definiciones de funciones . . . . . . . . . . . . . . . . . . . . . . . . . 3019.4.1. defun . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3019.4.2. let . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 305

  • vi

    9.4.3. La forma especial if . . . . . . . . . . . . . . . . . . . . . . . 3069.4.4. save-excursion . . . . . . . . . . . . . . . . . . . . . . . . . . 3079.4.5. Resumen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 308

    9.5. Funciones relacionadas con buffers . . . . . . . . . . . . . . . . . . . . 3119.5.1. Definicin (simplificada) de beginning-of-buffer . . . . . . . . 3119.5.2. Resumen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 314

    9.6. Funciones fundamentales . . . . . . . . . . . . . . . . . . . . . . . . . 3149.6.1. car y cdr . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3159.6.2. Cortando y guardando texto . . . . . . . . . . . . . . . . . . . 3189.6.3. Inicializacin de variables: defvar . . . . . . . . . . . . . . . . 3219.6.4. copy-region-as-kill . . . . . . . . . . . . . . . . . . . . . . . . 3229.6.5. Resumen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 325

    9.7. Lluvia de funciones . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3269.7.1. Quin o qu es ASCII? . . . . . . . . . . . . . . . . . . . . . 3269.7.2. Cmo numerar una regin de lneas? . . . . . . . . . . . . . . 3279.7.3. Borrado efectivo de espacios . . . . . . . . . . . . . . . . . . . 3289.7.4. Un ejercicio totalmente intil, o eso parece . . . . . . . . . . . 3309.7.5. Resumen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 332

    9.8. Para saber ms . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 333

    A. Distribuciones de Linux 337A.1. Ubuntu . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 337

    A.1.1. Filosofa . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 337A.1.2. Manejo de software . . . . . . . . . . . . . . . . . . . . . . . . 338

    A.2. Debian . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 340A.2.1. Filosofa . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 340A.2.2. Manejo de software . . . . . . . . . . . . . . . . . . . . . . . . 340

    A.3. Fedora . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 340A.3.1. Filosofa . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 340A.3.2. Manejo de software . . . . . . . . . . . . . . . . . . . . . . . . 341

    B. Compilando e instalando a pie 343B.1. Aplicaciones no disponibles . . . . . . . . . . . . . . . . . . . . . . . 343

    C. Emacs: archivos de configuracin 347C.1. /.emacs . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 347C.2. /.vm . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 349C.3. /.emacs-w3m . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 350

  • ndice de figuras

    1.1. Acceso al sistema. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 51.2. Inicio de una sesin en un sistema UNIX. . . . . . . . . . . . . . . . . 61.3. Equivocacin al teclear la contrasea. . . . . . . . . . . . . . . . . . . 6

    2.1. KControl . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 112.2. Administracin de usuarios . . . . . . . . . . . . . . . . . . . . . . . . 122.3. Administracin de contraseas . . . . . . . . . . . . . . . . . . . . . . 122.4. Disposicin del teclado . . . . . . . . . . . . . . . . . . . . . . . . . . 142.5. KDE . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 152.6. K3b . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 162.7. Quemado de un disco de datos . . . . . . . . . . . . . . . . . . . . . . 162.8. Quemado de un disco de audio . . . . . . . . . . . . . . . . . . . . . . 182.9. Amarok . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 192.10. Emacs en el men de KDE . . . . . . . . . . . . . . . . . . . . . . . . 20

    3.1. Sistema de archivos en un sistema Unix . . . . . . . . . . . . . . . . . 253.2. Resultado de entubar ls -al con less . . . . . . . . . . . . . . . . . . . 293.3. Konqueror como un administrador de archivos . . . . . . . . . . . . . . 473.4. Konqueror con un emulador de terminal . . . . . . . . . . . . . . . . . 483.5. Konqueror como un navegador de Internet . . . . . . . . . . . . . . . . 493.6. Konqueror deplegando una imagen . . . . . . . . . . . . . . . . . . . . 493.7. Konqueror deplegando un documento postscrip. . . . . . . . . . . . . . 50

    4.1. Kate en el men de KDE . . . . . . . . . . . . . . . . . . . . . . . . . 574.2. Ventana de inicio de Kate . . . . . . . . . . . . . . . . . . . . . . . . . 60

    5.1. Ventana principal de KMail . . . . . . . . . . . . . . . . . . . . . . . . 895.2. Vista principal de Akregator . . . . . . . . . . . . . . . . . . . . . . . 1005.3. Kopete en el men de KDE . . . . . . . . . . . . . . . . . . . . . . . . 1035.4. Vista principal de kopete . . . . . . . . . . . . . . . . . . . . . . . . . 1045.5. Ventana inicial de Kontact . . . . . . . . . . . . . . . . . . . . . . . . 1075.6. KAddressBook . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 109

  • viii

    5.7. Creando una nueva agenda . . . . . . . . . . . . . . . . . . . . . . . . 1105.8. Creando una nuevo contacto . . . . . . . . . . . . . . . . . . . . . . . 1105.9. Pestaa de detalles . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1115.10. KAddressBook con algunos contactos . . . . . . . . . . . . . . . . . . 1115.11. KOrganizer . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1125.12. Creando una nuevo evento . . . . . . . . . . . . . . . . . . . . . . . . 1135.13. Ajustando la repeticin de un evento . . . . . . . . . . . . . . . . . . . 1145.14. Agregando participantes en un evento . . . . . . . . . . . . . . . . . . 1155.15. Ajustando la hora de la reunin . . . . . . . . . . . . . . . . . . . . . . 1165.16. Vista Qu es lo siguiente? . . . . . . . . . . . . . . . . . . . . . . . . 1165.17. Vista Lista . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1175.18. Vista Da . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1175.19. Vista Semana laboral . . . . . . . . . . . . . . . . . . . . . . . . . . . 1185.20. Vista Semana . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1185.21. Vista Tres das siguientes . . . . . . . . . . . . . . . . . . . . . . . . . 1195.22. Vista Mes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1205.23. El diario dentro de Kontact . . . . . . . . . . . . . . . . . . . . . . . . 120

    6.1. Grfico introducido con includegraphics . . . . . . . . . . . . . 2016.2. Escalando objetos con graphics. . . . . . . . . . . . . . . . . . . . . . 2026.3. Rotaciones y reflejos con graphics . . . . . . . . . . . . . . . . . . 2036.4. Tomando pedazos de figuras . . . . . . . . . . . . . . . . . . . . . . . 2046.5. Ejemplo de opciones para dibujar . . . . . . . . . . . . . . . . . . . . . 2136.6. Graficacin de funciones arbitrarias . . . . . . . . . . . . . . . . . . . 2216.7. Impresin de la retcula . . . . . . . . . . . . . . . . . . . . . . . . . . 2226.8. Colocacin de los ejes . . . . . . . . . . . . . . . . . . . . . . . . . . 2226.9. Segunda forma de pintar la retcula . . . . . . . . . . . . . . . . . . . . 2236.10. Divertimento con slo trazo de lneas . . . . . . . . . . . . . . . . . . . 2246.11. Dibujo de una grfica en LATEX . . . . . . . . . . . . . . . . . . . . . . 2296.12. Actividad 6.52 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2316.13. Ejemplo de LATEX usando BIBTEX . . . . . . . . . . 2336.14. Salida de LATEX al ejecutar BIBTEX . . . . . . . . . . . . . . . . . . . . 2346.15. Ejemplo de una base de datos BIBTEX . . . . . . . . . . . . . . . . . . 2356.16. Ejemplo usando los estilos BIBTEX . . . . . . . . . . . . . . . . . . . . 2366.17. Preview en accin . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 243

    7.1. Pgina sin hoja de estilo . . . . . . . . . . . . . . . . . . . . . . . . . 2517.2. Pgina con hoja de estilo . . . . . . . . . . . . . . . . . . . . . . . . . 252

  • ndice de tablas

    1. Convenciones tipogrficas . . . . . . . . . . . . . . . . . . . . . . . . XII

    3.1. Comandos de Unix importantes . . . . . . . . . . . . . . . . . . . . . . 393.2. Emacs: opciones de inicio . . . . . . . . . . . . . . . . . . . . . . . . 513.3. Emacs: comandos del modo dired . . . . . . . . . . . . . . . . . . . . 53

    4.1. Kate: enlaces de tecla para acceso rpido . . . . . . . . . . . . . . . . . 614.2. Kate: opciones para buscar y reemplazar . . . . . . . . . . . . . . . . . 634.3. Kate: sangrados disponibles . . . . . . . . . . . . . . . . . . . . . . . 644.4. Emacs: comandos de movimiento . . . . . . . . . . . . . . . . . . . . 664.5. Emacs: movimiento a lugares especiales . . . . . . . . . . . . . . . . . 674.6. Emacs: comandos para matar y borrar . . . . . . . . . . . . . . . . . . 674.7. Emacs: comandos para manejar rectngulos . . . . . . . . . . . . . . . 694.8. Emacs: comandos para manejar registros . . . . . . . . . . . . . . . . . 694.9. Emacs: comandos para revisar ortografa . . . . . . . . . . . . . . . . . 74

    5.1. Dominios de jerarqua superior . . . . . . . . . . . . . . . . . . . . . . 825.2. Servicios comunes de Google . . . . . . . . . . . . . . . . . . . . . . . 855.3. Otros servicios de la Wikipedia . . . . . . . . . . . . . . . . . . . . . . 865.4. Algunos comandos disponibles en el sistema . . . . . . . . . . . . . . 945.5. Emacs: comandos de seleccin de VM . . . . . . . . . . . . . . . . . . 1245.6. Emacs: comandos para componer correo en VM . . . . . . . . . . . . . 1255.7. Emacs: comandos de Mail . . . . . . . . . . . . . . . . . . . . . . . . 1265.8. Emacs: comandos para contestar correo en VM . . . . . . . . . . . . . 1265.9. Emacs: comandos para adelantar mensajes de VM . . . . . . . . . . . . 1275.10. Emacs: tipos vlidos para campos BBDB . . . . . . . . . . . . . . . . 1295.11. Emacs: comandos de BBDB . . . . . . . . . . . . . . . . . . . . . . . 1305.12. Emacs: iniciando w3m . . . . . . . . . . . . . . . . . . . . . . . . . . 1315.13. Emacs: siguiendo ligas con w3m . . . . . . . . . . . . . . . . . . . . . 1325.14. Emacs: navegando con w3m . . . . . . . . . . . . . . . . . . . . . . . 1335.15. Emacs: puntos de inters en la pgina ala w3m . . . . . . . . . . . . . 1335.16. Emacs: movimiento entre pginas con w3m . . . . . . . . . . . . . . . 134

  • x5.17. Emacs: manejo de imgenes en w3m . . . . . . . . . . . . . . . . . . . 1355.18. Emacs: ligas favoritas en w3m . . . . . . . . . . . . . . . . . . . . . . 1365.19. Emacs: comandos de ERC . . . . . . . . . . . . . . . . . . . . . . . . 1375.20. Emacs: mdulos para extender ERC . . . . . . . . . . . . . . . . . . . 1385.21. Emacs: comandos de dictionary . . . . . . . . . . . . . . . . . . . . . 141

    6.1. LATEX: ambientes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1456.2. LATEX: comandos para modificar espacios . . . . . . . . . . . . . . . . 1506.3. Tamaos disponibles para letras . . . . . . . . . . . . . . . . . . . . . 1546.4. LATEX: comandos para cambios de tipo de letra . . . . . . . . . . . . . . 1556.5. Modificadores para la definicin de columnas . . . . . . . . . . . . . . 1656.6. Acentos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1756.7. Smbolos no ingleses . . . . . . . . . . . . . . . . . . . . . . . . . . . 1756.8. Smbolos de puntuacin y especiales . . . . . . . . . . . . . . . . . . . 1756.9. Smbolos griegos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1796.10. Smbolos con flechas . . . . . . . . . . . . . . . . . . . . . . . . . . . 1806.11. Operadores y smbolos relacionales . . . . . . . . . . . . . . . . . . . 1806.12. Smbolos varios . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1826.13. Nombres de funciones comunes . . . . . . . . . . . . . . . . . . . . . 1826.14. Smbolos agrandables . . . . . . . . . . . . . . . . . . . . . . . . . . . 1846.15. Delimitadores . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1866.16. Tipos de letras en modo matemtico . . . . . . . . . . . . . . . . . . . 1876.17. Acentos en modo matemtico . . . . . . . . . . . . . . . . . . . . . . . 1926.18. Comandos de espacio en modo matemtico . . . . . . . . . . . . . . . 1966.19. Posiciones posibles para los flotantes . . . . . . . . . . . . . . . . . . . 1986.20. Conversin de grados Farenheit a Centgrados . . . . . . . . . . . . . . 1996.21. Conversin de Farenheit a Centgrados . . . . . . . . . . . . . . . . . . 2006.22. Representaciones numricas . . . . . . . . . . . . . . . . . . . . . . . 2006.23. Comparacin de tamaos . . . . . . . . . . . . . . . . . . . . . . . . . 2046.24. Paquetes de pgf para colores y dibujos . . . . . . . . . . . . . . . . . . 2056.25. Colores bsicos con los que se cuenta . . . . . . . . . . . . . . . . . . 2066.26. Modificadores para el trazo de lneas y figuras . . . . . . . . . . . . . . 2126.27. Opciones de grosor y estilos de lneas . . . . . . . . . . . . . . . . . . 2136.28. Ejemplos de figuras en TikZ . . . . . . . . . . . . . . . . . . . . . . . 2146.29. Lneas dobles . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2146.30. Tipos de puntas de flechas en TikZ . . . . . . . . . . . . . . . . . . . . 2156.31. Figuras geomtricas que se pueden lograr en TikZ . . . . . . . . . . . 2166.32. Graficacin de funciones comunes en TikZ . . . . . . . . . . . . . . . 2186.33. Smbolos para marcar curvas que se grafican . . . . . . . . . . . . . . . 2196.34. Emacs: comandos de AUCTEX . . . . . . . . . . . . . . . . . . . . . . 239

    8.1. subversion: comandos ms importantes . . . . . . . . . . . . . . . . . 259

  • xi

    8.2. JDEE: abreviaturas de estructuras de control . . . . . . . . . . . . . . . 2638.3. JDEE: formas para completar campos y mtodos . . . . . . . . . . . . 2648.4. JDEE: enunciados import . . . . . . . . . . . . . . . . . . . . . . . . . 2648.5. JDEE: generadores de cdigo, wizards . . . . . . . . . . . . . . . . . . 2658.6. Emacs: comandos de psvn . . . . . . . . . . . . . . . . . . . . . . . . 269

    9.1. Programacin en shell: variables automticas . . . . . . . . . . . . . . 275

  • Prefacio

    Este libro presenta las aplicaciones y el enfoque que un estudiante de computacino un futuro programador debe dominar para sacar el mayor provecho de su enseanzaprofesional en programacin y, en general, en las ciencias de la computacin. Hemosvertido aqu la experiencia de media docena de aos impartiendo cursos propeduticosde supervivencia para estudiantes de la licenciatura en ciencias de la computacin de laFacultad de Ciencias de la Universidad Nacional Autnoma de Mxico.

    Convenciones tipogrficas

    Tabla 1 Convenciones tipogrficas

    Entidad Descripcin

    EnfatizadoUtilizamos este tipo de letra (font) para enfatizar o resaltarpalabras o frases.

    itlicasLas utilizamos para modismos, palabras o frases en ingls ypalabras utilizadas en el medio y cuya traduccin o acepta-cin en el idioma no es clara.

    comando

    Los comandos y opciones se muestran as. Cuando encuen-tres lneas tales como:% comando, stas representan co-mandos que puedes teclear y ejecutar en una terminal. Porconvencin utilizaremos% para significar que debe ejecu-tarse como un usuario no-priviligiado y $ cuando debe eje-cutarse como sper-usuario o root.

    enunciadosUtilizaremos este tipo de letra para escribir cdigo que debeir en un archivo.Este smbolo es el logo del ambiente Gnome y sirve para se-alar qu aplicaciones para este ambiente son equivalentesa la revisada en la seccin donde aparece.

    Contina en la siguiente pgina

  • xiv

    Tabla 1 Convenciones tipogrficas Contina de la pgina anterior

    Entidad DescripcinEste smbolo es el logo del ambiente KDE y sirve para se-alar aplicaciones alternativas o similares a la revisada en laseccin donde aparece.Este smbolo es el logo del editor Emacs y sirve para sealarpaquetes alternativos o similares al revisado en la seccindonde aparece.

    A quin est dirigido

    Este texto est dirigido a estudiantes y profesionales de la computacin o futurosprogramadores que estn interesados en incursionar en el mundo del software libre,conocer el sistema operativo Linux y que requieran dominar rpidamente herramientasorientadas al desarrollo y productividad en este ambiente.

    Es un libro prctico, por lo que es importante resaltar que todo lo que se ve en losdistintos captulos puede repetirse en un sistema de cmputo con sistema operativo Li-nux. Asimismo, los ejercicios en algunas de las secciones son de utilidad para reafirmarel conocimiento y se recomienda realizarlos en el orden presentado.

    Distribucin y ambientes

    A lo largo del libro encontrars muchos ejemplos que funcionarn bien en cualquierAlgunas deestas notasmuestrancomandos

    distribucin de Linux. Sin embargo, y a pesar de nuestros mejores esfuerzos, hemosincluido aplicaciones que no son parte esencial de las distribuciones de Linux msutilizadas. Cada vez que esto sucede te mostramos, en una nota al margen, el comandoque debes ejecutar como sper-usuario para instalar dicha aplicacin.

    Para lograr esto, por supuesto, nos hemos visto en la necesidad de utilizar una dis-tribucin y optamos por Ubuntu y como administrador de paquetes utilizamos apt. Porejemplo, vers en notas al margen algo parecido a esto:

    % smart install kate

    lo que constituye (como vers en el Captulo 1) una lnea de comandos que, al serejecutada, se conecta a la red, localiza la aplicacin kate, la descarga a tu computadoray la instala.

    En el apndice A se presenta una relacin de algunas de las distribuciones msimportantes en el mercado al momento de la edicin de este libro. En dicho anexo

  • xv

    encontrars, entre otros datos interesantes de cada distribucin, la manera preferida deadministrar aplicaciones.

    En el apndice B se presentan las opciones que se tienen para instalar paquetes ofunciones de tu distribucin favorita. Podrs ver ah cmo compilar para instalar algu-nos de los servicios que se presentan en este libro.

    Finalmente, en el apndice C colocamos los archivos principales para tu archivo.emacs que fuimos construyendo a lo largo de este material, as como los archivosnecesarios para correo e internet.

  • Introduccin aUnix 1

    1.1. Historia

    La primera versin de UNIX, llamada Unics, fue escrita en 1969 por Ken Thomp-son. Corra en una computadora PDP-7 de Digital. Ms adelante, los laboratorios Bell,el MIT y General Electric se involucraron en la creacin del sistema Multics, grandeen tamao, y el primer sistema de tiempo compartido que inclua muchas ideas inno-vadoras acerca de sistemas operativos. Thompson y algunos de sus colegas admirabanlas capacidades de Multics; sin embargo, pensaban que era demasiado complicado. Suidea era demostrar que era posible construir un sistema operativo que proporcionara unambiente de desarrollo cmodo de una forma ms simple. Y afortunadamente, tuvieronun xito admirable en el desarrollo de esta idea; a pesar de esto, UNIX es irnicamentemucho ms complicado de lo que Multics nunca lleg a ser.

    En 1970 Thompson, junto con Dennis Ritchie, port UNIX a la PDP-11/20. Ritchiedise y escribi el primer compilador de C para proveer un lenguaje que pudieraser usado para escribir una versin porttil del sistema. En 1973, Ritchie y Thompsonreescribieron el kernel de UNIX, el corazn del sistema operativo, en C.

    Inicialmente se otorgaron licencias gratuitas para utilizar UNIX a universidadescon propsitos meramente educativos (en 1974). Esta versin fue la quinta edicin (lasediciones hacen referencia a las ediciones del manual de referencia de UNIX). La sextaedicin fue liberada en 1975; sin embargo, fue hasta la sptima edicin, liberada por loslaboratorios Bell en 1979, donde se logr la meta deseada: portabilidad; esta edicin

  • 2 Introduccin a Unix

    fue la que sirvi como punto de partida para la generacin de este nuevo y maravillosomundo: el mundo UNIX. sta es considerada la edicin clsica de UNIX. Las dosvertientes ms fuertes creadas a partir de esta edicin de UNIX son: System V (noconfundirlo con la quinta edicin) y el sistema BSD (Berkeley Software Distribution).

    A pesar de que ambos sistemas surgieron de la misma influencia y comparten mu-chas caractersticas, los dos sistemas se desarrollaron con personalidades muy distintas.System V es ms conservador y slido; mientras que BSD es ms innovador y experi-mental. System V era un sistema comercial, mientras que BSD no.

    La historia es mucho ms detallada y an hay mucho que contar acerca del desarro-llo de cada una de estas vertientes, de las cuales surgieron todava muchas vertientesms de UNIX.

    En el caso de la licenciatura en Ciencias de la Computacin en la Facultad de Cien-cias, como en muchas otras universidades de prestigio, el servicio al que acceden losestudiantes y la mayora de los profesores es utilizando una implementacin de UNIX,Linux, con computadoras conectadas en una red, por lo que todo lo que sucede entrelos estudiantes y la computadora ser en el contexto de esta red.

    1.1.1. Sistemas UNIX libres

    Los sistemas compatibles UNIX libres1para la arquitectura i386, notablemente Li-nux y FreeBSD, han hecho de UNIX un sistema al alcance de cualquiera. Estos sistemasproveen excelente rendimiento y vienen con un conjunto de caractersticas y herramien-tas estndar de UNIX. Son tan robustos que incluso muchas empresas han basado sudesarrollo en alguno de estos sistemas.

    Dado que estos sistemas no contienen software propietario pueden ser usados, co-piados y distribuidos por cualquiera (incluso gratis). Las copias de estos sistemas sepueden conseguir en CD-ROM o bien por medio de Internet.

    Linux. Linux es una versin de UNIX libre, originada por Linus Torvalds en la Uni-versidad de Helsinki en Finlandia. Fue inspirado por Minix escrito por AndrewTanenbaum y sigue ms o menos las convenciones de System V. Su desarrolloha sido llevado a cabo por programadores (hackers, wizards) de todo el mundo,coordinados por Linus a travs de Internet. Una gran cantidad de cdigo incluidaen el "sistema operativo Linux"2es GNU y la versin de X es XFree86.Hay varias distribuciones de Linux y algunas de las ms importantes son:

    Ubuntu: http://www.ubuntu.com/ (y Kubuntu, la distribucin que utilizamosen este trabajo: http://www.kubuntu.org/)

    1En este contexto libre, es una traduccin literal de free que no significa gratis, (como en cervezasgratis), sino significa libre (como en libertad de expresin).

    2Un sistema operativo es un conjunto de programas que controla y administra los recursos de lacomputadora, como son el disco, la memoria, los dispositivos de entrada y salida.

  • 1.1 Historia 3

    Fedora: http://fedora.redhat.com/Debian: http://www.debian.org/openSUSE: http://www.opensuse.org/FreeSpire: http://freespire.org/

    Linux se distribuye bajo la licencia GPL (General Public Licence), que es cono-cida como CopyLeft y que representa gran parte de la idiosincrasia del mundoUNIX libre.

    FreeBSD. FreeBSD es derivado del sistema BSD (de la versin 4.4 para ser exactos);fue creado, igual que Linux, para la arquitectura i386. Su idea fundamental dedesarrollo es tener un ambiente estable de desarrollo para esa arquitectura. Estsoportado por un grupo internacional de voluntarios. La gran mayora de los pro-gramas que conforman los sistemas FreeBSD, a diferencia de Linux, estn gober-nados por licencias estilo Berkeley, las cuales permiten redistribuciones siemprey cuando el cdigo incluya una nota reconociendo el derecho de autor de Regentsof the University of California and the FreeBSD project. Algunas otras partes deFreeBSD son GNU y estn cubiertas por la GPL.

    La pregunta ms comn entre usuarios de UNIX en el mundo es: cul es mejor:Linux o FreeBSD? La respuesta no es clara. Ambos tienen cosas buenas y tal vez lamejor forma de saberlo es probar ambos.

    1.1.2. El proyecto GNU

    El proyecto GNU buscaba desarrollar un sistema compatible con UNIX, totalmentelibre3. Es operado por la FSF (Free Software Foundation), organizacin fundada por Ri-chard Stallman, quien ha escrito gran parte del cdigo de GNU. GNU es una anagramade "GNUs not UNIX". Algunas herramientas invaluables para el trabajo diario de unestudiante de Ciencias de la Computacin (al menos en esta Universidad) que han sidodesarrolladas dentro del proyecto GNU son: un editor de texto (Emacs), el compiladorde C (gcc), un depurador (gdb), y versiones de prcticamente todas las herramientasestndar de UNIX.

    Todo el software distribuido por GNU se libera bajo la licencia GPL. De acuerdocon los trminos de esta licencia, cualquiera puede modificar el software y redistribuirsu propia versin. La restriccin principal es que te obliga a redistribuirlo incluyendoel cdigo fuente, an en el caso de que t hayas hecho las modificaciones.

    3A varios aos de haber sido creada, lo han logrado. Su nombre es Hurd y promete muchas cosasinteresantes en el mundo de los sistemas operativos. Sin embargo, Linux, (que sigue mucha de la filosofade GNU, pero no es el proyecto GNU), le lleva mucha ventaja. Sin duda alguna sta es una pocainteresante para estar metido en el software libre: nos esperan cosas buenas.

  • 4 Introduccin a Unix

    UNIX es un sistema operativo multi-usuario y multi-tarea, es decir, permite a mu-chos usuarios conectarse al sistema y cada uno de estos usuarios puede ejecutar variosprogramas a la vez.

    1.2. Sistemas de tiempo compartido

    UNIX es un sistema de tiempo compartido. Esto significa que las computadoras quetrabajan con UNIX pueden aceptar ms de un usuario al mismo tiempo. La computado-ra principal (la parte del hardware que ejecuta realmente la mayora del trabajo) recibeel nombre de computadora anfitrin. Una de las tareas del sistema operativo es asegurarque los recursos de la computadora anfitrin se compartan entre todos los usuarios.

    Para trabajar con UNIX normalmente usars una terminal. Una terminal UNIX b-sica consta de una pantalla, un teclado y algunas cosas ms. No obstante, como se verms adelante algunas terminales son ms complejas que otras.

    Cada vez que oprimes una tecla, la terminal enva una seal a la computadora an-fitrin. Como respuesta, esta ltima enva su propia seal de regreso a la terminal,indicndole que despliegue el carcter correspondiente en la pantalla. UNIX fue con-figurado de tal forma que cuando la computadora anfitrin efecta el eco, puedes verque lo que teclea se recibe bien y que la conexin entre la computadora anfitrin y laterminal est intacta.

    1.2.1. Los sistemas multiusuario

    Muchas computadoras anfitrin estn conectadas directamente a las terminales. Noobstante, hay muchos centros de cmputo que ofrecen una variedad de computadorasanfitrin. En tales casos, la terminal podra estar conectada a una computadora especial,denominada servidor.

    Casi todas las computadoras anfitrin cuentan con un teclado y una pantalla, queson parte de la computadora. Para UNIX, teclado y pantalla son slo otra terminal. Sinembargo, dichas partes reciben el nombre especial de consola.

    Un sistema UNIX clsico puede usar una computadora anfitrin que se encuentreen la oficina del administrador del sistema. Dicha computadora podra estar conectadaa una sala llena de terminales o computadoras al otro extremo del corredor o en otropiso e incluso en otro edificio.

    Bsicamente, todos los sistemas UNIX aceptan varios usuarios a la vez. No obstan-te, algunas computadoras UNIX slo pueden ser usadas por una persona simultnea-menente y son mejor conocidas como estaciones de trabajo4.

    4Esto no significa que la estacin de trabajo no tenga capacidades multiusuario o multitarea; la esta-

  • 1.3 Inicio de sesin 5

    1.3. Inicio de sesin

    Dentro de los sistemas UNIX, todos los usuarios del sistema, sea ste uniusuario omultiusuario, se identifican con un nombre de usuario, tambin conocido como su lo-gin o logname, que ser provisto por el administrador del sistema. La clave de usuariogeneralmente est relacionada con el nombre y apellido del usuario. Dos usos comuneses la de dar al usuario la primera letra de su nombre junto con su apellido, o las tres ini-ciales de su nombre y dos apellidos. Por ejemplo, supongamos que el nombre completode un usuario es Juan Prez y su nombre de usuario podra ser juan o jp. En este libro,utilizaremos juan como tu nombre de usuario.

    Para usar un sistema UNIX, en primer lugar debes iniciar una sesin con un nombrede usuario; el sistema pedir este nombre por medio del programa login; debers teclearla clave que te fue asignada, respetando minsculas y maysculas5. Al terminar con loscarcteres que componen tu clave, debers oprimir la tecla Enter , para que el sistemareciba la clave y la procese. Supongamos que la clave de acceso es juanPerez123. Lapantalla de la computadora se ve como en la figura 1.1, esperando a que le des lacontrasea correcta.

    Figura 1.1 Acceso al sistema.

    Red Hat Linux re lease 6.2 ( Zoot )Kernel 2.2.145.0 on an i686l og i n : juanPassword :

    En este punto del proceso de iniciar una sesin, debers teclear la contrasea deacceso que tienes registrada en el sistema. Nota que, por seguridad, la contrasea no semuestra en la pantalla, por lo cual se deber teclear con cuidado, tambin respetandomaysculas y minsculas. Si la clave de acceso corresponde con la registrada en elsistema, podrs iniciar una sesin.

    Si Juan ingresa correctamente su contrasea, la pantalla de la computadora lucircomo en la figura 1.2, donde estNum es el nombre de la computadora en la que se estiniciando la sesin. La forma precisa de cmo aparece la combinacin del nombre delusuario y el nombre de la mquina puede variar, pero usualmente aparecen en donde el

    cin de trabajo es una mquina con capacidades limitadas tanto en espacio en disco como en velocidadde procesamiento, razn por la cual es conveniente que slo una persona la utilice.

    5UNIX es sensible al uso de maysculas y minsculas.

  • 6 Introduccin a Unix

    sistema espera que le des instrucciones una vez iniciada la sesin.

    Figura 1.2 Inicio de una sesin en un sistema UNIX.

    Fedora Core re lease 2 ( Tettnang )Kernel 2.6.51.385 on an i686l og i n : juanPassword :Last l og i n : Tue Nov 28 11:20:54 from bar . f c i e n c i a s . unam.mx[ juan@estNum jd]%

    Es comn equivocarse al teclear la contrasea. Si esto sucede, el sistema respondercon un mensaje de contrasea invlida y proceder a pedirte nuevamente el inicio desesin, desde la clave de usuario:

    Figura 1.3 Equivocacin al teclear la contrasea.

    I n co r r e c t password . Try againl og i n :

    Puedes corregir la contrasea mientras no hayas oprimido la tecla Enter , si oprimessimultneamente las teclas Control u 6, lo que borra todos los carcteres tecleadoshasta ese momento y puedes volver a empezar a teclearla. Esto es conveniente por dosrazones: la primera de ellas, para ahorrarte el tener que volver a teclear la clave deusuario y la segunda porque el sistema te dar un nmero mximo de oportunidades(generalmente entre tres y cinco) para entrar en sesin, por lo que es deseable evitarintroducir mal la contrasea.

    1.4. Emacs

    1.4.1. Introduccin a Emacs

    Emacs es un editor de pantalla avanzado, autodocumentado, configurable, exten-sible y de tiempo real.

    Decimos que Emacs es un editor de pantalla porque normalmente el texto que que-remos editar es visible en la pantalla y se actualiza automticamente mientras tecleas loscomandos; es por esto ltimo que decimos que es de tiempo real. El nombre Emacsfue escogido como abreviatura de Editor MACros.

    6Usaremos en adelante la notacin C-u , que deber leerse como control u, para denotar la combi-nacin de la tecla Control oprimida al mismo tiempo que u .

  • 1.4 Emacs 7

    Decimos que es avanzado porque tiene muchas ms funciones de las que comn-mente encontramos en editores de pantalla, como son control de subprocesos, facilida-des para la edicin de archivos fuente de varios lenguajes de programacin, as comouna gran cantidad de utileras para hacer nuestra vida ms fcil.

    El que sea auto-documentado significa que en cualquier momento puedes teclearC-h esControljunto con h

    una secuencia especial, que es C-h, y saber cules son tus opciones; tambin puedesencontrar qu hace cualquier comando o encontrar documentacin especfica de untema.

    El que sea configurable significa que puedes cambiar las definiciones de los coman-dos de Emacs, es decir, controlar su comportamiento para que se adapte a tus necesida-des o tus preferencias.

    Extensible significa que puedes ir ms all de la simple configuracin y escribir co-mandos completamente nuevos, usando un lenguaje de programacin llamado Emacs-Lisp, del cual tambin aprenders algo en estas notas en la Seccin 9.2.

    1.4.2. Emacs y t

    Si hay algo que debes aprender y atesorar de este libro, es Emacs. Una situacin quele ocurre a todas las aplicaciones de software en Linux y en prcticamente cualquiersistema operativo es que pasan de moda, pierden vigencia rpidamente. Es probableincluso que para el momento que leas algunos captulos de este trabajo, las aplicacionesaqu revisadas hayan sido reemplazadas por otras o que existan versiones nuevas y, conalta probabilidad por desgracia, sern distintas.

    Emacs tiene una historia de muchos aos, ms de tres dcadas en circulacin, y algoimportante es que no ha cambiado significativamente y, estamos seguros, ser el casoen este momento que t te inicias en Emacs. Esto es importante porque la inversinintelectual que realizas al aprender y dominar este editor te redituar por muchos aos.

    Por este motivo, a lo largo de todo el libro, encontrars una seccin titulada as:Emacs. En cada una de estas secciones te mostraremos qu hace tan interesante a esteeditor y descubriremos juntos muchas de las tareas que pueden atenderse a travs deEmacs, por ejemplo: editar diversos archivos, programar en distintos lenguajes, accedera tu correo electrnico, entre otras acciones y todo esto al mismo tiempo.

    Si bien es cierto que puedes ejecutar distintas aplicaciones (explicadas en este mis-mo libro) para realizar muchas tareas de manera simultnea, cuando utilizas Emacs pararealizar algunas o todas esas tareas, obtienes ciertas ventajas: memoria compartida, unexcelente sistema de respaldo para copiar, pegar o reordenar datos, entre otras ventajas.Tu productividad se incrementar notablemente, te lo garantizamos.

  • Ambientesgrficos en Linux 2

    2.1. Ambientes de escritorio

    Un escritorio ofrece una interfaz grfica de usuario1 para interactuar con la compu-tadora. La otra opcin para interactuar con la computadora es mediante una interfaz delnea de comandos2. Para la mayora de las personas el escritorio ms comn es Win-dows de Microsoft, para otras cuantas MAC OS. En Linux se tienen muchos escritoriosque puedes utilizar en tu computadora. La base de todos estos escritorios es el sistemade ventanas X, que es un sistema que provee los elementos bsicos para que se dibujenlas ventanas y se interacte con ellas. La interaccin ms comn entre el servidor de Xy el usuario es cuando el cliente est corriendo en la misma computadora que el ser-vidor. Esto es lo que ocurre cuando inicias tu computadora de forma normal. Existenotras posibilidades como exportar todo tu escritorio desde otra computadora o exportaralgunas ventanas.

    Tomando como base a X, existen varios escritorios para Linux. Como en la mayorade las aplicaciones en UNIX, existen ms de una para realizar la misma tarea. Algunosde los ms comunes son:

    KDEGNOME

    1GUI, del ingls Graphic User Interface2CLI, del ingls, Command Line Interface

  • 10 Ambientes grficos en Linux

    Enlightenment

    Xfce

    2.2. KDE

    KDE es un escritorio libre para estaciones de trabajo UNIX. La motivacin de losdesarrolladores es tener un escritorio para UNIX con el que sea fcil trabajar, y quetenga una aplicacin equivalente a las disponibles en los sistemas operativos propieta-rios. KDE hace uso de QT, una caja de herramientas (toolkit) grfico de la compaiaTrolltech. Cuando se tom esta decisin en 1996, por el autor Matthias Ettrich3, hubovarias crticas por esa decisin. El problema es que en esas fechas QT no tena unalicencia de software libre y a la gente del proyecto GNU le preocupaba que se usaraalgo as para crear un escritorio que quera ser libre. Dada esta situacin se inici otroproyecto, GNOME, que no hara uso de QT y sera totalmente libre. En Noviembre de1998 Trolltech cre una nueva licencia Q Public License bajo la cual distribua a QT.Finalmente en Septiembre del 2000, Trolltech liber la versin de QT para UNIX bajola GPL, adems de la QPL, por lo que ahora KDE es totalmente libre.

    2.2.1. Configuracin de KDE

    El comportamiento de KDE lo puedes configurar mediante el uso del centro decontrol de KDE, el cual puedes ejecutar mediante el comando kcontrol. Para ejecutaruna aplicacin sin tener que hacer uso de la consola puedes utilizar el atajo por omisinAlt+F2. En la figura 2.1 se muestra la ventana inicial del centro de control, dividida en 2secciones. En la seccin 1 se muestran las categoras mediante las cuales se puede con-figurar a KDE. En la seccin 2 se presenta la informacin pertinente al mdulo que seest configurando. Al iniciar, KControl nos presenta en esta seccin cierta informacinelemental:

    1. Versin de KDE2. Nombre del sistema3. Nombre del usuario4. Versin del ncleo del sistema

    3El correo que inici todo lo puedes ver enhttp://groups.google.com/group/de.comp.os.linux.misc/msg/cb4b2d67ffc3ffce

  • 2.2 KDE 11

    Figura 2.1 KControl

    Administracin de usuarios

    En la categora Administracin del sistema se encuentra el mdulo Administracinde usuarios. Desde ah es posible revisar los detalles de los usuarios existentes y agregarnuevos usuarios. Cuando se intenta modificar la configuracin del sistema es necesariocontar con los permisos adecuados y presionar el botn Modo administrador; de noser as slo puedes modificar los datos que pertenecen a tu propia cuenta. Para agregarun nuevo usuario es necesario el botn Nuevo. El centro de control nos presentar eldilogo que se muestra en la figura 2.2. En l es necesario ingresar los datos que corres-ponden al nuevo usuario entre los que se encuentran el nombre de usuario, su grupoprimario, los grupos a los que pertenece, su directorio personal y el intrprete que va autilizar.

    Como se ve en la figura 2.3 en la pestaa Contrasea y Seguridad se pueden esta-blecer diferentes opciones para la caducidad de la contrasea. Puedes decidir si es quela contrasea caduca o no, y cules son las acciones que el sistema debe tomar en casode que esto ocurra.

  • 12 Ambientes grficos en Linux

    Figura 2.2 Administracin de usuarios

    Figura 2.3 Administracin de contraseas

  • 2.2 KDE 13

    Escritorios mltiples

    Accesos rpidos

    En la categora Regional y Accesibilidad, se encuentra el mdulo Accesos rpidosde teclado. Mediante ellos es posible asociar una accin a una combinacin de teclas. Esde esa forma que al presionar las teclas Alt+Tab cambias de una ventana a otra. Existenvarias combinaciones predeterminadas como Alt+F4 para cerrar una ventana. Desdeaqu puedes crear combinaciones de teclas para ejecutar tus acciones ms comunes sintener que separar las manos del teclado.

    InternacionalizacinHay ocasiones en las que puedes desear tener ms de una idioma configurado en

    tu sistema. De esa forma puedes hacer que KDE despliegue todos sus mensajes en elidioma de tu preferencia. Para poder hacer eso es necesario que instales el paquete deinternacionalizacin de KDE que corresponde al idioma que quieres utilizar. El nombrede estos paquetes es de la forma kde-i18n-XX en donde XX es el cdigo de dos letraspara el idioma que quieres instalar. Para espaol el nombre del archivo es kde-i18n-esmientras que para italiano es kde-i18n-i t. Para instalar dicho paquete es necesario queejecutes apt-get install kde-i18n-es. Una vez hecho eso puedes regresar al centro decontrol y dentro de la categora Regional y Accesibilidad, en el mdulo Pas/Regin eidioma podrs agregar el idioma que acabas de instalar.

    Disposicin del teclado

    Adems de cambiar el idioma con el que se presenta KDE, tambin puedes cambiarla disposicin del teclado. De esa forma es posible que tu teclado se comporte como sifuera un teclado en un idioma distinto. Para hacer eso es necesario que vayas a la cate-gora Regional y Accesibilidad y ah vayas al mdulo Disposicin del teclado, tal comose muestra en la figura 2.4. Debers seleccionar la opcin Activar diseos de teclado yluego seleccionar los idiomas que deseas en tu teclado. En la pestaa Opciones de cam-bio puedes seleccionar cmo quieres que KDE te muestre la bandera que correspondeal teclado que ests utilizando. Adems puedes seleccionar si cada vez que cambias ladisposicin del teclado afecta a todas las aplicaciones o slo a la aplicacin que estactiva en el momento en el que realizas el cambio. Para cambiar la disposicin del te-clado de forma rpida puedes usar el atajo por omisin de KDE que es CTRL+ALT+K;o si seleccionaste la opcin para mostrar la bandera, puedes hacer click sobre ella.

  • 14 Ambientes grficos en Linux

    Figura 2.4 Disposicin del teclado

    2.2.2. KDE en 1, 2, 3

    Cuando acabas de entrar a KDE, vers el escritorio que se muestra en la figura 2.5.Ah hemos resaltado algunas secciones, en la seccin 1 se resalta elMen K, a partir del puedes acceder a las aplicaciones que estn instaladas en tu sistema. En la seccin2 tienes accesos rpidos a aplicaciones utilizadas frecuentemente. En la seccin 3 semuestra el navegador de los escritorios virtuales (que veremos un poco ms adelante).En 4 se muestran las aplicaciones que estn ejecutndose en un momento dado. Final-mente en 5 puedes ver applets de aplicaciones que estn ejecutndose en el background.Veamos ahora cmo realizar algunas de las tareas comunes en KDE.

    2.2.3. Quemado de discos con K3b

    Desde hace algunos aos la forma de transmitir informacin en un medio fsicoha cambiado radicalmente; las computadoras actuales ya no tienen bahas para discosflexibles y, aunque en los ltimos aos las memorias flash son cada vez ms populares,los CDs prevalecen como un medio til. Dentro de KDE la aplicacin para quemardiscos es K3b, este provee al usuario de una interfaz sencilla para poder quemar CD o

  • 2.2 KDE 15

    DVD. Hay que sealar que K3b es slo la interfaz grfica ya que el trabajo real lo llevana cabo las aplicaciones cdrecord, cdrdao y growisofs. En la figura 2.6 se muestra laventana inicial de K3b.

    Figura 2.5 El escritorio

    Quemado de un disco de datos

    Al seleccionar la opcin Nuevo proyecto de CD de Datos, K3b te presenta conuna interfaz para navegar el sistema de archivos y seleccionar cules archivos son losque deseas incluir en tu CD. Para agregar un archivos nuevo a la compilacin slo esnecesario encontrarlos en el navegador que est en la parte superior y seleccionarlo,como se muestra en la figura 2.7. Otra opcin es arrastrarlos desde Konqueror o desdeel escritorio hacia la parte baja de K3b.

  • 16 Ambientes grficos en Linux

    Figura 2.6 K3b

    Figura 2.7 Quemado de un disco de datos

    Cuando ya seleccionaste todo lo que deseas agregar al CD, basta presionar el bo-tn Grabar para seleccionar las opciones con las que deseas crear el CD. Las pestaas

  • 2.2 KDE 17

    ms importantes son Grabando y Descripcin del volumen. En la primera es necesa-rio seleccionar cul dispositivo se va a usar para quemar el disco y a qu velocidad,qu modo de grabacin y qu opciones queremos emplear. En los modos de grabacinpuedes seleccionar uno de los siguientes:

    DAO Disc at once, copia todo el disco en una sola pasada.TAO Track at once, genera pausas entre cada una de las pistas del disco.En bruto No procesa los datos (til para copiar imgenes).

    Entre las opciones que puedes seleccionar estn:

    Simular No lleva a cabo la copia, slo la simula, para ver si no hay problemas.

    Al vuelo Copia los datos directamente, sin generar una imagen intermedia.

    Slo crear imagen En lugar de quemar el disco crea una imagen, para ser quemadaposteriormente.

    Eliminar imagen Si se cre la imagen para quemarla, se puede eliminar una vez com-pletado el proceso.

    Verificar los datos grabados Una vez terminado el proceso de quemado, se comparanlos datos para ver que hayan sido copiados exitosamente.

    En la pestaaDescripcin del volumen puedes ingresar los datos con los que quieresque se identifique al disco. Puedes ingresar la etiqueta del disco, el nombre de la personaque prepar los datos, el nombre de la persona que los edit, en qu sistema operativose realiz la copia y con qu aplicacin.

    Quemado de un disco de msica

    Al seleccionar la opcin Nuevo proyecto de CD de audio, K3b te presenta una inter-faz similar a la utilizada para quemar datos; la diferencia es cmo presenta la informa-cin que quieres quemar en el disco. Ahora presenta cada uno de los tracks que quieresgrabar y la duracin de cada uno de ellos, como se muestra en la figura 2.8. Para po-der utilizar archivos mp3 dentro de k3b es necesario instalar una biblioteca adicional.Debes instalar el paquete libk3b2-mp3, y lo haces con el comando sudo apt-get ins-tall libk3b2-mp3. El resto de las opciones para grabar son similares a las presentadascuando quemas un disco de datos.

  • 18 Ambientes grficos en Linux

    Figura 2.8 Quemado de un disco de audio

    2.2.4. Amarok

    Adems de usar la computadora para trabajar o para jugar, una de las tareas mscomunes es la de escuchar msica. Para poder hacer eso dentro de KDE puedes usarAmarok. Amarok se encarga de tener un solo lugar en donde puedes escuchar msicade CD, archivos .mp3, archivos .ogg e incluso flujos desde internet. Cuando Amarokinicia por primera vez se ve como en la figura 2.9. Para agregar archivos que desees es-cuchar es necesario que vayas al men Lista de reproduccin y selecciones el elementoAadir medio. Despus debers navegar el sistema de archivos hasta que encuentres losarchivos que quieres agregar.

    Cuando Amarok inicia por primera vez te pedir que crees una coleccin de msica;si aceptas te presentar una vista en la que puedes construir tu coleccin de msica,decidiendo en qu directorios deseas buscar. sta es una parte esencial para que puedasutilizar todos los beneficios que te ofrece Amarok. Cuando Amarok termine de generartu coleccin podrs agregar cualquier cancin que ah aparezca a la lista de msica quedeseas escuchar4.

    4Si cuando intentas escuchar la msica te hace falta alguna biblioteca, Amarok te lo indicar y lainstalar por ti

  • 2.3 Emacs 19

    Figura 2.9 Amarok

    NavegadoresLos navegadores en Amarok te permiten acceder a tus canciones de distintas formas.

    stos se encuentran en la parte izquierda de Amarok, como se muestra en la seccin 1de la figura 2.9.

    Contexto Aqu Amarok te presenta informacin acerca de la cancin que ests escu-chando en ese momento. Puedes navegarla y revisar la letra de la cancin, el discoen donde aparece o la biografa del artista.

    Coleccin Te permite navegar tu coleccin de msica.

    Listas de reproduccin Aqu puedes administrar las diferentes listas de msica, paraque puedas cargar la msica que quieres de forma rpida.

    Dispositivo de medios Si conectas un reproductor de MP3 a tu computadora, desdeaqu puedes hacer que Amarok toque esa msica en tu computadora.

  • 20 Ambientes grficos en Linux

    2.3. Emacs

    Cada vez, a partir de este captulo, que te encuentres con una seccin titulada Emacs,te recomendamos iniciar el editor y probar todo lo que te vamos explicando. La mayo-ra de las secciones sobre Emacs te muestran una faceta completamente distinta; porejemplo, Emacs como editor de texto (Seccin 4.3); o cmo ejecutar comandos; o unintrprete de comandos de Unix dentro de Emacs (Seccin 3.6). En esta seccin sim-plemente te mostramos como iniciar Emacs desde el men de KDE.

    Figura 2.10 Emacs en el men de KDE

    2.4. Comenzando con Emacs

    Primero que nada, debes saber cul Emacs est instalado en tu sistema, porque hay$ smartinstall emacs muchas implementaciones de editores parecidos a Emacs.

  • 2.4 Comenzando con Emacs 21

    La versin ms importante y reconocida de Emacs es la del proyecto GNU5, lacual, junto con XEmacs6 otra versin muy popular y completa de Emacs son lasopciones ms comunes hoy en da; si tu sistema operativo es algn Unix de distribucinlibre (Linux, FreeBSD, Hurd, etc.) muy probablemente ya tienes instalado uno o amboseditores.

    El lugar usual para Emacs en el men de KDE es en la seccin de desarrollo, reafir-mando que Emacs es una buena opcin para desarrolladores y diseadores de sistemas.

    5Para mayor informacin sobre Emacs y el proyecto GNU, visita http://www.gnu.org.6XEmacs es otra versin de Emacs. Su nfasis est en el soporte de interfaces grficas de usuario.

    Algunos de los autores del presente trabajo usamos XEmacs y otros Emacs; sin embargo, prcticamentetodo lo que veremos aqu puede ser usado, sin cambio alguno, en ambas versiones. Si quieres msinformacin sobre XEmacs visita el sitio, http://www.xemacs.org.

  • Sistema deArchivos 3

    3.1. El sistema de archivos

    El sistema de archivos de Unix es la forma en la que los usuarios y el sistemaoperativo organizan su informacin. ste consiste de un conjunto de archivos, cada unode los cuales tiene un nombre llamado nombre de archivo. Hay tres clases de archivos:

    Archivos regulares, que contienen informacin.

    Directorios1, que contienen un conjunto de archivos. Los conjuntos de archivosse identifican por el nombre del directorio que los agrupa.

    Archivos especiales de varias clases:

    Archivos especiales de dispositivo, que proveen acceso a dispositivos talescomo terminales o impresoras.

    Archivos especiales FIFO (First In First Out, cola), algunas veces llama-dos named pipes, que proveen un canal para comunicacin entre procesosindependientes y que tienen un nombre asociado.

    Como la mayora de los sistemas operativos modernos, Unix organiza su sistemade archivos como una jerarqua de directorios. La jerarqua de directorios es un rbol(tree), pero dibujado como un rbol de cabeza o de lado. Un directorio especial, root,

    1Los directorios tambin se conocen como carpetas.

  • 24 Sistema de Archivos

    es la raz de la jerarqua. Ms adelante veremos comandos para navegar y modificar elrbol de directorios.

    Un directorio puede contener subdirectorios, archivos regulares y archivos especia-les. Unix trata a los subdirectorios como tipos particulares de archivos. Si uno despliegalos contenidos de un directorio, los subdirectorios se listan junto con los dems archi-vos.

    Unix ve a un archivo, no importando su tipo, como una sucesin de bytes, alma-cenados en dispositivos externos como un disco duro, un diskette, un CD, un DVD ouna unidad de almacenamiento USB. Los programas que usan al archivo identificancualquier estructura interna que el archivo pueda tener.

    Un nombre de archivo puede tener hasta 255 carcteres en la mayora de los siste-mas; antes se limitaba el tamao de un nombre a 14 carcteres.

    El nombre de un archivo puede contener cualquier carcter excepto / o el ca-rcter nulo; sin embargo, algunos otros como & y (espacio en blanco) puedencausar problemas por sus significados especiales para su interpretacin en la lnea decomandos. Si tu sistema permite carcteres fuera del conjunto ASCII, tales como letrasacentuadas (como nuestra letra ), tambin se puedes usarlas para nombrar archivos.Los nombres de archivos son sensibles a las maysculas y minsculas, esto es, archi-vo y Archivo identifican a dos archivos distintos. Por convencin, los archivos cuyonombre comienza con un punto (.), llamados dot files, por lo general se usan comoarchivos de configuracin para programas.

    Algunos programas esperan que sus archivos de entrada y salida estn compuestosde un identificador seguido de un punto y luego una extensin. En general es una con-vencin muy til para el usuario utilizar extensiones en los nombres de sus archivospara identificarlos fcilmente. Por ejemplo:

    txt Se refiere a archivos de textojpg Se refiere a imgenes en formato JPEGjava Programas de Javacc Programas de C++tex Documentos para LATEXc Programas de CEn el caso de los sistemas Unix, el nmero de carcteres en la extensin no est

    limitado, ms que en cuanto a que el nombre total del archivo no puede tener ms de255 carcteres.

    En Unix, como ya mencionamos y al igual que en otros sistemas operativos, losarchivos se almacenan en una estructura jerrquica de rbol, cuyo primer nivel es eldirectorio raz, el cual se denota por el carcter /. Dicho directorio almacena todoslos archivos del sistema, que a su vez pueden ser directorios.

    En los sistemas Unix, cada usuario tiene un directorio personal, en el cual almacenasus archivos. Dicho directorio se conoce como el hogar (home). Una vez que entres en

  • 3.1 El sistema de archivos 25

    sesin, cada programa que se ejecuta se encuentra situado en un directorio de trabajo.El shell inicia, por omisin, en el directorio hogar del usuario. Un ejemplo simplificadode un directorio en un sistema Unix se muestra en la figura 3.1. En esta figura encerra-remos en valos a los directorios y en rectngulos a los archivos. Mostramos puntossuspensivos cuando suponemos que en ese lugar aparecen un nmero considerable dearchivos y/o directorios, pero por falta de espacio no los mostramos.

    Figura 3.1 Sistema de archivos en un sistema Unix

    /

    win98

    sbin

    home

    vaz

    fulano

    tareas

    Tarea1

    elisa

    varios

    algoritmos

    capit1

    .emacsdev

    zqft3

    MAKEDEV

    bin

    zsh-3.0.7

    rm

    ash

    arch

  • 26 Sistema de Archivos

    3.1.1. Rutas absolutas y relativas

    Las rutas son expresiones que se usan para identificar un archivo o un conjunto dearchivos. Se construyen bajando por el rbol del sistema de archivos, como el que semuestra en la figura 3.1.

    Para referirse al directorio raz se utiliza el carcter /; a partir del directorio raz sepuede descender en la jerarqua de directorios, siguiendo ramas del rbol, hasta llegar alarchivo o directorio deseado, separando cada directorio con el carcter /. Por ejemplo,para referirse al archivo llamado ash que se encuentra en el directorio bin, podemosusar la ruta /bin/ash.

    Cuando se hace referencia a un archivo o directorio a partir del directorio raz utili-zando una ruta, se dice que es una ruta absoluta. No es necesario referirse a un archivoo directorio a partir de la raz, sino que tambin se puede hacer a partir del directoriode trabajo, es decir, en el directorio en el que el usuario se encuentra parado. Cuandouna referencia a un archivo o directorio se hace a partir del directorio de trabajo, se diceque es una ruta relativa.

    La forma de presentar una ruta relativa es similar a la usada por las rutas absolutas,con la diferencia de que al principio no se pone el smbolo /. As, el descenso en lajerarqua por las ramas del rbol no se lleva a cabo a partir de la raz sino a partir deldirectorio de trabajo. Por ejemplo, supn que tu clave de usuario es fulanito y tu direc-torio hogar es /home/fulanito. Al iniciar una sesin te encontrars en este directorio.Supongamos que te quieres referir al archivo Tarea1 que est en el directorio tareasde tu propio directorio. Dicho archivo se representa usando la ruta absoluta

    /home/fulanito/tareas/Tarea1y usando una ruta relativa

    tareas/Tarea1.El directorio actual se denota por . y su padre se llama ... Haciendo uso de dicha

    notacin puedes usar trayectorias que vayan hacia arriba o hacia abajo en la jerarquade directorios. Siguiendo con el ejemplo anterior, si el directorio de trabajo es /ho-me/fulanito/tareas, entonces la ruta relativa del archivo Ejemplo.java en el directorioalgoritmos del usuario fulanito es

    ../algoritmos/Ejemplo.javaEl significado de esta ruta es: Estando en el directorio tareas vamos al padre del mismoque es fulano utilizando ... De ah bajamos por la rama algoritmos. Siguiendo esaruta es que encontramos al archivo Ejemplo.java. A esta ruta relativa es equivalente laruta absoluta

    /home/fulano/algoritmos/Ejemplo.javaNota que si el usuario se encontrara en otro lugar del rbol, la ruta relativa para

    alcanzar a Ejemplo.java sera otra. Es, precisamente, relativa al punto en el rbol en el

  • 3.2 Movindose en el rbol del sistema de archivos 27

    que se encuentre el usuario.Dado que el concepto de directorio base o home es tan importante, hay una no-

    tacin especial para l, reconocida por cualquier intrprete de comandos de Unix ex-cepto Bourne: el carcter al inicio de una trayectoria se refiere al directorio homedel usuario actual, mientras que vaz hace referencia al directorio home del usua-rio vaz. Tambin utilizaremos esa notacin extensamente. Por ejemplo, para el usuarioelisa, /alguno.txt se refiere al archivo /home/elisa/alguno.txt.

    Una notacin menos conveniente para referirte al directorio home es $HOME, quenos regresa el valor de la variable de ambiente HOME que cualquier intrprete de co-mandos, incluyendo Bourne, soporta. Por lo tanto, $HOME/alguno.c se refiere al ar-chivo alguno.c en tu directorio home.

    El sistema de archivos de Unix se puede dividir en distintos discos o particionesde un mismo disco o incluso en distintos medios de almacenamiento. El sistema dearchivos se encarga de hacer esto transparente a los usuarios, haciendo parecer quetodo vive en el mismo lugar. Existen distintas razones para hacer esto:

    Los discos y dems dispositivos que contienen los directorios y sus archivos pue-den ser insuficientes para mantener la jerarqua completa, as que puede surgir lanecesidad de distribuir la jerarqua en varios dispositivos.

    Para conveniencia en la administracin, puede ser til partir un disco muy grandeen varias particiones.

    Los dispositivos de almacenamiento pueden no estar permanentemente unidosa la computadora. Un disco flexible puede contener su propia estructura de di-rectorios. El sistema de archivos de red permite que si las computadoras estnconectadas entre s tengan un sistema de archivos compartido.

    Unix acomoda los sistemas de archivos externos asocindoles puntos de montaje.Un punto de montaje es un directorio en un sistema de archivos que corresponde aldirectorio raz del sistema de archivos externo. El sistema de archivos primario es elque emana del directorio raz real y se llama /. Un sistema de archivos externo seliga al sistema primario por medio del comando mount. Generalmente, todo esto estransparentes para los usuarios comunes, as que no debes preocuparte demasiado alrespecto, aunque es bueno saberlo.

    3.2. Movindose en el rbol del sistema de archivos

    Por omisin, el shell no muestra en qu directorio ests trabajando. Es convenientepoder preguntar cul es el directorio de trabajo (o directorio actual) y esto se hace conel comando:

    pwd

  • 28 Sistema de Archivos

    (Print Working Directory), a lo que el sistema responde con la ruta absoluta del direc-torio en el que te encuentras.

    Para cambiarte de directorio puedes utilizar rutas relativas, si es que a donde tequieres mover est hacia abajo en el rbol desde el directorio de trabajo; o bien, utilizaruna ruta absoluta para moverte arbitrariamente a cualquier otro directorio de trabajo. Elcomando que te permite cambiar de directorio de trabajo es

    cd [ruta](Change Directory). Es importante mencionar que no te puedes mover a un archivo, si-no nicamente a un directorio. Esto es porque al moverte, lo que se pretende es cambiarde directorio de trabajo.

    Por ejemplo, si estando en el directorio de trabajo home quieres ubicarte en eldirectorio varios del usuario elisa, lo puedes hacer de las dos maneras siguientes:

    cd elisa/varios/cd /home/elisa/varios/

    El primer comando usa una ruta relativa, mientras que el segundo comando usa una rutaabsoluta.

    Actividad 3.1 Cmbiate a los siguientes directorios. Despus de cada cambio, pre-gunta por el directorio de trabajo:(a) Directorio raz(b) Directorio sbin(c) Directorio hogar con tu clave

    Para listar el contenido de un directorio usaa:ls [parmetros] [ARCHIVOS]Ambos modificadores se pueden omitir. Los [parmetros] se refieren al formato que

    puedes querer para la lista de archivos, mientras que [archivos] se refiere al lugar en elrbol del sistema de archivos del que quieres la lista. Si omites los [parmetros] la listaque se muestre ser breve, sin mayor informacin ms que el nombre del archivo o delos archivos del directorio de trabajo. Dos de los parmetros ms comunes se refierena pedir una lista extendida, que contenga, entre otra informacin, el tipo de archivo, sudueo, su tamao, el da de su ltima modificacin. Puedes querer que se listen tambinaquellos archivos que empiezan con algo que no es una letra, como un punto. Para ello,tecleamos el comando de la siguiente manera:

    ls -al /home/fulanito/y se mostrar en pantalla la lista de archivos y directorios que se encuentran en el direc-torio /home/fulanito/, pero nicamente los que cuelgan directamente de ese nodo. Siomites [archivos], la lista que se dar ser de los archivos y directorios inmediatamentecolgando del directorio de trabajo.

    Actividad 3.2 Pide la lista breve de archivos que se encuentran en /usr/local/

  • 3.2 Movindose en el rbol del sistema de archivos 29

    Actividad 3.3 Pide la lista extensa de archivos que se encuentran en /bin/. Cul es lainformacin que aparece?

    Como puedes ver de la actividad anterior, muchas veces los archivos y directoriosen un directorio son tantos, que si pides la lista extensa pudieses no alcanzar a verlacompleta. Para ello, haces lo que se llama entubar (en ingls, pipe), que consiste en re-dirigir la salida de un comando y usarla como entrada de un segundo comando. Quieresque el segundo comando sea uno que nos ensee la informacin por pginas. Tenemosdos de estos comandos, que se usan precedidos por el smbolo de entubamiento |:

    lessmore

    Si utilizas el comando less para entubar:fulanito@[estnum fulanito]% ls -al /bin | less

    la respuesta se muestra por pginas, esto es, muestra el nmero de renglones que lecabe en la pantalla, y se espera en la parte inferior de la misma a que teclees un espacioo que oprimas la tecla AvPg , para seguir con la siguiente pgina. Si tecleas q , ellistado se suspende.

    Veamos el resultado que se te muestra con el comando anterior en la figura 3.2 .Si el comando que se utiliza es less, entonces se podr regresar sobre el listado,

    oprimiendo RePg ; y avanzar tecleando espacio o AvPg .Tambin puedes entubar a que vaya a la impresora, si es que hay alguna conectada

    accesible, con el comando lpr.

    Actividad 3.4 Utiliza el comando less para entubar el listado del directorio /usr/biny d cmo responde.

    Figura 3.2 Resultado de entubar ls -al con less

    t o t a l 6364drwxrxrx 2 roo t roo t 4096 Apr 19 2000 .drwxrxrx 22 roo t roo t 4096 Jun 6 05:08 . .rwxrxrx 1 roo t roo t 2612 Mar 7 2000 archrwxrxrx 1 roo t roo t 60592 Feb 3 2000 ashrwxrxrx 1 roo t roo t 263064 Feb 3 2000 ash . s t a t i crwxrxrx 1 roo t roo t 9968 Feb 3 2000 aumixminimall rwxrwxrwx 1 roo t roo t 4 Feb 17 2000 awk > gawkrwxrxrx 1 roo t roo t 5756 Mar 7 2000 basenamerwxrxrx 1 roo t roo t 316848 Feb 27 2000 bashrwxrxrx 1 roo t roo t 446800 Feb 2 2000 bash2lrwxrwxrwx 1 roo t roo t 3 Feb 17 2000 bsh > ashrwxrxrx 1 roo t roo t 9528 Feb 7 2000 cat

    Contina en la siguiente pgina

  • 30 Sistema de Archivos

    Figura 3.2 Resultado de entubar ls -al con more Contina de la pgina anterior

    rwxrxrx 1 roo t roo t 12044 Mar 7 2000 chgrprwxrxrx 1 roo t roo t 13436 Mar 7 2000 chmodrwxrxrx 1 roo t roo t 11952 Mar 7 2000 chownrwxrxrx 1 roo t roo t 49680 Mar 6 2000 consolecharsrwxrxrx 1 roo t roo t 33392 Mar 7 2000 cprwxrxrx 1 roo t roo t 45712 Feb 9 2000 cpiol i n e s 118

    3.2.1. Permisos de archivos

    Los permisos de acceso a un archivo, o simplemente permisos, especifican quinpuede hacer qu a un archivo. Los permisos de un archivo son asignados por su dueoy se pueden ver con el comando ls -l y modificarlos con el comando chmod.

    Dado que los permisos de un archivo son un atributo del archivo mismo, todas lasligas a ese archivo tienen los mismos permisos.

    Permisos para operaciones bsicasLas tres operaciones bsicas que puedes llevar a cabo en un archivo son lectura

    (read ), escritura (write) y ejecucin (execute). Los permisos requeridos para realizarestas operaciones estn denotados por r, w y x respectivamente. El permiso x esnecesario para programas compilados y cualquier guin de shell que intentes usar comocomando. Por ejemplo, si el archivo qq contiene un guin de shell pero no tiene elpermiso x, no puedes ejecutar el comando qq por s mismo. Si lo intentas, obtendrs unmensaje de error como:

    command not found: qqSin embargo, puedes ejecutar qq con el comando

    sh qqaun cuando qq no tenga permiso de ejecucin. En este ejemplo tambin necesitas queel archivo qq tenga permisos de lectura para poder ejecutar el script ya sea directa oindirectamente.

    Los permisos r, w y x pueden especificarse independientemente para el dueo delarchivo, para aquellos que se encuentran en el mismo grupo que el dueo y para todoslos dems. Estas clases estn representadas simblicamente por u (user), g (group) y o(others).

    Los permisos que asignas a un archivo pueden protegerlo no slo de acceso nodeseado sino tambin de tus propios errores. Por ejemplo, puedes proteger un archivocontra modificaciones no intencionales o de borrarlo accidentalmente suprimiendo supermiso w.

  • 3.2 Movindose en el rbol del sistema de archivos 31

    Permisos para directoriosLos permisos de archivos tambin se aplican a los directorios.

    El permiso r para un directorio te permite ver qu hay dentro, pero es insuficientepara acceder a los archivos que se encuentran dentro.El permiso w para un directorio se requiere para poder aadir o borrar archivosde l. Sin embargo, w no es necesario para modificar un archivo listado en eldirectorio o borrar su contenido.El permiso x para un directorio te permite operar con los nombres en ese direc-torio si los conoces, pero no te permite ver cules son si no los conoces. Normal-mente siempre que r se concede, tambin es as con el permiso x.

    Otros permisos de archivosAdems de los permisos rwx, Unix tiene otras clases de permisos usados principal-

    mente (pero no exclusivamente) por el administrador del sistema. Los describimos acontinuacin.

    El set-uid bit. El bit set-uid le permite a un programa correr con los permisos de sudueo en lugar de con los permisos del usuario que lo llama. Puedes especificarel bit set-uid con s cuando usas el comando chmod. En un listado, se indicareemplazando la x con una s.

    Normalmente, cuando llamas un programa y ese programa accede a un archi-vo, los privilegios de acceso del programa son los mismos que t tienes. Comoejemplo, supn lo siguiente:

    El usuario patito es dueo del ejecutable qq.El programa qq utiliza el archivo privado de patito llamado tarea.El usuario mam-pato ejecuta el programa qq.

    Los permisos que se aplican a tarea durante la ejecucin son aqullos de otros(ya quemam-pato no es duea de tarea); no se utilizan los permisos del usua-rio patito. Por lo tanto, si patito no le dio permisos a su archivo tarea para queotros lo pudieran leer (todo el mundo), el programa qq no puede acceder a l.Una posible solucin a esto es que patito le d permisos de acceder al archivotarea a todo el mundo, pero entonces mam-pato podra hacer cualquier cosacon el archivo (incluso, cosas que patito no tena intensin de permitir.)

    El bit set-uid es una solucin a esto. Cuando un proceso ejecuta un programa,invoca la funcin exec del sistema, especificndole a sta la ruta del programaa ser llamado. Si los permisos del programa incluyen el bit set-uid, entonces el

  • 32 Sistema de Archivos

    ID efectivo del proceso se convierte en aqul del dueo del programa, as que elprograma se ejecuta con los privilegios del dueo del programa.

    En efecto, el bit set-uid habilita a un usuario para acceder a un archivo comotarea indirectamente con mam-pato como agente pero no directamente.

    El ejemplo clsico del uso del bit set-uid es el comando passwd. El dueo delarchivo /etc/passwd es root (el superusuario) y debe ser escrito solamente por elprograma passwd. Los usuarios ordinarios deben ser capaces de poder ejecutarel comando passwd, pero no de modificar directamente el archivo passwd. Porlo tanto, el bit set-uid est encendido2 para el programa passwd, lo que le per-mite escribir en el archivo /etc/passwd, mientras que esa habilidad permanecenegada para usuarios ordinarios.

    El bit set-gid. El bit set-gid es como el set-uid excepto que se aplica a los permisosde grupo en lugar de a los permisos de dueo. El bit set-gid se especifica con unas en la posicin de la x en los permisos del grupo.

    El locking bit. Si el locking bit de un archivo est prendido, un programa que estleyendo o escribiendo el archivo puede bloquear otros intentos de leer o escribiren l al mismo tiempo. Prender este bit previene que accesos simultneos a unarchivo puedan corromper su significado y dejarlo en un estado inconsistente. Ellocking bit est representado por una l reemplazando a la x en los permisos delgrupo.

    El sticky bit. Cuando se aplica a un directorio, el sticky bit previene que los archivosdentro de l sean borrados o renombrados por otra persona que no sea su dueo.Cuando se aplica a un archivo ejecutable, es la herramienta adecuada para reteneral programa en memoria cuando dicho programa puede ser compartido por variosusuarios. Slo el superusuario o el dueo del archivo puede activar el sticky bit.Este bit est indicado por una t en el lugar de la x en los permisos de otros.

    Construccin de permisosLos comandos chmod, umask y find hacen uso de la habilidad para construir con-

    juntos de permisos simblicamente. Esto lo puedes lograr especificando un modo sim-blico que les indique cmo modificar un conjunto existente, posiblemente vaco, depermisos.

    Un modo simblico consiste de una o ms clusulas separadas por comas. Cadaclusula, en turno, consiste de cero o ms letras quin seguidas por una secuenciade una o ms acciones a aplicar a la categora designada por las letras quin. Cada

    2En este contexto, utilizaremos indistintamente prendido, encendido, arriba o puesto, para indicar queese bit ha sido activado por medio de alguna utilera vlida como el comando chmod.

  • 3.2 Movindose en el rbol del sistema de archivos 33

    accin consiste de un operador seguido ya sea de una o ms letras de permisos, de unaletra quin o de nada en absoluto. Estas son las letras quin:u Permiso para el usuario del archivo.g Permiso para el grupo del archivo.o Permiso para otros (i.e. el resto del mundo.)a Permiso para cualquiera (equivalente a ugo.)

    Si omites las letras quin que preceden al operador, se supone a y la mscara decreacin (de la cual hablaremos ms adelante). stos son los operadores:+ Aade estos permisos.- Quita estos permisos.= Prende exactamente estos permisos, quitando cualquier otro para las letras quin

    indicadas.

    stas son las letras de los permisos:r Lecturaw Escriturax EjecucinX Ejecucin slo si el archivo es un directorio o algn permiso x ya est puestos Establece el ID de usuario o grupot Bit pegajosol Bloqueo durante el acceso

    Si especificas una letra quin despus de un operador, entonces se copian lospermisos asociados con la letra indicada.

    Representacin octal de los permisosLos permisos para un archivo pueden ser especificados como un nmero octal. Es-

    ta forma es obsoleta y no recomendada, pero mucha documentacin antigua de Unixutiliza la forma octal muy seguido; tambin algunos sistemas (no nuestro caso, en laLicenciatura en Ciencias de la Computacin) no soportan an la forma simblica entodos los contextos. El nmero octal se obtiene sumando lgicamente los nmeros dela siguiente lista:

    4000 Establece el ID del usuario en ejecucin.20d0 Establce el ID del grupo en ejecucin si d es 7,5,3 o 1 (permiso de ejecucin

    otrogado); habilitar el bloque de otra forma.1000 Habilita el bit pegajoso.0400 Establece el permiso de lectura para el dueo.

  • 34 Sistema de Archivos

    0200 Establece el permiso de escritura para el dueo.0100 Establece el permiso de ejecucin para el dueo.0040,0020,0010 Establece permisos de lectura, escritura o ejecucin para el grupo.0004,0002,0001 Establece permisos de lectura, escritura o ejecucin para el resto de

    los usuarios.

    Permisos para archivos recin creadosCuando un programa crea un archivo, especifica un conjunto de permisos para ese

    archivo. Conjuntos tpicos son u=rw g=rw o=rw (rw-rw-rw-, o 666 en octal) para ar-chivos de datos y u=rwx g=rwx o=rwx (rwxrwxrwx, o 777 en octal) para archivosejecutables. Los permisos iniciales son pocos debido a la mscara de creacin de ar-chivos, tambin conocida como la umask (user mask).T puedes cambiarla con elcomando umask. En otras palabras, los bits en la mscara de creacin de archivosrepresentan permisos que sern negados a los archivos recin creados.

    Los permisos de un archivo recin creado se calculan restando lgicamente los bitsen la mscara de creacin de archivos de los permisos especificados por el programaque lo crea. Por lo tanto, si tu mscara vale algo como rwxrwxr-x (octal 002), queexcluye el permiso de escritura de otros, aqullos fuera de tu grupo no podrn escribiro borrar archivos que t crees a menos que les cambies los permisos ms tarde (conchmod, por ejemplo).

    Un valor tpico para umask es rwxr-xr-x (octal 022), que niega los permisos deescritura a todos menos a ti. Con este valor de mscara, un archivo creado con permisosespecificados como u=rw g=rw o=rw es en realidad creado con permisos u=rw g=ro=r. La reduccin de permisos por el valor de umask se aplica tanto a la creacin denuevos directorios como de nuevos archivos.

    3.2.2. Archivos estndar y redireccionamiento

    Muchos comandos de Unix leen su entrada de la entrada estndar a menos queespecifiques archivos de entrada; y escriben su salida a la salida estndar. Por omisin,tanto la entrada como la salida estn asociados a tu terminal (generalmente la salidaes el monitor y la entrada es el teclado). Otro archivo estndar es el error estndar,que se usa para mensajes de error y otr


Recommended