Sei sulla pagina 1di 208

Fundamentos de Linux

Cdigo de Curso: CY310


Versin 3.0

Gua del Estudiante

Fundamentos de Linux

IBM IT Education Services


Worldwide Certified Material

Informacin Sobre la Publicacin


Esta publicacin ha sido producida usando Microsoft Word 2000 y Microsoft PowerPoint
2000 para Windows.
Marcas Registradas
IBM es una marca registrada por International Business Machines Corporation.
Otras compaas, productos, y nombre de servicios pueden ser marcas registradas o
marcas de servicios de otros.
Trademarks of International Business Machines Corporation
DB2

Informix

Lotus Script

Net.data

Marcas Registradas de otras Compaas


Windows, Microsoft Visual Studio

Microsoft Corporation

Sybase

Sybase Inc.

Edicin Marzo 2006


La informacin contenida en este documento no ha sido sometida a ninguna prueba
formal de IBM y es distribuida bsicamente como es" sin ninguna garanta ya sea
expresa o implcita. El uso de esta informacin o la implementacin de cualquiera de
estas tcnicas es responsabilidad del comprador y depender de la habilidad de ste
para su evaluacin e integracin en el ambiente operacional del comprador. A pesar de
que cada tema ha sido revisado por IBM para su exactitud en una situacin especfica,
no hay garanta de que obtener el mismo resultado o uno similar a ste en otra
situacin. Los compradores que intenten adaptar estas tcnicas a sus propios
ambientes lo hacen bajo su propio riesgo.
Copyright International Business Machines Corporation, 2006. All rights reserved.
Este documento no puede ser reproducido en su totalidad o en parte sin el previo
permiso escrito de IBM.
Instrucciones Especiales para la Impresin de este Curso:
No elimine pginas en blanco que puedan aparecer al final de cada unidad entre
unidades. Estas pginas fueron insertadas intencionalmente.
.

Gua del Estudiante

Fundamentos de Linux

Contenido
Descripcin del Curso ....................................................................................... 1
Descripcin de Unidades................................................................................... 3
Volumen 1: Fundamentos de Linux y Sistemas de Archivos......................... 5
Unidad 1: Fundamentos de Linux..................................................................... 7
Objetivos de Aprendizaje

1. Introduccin

2. Sistema Operativo UNIX

10

3. Sistema Operativo Linux

11

4. Requerimientos de Hardware de Linux

12

5. Distribuciones de Linux

13

6. Organizacin de Linux

13

7. El Sistema de Archivos en Linux

15

8. Procesamiento de Texto

19

9. Programacin

20

10. Documentacin

20

11. Caractersticas del Sistema Linux

21

12. Software Disponible en Linux

21

Resumen

22

Unidad 1: Examen de Autoevaluacin

23

Respuestas a Unidad 1: Examen de Autoevaluacin

25

Unidad 2: El Sistema Linux ............................................................................. 27


Objetivos de Aprendizaje

27

1. Introduccin

28

2. Ingreso y Salida

28

3. Formato de Comandos

30

4. Entrada Estndar, Salida Estndar y Error Estndar

34

5. Redireccin de Entrada/Salida

35

6. Comandos Simples

38

7. Tuberas (Pipes)

48

8. Filtros

50

Resumen

52

Unidad 2: Examen de Autoevaluacin

53

Respuestas a Unidad 2: Examen de Autoevaluacin

55
i

Copyright IBM Corp. 2006


Los materiales del curso no pueden ser reproducidos total o
parcialmente sin el previo permiso escrito de IBM.

Fundamentos de Linux

Gua del Estudiante

Unidad 3: Lab. del Sistema Linux ................................................................... 57


Objetivos de Aprendizaje

57

Ejercicios de Laboratorio

58

Unidad 4: La Estructura de Archivos Linux ................................................... 59


Objetivos de Aprendizaje

59

1. Introduccin

60

2. Archivos

60

3. Directorio

60

4. Inodos

61

5. Comandos de Directorio

63

6. Comandos de Archivos

69

7. Permisos de Archivo

74

Resumen

78

Unidad 4: Examen de Autoevaluacin

79

Respuestas a Unidad 4: Examen de Autoevaluacin

82

Unidad 5: Lab. Estructura de Archivos en Linux........................................... 83


Objetivos de Aprendizaje

83

Ejercicios de Laboratorio

84

Unidad 6: El Editor vi ...................................................................................... 85


Objetivos de Aprendizaje

85

1. Introduccin

86

2. Modos en vi

86

3. Fundamentos de vi

87

4. Insercin de Texto

88

5. Guardar un Archivo

91

6. Eliminar Texto

92

7. Comandos de Movimiento del Cursor

97

8. Modificacin de Texto

101

9. Buscar Texto

106

Resumen

108

Unidad 6: Examen de Autoevaluacin

109

Respuestas a Unidad 6: Examen de Autoevaluacin

111

Unidad 7: Lab. del Editor vi.......................................................................... 113


Objetivos de Aprendizaje

113

Ejercicio de Laboratorio

114
ii

Copyright IBM Corp. 2006


Course materials may not be reproduced in whole or in part
without the prior written permission of IBM.

Gua del Estudiante

Fundamentos de Linux

Volumen 2: Shell y Procesos en Linux......................................................... 115


Unidad 1: Fundamentos de Shell.................................................................. 117
Objetivos de Aprendizaje

117

1. Introduccin al Shell de Linux

118

2. Variables Shell

119

3. Metacaracteres

120

4. Completar Nombres de Archivos

138

Resumen

140

Unidad 1: Examen de Autoevaluacin

141

Respuestas a la Unidad 1: Examen de Autoevaluacin

143

Unidad 2: Lab. Fundamentos del Shell ........................................................ 145


Objetivos de Aprendizaje

145

Ejercicios de Laboratorio

146

Unidad 3: Caractersticas del Shell............................................................... 147


Objetivos de Aprendizaje

147

1. Introduccin

148

2. Variables Shell Predefinidas

148

3. Parmetros Posicionales

151

4. El Comando expr

151

5. El Comando find

153

6. El Comando read

154

7. El Comando test

155

8. Filtros en Linux

156

Resumen

162

Unidad 3: Examen de Autoevaluacin

163

Respuestas a la Unidad 3: Examen de Autoevaluacin

165

Unidad 4: Lab. Caractersticas del Shell ...................................................... 167


Objetivos de Aprendizaje

167

Ejercicios de Laboratorio

168

Unidad 5: Procesos en Linux ........................................................................ 169


Objetivos de Aprendizaje

169

1. El Concepto de Proceso

170

2. El comando ps

171
iii

Copyright IBM Corp. 2006


Course materials may not be reproduced in whole or in part
without the prior written permission of IBM.

Fundamentos de Linux

Gua del Estudiante

3. Proceso Padre e Hijo

172

4. El Proceso Shell

174

5. Proceso de Primer Plano

175

6. Procesos de Segundo Plano

175

7. Administrar el Ambiente de Procesos

178

8. Proceso Demonio

181

9. Seales

181

Resumen

183

Unidad 5: Examen de Autoevaluacin

184

Respuestas a la Unidad 5: Examen de Autoevaluacin

186

Unidad 6: Personalizar el Ambiente de Usuario .......................................... 187


Objetivos de Aprendizaje

187

1. Configuraciones Personalizables

188

2. Configuraciones del Ambiente

189

3. El comando env

194

4. Shell Scripts

195

5. Alias

196

6. Comando History

197

Resumen

199

Unidad 6: Examen de Autoevaluacin

200

Respuestas a la Unidad 6: Examen de Autoevaluacin

202

iv
Copyright IBM Corp. 2006
Course materials may not be reproduced in whole or in part
without the prior written permission of IBM.

Gua del Estudiante

Fundamentos de Linux

Descripcin del Curso


Nombre del Curso
Fundamentos de Linux

Duracin
La duracin del curso es de 28 horas.

Propsito
Este curso ofrece a los estudiantes una visin general del sistema operativo Linux. La
primera parte de este curso, introduce algunos de los conceptos preliminares de Linux
como un sistema operativo de creciente popularidad. Los estudiantes aprendern los
comandos bsicos del Sistema Linux, su organizacin estructural y sistemas de archivo.
Tambin aprendern a crear y administrar directorios y archivos. Este curso proporciona
una introduccin al editor vi, uno de los editores ms usados en Linux.
La segunda parte del curso presenta una descripcin del shell de Linux, uno de los
principales componentes con el que un usuario interacta, junto con algunos comandos
simples del shell. Los estudiantes finalizarn aprendiendo acerca de los conceptos de
procesos de Linux. Este curso tambin describe los mtodos mediante los cuales el
ambiente de Linux puede ser personalizado para ajustarse a las necesidades
individuales.
El curso Fundamentos de Linux incorpora varias sesiones de laboratorio donde los
estudiantes podrn adquirir experiencia prctica acerca de Linux.

Audiencia
Estudiantes, Profesionales y Personas de Negocio.

Prerrequisitos
Ninguno

Descripcin del Curso

Descripcin del Curso 1

Copyright IBM Corp. 2006


Los materiales del curso no pueden ser reproducidos total o
parcialmente sin el permiso escrito previo de IBM.

Fundamentos de Linux

Gua del Estudiante

Objetivos
Al finalizar este curso, usted ser capaz de:

Explicar qu es un sistema operativo.

Discutir la evolucin de Linux y sus requerimientos de hardware.

Describir la organizacin del sistema operativo de Linux.

Discutir la capacidad de Linux para procesar texto, programas y proporcionar la


documentacin de los commandos.

Explicar los procedimientos de ingreso (log in) y salida (log out) en el sistema
operativo Linux.

Explicar el uso del comando format de Linux.

Explicar el uso de algunos comandos bsicos de Linux.

Discutir el uso de tuberas (pipes) y filtros.

Agenda
Cada unidad en este curso es de dos horas de duracin.

Descripcin del Curso

Fundamentos de Linux y Sistemas de Archivos 2

Copyright IBM Corp. 2006


Los materiales del curso no pueden ser reproducidos total o
parcialmente sin el permiso escrito previo de IBM.

Gua del Estudiante

Fundamentos de Linux

Descripcin de Unidades
Volumen 1: Fundamentos de Linux y Sistemas de Archivos
Unidad 1: Fundamentos de Linux
Esta Unidad proporciona una visin general del curso de Linux. Tambin introduce
algunos conceptos preliminares de Linux como un Sistema Operativo de creciente
popularidad. Linux tiene su base en el Sistema Operativo Unix, y la historia de su
desarrollo tambin se presenta. Los requerimientos de hardware de Linux, su estructura
y el procesamiento de archivos son los principales componentes de esta Unidad.

Unidad 2: El Sistema Linux


Esta Unidad da los primeros los primeros pasos para usar el sistema Linux
introduciendo algunos de los comandos bsicos. El proceso de inicio de sesin se
explica. Se discuten algunos comandos bsicos para navegar a travs del sistema de
archivos. Se explica la redireccin de entrada y salida. Tambin se estudian en esta
unidad las tuberas y filtros que constituyen un mecanismo muy potente en Linux..

Unidad 3: Lab. del Sistema Linux


Esta Unidad est diseada para permitir al estudiante realizar los pasos iniciales en
Linux. Especficamente, esta Unidad permite al estudiante comenzar a usar el sistema
Linux con algunas facilidades y comandos bsicos. Aqu, se usa la redireccin de
entrada y salida. El ejercicio de laboratorio proporciona la prctica en el uso del las
tuberas y filtros.

Unidad 4: Estructura de Archivos en Linux


Esta Unidad discute la organizacin y estructura de los sistemas de directorios y
archivos en Linux. Se discuten varios de los comandos disponibles en Linux que ayudan
a trabajar con directorios y archivos. Adicionalmente, se discuten brevemente los
permisos de archivos.

Unidad 5: Lab. de Estructura de Archivos en Linux


Esta Unidad permite al estudiante practicar los comandos aprendidos en la Unidad 4
para crear y administrar archivos y directorios. Los principales objetivos de esta unidad
son permitir al estudiante practicar el uso de varios comandos en este contexto y
asignar permisos a directorios y archivos.

Unidad 6: El Editor vi
Esta Unidad se ocupa de uno de los editores de Linux (y por cierto de cualquier sistema
operativo derivado de Unix) ms usados el editor vi. Este editor es bastante amplio y
algunos de sus comandos se discuten all, desde el punto de vista de edicin de
archivos. Los comandos se estudian como si pertenecieran a determinadas categoras.
Unidad 7: Lab. Editor vi

Fundamentos de Linux y Sistemas de Archivos

Descripcin de Unidades 3

Copyright IBM Corp. 2006


Los materiales del curso no pueden ser reproducidos total o
parcialmente sin el permiso escrito previo de IBM.

Fundamentos de Linux

Gua del Estudiante

El editor vi se aprende utilizndolo. Esta unidad permite al estudiante practicar los


diferentes usos del editor vi, experimentar con ellos adems de aprender a crear
archivos con ellos.

Volumen 2: Shell y Procesos en Linux


Unidad 1: Fundamentos del Shell
El shell de Linux es uno de los principales componentes con los que el usuario
interacta la mayor parte del tiempo. Esta unidad describe algunos conceptos
preliminares, caractersticas y facilidades del shell. En particular, se discute el shell
bash. Se presenta de manera general los comandos simples del shell mientras que los
metacaracteres, comodines y variables del shell se discuten en detalle. Tambin se
explican el uso escape y comillas y cmo completar los nombres de archivos.

Unidad 2: Lab. de Fundamentos del Shell


Este laboratorio permite al estudiante tener una visin prctica del shell. Los objetivos
son practicar el uso de los metacaracteres, comodines y variables shell.

Unidad 3: Caractersticas del Shell


Esta unidad discute algunas caractersticas adicionales del shell, como las variables
shell predefinidas y sus usos as como los parmetros posicinales y sus usos. Tambin
se explican los comandos como find, read y test. Esta Unidad tambin discute
algunos de los filtros ms usados en Linux como los de la familia grep y sed.

Unidad 4: Laboratorio Caractersticas del Shell


Esta Unidad ayuda al estudiante a aprender el uso de los parmetros posicinales en el
shell de Linux. Se presentan algunos problemas prcticos en el uso de los comandos
read y test. El objetivo principal es probar la familia de filtros grep.

Unidad 5: Procesos en Linux


Esta unidad introduce el concepto de procesos en los sistemas operativos en general, y
los procesos en Linux en particular. Tambin se discute el shell como un proceso. Se
discuten los procesos en primer y segundo plano, y los comandos para trabajar con
ellos. Adems se mencionan los mtodos mediante los cuales se puede ajustar el
entorno de un proceso a las necesidades particulares. Tambin se discute el tpico de
seales.

Unidad 6: Personalizar el Ambiente de Usuario


Esta unidad se centra en las formas en que el entorno del usuario puede ser
personalizado o configurado. Se estudian los archivos init, rc y dot, que ayudan a
configurar el entorno. Debido a que se usa el shell bash, los archivos .bashrc y
bash.profile de Linux tambin se estudian. Adems, se explica el manejo de alias y
el comando history.

Descripcin de Unidades

Fundamentos de Linux y Sistemas de Archivos 4

Copyright IBM Corp. 2006


Los materiales del curso no pueden ser reproducidos total o
parcialmente sin el permiso escrito previo de IBM.

Gua del Estudiante

Fundamentos de Linux

Volumen 1: Fundamentos de Linux y


Sistemas de Archivos

Descripcin de Unidades

Descripcin de Unidades 5

Copyright IBM Corp. 2006


Los materiales del curso no pueden ser reproducidos total o
parcialmente sin el permiso escrito previo de IBM.

Gua del Estudiante

Fundamentos de Linux

Unidad 1: Fundamentos de Linux


Objetivos de Aprendizaje
Al final de esta unidad, Ud. ser capaz de:

Explicar qu es un sistema operativo.

Explicar las caractersticas de un sistema operativo UNIX.

Discutir la evolucin de Linux.

Explicar los requerimientos de hardware de Linux.

Describir la organizacin del sistema operativo Linux.

Discutir acerca del kernel (ncleo), el shell (intrprete de comandos), y el


sistema de archivos en Linux.

Discutir la capacidad de Linux para procesar texto, programas y proporcionar


documentacin de los comandos.

Unidad 1: Fundamentos de Linux

Unidad 1: Fundamentos de Linux 7

Copyright IBM Corp. 2006


Los materiales del curso no pueden ser reproducidos total o
parcialmente sin el permiso escrito previo de IBM.

Fundamentos de Linux

Gua del Estudiante

1. Introduccin
Un sistema de computadora es un dispositivo electrnico programable que puede
almacenar, recuperar, y procesar datos. Ejecuta un conjunto de instrucciones llamado
programa. La ejecucin del programa da al usuario final el resultado deseado. Un
ejemplo de ejecucin de un programa es cuando se trabaja con una calculadora en un
sistema operativo Windows.
Una computadora es capaz de realizar mltiples tareas, tales cmo:

Ejecutar programas de usuario.

Conectar computadoras en una Red de rea Local (Local Area Network - LAN).

Compartir los recursos.

Controlar su hardware.

Para que una computadora sea capaz de hacer todo esto, requiere de un programa
especial llamado un sistema operativo. El sistema operativo reside en el disco duro de la
computadora y acta como un puente entre los programas de usuario y los programas
que controlan el hardware de la computadora.
El sistema operativo trabaja principalmente en segundo plano. Se encarga de los
componentes de hardware de una computadora, adems de asegurar el inicio y
ejecucin de los otros diversos programas. Tambin se encarga de los datos
almacenados en los dispositivos de almacenamiento de la computadora.
El sistema operativo es responsable de las siguientes funciones del sistema de
computadora:

Arrancar o iniciar la computadora.

Actuar como interfaz entre el CPU y el mundo exterior.

Coordinar los dispositivos del sistema.

Coordinar las aplicaciones o programas en ejecucin.

El sistema operativo controla todo el trabajo de la computadora. Sin l, la computadora


slo es un montn de circuitos electrnicos.
La Figura 1.1 ilustra el rol de un sistema operativo.

Sistema
Operativo

Programa de
Usuario

Programas que
Controlan el
Hardware de la
Computadora

Figura 1.1: El Rol de un Sistema Operativo

Unidad 1: Fundamentos de Linux

Fundamentos de Linux y Sistemas de Archivos 8

Copyright IBM Corp. 2006


Los materiales del curso no pueden ser reproducidos total o
parcialmente sin el permiso escrito previo de IBM.

Gua del Estudiante

Fundamentos de Linux

Los siguientes son algunos de los usos del sistema operativo:

Proporciona diferentes recursos a los usuarios tales como clculo, almacenamiento,


dispositivos de Entrada/Salida (Input/Output - I/O), manejo de red, etc.

Permite que varios usuarios trabajen juntos compartiendo e intercambiando


programas, aplicaciones, y datos en la misma instalacin.

Ayuda a resolver conflictos cuando los usuarios solicitan el mismo recurso


simultneamente.

Proporciona seguridad cuando los usuarios comparten datos y programas.

Asiste en la administracin y evaluacin del uso y eficiencia de un sistema,


recolectando datos sobre la utilizacin de los recursos.

En los sistemas de computadoras, existen varios componentes que slo trabajan en


forma secuencial y, que slo se pueden compartir directamente en forma marginal.
Los sistemas operativos permiten que se haga un uso eficiente de estos
componentes.

1.1 Inicio de un Sistema Operativo

El proceso de iniciar el sistema operativo es llamado arranque (bootstrapping o


booting). Aqu se dan algunos puntos acerca de como se inicia un sistema
operativo:

Las instrucciones para el arranque estn incluidas en uno de los chips de la


computadora, llamado el chip BIOS (Basic Input/Output System).

El chip BIOS informa a la computadora que busque un programa especial


llamado el gestor de arranque (boot loader).

El gestor de arranque est disponible en un lugar fijo en el disco de arranque. El


disco de arranque en cualquier computadora es el disco duro primario.

El gestor de arranque inicia la parte principal del sistema operativo.

Los sistemas operativos son clasificados en dos tipos:

Sistema Operativo de Usuario nico: Permite que slo un usuario use todos
los recursos del sistema de computadora en cualquier momento dado. Mientras
el procesador maneja un usuario o programa, otros programas o usuarios no
pueden usar los recursos. Un ejemplo de este tipo es el sistema operativo DOS.

Sistema Operativo Multiusuario: Permite que ms de un usuario o programa


se ejecuten o usen los recursos del sistema en forma simultnea. Algunos
ejemplos de sistema operativos multiusuario son UNIX, XENIX, Linux, Solaris,
etc.

En los tiempos en que los sistemas operativos como DOS nicamente permitan slo un
usuario para realizar tareas simples, la introduccin de UNIX cre una nueva forma de
computacin. A pesar que Windows tambin es un sistema operativo principalmente de
usuario nico, permite que varias tareas se realicen en forma simultnea. A
continuacin se aprender acerca del sistema operativo UNIX, dado que Linux es una
variacin del sistema operativo UNIX.

Fundamentos de Linux y Sistemas de Archivos

Unidad 1: Fundamentos de Linux 9

Copyright IBM Corp. 2006


Los materiales del curso no pueden ser reproducidos total o
parcialmente sin el permiso escrito previo de IBM.

Fundamentos de Linux

Gua del Estudiante

2. Sistema Operativo UNIX

El sistema operativo UNIX tiene una historia muy interesante. Algunos de los
aspectos de su evolucin son:

Bell Telephone Laboratories (BTL), GE, y MIT se unieron intentando crear un


sistema operativo que permitiera trabajar simultneamente hasta mil usuarios.
Ken Thompson y Dennis Ritchie de BTL trabajaron en esto y crearon un sistema
operativo, llamado MULTICS, un acrnimo de MULTiplexed Information and
Computer Service (Servicio de Informacin Multiplexada y Clculo).

BTL se retir del proyecto durante el desarrollo del trabajo.

En 1969-70, Thompson y Ritchie rescribieron el sistema operativo para jugar un


juego de guerra espacial con otra mquina ms pequea.

Este sistema operativo fue llamado UNiplexed Information and Computing


Service (UNICS), un juego de palabras del MULTICS original.

El nombre UNICS luego fue transformado en UNIX.

En 1972-73, el sistema UNIX fue reescrito usando el lenguaje de programacin


C.

El sistema operativo UNIX es uno de los sistemas operativos ms poderosos,


verstiles, y flexibles en el mundo hoy en da.

El sistema operativo UNIX corre en un rango de computadoras


microcomputadoras hasta mainframes. Algunas de sus caractersticas son:

desde

Es conocido como un sistema operativo 'abierto' dado que puede ser llevado e
instalado en cualquier clase de sistema de computadora y plataforma de
hardware.

Normalmente, los sistemas operativos son escritos en lenguaje ensamblador.


Sin embargo, UNIX est escrito en un lenguaje de alto nivel y su cdigo fuente
est disponible fcilmente. Esto es una ventaja para los programadores cuando
incorporan cambios para ajustarse a sus necesidades.

Es un sistema multiusuario y multitarea. Multitarea significa que el sistema


operativo puede coordinar mltiples tareas o trabajos en forma simultnea.
Mientras un usuario est compilando un programa C, otro puede crear un
documento usando un editor, cada uno ignorando la presencia del otro.

UNIX es uno de los sistemas operativos ms poderosos existentes por el hecho


de poder compartir recursos en tiempo real.

A pesar que UNIX est desarrollado para programadores, proporciona un


entorno tan flexible que tambin es usado en negocios, ciencias, educacin, e
industria.

Los interruptores de telecomunicacin y sistemas de transmisin son algunos de


ejemplos del uso del sistema operativo UNIX.

A continuacin se aprender acerca del sistema operativo Linux.

Unidad 1: Fundamentos de Linux

Fundamentos de Linux y Sistemas de Archivos 10

Copyright IBM Corp. 2006


Los materiales del curso no pueden ser reproducidos total o
parcialmente sin el permiso escrito previo de IBM.

Gua del Estudiante

Fundamentos de Linux

3. Sistema Operativo Linux


Linux es un sistema operativo distribuido gratuitamente basado en el sistema operativo
UNIX. Fue desarrollado originalmente por Linus Torvalds, quin empez a trabajar
sobre Linux en 1991 siendo estudiante de la Universidad de Helsinki en Finlandia.
Luego, miles de programadores contribuyeron a su desarrollo y fue distribuido
gratuitamente sobre la Internet.
Por los 1980s, los sistemas operativos eran bsicamente propietarios, lo que significaba
que uno tena que usar slo el sistema operativo proporcionado para una plataforma
especfica.
El Proyecto GNU fue fundado por Richard Stallman. Stallman fue el fundador de Free
Software Foundation (FSF), autor del GNU GPL (General Public License) y el
desarrollador original de algunos programas de software GNU (por ejemplo, el
compilador gcc y el editor de texto Emacs).
Las principales metas del Proyecto GNU incluyeron las siguientes:

Desarrollar un sistema operativo compatible con UNIX

Soportar diferentes arquitecturas de hardware

Hacer que el sistema operativo estuviese disponible libre de costo para asegurar
que los usuarios pudiesen redistribuir todo el sistema y cambiar o contribuir a
alguna parte de l

Por 1990, la mayora de piezas de software del sistema operativo basado en GNU se
haban escrito, excepto la ms importante, el kernel. El kernel es el ncleo del sistema
operativo.
Ms tarde, el kernel gratuito basado en UNIX desarrollado por Linus Torvalds fue
combinado con el sistema GNU. As naci un sistema operativo, el sistema GNU
basado en Linux.
Las etapas significativas en la evolucin de Linux son:

En 1991, Linus Torvalds desarroll Linux con el soporte de desarrolladores a lo


largo del mundo y lo llam Linux.

l lanz la Versin 0.02 de Linux en 1991.

En 1994, fue lanzada la Versin 1.0 de Linux.

La versin 2.6 actual, completa fue lanzada en Diciembre 2003. Sin embargo, su
desarrollo an contina.

Los siguientes son algunos de los hechos bsicos acerca del sistema operativo Linux:

Es desarrollado, escrito, distribuido, y respaldado bajo el GPL de GNU (GNU No


es UNIX). Como resultado, su cdigo fuente puede ser distribuido gratuitamente
y disponible para el pblico en general.

Los sistemas Linux se usan para redes, desarrollo de software, soluciones de


alojamiento basados en Web, y como plataforma de usuario final.

La mascota oficial, que Linus eligi para su sistema operativo, es el pingino


Linux llamado Tux (Torvalds Unix), que se presenta en la Figura 1.2.

Fundamentos de Linux y Sistemas de Archivos

Unidad 1: Fundamentos de Linux 11

Copyright IBM Corp. 2006


Los materiales del curso no pueden ser reproducidos total o
parcialmente sin el permiso escrito previo de IBM.

Fundamentos de Linux

Gua del Estudiante

Figura 1.2: Tux la Mascota Linux

Linux no es un derivado del cdigo fuente de UNIX. Sin embargo, la interfaz de


Linux es intencionalmente como la de UNIX. As, las lecciones aprendidas
acerca de UNIX, incluyendo informacin sobre seguridad son aplicables tanto a
UNIX como a Linux.

Linux es un sistema operativo estable y verstil, especialmente como un servidor


de red.

Proporciona un slido entorno grfico, paquetes fciles de instalar, y


aplicaciones de alto nivel.

4. Requerimientos de Hardware de Linux


Linux soporta plataformas de hardware tales como Intel x86, PowerPC, S/390,
SPARC, y Alpha. Los diferentes requerimientos de hardware para Linux se listan en
la Tabla 1.1.
Hardware

Requerimientos

CPU

La serie x86 de Intel y sus compatibles, DEC Alpha, Motorola


Power PC, etc.

Tarjeta Madre (Motherboard)

Sistemas de bus PCI, EISA, VESA, y MCA.

Memoria
Monitor y Adaptador de Video
Dispositivos de Puntero

64 MB (mnimo), 256 MB recomendados para mayor


eficiencia y ejecucin.
CGA, EGA, VGA, IBM monochrome, Super VGA y otras
tarjetas aceleradoras de video
Ratn serial estndar como Logitech, serie MM, Microsoft 2botones, Sistemas de Mouse de 3-botones, etc.

Controlador de Disco Duro

IDE, EIDE, MFM \,RLL, y la mayora de controladores ESDI.

Espacio de Disco Duro

Requiere un mnimo de 100 MB de espacio para una


instalacin mnima de Linux. Para una instalacin completa
con todos los servicios, los requerimientos pueden ser tanto
como 2 GB.

Unidades CD-ROM

Sistema estndar de archivos ISO 9660 para CD-ROMs.

Unidades de Cinta

SCSI

Impresoras

Impresoras paralelas

Modems

Modems seriales internos y externos.

Tarjetas Ethernet

Soporta tarjetas Ethernet y adaptadores LAN populares.

Unidad 1: Fundamentos de Linux

Fundamentos de Linux y Sistemas de Archivos 12

Copyright IBM Corp. 2006


Los materiales del curso no pueden ser reproducidos total o
parcialmente sin el permiso escrito previo de IBM.

Gua del Estudiante

Fundamentos de Linux
Tabla 1.1: Requerimientos de Hardware para Linux

5. Distribuciones de Linux
Como el cdigo fuente para Linux est siendo distribuido gratuitamente, diferentes
compaas han desarrollado sus propias versiones o distribuciones de Linux.
Cada una de estas variedades tiene su propio conjunto de caractersticas, tales como
procedimientos de instalacin y administracin, paquetes de software, y
configuraciones. Muchas de ellas estn configuradas para un tipo especfico de
computadora.
Las 10 distribuciones principales se listan a continuacin:

Mandrake Linux, desarrollado por MandrakeSoft.

Red Hat Linux, desarrollado por Red Hat.

Debian GNU/Linux, desarrollado por Debian.

SuSE Linux, desarrollado por SuSE, Inc.

Gentoo Linux ,desarrollado por Gentoo Technologies, Inc.

El Proyecto Slackware Linux, desarrollado por Slackware Linux, Inc.

Lycoris Desktop/LX, desarrollado por Lycoris.

Beehive Linux, desarrollado por el Equipo Beehive.

Caldera OpenLinux, desarrollado por Caldera International, Inc.

Turbolinux, desarrollado por Turbolinux, Inc.

Existen muchas ms, aunquela distribucin Linux ms usada es Red Hat Linux.

6. Organizacin de Linux
El sistema operativo Linux est organizado funcionalmente en los siguientes tres
niveles:

Kernel (Ncleo).

Shell (Intrprete de Comandos).

Herramientas y aplicaciones.

La representacin esquemtica de las tres partes principales del sistema operativo


Linux se presenta en la Figura 1.3.

Fundamentos de Linux y Sistemas de Archivos

Unidad 1: Fundamentos de Linux 13

Copyright IBM Corp. 2006


Los materiales del curso no pueden ser reproducidos total o
parcialmente sin el permiso escrito previo de IBM.

Fundamentos de Linux

Gua del Estudiante

Kernel

Shell

Programas de
Usuario

Figura 1.3: Partes Principales del Sistema Operativo Linux

6.1 El Kernel
El kernel es el ncleo de un sistema operativo, as como la CPU es el ncleo de un
sistema de computadora. El kernel es una coleccin de programas, la mayora escritos
en C, y slo existe un kernel para cualquier sistema operativo. ste se comunica
directamente con el hardware y, sin un kernel un sistema operativo no puede interactuar
con el hardware.
Algunas de las tareas importantes del kernel son:

Verificar si el usuario es un usuario autorizado.

Hacer seguimiento de los diferentes programas que se estn ejecutando y


asignar un tiempo especfico a cada programa.

Asignar espacio de almacenamiento para los archivos en el sistema.

Ejecutar el programa shell.

Manejar la transferencia de informacin entre la computadora y los terminales.

En un sistema multiusuario, a cada terminal se le asigna un nmero y los usuarios


trabajan en terminales conectadas a la computadora principal. El sistema operativo se
comunica con la terminal a travs de los nmeros de terminal.

6.2 El Shell
El sistema operativo Linux usa un shell para transferir los comandos desde el teclado a
la computadora. El shell (intrprete de comandos) es slo otro programa escrito en C.
Unidad 1: Fundamentos de Linux

Fundamentos de Linux y Sistemas de Archivos 14

Copyright IBM Corp. 2006


Los materiales del curso no pueden ser reproducidos total o
parcialmente sin el permiso escrito previo de IBM.

Gua del Estudiante

Fundamentos de Linux

Acta como un intrprete entre los programas de los usuarios y el kernel. Traduce los
comandos del usuario en la accin apropiada. El shell interacta con el usuario,
mientras que el kernel interacta con el hardware de la mquina.
El shell es el programa que toma comandos y, ya sea ejecuta el programa apropiado, o
los traduce en instrucciones que el kernel entiende. Por ejemplo, un comando tal como
chdir ser traducido por el shell a un formato entendible por el kernel, mientras que un
comando tal como ls ser ejecutado por el shell como un programa en el directorio
/usr/bin/ls.
El shell es una interfaz basada en texto para el sistema operativo Linux. En Linux, las
interfaces grficas tales como el Sistema X Window (similar al presentado por Windows
NT y Windows 2000, que permite al usuario ejecutar comandos usando el ratn y el
teclado) tambin pueden ser usadas.
El shell por defecto en Linux es bash (Bourne Again SHell). Otros tipos de shell
disponibles en Linux son:

csh (C SHell).

ksh (Korn SHell).

sh (SHell).

tcsh (enhanced C SHell).

Bourne SHell y el C SHell son los que se usan comnmente. Ambos son controlados
por comandos. El Korn SHell es el menos usado. Todos los shells sirven para el mismo
propsito, pero tienen diferentes caractersticas y sintaxis.

6.3 Herramientas y Aplicaciones


En el sistema Linux existe un cierto nmero de herramientas disponibles. Las
herramientas son programas de usuario que pueden ser escritos por terceros para
determinados tipos de aplicaciones. Tpicamente, las herramientas se agrupan por
realizar ciertas funciones tales como programacin, aplicaciones de negocio, y
procesamiento de texto.
A continuacin se aprender acerca de la organizacin del sistema de archivos en el
sistema operativo Linux.

7. El Sistema de Archivos en Linux


Todos los programas de usuario, documentos, herramientas, aplicaciones, etc. son
almacenados como archivos en un sistema de computadora. Todos los archivos son
almacenados en un dispositivo de almacenamiento secundario (usualmente un disco).
Una porcin del disco es separada para almacenar la informacin relacionada a los
archivos almacenados. Esta unidad funcional se denomina sistema de archivos. Vea la
Figura 1.4

Fundamentos de Linux y Sistemas de Archivos

Unidad 1: Fundamentos de Linux 15

Copyright IBM Corp. 2006


Los materiales del curso no pueden ser reproducidos total o
parcialmente sin el permiso escrito previo de IBM.

Fundamentos de Linux

Gua del Estudiante

Sistema de
Archivos 1

Sistema de
Archivos 2

Sistema de
Archivos 3

Sistema de
Archivos 4

Figura 1.4: El Sistema de Archivos


Algunos de los puntos importantes a notar aqu son:

El rea de la superficie donde se almacenan los archivos se divide en pistas


circulares.

Las pistas circulares estn divididas en sectores o bloques de disco (en forma de
torta).

Todos los bloques del disco son del mismo tamao y tienen un nmero nico
llamado el nmero de bloque de disco.

El tamao del bloque de disco vara dependiendo de la distribucin de Linux.

La mayora de los sistemas modernos tienen un tamao de bloque de disco de 1 KB (Kilobytes).


Los bloques de disco estn organizados en los siguientes cuatro grupos:

Bloque de Arranque (Boot).

Superbloque.

Bloque inodo.

Bloque de datos.

Cada sistema de archivos tiene un bloque de arranque, un superbloque, una lista de


bloques inodos, y una lista de bloques de datos. La Figura 1.5 ilustra la vista a nivel de
bloques de disco de una unidad de sistema de archivos. Los sistemas Linux tpicamente
usan ms de una unidad de sistema de archivos.

Unidad 1: Fundamentos de Linux

Fundamentos de Linux y Sistemas de Archivos 16

Copyright IBM Corp. 2006


Los materiales del curso no pueden ser reproducidos total o
parcialmente sin el permiso escrito previo de IBM.

Gua del Estudiante

Fundamentos de Linux

1024 bytes

Bloque

SuperBloque

Bloques Inodo

Arranque
Bloques de Datos
Bloques de Datos
Bloques de Datos

Sistema de Archivos

Sistema de
Archivos 2

Sistema de
Archivos 1

Sistema de
Archivos 3

Sistema de
Archivos 4

Figura 1.5: Unidad Tpica de Sistema de Archivos

Ahora se va a entender la necesidad y uso de cada bloque en el sistema de archivos.


Bloque de Arranque

Consiste de un bloque de disco que contiene el cdigo para iniciar la


computadora.

Ocupa el primer bloque de un sistema de archivos.

Un sistema slo requiere de un bloque de arranque para iniciar el sistema. En el


resto de los sistemas de archivos, este bloque permanece vaco.
Superbloque

Est a continuacin del bloque de arranque en el sistema de archivos.

Fundamentos de Linux y Sistemas de Archivos

Unidad 1: Fundamentos de Linux 17

Copyright IBM Corp. 2006


Los materiales del curso no pueden ser reproducidos total o
parcialmente sin el permiso escrito previo de IBM.

Fundamentos de Linux

Gua del Estudiante

Consiste de un bloque de disco, que contiene informacin acerca del sistema de


archivos.
Contiene informacin acerca del nmero de bloques en el sistema de archivos,
el nmero de bloques asignados para inodos (se aprender acerca de los inodos
ms adelante) y el nmero de bloques que estn actualmente libres.

Bloque Inodo

Es el tercer grupo de bloques en un sistema de archivos.

Contiene ms de un bloque de disco para mantener informacin acerca de los


archivos en el sistema de archivos.

Bloque de Datos

Almacena el contenido del archivo.

Sigue a los bloques de disco asignados para inodos.

Un sistema de archivos contiene cierto nmero de bloques de datos.

Antes de proceder a aprender acerca de la particin del disco, se entender un poco


ms acerca de la informacin que mantienen los inodos.
Los inodos mantienen informacin acerca del propietario del archivo, los bloques de
disco usados por el archivo, etc. Los archivos, por otro lado, contienen los datos del
archivo. Asuma que se crea un archivo llamado mydocument.txt. Este debe ser
almacenado en el disco. Dependiendo del sistema de archivos al que est asociado, los
datos del archivo se almacenarn en los bloques de datos y otra informacin
administrativa acerca de ste ser almacenada en los bloques inodos.

7.1 Particin de Disco


Aqu, el sistema divide el disco en particiones de disco.

Cada particin consiste de bloques, situados en forma contigua, pero separados


de las otras particiones.

La particin puede ser un sistema de archivos o un espacio de intercambio


(space swap).

Un espacio de intercambio (space swap) se usa para implementar la memoria


virtual, donde una porcin de la memoria principal se almacena temporalmente.

La particin primaria es donde se almacenan los archivos relacionados al


arranque.

Las particiones del espacio de intercambio (space swap) son una secuencia
lineal de bloques.

El tamao de los archivos cambia a travs del tiempo (crece o disminuye).

Un bloque de datos de un archivo puede no estar en una secuencia lineal de


bloques. En vez de ello, puede estar disperso a lo largo de toda la particin.

Unidad 1: Fundamentos de Linux

Fundamentos de Linux y Sistemas de Archivos 18

Copyright IBM Corp. 2006


Los materiales del curso no pueden ser reproducidos total o
parcialmente sin el permiso escrito previo de IBM.

Gua del Estudiante

Fundamentos de Linux

8. Procesamiento de Texto
El sistema Linux proporciona mtodos poderosos de procesamiento de un texto. Un
ejemplo simple de procesamiento de texto es encontrar el nmero de ocurrencias de un
patrn dado en un texto. Vamos a considerar un ejemplo.
La pronunciacin de la palabra pronunciacin es pronunciacin
En esta oracin el patrn 'pronunciacin' ocurre tres veces en el texto.
Cierto nmero de herramientas, tales como grep, egrep, y fgrep, estn disponibles
para realizar procesamiento de texto.
Tambin existen otras herramientas de procesamiento de texto, que son conocidos
como editores. Estas proporcionan las funcionalidades para crear, editar (modificar) y
guardar texto. Algunos ejemplos de editores son:

Vi: Es conocido como el editor visual y es el editor ms popular. vi es un


programa que permite a los usuarios editar tanto archivos de texto como
binarios. Los archivos de texto son aquellos que tienen caracteres
alfanumricos, mientras que los archivos binarios contienen caracteres
entendibles por la mquina. vi proporciona cierta cantidad de comandos para
editar el contenido de un archivo. A pesar que tambin puede leer archivos
binarios, vi es conocido normalmente como un editor de texto.

Un editor de texto es como un procesador de palabras. Los editores de texto se


usan principalmente para escribir programas, que luego son convertidos en un
cdigo entendible por la mquina a travs de otro programa.

Ed: Mientras que vi es un editor que permite visualizar el contenido de un


archivo, una pantalla a la vez, ed es un editor de lnea. En cualquier momento,
slo puede mostrarse una lnea del archivo

Sed: Es un editor de flujos basado en ed. Puede editar archivos sin


intervencin del usuario. Los comandos de edicin pueden ser pasados como
argumentos de lnea de comandos. Los argumentos de lnea de comandos son
aquellos que se proporcionan junto con un comando, antes de que el comando
sea ejecutado. Estos argumentos van como entradas sobre las cuales el
programa puede trabajar para producir cierta salida.

sed se usa extensivamente en los sistemas Linux. Proporciona mecanismos


poderosos para editar flujos de datos pasados a l como una entrada.

Emacs: Es un poderoso editor de texto. Siendo C el lenguaje de programacin


usado comnmente en los sistemas Linux, emacs tiene caractersticas
incorporadas que permite dar formato automtico a los programas C, a su vez
tambin permite la bsqueda de patrones y lectura de correo electrnico desde
el editor.

A continuacin se presenta una breve discusin sobre las capacidades de programacin


y documentacin disponibles en Linux.

Fundamentos de Linux y Sistemas de Archivos

Unidad 1: Fundamentos de Linux 19

Copyright IBM Corp. 2006


Los materiales del curso no pueden ser reproducidos total o
parcialmente sin el permiso escrito previo de IBM.

Fundamentos de Linux

Gua del Estudiante

9. Programacin
Se puede programar a travs del shell y esto se conoce como programacin de shell.
Linux proporciona ms de un shell. El Bourne Again Shell (popularmente conocido como
bash) es el shell ms usado. Se aprender acerca de los diferentes shells que
proporciona Linux en la Unidad 2: El Sistema Linux.
Cada shell en Linux proporciona la capacidad de programacin. Un programa shell
puede invocar las herramientas proporcionadas en Linux a travs de una sintaxis
simple. La programacin de shell es similar a un lenguaje de programacin como C,
pero con una sintaxis diferente.
Combinado con el poder del procesamiento de texto, la programacin en Linux es
extremadamente poderosa. La administracin de sistemas complejos en sistemas
operativos estilo-UNIX se hace tpicamente a travs de la programacin del shell. El
administrador del sistema usa la programacin del shell en forma extensiva para
administrar y monitorear el sistema operativo.

10. Documentacin
Linux proporciona una documentacin bastante elaborada para todas sus herramientas.
Las herramientas son referidas comnmente como comandos.
El sistema Linux proporciona cierto nmero de comandos. Algunos de ellos son:

clear - limpia la pantalla.

date muestra la fecha y hora.

cal muestra el calendario del mes actual.

who muestra todos los usuarios que estn actualmente conectados al sistema.

Sin embargo, dado que los comandos son tan extensos, no es posible para ningn
usuario recordar todos los comandos y la sintaxis asociada con estos.
La documentacin puede ser leda fcilmente con la ayuda de una herramienta
controladora de comandos llamada man, que viene de pginas de manual.
A continuacin se dan ejemplos de uso. El comando man ser discutido en detalle en la
Unidad 2: El Sistema Linux.
man clear
man date
man man
Los dos primeros usos del comando man muestran la documentacin para los
comandos clear y date, respectivamente. El tercer uso muestra la documentacin del
mismo comando man.

Unidad 1: Fundamentos de Linux

Fundamentos de Linux y Sistemas de Archivos 20

Copyright IBM Corp. 2006


Los materiales del curso no pueden ser reproducidos total o
parcialmente sin el permiso escrito previo de IBM.

Gua del Estudiante

Fundamentos de Linux

11. Caractersticas del Sistema Linux


El sistema Linux ofrece las siguientes caractersticas:

Estabilidad: Tiene proteccin de la memoria entre procesos, de manera que uno


de ellos no pueda colgar el sistema.

Multitarea: Varios programas (realmente procesos) ejecutndose al mismo


tiempo.

Multiusuario: Varios usuarios en la misma mquina al mismo tiempo (y sin


licencias para todos).

Multiplataforma: Se ejecuta en muchos tipos de CPU, no slo Intel.

Manejo de la Memoria: La memoria se gestiona como un recurso unificado para


los programas de usuario y para el cach de disco, de tal forma que toda la
memoria libre puede ser usada para cach y ste puede a su vez ser reducido
cuando se ejecuten grandes programas.

Interfaz Grfica de Usuario: KDE, GNOME.

Desarrollo de Software: KDevelop (Lenguaje C, C++, Java, PHP, Perl, Phyton,


entre otros).

Trabajo de redes: TCP/IP, incluyendo ftp, telnet, NFS, Wreless, etc.

Disponibilidad del Cdigo Fuente: Todo el cdigo fuente est disponible,


incluyendo el ncleo completo, todos los drivers, las herramientas de desarrollo y
todos los programas de usuario; adems est disponible libremente.

12. Software Disponible en Linux


Varios tipos de software estn disponibles en Linux. Algunas de las categoras son:

Aplicaciones.

Software de Desarrollo.

Software Cientfico.

Software de Sistema.

Utilitarios.

Juegos.

Fundamentos de Linux y Sistemas de Archivos

Unidad 1: Fundamentos de Linux 21

Copyright IBM Corp. 2006


Los materiales del curso no pueden ser reproducidos total o
parcialmente sin el permiso escrito previo de IBM.

Fundamentos de Linux

Gua del Estudiante

Resumen
Ahora que ha completado esta unidad, Ud. debe ser capaz de:

Explicar qu es un sistema operativo.

Explicar las caractersticas de un sistema operativo UNIX.

Discutir la evolucin de Linux.

Explicar los requerimientos de hardware de Linux.

Describir la organizacin del sistema operativo Linux.

Discutir el kernel (ncleo), el shell (intrprete de comandos), y el sistema de


archivos en Linux.

Discutir la capacidad de Linux para procesar texto, programas y proporcionar


documentacin de los comandos.

Unidad 1: Fundamentos de Linux

Fundamentos de Linux y Sistemas de Archivos 22

Copyright IBM Corp. 2006


Los materiales del curso no pueden ser reproducidos total o
parcialmente sin el permiso escrito previo de IBM.

Gua del Estudiante

Fundamentos de Linux

Unidad 1: Examen de Autoevaluacin


1) Qu es un sistema operativo?
a) Un sistema de computadora.
b) Un programa especial requerido para hacer que otros programas se ejecuten
en un sistema de computadora.
2) El arranque (booting) es un proceso?
a) Para iniciar la computadora.
b) Para apagar la computadora.
3) Linux es un sistema operativo_________________.
a) Usuario nico/multitarea
b) Usuario nico/tarea nica
c) Multiusuario/multitarea
d) Multiusuario/tarea nica
4) En que ao el sistema operativo UNIX fue reescrito en C?
a) 1969-70
b) 1972-73
5) l (Las)_________ es(son) el ncleo de un sistema operativo
a) Sistema de archivos
b) Shell
c) Kernel
d) Herramientas y aplicaciones
6) El kernel acta como un puente entre los programas del usuario y el shell.
a) Verdadero
b) Falso
7) Los archivos en el sistema operativo Linux son almacenados en superbloques.
a) Verdadero
b) Falso

Fundamentos de Linux y Sistemas de Archivos

Unidad 1: Fundamentos de Linux 23

Copyright IBM Corp. 2006


Los materiales del curso no pueden ser reproducidos total o
parcialmente sin el permiso escrito previo de IBM.

Fundamentos de Linux

Gua del Estudiante

8) Un disco, en Linux, est dividido principalmente en _________.


a) Particiones de disco
b) Pistas de disco
c) Sectores de disco
d) Ninguna de las anteriores
9) Los bloques de disco que almacenan los datos de un archivo sern una secuencia
lineal de bloques.
a) Verdadero
b) Falso
10)

Para cul de las siguientes funciones puede usarse el sistema Linux?


a) Multitarea
b) Programacin
c) Trabajo de redes
d) Todas las anteriores

Unidad 1: Fundamentos de Linux

Fundamentos de Linux y Sistemas de Archivos 24

Copyright IBM Corp. 2006


Los materiales del curso no pueden ser reproducidos total o
parcialmente sin el permiso escrito previo de IBM.

Gua del Estudiante

Fundamentos de Linux

Respuestas a Unidad 1: Examen de Autoevaluacin


1) b
2) a
3) c
4) b
5) c
6) b
7) b
8) a
9) b
10) d

Fundamentos de Linux y Sistemas de Archivos

Unidad 1: Fundamentos de Linux 25

Copyright IBM Corp. 2006


Los materiales del curso no pueden ser reproducidos total o
parcialmente sin el permiso escrito previo de IBM.

Fundamentos de Linux

Gua del Estudiante

Pgina dejada intencionalmente en blanco....

Unidad 1: Fundamentos de Linux

Fundamentos de Linux y Sistemas de Archivos 26

Copyright IBM Corp. 2006


Los materiales del curso no pueden ser reproducidos total o
parcialmente sin el permiso escrito previo de IBM.

Gua del Estudiante

Fundamentos de Linux

Unidad 2: El Sistema Linux


Objetivos de Aprendizaje
Al final de esta unidad, Ud. ser capaz de:

Explicar el procedimiento de ingreso/salida en un sistema operativo Linux.

Discutir el uso del formato de comandos de Linux.

Describir la redireccin de entrada y salida.

Explicar el uso de algunos comandos bsicos de Linux.

Discutir el uso de tuberas (pipes) y filtros.

Fundamentos de Linux y Sistemas de Archivos

Unidad 2: El Sistema Linux 27

Copyright IBM Corp. 2006


Los materiales del curso no pueden ser reproducidos total o
parcialmente sin el permiso escrito previo de IBM.

Fundamentos de Linux

Gua del Estudiante

1. Introduccin
En la Unidad 1: Fundamentos de Linux, se hizo una breve introduccin al sistema
operativo Linux. Linux es un sistema operativo multiusuario y multitarea, donde mltiples
usuarios pueden ejecutar mltiples aplicaciones en forma simultnea en una nica
computadora centralizada (un solo procesador).
Linux cumple con POSIX (Portable Operating System Interface for UNIX), y es un
sistema operativo estable y verstil. A travs del curso, se usar UNIX y Linux
indistintamente.
A continuacin se aprender a usar las poderosas caractersticas del sistema.

2. Ingreso y Salida
Los usuarios en un sistema operativo multiusuario trabajan en terminales, que
comprenden una unidad de salida (tambin conocida como monitor) y un teclado. Los
terminales tienen un nmero nico asociados con ellos y estn conectados a la unidad
principal, que no necesariamente reside en la misma ubicacin.
En un sistema que permite que mltiples usuarios operen en forma concurrente, debe
existir una forma de identificar a los usuarios. El sistema tambin debe asegurar que un
usuario no suplante a otro y obtenga acceso a archivos confidenciales. Todo esto se
logra a travs del procedimiento de ingreso (login).
Algunos puntos a notar acerca del procedimiento de ingreso son:

Cada usuario del sistema es identificado con una cuenta nica.

Los usuarios son identificados por su nombre de registro (login name), y sus
cuentas estn protegidas a travs de contraseas de usuario (user passwords).

Cada sistema Linux tiene un administrador del sistema que administra,


monitorea y maneja el sistema.

Uno de los trabajos importantes de un administrador de sistema es el crear


cuentas y proporcionar nombres de registro para los usuarios.

El administrador del sistema tambin proporciona la contrasea inicial para cada


cuenta.

root es un usuario de sistema en el sistema Linux que tiene el control completo


del sistema operativo. Cuando se ingresa como root, el administrador del
sistema puede realizar cualquier tarea en el sistema operativo. El root tambin
es conocido como el superusuario.

Cada sistema tiene un nombre de servidor (host name) asignado. El nombre de


servidor facilita la rpida identificacin de una mquina en una red.

En todos los ejemplos en este curso, se usar el nombre de servidor mycomputer y el


nombre de registro mickeymouse. Dado que el shell por defecto en Linux es bash, se
usar bash en todos los ejemplos.
Unidad 2: El Sistema Linux

Fundamentos de Linux y Sistemas de Archivos 28

Copyright IBM Corp. 2006


Los materiales del curso no pueden ser reproducidos total o
parcialmente sin el permiso escrito previo de IBM.

Gua del Estudiante

Fundamentos de Linux

Ahora se aprender como ingresar en un sistema operativo Linux.

2.1 Ingreso
Una solicitud tpica de ingreso y registro en un sistema Linux se ve como sigue:
login:
El usuario tiene que ingresar el nombre de registro (login name). En nuestro ejemplo, se
ingresar mickeymouse. Inmediatamente se muestra la solicitud de contrasea:
login: mickeymouse
password:
El usuario tiene que ingresar la contrasea (password). La contrasea debe ingresarse
cuidadosamente dado que los caracteres ingresados no aparecen en la pantalla. Si la
contrasea no se ingresa correctamente, aparecer el siguiente mensaje de error.
Login incorrect
Todos los sistemas operativos similares a UNIX, incluyendo Linux, son sensibles a
maysculas y minsculas (por ejemplo, la letra a minscula es diferente de la A
mayscula).
Cuando tanto el nombre de ingreso como la contrasea se ingresan correctamente, el
usuario ingresa en el sistema. En nuestro ejemplo, cuando se ingresa exitosamente, se
estar en un directorio llamado
/home/mickeymouse
Este se llama el directorio home del usuario. El primer / indica el directorio raz y los
subsecuentes slo son separadores para directorios. Los archivos y directorios se
estudian en la Unidad 4 - La Estructura de Archivos de Linux. Aqu ser suficiente con
establecer que los directorios son lugares de almacenamiento para archivos.
El sistema presentar una pantalla y una solicitud de comandos, donde se puede
ingresar comandos. La solicitud de comandos visible en la pantalla es:
[mickeymouse@mycomputer mickeymouse]$
El nombre de ingreso mickeymouse que aparece por segunda vez indica que se est
en el directorio home de mickeymouse. Se aprender ms respecto a esto en la
Unidad 4 - La Estructura de Archivos de Linux.
El signo $ al final de la cadena de la solicitud indica que se est en el bash, y est
esperando alguna entrada del usuario. Para diferenciar un usuario normal del
superusuario, el sistema operativo Linux coloca el smbolo # en lugar de $ para el
superusuario.

Fundamentos de Linux y Sistemas de Archivos

Unidad 2: El Sistema Linux 29

Copyright IBM Corp. 2006


Los materiales del curso no pueden ser reproducidos total o
parcialmente sin el permiso escrito previo de IBM.

Fundamentos de Linux

Gua del Estudiante

2.2 Salida
Antes de terminar la sesin con el sistema, es importante que se salga del sistema. Esto
previene que otros usuarios puedan hacer mal uso de sus archivos.
Esto se logra ingresando cualquiera de los siguientes comandos:

logout

exit

<Ctrl+D> (Mantener presionado el botn Ctrl y presionar D en el teclado)

Ahora se aprender como puede usarse un formato de comando en Linux.

3. Formato de Comandos
Se usar un editor de texto cuando se escribe un programa en C. Para compilar un
programa en C a su forma ejecutable, se usa un compilador de C. Estos son programas
que realizan tareas especficas. A nivel del sistema operativo, estos programas se
llaman comandos.
Un comando es un programa que realiza una tarea especfica. Todas nuestras tareas
en un sistema Linux pueden llevarse a cabo a travs de comandos. Una lnea de
comandos puede ser estructurada en tres partes:

El nombre del comando: Es el nombre del comando que realiza una tarea
especfica.

Opciones: A la mayora de comandos se les puede dar una o ms opciones


para hacer que los resultados sean ms especficos.

Argumentos: Los argumentos para los comandos son usualmente archivos o


directorios de donde los datos pueden ser ledos para que el comando opere
sobre ellos.

La sintaxis de una lnea de comandos se da a continuacin:


comando -opcion1 -opcion2 -opcionn arg1 arg2 argm
Aqu, comando es el nombre del comando; de opcion1 a opcionn es el rango de las n
opciones posibles para dicho comando; y de arg1 a argm es el rango de m argumentos
que pueden ser pasados al comando.
La forma ms simple de un comando es aquella que slo tiene un nombre de comando,
por ejemplo, un comando como passwd o clear. Cuando se ingresa por primera vez
en un sistema Linux, normalmente se usa la contrasea establecida por el administrador
del sistema. Una de las primeras cosas que se debe hacer al ingresar con xito por
primera vez es cambiar la contrasea inicial.
Dado que existen cientos de comandos y la mayora de ellos tienen varias opciones
disponibles, no es posible recordar todos los comandos y sus opciones. Linux

Unidad 2: El Sistema Linux

Fundamentos de Linux y Sistemas de Archivos 30

Copyright IBM Corp. 2006


Los materiales del curso no pueden ser reproducidos total o
parcialmente sin el permiso escrito previo de IBM.

Gua del Estudiante

Fundamentos de Linux

proporciona un manual que puede ejecutarse en el prompt de comandos. El comando


es llamado man, que viene de manual pages (pginas de manual).
En las siguientes secciones y unidades posteriores, entre las etiquetas Uso de
Comando y Fin de Uso de Comando, se mostrar como se usa un comando en Linux,
con una breve explicacin del mismo. En algunos casos, tambin se mostrar el uso de
algunas opciones del comando.
Se asume que el directorio home es /home/mickeymouse. Se ingresarn todos los
comandos como se hara en un entorno Linux. Por ejemplo, para mostrar el uso del
comando man, se har lo siguiente:
[mickeymouse@mycomputer mickeymouse]$ man date
Siguiendo a esto, se mostrar la salida o resultado del comando y finalmente se
terminar con la cadena del prompt, que es nuevamente [mickeymouse@mycomputer
mickeymouse]$.
Uso de Comando 2.1
Se asumir que la contrasea inicial establecida por el administrador es mm123. El
comando passwd se usa para cambiar la contrasea del usuario.
[mickeymouse@mycomputer mickeymouse]$ passwd
Changing password for mickeymouse
(current) UNIX password: mm123
New UNIX password: jerry1960
Retype new UNIX password: jerry1960
passwd: all authentication tokens updated successfully
[mickeymouse@mycomputer mickeymouse]$

Cuando se ingresa el comando passwd, aparece el mensaje "Changing


password for mickeymouse" ("Cambiando contrasea para
mickeymouse"), seguido por el prompt para ingresar la contrasea actual.
Cuando se ingresa la contrasea actual (mostrada con letras tachadas para
indicar que estos caracteres no aparecen en la pantalla) y se determina que
es correcta, el sistema solicita al usuario que ingrese la nueva contrasea.
Normalmente, todos los sistemas siguen ciertas convenciones para
seleccionar contraseas. Si la nueva contrasea ingresada no est
conforme a estas convenciones, aparecer uno de los siguientes mensajes:
BAD PASSWORD: is too similar to the old one
(CONTRASEA INVALIDA: es muy similar a la anterior)
BAD PASSWORD: it's way too short
BAD PASSWORD: it is too short
(CONTRASEA INVALIDA: es muy corta)
BAD PASSWORD: it is too simplistic/systematic

Fundamentos de Linux y Sistemas de Archivos

Unidad 2: El Sistema Linux 31

Copyright IBM Corp. 2006


Los materiales del curso no pueden ser reproducidos total o
parcialmente sin el permiso escrito previo de IBM.

Fundamentos de Linux

Gua del Estudiante

(CONTRASEA INVALIDA: es muy simple/sistemtica)

El sistema solicita al usuario que reingrese la contrasea si la nueva


contrasea es correcta. Si las entradas coinciden, se establece la nueva
contrasea. Caso contrario, se muestra el mensaje "Sorry, passwords
do not match" y el programa termina. Cada vez que un comando se
ejecuta por completo, con o sin mensajes de error, el usuario retorna al
prompt de comandos (command prompt).
Fin de Uso de Comando 2.1
Ahora que se ha entendido como se usa un comando simple en el sistema Linux, se
ver el uso de un comando con un argumento y sin opciones.
Uso de Comando 2.2
El comando man muestra la documentacin de un comando que se pasa como
argumento.
[mickeymouse@mycomputer mickeymouse]$ man clear
clear(1)

clear(1)

NAME
clear - clear the terminal screen
SYNOPSIS
clear
DESCRIPTION
clear clears your screen if this is possible.

It

looks in the environment for the terminal type and


then in the terminfo database to figure out how to
clear the screen.
SEE ALSO
tput(1), terminfo(5)
clear(1)
[mickeymouse@mycomputer mickeymouse]$
La forma ms simple de un comando man slo tiene un argumento. El argumento es
el nombre del comando del cual se quieren las pginas de manual (o documento).
En el ejemplo dado se obtienen las pginas de manual para el comando clear.
Se puede salir de las pginas man ingresando la letra q, que viene de quit (salir).
Si se ha ingresado [mickeymouse@mycomputer mickeymouse]$ man
sin un argumento, aparecer el siguiente mensaje:
What manual page do you want?
(Qu pgina del manual quiere?)
Unidad 2: El Sistema Linux

Fundamentos de Linux y Sistemas de Archivos 32

Copyright IBM Corp. 2006


Los materiales del curso no pueden ser reproducidos total o
parcialmente sin el permiso escrito previo de IBM.

Gua del Estudiante

Fundamentos de Linux

Fin de Uso de Comando 2.2


Un comando puede usarse con o sin opciones. Sin embargo, muchos comandos en
Linux tienen opciones. Un ejemplo de estos comandos es el siguiente:
Uso de Comando 2.3
El comando cat se usa para concatenar o unir archivos.

Sintaxis de cat:

cat [opciones] [archivo]

[mickeymouse@mycomputer mickeymouse]$ cat myfile.txt


Este es un archivo de ejemplo.
Creado el 28 de Junio del 2001.
Hora de creacin es 8:00 pm IST.
[mickeymouse@mycomputer mickeymouse]$

cat es un comando que acepta uno o ms nombres de archivos,


concatenndolos (unindolos) y mostrndolos en la pantalla. Asuma que se
ha ingresado lo siguiente:
[mickeymouse@mycomputer mickeymouse]$ cat myfile.txt
myfile.txt

La salida ser como sigue.


Este es un archivo de ejemplo.
Creado el 28 de Junio del

2001.

Hora de creacin es 8:00 pm IST.


Este es un archivo de ejemplo.
Creado el 28 de Junio del 2001.
Hora de creacin es 8:00 pm IST.

El comando simplemente une los dos archivos y los muestra. Tambin cat
puede usarse sin argumentos. Asuma que se ha ingresado lo siguiente:
[mickeymouse@mycomputer mickeymouse]$ cat

El programa espera alguna entrada, para que pueda concatenar los datos
de entrada y mostrarlos. Dado que no se proporcion argumento, cualquier
cosa que se ingrese en el teclado ser mostrado. La entrada se toma del
teclado, que es el dispositivo de entrada estndar.
Se ver otro ejemplo.
[mickeymouse@mycomputer mickeymouse]$ cat n myfile.txt
1
2
3

Este es un archivo de ejemplo.


Creado el 28 de Junio del 2001.
Hora de creacin es 8:00 pm IST.

Fundamentos de Linux y Sistemas de Archivos

Unidad 2: El Sistema Linux 33

Copyright IBM Corp. 2006


Los materiales del curso no pueden ser reproducidos total o
parcialmente sin el permiso escrito previo de IBM.

Fundamentos de Linux

Gua del Estudiante

[mickeymouse@mycomputer mickeymouse]$

En el ejemplo anterior, se us la opcin n. Las opciones para un comando


son precedidas por un signo (menos). Este signo indica al comando que lo
que sigue no es un argumento sino una opcin. Todos los comandos en
Linux son de una palabra de longitud y estn en letras minsculas.
La opcin n muestra los nmeros de lnea contra cada lnea. n viene de
nmero. Tambin es posible combinar opciones con slo un signo precediendo a todas las opciones como se muestra a continuacin:
[mickeymouse@mycomputer mickeymouse]$ cat ns myfile.txt

Fin de Uso de Comando 2.3


Los comandos en Linux pueden tomar opciones y/o argumentos. Las opciones son
aquellas que realizan una tarea especializada, y siempre estn precedidas por un signo
(menos). En el ltimo ejemplo del Uso de Comando 2.3, -ns son opciones para el
comando cat. Algunos comandos en Linux requieren un argumento, normalmente el
nombre de un archivo. Si no se proporciona, entonces se asumir la entrada del
usuario. Las opciones y argumentos pueden ser opcionales. Para determinar cuales son
opcionales y cuales obligatorias, se puede usar el comando man. Cuando se ve la
ayuda de un comando usando el comando man, si las opciones o argumentos estn
encerrados en [] (corchetes), entonces son opcionales. Caso contrario, son
obligatorios.

4. Entrada Estndar, Salida Estndar y Error Estndar


En el uso de comando anterior, se hace mencin al trmino 'dispositivo de entrada
estndar'. Ahora se discutir brevemente como los sistemas Linux trabajan con la
entrada, salida y errores. En todos los sistemas Linux, cualquier programa (incluyendo
todos los comandos Linux) est conectado automticamente a tres archivos. Estos son:

Entrada estndar.

Salida estndar.

Error estndar.

Vase la Figura 2.1.

Unidad 2: El Sistema Linux

Fundamentos de Linux y Sistemas de Archivos 34

Copyright IBM Corp. 2006


Los materiales del curso no pueden ser reproducidos total o
parcialmente sin el permiso escrito previo de IBM.

Gua del Estudiante

Fundamentos de Linux

Salida Estndar

Entrada Estndar
Salida

Comando Linux
Error
Estndar
Mensajes
de Error
Figura 2.1: Linux y la Entrada Estndar, Salida Estndar y Error Estndar

Un programa obtiene su entrada de la entrada estndar, enva su salida a la salida


estndar y los mensajes de error al error estndar. Todos ellos por defecto en el
terminal. En un sistema Linux, todos los dispositivos son tratados como archivos.
Considere el siguiente comando:
[mickeymouse@mycomputer mickeymouse]$ cat
ste espera una entrada desde el teclado, porque el teclado es la entrada estndar.
Considere otro comando:
[mickeymouse@mycomputer mickeymouse]$ cat myfile.txt
La entrada estndar ahora es el archivo myfile.txt y no el teclado. Pero la salida
estndar sigue siendo la pantalla.

5. Redireccin de Entrada/Salida
Se puede hacer un programa que tome la entrada de un archivo y enve la salida hacia
un archivo a travs de la redireccin. La redireccin es una manera a travs de la cual
se puede cambiar tanto la entrada estndar como la salida estndar. Algunos puntos
acerca de la redireccin se mencionan a continuacin:

Se usarn los operadores de redireccin > y < para salida y entrada


respectivamente

El operador > hace del archivo que sigue al operador la nueva salida estndar y
de manera similar, el operador < cambia la entrada estndar

El uso de los operadores > y < para redireccin es temporal

Fundamentos de Linux y Sistemas de Archivos

Unidad 2: El Sistema Linux 35

Copyright IBM Corp. 2006


Los materiales del curso no pueden ser reproducidos total o
parcialmente sin el permiso escrito previo de IBM.

Fundamentos de Linux

Gua del Estudiante

Cuando el comando finaliza, se establecen nuevamente los valores por defecto

Uso de Comando 2.4


El operador > se usa para redirigir la salida a la nueva salida estndar. La nueva salida
estndar es el archivo que sigue al smbolo >.
[mickeymouse@mycomputer mickeymouse]$ cat > newfile.txt
Este es el primer archivo que he creado.
Lo he creado el 29 de Junio del

2001.

ctrl-d
[mickeymouse@mycomputer mickeymouse]$

Dado a que no se ha ingresado ningn archivo despus del comando cat,


la entrada por defecto es el teclado. Cualquier cosa que se ingrese a travs
del teclado, es redirigida hacia el archivo de salida newfile.txt. Se
finaliza la entrada presionando ctrl-d. No ser visible el <ctrl-d>
en la pantalla como se muestra, dado que es una tecla que presiona el
usuario para finalizar la entrada. Se muestra aqu para indicar que es la
forma de terminar la entrada.
Vea las siguientes lneas:
[mickeymouse@mycomputer mickeymouse]$ cat
Este es el primer archivo que he creado.
Este es el primer archivo que he creado.
Lo he creado el 29 de Junio del
Lo he creado el 29 de Junio del

2001.
2001.

ctrl-d
[mickeymouse@mycomputer mickeymouse]$

Las lneas que se ingresan se muestran inmediatamente en la pantalla


como un eco, ya que tanto la entrada estndar como la salida estndar usan
el terminal.
[mickeymouse@mycomputer mickeymouse]$ cat < myfile.txt >
newfile.txt

El uso anterior toma la entrada de myfile.txt y enva la salida hacia


newfile.txt.
El newfile.txt se sobrescribe ahora con las lneas de myfile.txt. El
operador > establece al archivo que le sigue de 0 bytes, si ste ya existe. El
archivo se llena nuevamente con los nuevos datos.
Algunas veces se puede estar interesado en aadir datos a un archivo ya
existente. Esto es posible usando el operador >>, el cual aade los datos al
archivo si este ya existe, o sino crea un nuevo archivo y escribe los datos.

Unidad 2: El Sistema Linux

Fundamentos de Linux y Sistemas de Archivos 36

Copyright IBM Corp. 2006


Los materiales del curso no pueden ser reproducidos total o
parcialmente sin el permiso escrito previo de IBM.

Gua del Estudiante

Fundamentos de Linux

Por aadir se quiere indicar que los datos son siempre agregados al final del
archivo ya existente.
Dado que newfile.txt ha sido sobrescrito, se recrea con las dos lneas
originales.
[mickeymouse@mycomputer mickeymouse]$ cat > newfile.txt
Este es el primer archivo que he creado.
Lo he creado el 29 de Junio del

2001.

ctrl-d
[mickeymouse@mycomputer mickeymouse]$

Ahora se ver como se agrega usando el comando cat.


[mickeymouse@mycomputer mickeymouse]$ cat myfile.txt >>
newfile.txt
[mickeymouse@mycomputer mickeymouse]$ cat -n newfile.txt
1
2

Este es el primer archivo que he creado.


Lo he creado el 29 de Junio del 2001.

Este es un archivo de ejemplo.

Creado el 28 de Junio del

Hora de creacin es 8:00 pm IST.

2001.

[mickeymouse@mycomputer mickeymouse]$

Las lneas 3 a 5 han sido aadidas a newfile.txt.


[mickeymouse@mycomputer mickeymouse]$ cat file1 file2 >>
file3.txt

Los contenidos de file1 y file2 son concatenados. Los datos


concatenados son luego aadidos a file3.txt. Los archivos, file1 y
file2 no se modifican.
Se debe ser cuidadoso al usar la redireccin. Algunas veces, se puede usar
el archivo de salida como un archivo de entrada durante la redireccin
Por ejemplo, considere este comando:
[mickeymouse@mycomputer mickeymouse]$ cat file1 file2 >> file2

El sistema reportar un error.


cat: file2: input file is output file
(cat: file2: el archivo de entrada es archivo de salida)

Mientras se muestra este mensaje de error para indicar que se est usando
el mismo archivo como entrada y como salida, el contenido de file1 es
aadido a file2. La salida del uso anterior es la misma que la obtenida
usando el comando dado a continuacin:
Fundamentos de Linux y Sistemas de Archivos

Unidad 2: El Sistema Linux 37

Copyright IBM Corp. 2006


Los materiales del curso no pueden ser reproducidos total o
parcialmente sin el permiso escrito previo de IBM.

Fundamentos de Linux

Gua del Estudiante

[mickeymouse@mycomputer mickeymouse]$ cat file1 >> file2


Fin de Uso de Comando 2.4

6. Comandos Simples
Una vez entendida la sintaxis de comandos y la redireccin de entrada y salida se
aprendern algunos comandos simples. Muchos comandos en Linux trabajan sobre
archivos y directorios. Estos sern discutidos con cierto detalle en la Unidad 4: La
Estructura de Archivos de Linux de este volumen.
Se dar la sintaxis bsica de los siguientes comandos Linux:

cal

date

head

tail

sort

cmp

wc

grep

pr

cut
Uso de Comando 2.5
El comando cal se utiliza para mostrar el calendario. El comando mostrar el
calendario para el mes, ao, etc. basado en las opciones y argumentos proporcionados,
Sintaxis de cal: cal [opciones] [mes] [ao]
[mickeymouse@mycomputer mickeymouse]$ cal
July 2001
Su Mo Tu We Th Fr Sa
1
8

2 3 4 5 6 7
9 10 11 12 13 14

15 16 17 18 19 20 21
22 23 24 25 26 27 28
29 30 31
[mickeymouse@mycomputer mickeymouse]$

Como se entiende hasta ahora, cal es el comando dado para mostrar el


calendario. El comando cal sin ningn argumento muestra el calendario
para el mes actual
[mickeymouse@mycomputer mickeymouse]$ cal y
Unidad 2: El Sistema Linux

Fundamentos de Linux y Sistemas de Archivos 38

Copyright IBM Corp. 2006


Los materiales del curso no pueden ser reproducidos total o
parcialmente sin el permiso escrito previo de IBM.

Gua del Estudiante

Fundamentos de Linux

Esto muestra el calendario completo para el ao actual.


[mickeymouse@mycomputer mickeymouse]$ cal m

Esto muestra el calendario para el mes actual con Lunes como el da de


inicio de la semana, el Domingo es el da de inicio por defecto
[mickeymouse@mycomputer mickeymouse]$ cal 12 2006

Esto muestra el calendario para el mes de Diciembre del ao 2006.


[mickeymouse@mycomputer mickeymouse]$ cal 12

Esto muestra el calendario para el ao 12.


Si se tiene dos argumentos, cal considera el primero como el mes y el
siguiente como el ao. Si se tiene slo un argumento, este se considera
automticamente como el ao.
Fin de Uso de Comando 2.5
Uso de Comando 2.6
El comando date se usa para conocer la fecha y hora actual.
Sintaxis de date:

date [opcin] [+formato]

[mickeymouse@mycomputer mickeymouse]$ date


Fri Mar 1 18:48:33 GMT 2002
[mickeymouse@mycomputer mickeymouse]$
El comando date sin ningn argumento muestra el da, mes, fecha, hora y ao
actual.
[mickeymouse@mycomputer mickeymouse]$ date +%H
18
[mickeymouse@mycomputer mickeymouse]$
date con el formato %H muestra solo la hora.

Vea las pginas de man para la lista de opciones y diferentes formatos en


que se puede mostrar la fecha. El comando date tambin puede usarse
para establecer la fecha y hora del sistema. Vea las pginas de man para
informacin sobre como establecer la fecha y hora del sistema.
Fin de Uso de Comando 2.6
Para los comandos restantes, como. head, tail sort, cmp y grep se usarn dos
archivos names.txt y lines.txt. El archivo names.txt contiene los siguientes
nombres.
noddy
tom

Fundamentos de Linux y Sistemas de Archivos

Unidad 2: El Sistema Linux 39

Copyright IBM Corp. 2006


Los materiales del curso no pueden ser reproducidos total o
parcialmente sin el permiso escrito previo de IBM.

Fundamentos de Linux

Gua del Estudiante

jerry
donald
mickey
asterix
tintin
obelix
El archivo lines.txt contiene las 11 lneas siguientes, que son citas bien conocidas
de personas famosas.
1.
2.
3.
4.

Una mentira nunca vive para ser vieja. -- Sfocles


Un hombre honesto es siempre un nio. -- Martial
Cuando ests en duda, di la verdad. -- Mark Twain
Las palabras falsas no son solo malas en s mismas, sino
que infectan el alma con maldad. -- Scrates
5. Toda la verdad no es para ser dicha todas las veces. Thomas Fuller, M. D.
6. No me importa la mentira, pero odio la inexactitud. -Samuel Butler
7. Me hago a m mismo un dao mayor mintiendo, que aquel que
ocasiono a quin le he dicho una mentira. -- Michel De
Montaigne
8. Grandes esperanzas hacen grandes hombres. -- Thomas Fuller
9. Una mente fuerte siempre tiene esperanzas, y tiene siempre
razn para estar esperanzada. Polybius
10. La Esperanza es como un cebo, cubre cualquier anzuelo. -Ben Jonson
11. Aquel que tiene salud, tiene esperanza; y aquel que tiene
esperanzas lo tiene todo. Proverbio rabe
Se usar el archivo anterior para entender los comandos head y tail. Estos son tiles
cuando se quiere ver partes de un archivo.
Existen dos puntos importantes que se deben notar aqu:

Los nmeros de lnea dados por lines.txt no son parte del texto. Es
simplemente para permitirnos entender los comandos con claridad
Una lnea est definida como una secuencia de caracteres delimitada por un
carcter de cambio de lnea. As, una lnea puede estar en ms de una fila.

Uso de Comando 2.7


El comando head es til cuando se desea ver slo unas cuantas lneas de un archivo,
comnmente las primeras lneas. El comando muestra la primera parte de un archivo
Sintaxis de head:

head [opcin] [archivo]

[mickeymouse@mycomputer mickeymouse]$ head lines.txt


Unidad 2: El Sistema Linux

Fundamentos de Linux y Sistemas de Archivos 40

Copyright IBM Corp. 2006


Los materiales del curso no pueden ser reproducidos total o
parcialmente sin el permiso escrito previo de IBM.

Gua del Estudiante

Fundamentos de Linux

Esto mostrar las primeras 10 lneas del archivo lineas.txt. El valor por
defecto es 10.
[mickeymouse@mycomputer mickeymouse]$ head 4 lines.txt
Una mentira nunca vive para ser vieja. -- Sfocles
Un hombre honesto es siempre un nio. -- Martial
Cuando ests en duda, di la verdad. Mark Twain
Las palabras falsas no son solo malas en s mismas, sino que
infectan el alma con maldad. -- Scrates
[mickeymouse@mycomputer mickeymouse]$

Esto muestra las primeras 4 lneas del archivo.


Fin de Uso de Comando 2.7
Ahora se ver como utilizar el comando tail usando el mismo archivo.
Uso de Comando 2.8
El comando tail se utiliza para ver las ltimas lneas de un archivo. Combinando head
y tail inteligentemente, tambin se podrn ver las lneas en el medio del archivo. Para
hacer esto se necesita entender acerca de las tuberas y filtros, que sern discutidas
ms adelante en esta unidad.
Sintaxis de tail:

tail [opcin] [archivo]

[mickeymouse@mycomputer mickeymouse]$ tail lines.txt

El comando dado imprime las 10 ltimas lneas.


[mickeymouse@mycomputer mickeymouse]$ tail c10 lines.txt
bio rabe
[mickeymouse@mycomputer mickeymouse]$

Esto muestra los 10 ltimos bytes (caracteres) del archivo.


La opcin c seguida por el nmero de bytes a mostrar, le indica al
comando tail que muestre los ltimos n bytes del archivo. Se
puede estar preguntando por qu solo 9 caracteres son visibles cuando el
nmero que se ingreso fue 10. El carcter de nueva lnea est presente al
final, el cual no es visible como un carcter.
El hecho de que [mickeymouse@mycomputer mickeymouse]$ se
muestra en una lnea separada es el indicativo de un carcter de nueva
lnea presente al final. Compare esto con head c10.
[mickeymouse@mycomputer mickeymouse]$ head c10 lines.txt
Una mentir[mickeymouse@mycomputer mickeymouse]$

Fundamentos de Linux y Sistemas de Archivos

Unidad 2: El Sistema Linux 41

Copyright IBM Corp. 2006


Los materiales del curso no pueden ser reproducidos total o
parcialmente sin el permiso escrito previo de IBM.

Fundamentos de Linux

Gua del Estudiante

Debido a que el carcter 11avo no es un cambio de lnea, la cadena del


prompt [mickeymouse@mycomputer mickeymouse]$ se muestra en la
misma lnea.
Fin de Uso de Comando 2.8
A continuacin se estudia como se puede realizar un ordenamiento usando un comando
simple en Linux. El poder de los sistemas operativos tipo UNIX es que muchas de las
funcionalidades se proporcionan como simples comandos.
Uso de Comando 2.9
El comando sort se usa para ordenar el contenido del archivo y mostrar la lista
ordenada en la salida estndar.
Sintaxis de sort:

sort [opcin] [archivo]

[mickeymouse@mycomputer mickeymouse]$ sort names.txt


asterix
donald
jerry
mickey
noddy
obelix
tintin
tom
[mickeymouse@mycomputer mickeymouse]$

Esto ordena las lneas del archivo names.txt y muestra los datos ordenados
[mickeymouse@mycomputer mickeymouse]$ sort -r names.txt

Esto ordena los datos en orden inverso (descendiente).


Fin de Uso de Comando 2.9
Uso de Comando 2.10
El comando cmp se utiliza para comparar el contenido de dos archivos. El nmero del
carcter y el nmero de lnea donde ocurri la primera diferencia se muestran en la
salida estndar. Este comando es til cuando se quiere comparar y encontrar si los dos
archivos son idnticos.
Sintaxis de cmp:

cmp [opcin] archivo1 archivo2

Las nicas dos opciones permitidas para cmp son l y s.


[mickeymouse@mycomputer mickeymouse]$ cmp names.txt lines.txt
names.txt lines.txt differ: char 1, line 1
[mickeymouse@mycomputer mickeymouse]$

Unidad 2: El Sistema Linux

Fundamentos de Linux y Sistemas de Archivos 42

Copyright IBM Corp. 2006


Los materiales del curso no pueden ser reproducidos total o
parcialmente sin el permiso escrito previo de IBM.

Gua del Estudiante

Fundamentos de Linux

Este comando compara dos archivos y muestra el carcter y el nmero de


lnea donde la primera diferencia ocurri. Se nota que en names.txt y en
lines.txt el primer carcter es diferente en ambos archivos.
La opcin l muestra el nmero de byte (en decimal) y el valor de los bytes
diferentes (en octal) para cada diferencia. La opcin s no muestra nada
para los archivos con diferencias y retorna un status de salida. Se pueden
usar los comandos disponibles en el shell cuando se escriben programas.
Cuando los comandos retornan con un status de salida, es similar al valor
retornado por una funcin. Esto puede ser utilizado de forma apropiada
En file1.txt se tiene
abcd
efgh
ijkl
mnop

En file2.txt se tiene
abcde
egh
ijkl
nopq
rstu

Se va a intentar la opcin l y ver que sucede.


[mickeymouse@mycomputer mickeymouse]$ cmp l file1.txt
file2.txt
5 12 145
6 145 12
7 146 145
16 155 156
17 156 157
18 157 160
19 160 161
cmp: EOF on file1.txt
[mickeymouse@mycomputer mickeymouse]$

El 5to carcter en el primer y segundo archivo difieren. 12 y 145 son los


nmeros octales de los caracteres. 12 en octal es 10 en decimal y 145 en
octal es 101 en decimal. 10 es el valor ASCII del carcter de cambio de
lnea y 101 es el valor ASCII de la letra "e".
El sistema numrico octal se utiliza normalmente en computadoras para
representar nmeros. EOF on file1.txt dice que el fin del archivo ha
sido alcanzado en file1.txt. Tambin dice que file1.txt es ms
pequeo que file2.txt.

Fundamentos de Linux y Sistemas de Archivos

Unidad 2: El Sistema Linux 43

Copyright IBM Corp. 2006


Los materiales del curso no pueden ser reproducidos total o
parcialmente sin el permiso escrito previo de IBM.

Fundamentos de Linux

Gua del Estudiante

Fin de Uso de Comando 2.10


Uso de Comando 2.11
wc viene de word count (contador de palabras). El comando wc se usa para encontrar el
nmero de caracteres, el nmero de palabras, y el nmero de lneas en un archivo.
Sintaxis de wc:

wc [opciones] [archivo]

[mickeymouse@mycomputer mickeymouse]$ wc names.txt


8
8
52 names.txt
[mickeymouse@mycomputer mickeymouse]$

El comando anterior muestra el nmero de lneas, palabras y caracteres (en


ese orden) de names.txt.
[mickeymouse@mycomputer mickeymouse]$ wc names.txt lines.txt
8

52 names.txt

11

142

707 lines.txt

19

150

759 total

[mickeymouse@mycomputer mickeymouse]$ wc

Esto muestra el nmero de lneas, palabras y caracteres de ambos archivos,


uno a continuacin del otro, y tambin el total.
[mickeymouse@mycomputer mickeymouse]$ wc l names.txt
8 names.txt
[mickeymouse@mycomputer mickeymouse]$

Las sentencias anteriores slo muestran el nmero de lneas.


[mickeymouse@mycomputer mickeymouse]$ wc w names.txt
8 names.txt
[mickeymouse@mycomputer mickeymouse]$

Esto slo muestra el nmero de palabras.


[mickeymouse@mycomputer mickeymouse]$ wc lc names.txt
8

52 names.txt

[mickeymouse@mycomputer mickeymouse]$

Esto muestra el nmero de lneas y los caracteres.


Fin de Uso de Comando 2.11
Una de las caractersticas interesantes de comandos en Linux es la familia de
comandos de bsqueda de patrones. Se llama una familia de comandos porque tiene
comandos que proporcionan la funcionalidad bsica de bsqueda de patrones con
algunas caractersticas adicionales. Se aprender como realizar una bsqueda de
patrones utilizando el comando grep.
Uso de Comando 2.12
Unidad 2: El Sistema Linux

Fundamentos de Linux y Sistemas de Archivos 44

Copyright IBM Corp. 2006


Los materiales del curso no pueden ser reproducidos total o
parcialmente sin el permiso escrito previo de IBM.

Gua del Estudiante

Fundamentos de Linux

La bsqueda de patrones es una facilidad importante de los sistemas Linux. El comando


grep se utiliza para hallar un patrn dado en un archivo.
Sintaxis de grep:

grep [patrn] [archivo]

grep es uno de los comandos ms poderosos en Linux. Compara el patrn


dado con cada lnea del archivo y muestra todas las lneas donde se
encuentre el patrn. Este es el uso ms simple de grep.
[mickeymouse@mycomputer mickeymouse]$ grep mentira lines.txt
Una mentira nunca vive para ser vieja. -- Sfocles
No me importa la mentira, pero odio la inexactitud. -- Samuel
Butler
Me hago a m mismo un dao mayor mintiendo, que aquel que
ocasiono a quin le he dicho una mentira. -- Michel De
Montaigne
mickeymouse@mycomputer mickeymouse]$

Note que slo se muestran 3 lneas, en las cuales ocurre el patrn mentira.
El comando grep busca por patrones. Considere el cdigo a continuacin:
[mickeymouse@mycomputer mickeymouse]$ grep esper lines.txt
Grandes esperanzas hacen grandes hombres. -- Thomas Fuller
Una mente fuerte siempre tiene esperanzas, y tiene siempre
razn para estar esperanzada. Polybius
Aquel que tiene salud, tiene esperanza; y aquel que tiene
esperanzas lo tiene todo. Proverbio rabe
[mickeymouse@mycomputer mickeymouse]$

Ahora se ve que las lneas en las cuales el patrn esper" ocurre han sido
mostradas. Note que la lnea La Esperanza es como un cebo, cubre
cualquier anzuelo. -- Ben Jonson no es parte de la salida. Puede adivinar
por qu? grep realiza una comparacin considerando maysculas y
minsculas y de acuerdo a eso el patrn "esper" no es lo mismo que el
patrn "Esper". Se puede instruir al grep para que se ignore esto usando la
opcin i. El comando grep tiene muchas opciones. Refirase a las pginas
de man para ms detalle acerca de ellos.
Fin de Uso de Comando 2.12
Uso de Comando 2.13
El comando pr se usa para convertir un archivo de texto para su impresin.
Sintaxis de pr:

pr [opcin] [archivo]

pr convierte archivos de texto para su impresin. La opcin n, donde n es


un nmero entero positivo, hace que la impresin se realice en n columnas.
[mickeymouse@mycomputer mickeymouse]$ pr 2 names.txt

Fundamentos de Linux y Sistemas de Archivos

Unidad 2: El Sistema Linux 45

Copyright IBM Corp. 2006


Los materiales del curso no pueden ser reproducidos total o
parcialmente sin el permiso escrito previo de IBM.

Fundamentos de Linux

Gua del Estudiante

2001-06-22 17:58
noddy
tom

mickey
asterix

jerry

tintin

donald

obelix

names.txt

Page 1

[mickeymouse@mycomputer mickeymouse]$

El comando ha mostrado los 8 nombres en 2 columnas.


Se puede notar una pantalla en blanco cuando se ejecuta lo anterior. El
comando pr usa una longitud de pgina predefinida en la cual imprime los
datos anteriores. Como el nmero de lneas es slo 4 en el ejemplo anterior,
las lneas siguientes se toman como lneas en blanco. Si se incluyen ms
nombres en ese archivo, se podr ver cmo se llena una pgina.
Fin de Uso de Comando 2.13
Uso de Comando 2.14
El comando cut se usa para mostrar partes seleccionadas, usualmente columnas o
campos, de un archivo en la salida estndar. Esto es til cuando slo se quiere ver una
porcin de un archivo.
Para entender este comando, se asumir que las siguientes lneas estn en un archivo,
mylines.txt.
Esta es
Esta es
1 2 3 4
9 10 11

mi primera lnea de texto.


mi segunda lnea de texto.
5 6 7
12 13 14

Sintaxis de cut: cut [opcin] [archivo]


cut imprime partes de un archivo en la salida estndar. Las opciones que
ms se usan con cut son f y b. f se usa para mostrar campos especficos
y b para mostrar bytes especficos. Se presentarn unos ejemplos para
entender esto. La opcin d es para cambiar el delimitador. El delimitador es
un slo carcter que separa cada columna en una fila. El delimitador por
defecto es la tabulacin. Se puede cambiar el delimitador a un espacio o
cualquier otro carcter que se quiera.
[mickeymouse@mycomputer mickeymouse]$ cut f1 mylines.txt
Esta es mi primera lnea de texto.
Esta es mi segunda lnea de texto.
1 2 3 4 5 6 7
9 10 11 12 13 14

Unidad 2: El Sistema Linux

Fundamentos de Linux y Sistemas de Archivos 46

Copyright IBM Corp. 2006


Los materiales del curso no pueden ser reproducidos total o
parcialmente sin el permiso escrito previo de IBM.

Gua del Estudiante

Fundamentos de Linux

[mickeymouse@mycomputer mickeymouse]$

En el ejemplo anterior, el comando cut imprime todas las lneas, dado que
el delimitador por defecto para separar las columnas es la tabulacin, y se
tienen espacios en blanco como delimitador.
cut f1 imprime la primera columna. Dado que no hay tabulaciones para
separar las columnas, toda la fila ser tratada como una sola columna.
Ahora se rectificar esto.
[mickeymouse@mycomputer mickeymouse]$ cut d' ' f1
mylines.txt
Esta
Esta
1
9
[mickeymouse@mycomputer mickeymouse]$
Se ha cambiado el delimitador a un espacio en blanco y as slo se ve la primera
columna de cada fila. La opcin d slo se usa con campos.
Para imprimir varias columnas, se usa el siguiente comando:
[mickeymouse@mycomputer mickeymouse]$ cut d' ' f1,3,5
mylines.txt
Esta mi lnea
Esta mi lnea
1 3 5
9 11 13
[mickeymouse@mycomputer mickeymouse]$
Tambin se puede imprimir a nivel de byte.
[mickeymouse@mycomputer mickeymouse]$ cut b1 mylines.txt
E
E
1
9
[mickeymouse@mycomputer mickeymouse]$
En el ejemplo dado, se imprime el primer byte de cada fila, que slo es un carcter.
Un carcter ocupa un byte en los sistemas Linux.
Ahora se ver como pueden imprimirse varios bytes de una sola fila, para todas las
filas en un archivo. Recuerde, el comando cut trabaja sobre todo el archivo, por
cada fila.
[mickeymouse@mycomputer mickeymouse]$ cut b1,6,12 mylines.txt
Eep
Ees
1
911
Fundamentos de Linux y Sistemas de Archivos

Unidad 2: El Sistema Linux 47

Copyright IBM Corp. 2006


Los materiales del curso no pueden ser reproducidos total o
parcialmente sin el permiso escrito previo de IBM.

Fundamentos de Linux

Gua del Estudiante

[mickeymouse@mycomputer mickeymouse]$
En el ejemplo, se ven impresos el primero, sexto y doceavo byte. La tercera lnea
de la salida slo contiene 1. Esto es porque el sexto y doceavo byte en la tercera
lnea son espacios en blanco. Note que no hay espacio entre b y los nmeros
subsecuentes.
Los ejemplos usando las opciones f y b muestran claramente la diferencia entre
sus usos. Uno trata con un conjunto de caracteres (como parte de un campo o una
columna) y el otro con un slo carcter.

Fin de Uso de Comando 2.14


A continuacin se discutirn brevemente el uso de otros comandos simples y se
proporcionar adems una explicacin simple de cada uno. Son estos:
talk nombre_ingreso
El sistema Linux le permite hablar con otro usuario en el sistema, si el usuario est
conectado actualmente. El comando talk copia lneas de un usuario a otro usuario
cuando los usuarios estn en lnea.
wall mensaje
El comando wall enva el mensaje ingresado por un usuario a todos los usuarios
actualmente conectados al sistema. Esto es til normalmente cuando el administrador
del sistema quiere compartir un mensaje con todos los que han ingresado. Un uso tpico
de esto es cuando el sistema necesita tumbarse (shutdown) mientras los usuarios estn
conectados. El administrador del sistema enva un mensaje a todos los usuarios
solicitndoles que salgan antes de apagar el sistema.
mail
El comando mail permite a los usuarios tanto enviar como leer correos. El comando
mail direccin permitir al usuario enviar un correo a la direccin mencionada
luego del comando mail. Ingresar simplemente mail, sin ninguna direccin a
continuacin, permitir a los usuarios leer los correos en su cuenta. Linux tambin
proporciona otro programa llamado pine, que tiene una buena interfaz de usuario para
ayudar al usuario a leer mejor el correo.
who
El comando who muestra todos los usuarios que estn actualmente en el sistema.
Muestra el nombre de ingreso, el nmero de terminal, y el momento en que ingresaron.
whoami
El comando whoami ayuda a encontrar quien est conectado actualmente. En caso que
se nos olvide el nombre de ingreso, este comando muestra nuestro nombre de ingreso.
Es til para administradores de sistema, dado que les permite ingresar como diferentes
usuarios para monitorear el sistema.

7. Tuberas (Pipes)
La redireccin en Linux ayuda a conectar programas con archivos, mientras que las
tuberas ayudan a conectar un programa con otros programas. Las tuberas en lnea es
Unidad 2: El Sistema Linux

Fundamentos de Linux y Sistemas de Archivos 48

Copyright IBM Corp. 2006


Los materiales del curso no pueden ser reproducidos total o
parcialmente sin el permiso escrito previo de IBM.

Gua del Estudiante

Fundamentos de Linux

una caracterstica donde la salida de un programa es enviada como entrada para otro
programa. El carcter | (un carcter barra vertical) representa una tubera.
Puede ser representado en forma diagramtica como se muestra en la Figura 2.2.
salida entrada
Programa
1

salida entrada

Programa
2

salida
Programa
3

Salida
estndar

Figura 2.2: Tuberas en Linux

Uso de Comando 2.15


[mickeymouse@mycomputer mickeymouse]$ cat lines.txt | grep
esper | wc l
3
[mickeymouse@mycomputer mickeymouse]$

La salida de cat es enviada como entrada para grep. El comando cat no


procesa datos. Simplemente enva la entrada a la salida estndar. Pero
antes que pueda mostrarse en la salida estndar, se encuentra el smbolo
tubera (|), que ayuda al shell a entender que la salida debe ser enviada
como entrada para el siguiente comando en la tubera en lnea.
El comando grep toma la entrada (y por lo tanto no se da un archivo como
argumento) y la procesa buscando el patrn esper en cada lnea, y enva la
salida. Esta salida es pasada nuevamente a travs de la tubera a wc, que
cuenta el nmero de lneas, y luego finalmente lo que se muestra es 3.
El uso de tubera presentado encuentra que existen tres lneas en el archivo
lines.txt que tienen el patrn esper en ellas.
[mickeymouse@mycomputer mickeymouse]$ head 5 lines.txt | grep
esper | sort
[mickeymouse@mycomputer mickeymouse]$

No se muestra salida alguna, dado que el patrn esper no existe en las


cinco primeras lneas del archivo lines.txt.
Fin de Uso de Comando 2.15

Fundamentos de Linux y Sistemas de Archivos

Unidad 2: El Sistema Linux 49

Copyright IBM Corp. 2006


Los materiales del curso no pueden ser reproducidos total o
parcialmente sin el permiso escrito previo de IBM.

Fundamentos de Linux

Gua del Estudiante

8. Filtros
Un filtro es un programa que lee datos de la entrada estndar, los procesa, y enva los
datos procesados a la salida estndar. La Figura 2.3 ilustra un filtro.

Entrada
Estndar

datos

Programa
Filtro

datos procesados

Salida
Estndar

Figura 2.3: Filtros en Linux

El comando sort es un ejemplo de un filtro. Toma la entrada de la entrada estndar (ya


sea a travs del teclado o un archivo), procesa los datos (los ordena en el orden en que
se quiere) y los enva a la salida estndar (ya sea la pantalla o un archivo, si se usa la
redireccin).
Cualquier filtro puede ser usado en una tubera. A continuacin se muestra un ejemplo:
cat names.txt | sort
Es lo mismo que sort names.txt.
Sin embargo, no todos los comandos en Linux son filtros. Por lo tanto, es importante
notar que el lado derecho de una tubera puede no siempre ser un filtro. Por ejemplo,
cal no es un filtro y su uso en cat names.txt | cal no es un uso vlido de tuberas
y filtros.
La salida que se ver ser el calendario para el mes actual. En situaciones como estas,
el ltimo comando se ejecuta y todos los dems datos en la tubera se pierden. Cuando
estos usos incorrectos se hacen con tuberas y filtros en un programa, el error mismo
puede ser difcil de identificar y corregir. Por lo tanto, se debe ser cuidadoso para
asegurar que el uso en el lado derecho de una tubera es un filtro correcto.
Se entendern las tuberas y filtros con otro ejemplo.
En una seccin anterior se aprendi sobre head y tail. Ahora se ver como se puede
imprimir las partes medias de un archivo. El comando head imprime el inicio de un
archivo mientras que tail imprime las ltimas lneas de un archivo. Se usar una
combinacin de ambos para imprimir algunas lneas del medio del archivo lines.txt.
Refirase al contenido de este archivo dado en una seccin anterior.
Suponga se quiere ver las lneas cuatro, cinco y seis, esto es los que se necesita hacer.
[mickeymouse@mycomputer mickeymouse]$ head 6 lines.txt | tail 3
o
[mickeymouse@mycomputer mickeymouse]$ tail 8 lines.txt | head 3

Unidad 2: El Sistema Linux

Fundamentos de Linux y Sistemas de Archivos 50

Copyright IBM Corp. 2006


Los materiales del curso no pueden ser reproducidos total o
parcialmente sin el permiso escrito previo de IBM.

Gua del Estudiante

Fundamentos de Linux

En el primer ejemplo, se obtienen las seis primeras lneas usando head y pasndolas a
tail. Las ltimas tres lneas de las primeras seis lneas sern la cuarta, quinta y sexta
lneas.
En el segundo caso, se obtienen las ltimas ocho lneas y luego se ven las tres
primeras de stas, que son las cuarta, quinta y sexta lneas en el archivo. Se ha usado
8 dado que hay 11 lneas en el archivo. Se sabe que se puede encontrar el nmero de
lneas en un archivo usando el comando wc l.

Fundamentos de Linux y Sistemas de Archivos

Unidad 2: El Sistema Linux 51

Copyright IBM Corp. 2006


Los materiales del curso no pueden ser reproducidos total o
parcialmente sin el permiso escrito previo de IBM.

Fundamentos de Linux

Gua del Estudiante

Resumen
Ahora que ha completado esta unidad, Ud. debe ser capaz de:

Explicar el procedimiento de ingreso/salida en un sistema operativo Linux.

Discutir el uso del formato de comandos de Linux.

Describir la redireccin de entrada y salida.

Explicar el uso de algunos comandos Linux bsicos.

Discutir el uso de tuberas (pipes) y filtros.

Unidad 2: El Sistema Linux

Fundamentos de Linux y Sistemas de Archivos 52

Copyright IBM Corp. 2006


Los materiales del curso no pueden ser reproducidos total o
parcialmente sin el permiso escrito previo de IBM.

Gua del Estudiante

Fundamentos de Linux

Unidad 2: Examen de Autoevaluacin


1) Cmo se llama la persona a cargo de la administracin de un sistema Linux?
a) Superusuario
b) root
c) Tanto (a) como (b)
2) El comando que nos ayuda a entender el uso de cualquier comando Linux es
a) Help
b) man
c) Manpages
d) Manual pages
3) Por defecto, la entrada estndar y la salida estndar es el teclado.
a) Verdadero
b) Falso
4) Si no se pasa un archivo como argumento a cat, de cul de las siguientes toma
la entrada?
a) Pantalla
b) Un archivo interno de Linux
c) Teclado
d) Ninguna de las anteriores
5) Cul de los siguientes comandos se usa para mostrar el contenido de un archivo
en la pantalla?
a) grep
b) cat
c) head
d) Ninguna de las anteriores
6) Cuntas lneas mostrarn por defecto los comandos head y tail?
a) Todas las lneas
b) Cinco lneas
c) 20 lneas
d) 10 lneas

Fundamentos de Linux y Sistemas de Archivos

Unidad 2: El Sistema Linux 53

Copyright IBM Corp. 2006


Los materiales del curso no pueden ser reproducidos total o
parcialmente sin el permiso escrito previo de IBM.

Fundamentos de Linux

Gua del Estudiante

7) Cul de las siguientes opciones del comando sort se usa para mostrar el
contenido de un archivo en orden descendente?
a) -d
b) -o
c) -r
d) -b
8) Cul de los siguientes comandos muestra el nmero de lneas en un archivo de
entrada?
a) wc
b) pr
c) cat
d) head
9) Cmo se llama al operador >?
a) Operador de indireccin
b) Operador tubera (pipe)
c) Operador de redireccin
d) Ninguna de las anteriores
10) Un filtro es un programa que procesa un archivo de entrada y produce una salida.
a) Verdadero
b) Falso

Unidad 2: El Sistema Linux

Fundamentos de Linux y Sistemas de Archivos 54

Copyright IBM Corp. 2006


Los materiales del curso no pueden ser reproducidos total o
parcialmente sin el permiso escrito previo de IBM.

Gua del Estudiante

Fundamentos de Linux

Respuestas a Unidad 2: Examen de Autoevaluacin


1) c
2) b
3) b
4) c
5) b
6) d
7) c
8) a
9) c
10) b

Fundamentos de Linux y Sistemas de Archivos

Unidad 2: El Sistema Linux 55

Copyright IBM Corp. 2006


Los materiales del curso no pueden ser reproducidos total o
parcialmente sin el permiso escrito previo de IBM.

Gua del Estudiante

Fundamentos de Linux

Pgina dejada intencionalmente en blanco....

Fundamentos de Linux y Sistemas de Archivos

Unidad 2: El Sistema Linux 56

Copyright IBM Corp. 2006


Los materiales del curso no pueden ser reproducidos total o
parcialmente sin el permiso escrito previo de IBM.

Gua del Estudiante

Fundamentos de Linux

Unidad 3: Lab. del Sistema Linux


Objetivos de Aprendizaje
Al final de esta unidad, Ud. ser capaz de:

Ingresar y salir del sistema Linux.

Usar comandos simples como cat, calendar, grep, head, etc.

Trabajar con el rediccionamiento en Linux.

Usar tuberas y filtros para obtener los resultados deseados del procesamiento
de un archivo.

Fundamentos de Linux y Sistemas de Archivos

Unidad 3: Lab. del Sistema Linux 57

Copyright IBM Corp. 2006


Los materiales del curso no pueden ser reproducidos total o
parcialmente sin el permiso escrito previo de IBM.

Fundamentos de Linux

Gua del Estudiante

Ejercicios de Laboratorio
1) Ingrese en el sistema y cambie su contrasea. Salga y vuelva a entrar con la nueva
contrasea. Realice el ejercicio dado antes de empezar a trabajar en los ejercicios
dados a continuacin.
2) Usando el comando cat, cree dos archivos con los datos de los nombres y lneas
(luego de Uso de Comando 2.6) dados en la Unidad 2: El Sistema Linux. Llmelos
names.txt y lines.txt.
3) Muestre el contenido de names.txt.
4) Encuentre si el patrn 'y' existe en las ltimas seis lneas de lines.txt.
5) Encuentre el nmero de lneas en que la letra 'z' aparece en las primeras cuatro
lneas de lines.txt. (Lea cuidadosamente la pregunta antes de intentar
resolverla).
6) Capture el calendario para el mes de Diciembre 2001 en un archivo llamado
calendar.txt.
Agregue el calendario de Noviembre 2001 a calendar.txt. El mes de Noviembre
debe preceder al mes de Diciembre en calendar.txt.
Sugerencia: Puede tener que usar tres comandos para lograr esto.

Unidad 3: Lab. del Sistema Linux

Fundamentos de Linux y Sistemas de Archivos 58

Copyright IBM Corp. 2006


Los materiales del curso no pueden ser reproducidos total o
parcialmente sin el permiso escrito previo de IBM.

Gua del Estudiante

Fundamentos de Linux

Unidad 4: La Estructura de Archivos


Linux
Objetivos de Aprendizaje
Al final de esta unidad, Ud. ser capaz de:

Explicar cmo Linux organiza su estructura de archivos.

Describir el uso de los comandos de archivos.

Discutir los directorios y los comandos relacionados a directorios.

Explicar cmo se otorgan permisos a los archivos.

Fundamentos de Linux y Sistemas de Archivos

Unidad 4: La Estructura de Archivos Linux 59

Copyright IBM Corp. 2006


Los materiales del curso no pueden ser reproducidos total o
parcialmente sin el permiso escrito previo de IBM.

Fundamentos de Linux

Gua del Estudiante

1. Introduccin
Se discuti brevemente el sistema de archivos en Linux en la Unidad 1: Fundamentos
de Linux. Ahora se aprender como los archivos estn organizados en un sistema
operativo Linux.
Existen tanto una vista fsica como una vista lgica del sistema de archivos. Los
archivos se almacenan fsicamente en el disco dentro de un sistema de archivos.
Lgicamente, un sistema de archivos en Linux puede ser visto como una estructura
jerrquica (tipo rbol).
Se va a entender a continuacin qu son los archivos y directorios y los comandos
relacionados a estos.

2. Archivos
Estas son algunas de las principales caractersticas de los archivos:

Cada recurso en Linux es un archivo.

Un archivo es una secuencia de bytes.

Cada archivo tiene un nombre. Sin embargo, el uso de extensin en un nombre


de archivo es opcional. Por lo tanto, textfile, myfile.txt y myfile.doc son
todos nombres de archivos vlidos. El .txt y .doc son extensiones a los
nombres.

Los archivos son almacenes para datos. Los datos pueden ser simple texto
ASCII, documentos con formato, programas fuente, archivos ejecutables o
imgenes.

El comando file puede usarse para determinar el tipo del archivo.


mickeymouse@mycomputer mickeymouse]$ file lines.txt
lines.txt: ASCII text
En el ejemplo anterior, se sabe que lines.txt es un archivo ASCII y se puede
determinar que el archivo es del tipo ASCII text (Texto ASCII).

3. Directorio
Un directorio es un almacn para archivos. El sistema Linux usa archivos y directorios
para organizar los datos en el sistema. Estas son algunas de las caractersticas de un
directorio:

Los directorios pueden guardar cualquier tipo de archivo.

Todos los directorios tienen nombres, pero a diferencia de los archivos, no


tienen extensiones.

Un directorio Linux es un archivo especial que mantiene una lista de todos los
archivos almacenados en l.

Unidad 4: La Estructura de Archivos Linux

Fundamentos de Linux y Sistemas de Archivos 60

Copyright IBM Corp. 2006


Los materiales del curso no pueden ser reproducidos total o
parcialmente sin el permiso escrito previo de IBM.

Gua del Estudiante

Fundamentos de Linux

Este esquema organizacional es poderoso, dado que un archivo en un directorio


puede ser otro directorio.

El directorio hijo es llamado un subdirectorio del directorio original. As existe una


estructura tipo rbol de directorios y archivos.

Los directorios pueden ser comparados a ramas de un rbol, mientras que los archivos
pueden ser comparados a las hojas. Como en los rboles en Linux tambin existe una
raz (root), que almacena juntos todos los directorios y archivos.
La Figura 4.1 es una representacin tpica de una estructura de directorios en Linux.
/ (raz)

dir1

archivo1

dir2

archivo
2

archivo1

dir3

archivo3

dir4

archivo4

Figura 4.1: Estructura de Directorios en Linux

La raz (root) en el sistema Linux es representada con una barra (/).


En el diagrama, dir1, dir2, y dir3 son subdirectorios de root.
archivo1 y archivo2 son archivos en dir1, archivo1 y archivo3 son archivos en
dir2 y dir4 es un subdirectorio de dir3.

Los nombres de archivos y directorios deben ser nicos dentro del mismo subdirectorio,
sin embargo, pueden ser idnticos a lo largo de los subdirectorios. En la Figura 4.1,
archivo1 se encuentra tanto en dir1 como en dir2.
Cierta informacin importante acerca de archivos y directorios se mantiene en un
archivo llamado inodo en Linux. Ahora se discutir brevemente los inodos.

4. Inodos
Un archivo o un directorio tiene varios componentes como se lista a continuacin:

Nombre

Contenido

Permisos

Fundamentos de Linux y Sistemas de Archivos

Unidad 4: La Estructura de Archivos Linux 61

Copyright IBM Corp. 2006


Los materiales del curso no pueden ser reproducidos total o
parcialmente sin el permiso escrito previo de IBM.

Fundamentos de Linux

Gua del Estudiante

Fechas de modificacin

Un directorio es un tipo especial de archivo. Por lo tanto en esta seccin, se usar el


trmino archivo para referir tanto a un archivo como a un directorio.
La informacin acerca de los permisos y fechas de modificacin para un archivo es
llamada informacin administrativa. La fecha del permiso es el instante de tiempo en
que los permisos de lectura, escritura o ejecucin fueron establecidos o cambiados para
el archivo. La fecha y hora de modificacin se refiere al instante de tiempo en que el
archivo fue cambiado. La informacin administrativa se almacena en una tabla llamada
i-nodo o inodo. Cada archivo en Linux est asociado con un inodo. Un inodo tambin es
un archivo en el sistema Linux, que almacena informacin especfica acerca de un
archivo en Linux. Los tres tipos de tiempos (fecha-hora) de modificacin que almacena
un inodo son:

La fecha y hora en que el contenido del archivo fue modificado por ltima vez. La
modificacin causa un cambio al contenido de un archivo.

La fecha y hora en que el archivo fue usado por ltima vez, esto es, ledo o
ejecutado. Este instante de tiempo se refiere al momento en que el archivo fue
ledo o ejecutado, sin causar ninguna modificacin al archivo.

La fecha y hora en que el inodo fue cambiado. Los inodos cambian cuando los
permisos para el archivo son alterados.

Cada inodo est asociado con un i-nmero nico, que viene de nmero de identificacin
(identification number). En la Unidad 1: Fundamentos de Linux se aprendi acerca de
los bloques inodo. Estos son los bloques donde el sistema Linux almacena los inodos.
Se ha visto las diferentes fechas almacenadas en un inodo. Aparte de esto, un inodo
tambin mantiene la siguiente informacin:
Identificacin del propietario del archivo
Un individuo o un grupo pueden ser propietarios de un archivo. Los detalles respecto
a los usuarios que tienen derechos de acceso al archivo se mantienen en el inodo.
Tipo del archivo
La informacin de si el tipo de archivo es regular o un directorio. Tambin se
mantiene la informacin de si el archivo es tipo carcter o de bloque especial.
Nmero de enlaces al archivo
Un archivo puede residir fsicamente en un directorio y tener cierto nmero de
enlaces a l desde otras secciones del sistema de archivos. El inodo mantiene el
nmero de nombres que tiene el archivo en la jerarqua de directorios.
Tamao del archivo
Tambin se almacena informacin acerca del tamao del archivo en bytes.
Lista de direcciones de disco para el archivo
La vista lgica de un archivo es que el contenido es almacenado en un flujo
secuencial de byte. El kernel tpicamente almacena el contenido en bloques de disco
no contiguos. El inodo mantiene la lista de las direcciones en el disco donde reside
cada parte del archivo.

Unidad 4: La Estructura de Archivos Linux

Fundamentos de Linux y Sistemas de Archivos 62

Copyright IBM Corp. 2006


Los materiales del curso no pueden ser reproducidos total o
parcialmente sin el permiso escrito previo de IBM.

Gua del Estudiante

Fundamentos de Linux

La Figura 4.2 muestra un ejemplo de un inodo.


Propietario/Grupo
Tipo de archivo
Tamao del archivo
Permisos del archivo (rwxrwxrwx)
Fecha/Hora de:
Modificacin, Acceso y Cambio
Cantidad de enlaces
Banderas adicionales (ACL, EXT2_FLAGS)
Punteros a bloques de datos
Figura 4.2: Inodo ejemplo

5. Comandos de Directorio
Ya se conoce como crear un archivo. Ahora, para colocar los archivos en diferentes
directorios, estos directorios tienen que ser creados. Cuando se instala Linux, se crea el
directorio / (raz) y muchos otros subdirectorios para archivos relacionados al sistema
operativo. Sin embargo, cuando el usuario ingresa, estar en su directorio de inicio.
Pueden crear subdirectorios y archivos slo en sus respectivos directorios home.
A continuacin se muestra cmo utilizar algunos comandos relacionados con
directorios. Estos comandos permiten crear un directorio, mover archivos a un
directorio, eliminar un directorio, encontrar la ruta del directorio de trabajo actual y listar
el contenido de un directorio.
Se discutirn los siguientes comandos:
mkdir
cd
rmdir
pwd
ls
Uso de Comando 4.1
Para organizar mejor el espacio en disco, Linux permite crear directorios. El comando
mkdir se usa para crear un directorio.

Fundamentos de Linux y Sistemas de Archivos

Unidad 4: La Estructura de Archivos Linux 63

Copyright IBM Corp. 2006


Los materiales del curso no pueden ser reproducidos total o
parcialmente sin el permiso escrito previo de IBM.

Fundamentos de Linux

Gua del Estudiante

Sintaxis de mkdir: mkdir [opcin] directorio


[mickeymouse@mycomputer mickeymouse]$mkdir programas
[mickeymouse@mycomputer mickeymouse]$mkdir documentos
proyectos

El primer mkdir crea un directorio llamado programas en el directorio


home del usuario mickeymouse.
El segundo mkdir crea dos directorios ms llamados documentos y
proyectos en el mismo directorio home.
Cuando el administrador del sistema crea una cuenta para mickeymouse,
se crea automticamente un directorio llamado mickeymouse en el
sistema, en el directorio home. El directorio home mismo es un subdirectorio
de raz(/).
Los directorios programas,
documentos, y proyectos son
subdirectorios del directorio mickeymouse. El comando mkdir puede
tomar uno o ms parmetros.
Se crea un directorio con el nombre especificado si el directorio an no
existe. Caso contrario se mostrar un mensaje de error adecuado, como se
muestra a continuacin:
[mickeymouse@mycomputer mickeymouse]$mkdir programas
mkdir: Cannot create directory 'programas' : File exists
(No se puede crear el directorio 'programas' : Archivo ya
existe)
[mickeymouse@mycomputer mickeymouse]$

Fin de Uso de Comando 4.1


La estructura de rbol resultante despus de crear los tres subdirectorios usando el comando
mkdir, se muestra en la Figura 4.3. Los directorios recin agregados se muestran ms claros.
El directorio en que el usuario est trabajando actualmente se muestra en negrita.

Unidad 4: La Estructura de Archivos Linux

Fundamentos de Linux y Sistemas de Archivos 64

Copyright IBM Corp. 2006


Los materiales del curso no pueden ser reproducidos total o
parcialmente sin el permiso escrito previo de IBM.

Gua del Estudiante

Fundamentos de Linux

home

jerry

mickeymouse

donald

documentos

programas

proyectos

Figura 4.3 Estructura de Directorios luego de Crear Subdirectorios


Uso de Comando 4.2
Una vez que se crea un directorio, se tiene que ir a dicho directorio para crear archivos
y otros subdirectorios. El comando mkdir simplemente crea un directorio. Para poder
trabajar en el directorio recin creado, y crear archivos y subdirectorios, se debe
convertir ese directorio en el directorio actual de trabajo. Esto se hace usando el
comando cd, siglas de change directory (cambiar directorio).
Sintaxis de cd:

cd directorio

[mickeymouse@mycomputer mickeymouse]$cd programas


[mickeymouse@mycomputer programas]$

El usuario mickeymouse ahora est en el directorio programas. Considere


el nuevo prompt:
[mickeymouse@mycomputer programas]$
Esto muestra que el directorio en que se est, es de hecho donde se quiere
estar.
Existen dos smbolos especiales, estos son . y .., que representan
directorios especficos. El . representa el directorio actual y .. representa
el directorio padre. Sea este ejemplo:
[mickeymouse@mycomputer programas]$cd ..
[mickeymouse@mycomputer mickeymouse]$

Fundamentos de Linux y Sistemas de Archivos

Unidad 4: La Estructura de Archivos Linux 65

Copyright IBM Corp. 2006


Los materiales del curso no pueden ser reproducidos total o
parcialmente sin el permiso escrito previo de IBM.

Fundamentos de Linux

Gua del Estudiante

Para el subdirectorio programas, el directorio padre es mickeymouse. Por


lo que cuando se ingresa cd .. nos lleva a /home/mickeymouse$.
Fin de Uso de Comando 4.2
Tambin es posible eliminar del sistema de archivos un directorio existente. Sin
embargo, el directorio a eliminarse debe estar vaco. El sistema se encarga de que un
directorio con archivos y otros directorios no pueda eliminarse directamente.
Uso de Comando 4.3
El comando rmdir se usa para eliminar un directorio existente del sistema de archivos.
Sintaxis de rmdir:

rmdir [opcin] directorio

[mickeymouse@mycomputer mickeymouse]$rmdir proyectos


[mickeymouse@mycomputer mickeymouse]$

Se intenta eliminar el directorio proyectos. Si el directorio proyectos


est vaco, simplemente lo eliminar. Caso contrario mostrar el siguiente
mensaje:
rmdir: proyectos: Directory not empty
(Directorio no vaco)

Fin de Uso de Comando 4.3


Despus de desplazarse por el sistema de archivos, el usuario puede desorientarse.
Para permitir al usuario determinar en que directorio est actualmente, Linux
proporciona un comando simple pwd. Este comando muestra el nombre de archivo
completo del directorio de trabajo actual. El comando pwd no es un comando
relacionado a directorios, pero proporciona informacin acerca del directorio de trabajo
en el que se est ubicado.
Uso de Comando 4.4
Sintaxis de pwd:

pwd [opcin]

[mickeymouse@mycomputer mickeymouse]$pwd
/home/mickeymouse
[mickeymouse@mycomputer mickeymouse]$cd documentos
[mickeymouse@mycomputer documentos]$pwd
/home/mickeymouse/documentos
[mickeymouse@mycomputer documentos]$

El nombre completo del directorio de trabajo actual mickeymouse es


/home/mickeymouse. Cuando se cambia el directorio a documentos, el
nombre completo es /home/mickeymouse/documentos.
Fin de Uso de Comando 4.4

Unidad 4: La Estructura de Archivos Linux

Fundamentos de Linux y Sistemas de Archivos 66

Copyright IBM Corp. 2006


Los materiales del curso no pueden ser reproducidos total o
parcialmente sin el permiso escrito previo de IBM.

Gua del Estudiante

Fundamentos de Linux

El contenido de un archivo de texto regular puede visualizarse usando un editor o


procesador de palabras, mientras que el contenido de un directorio puede visualizarse
usando el comando ls. El contenido de un directorio son archivos y otros subdirectorios
creado en l.
Uso de Comando 4.5
La estructura de directorios dada en la Figura 4.4 forma la base para la explicacin del
comando ls.
/

home

mickeymouse

documentos

como.txt

programas

comentarios.txt

cprogramas

programas

Figura 4.4: Un Estructura de Directorios Ejemplo

Sintaxis de ls:

ls [opcin] [archivo]

Se tomar el ejemplo de la estructura de directorios mostrada en la Figura


4.4. Todos los directorios estn subrayados y el nombre de archivo
completo
del
directorio
de
trabajo
actual
es
/home/mickeymouse/programas.
[mickeymouse@mycomputer programas]$ls
comentarios.txt

cprograms

Fundamentos de Linux y Sistemas de Archivos

como.txt

programas

Unidad 4: La Estructura de Archivos Linux 67

Copyright IBM Corp. 2006


Los materiales del curso no pueden ser reproducidos total o
parcialmente sin el permiso escrito previo de IBM.

Fundamentos de Linux

Gua del Estudiante

[mickeymouse@mycomputer programas]$

El contenido de directorio de programas se lista a continuacin. Esta es la


forma ms simple en que el comando ls puede ser usado.
[mickeymouse@mycomputer programas]$ ls l
total 16
-rw-r--r--

1 mickeymouse 3012 Jun 30 10:30 comentarios.txt

drw-r--r--

1 mickeymouse 4096 Jun 30 11:35 cprogramas

-rw-r--r--

1 mickeymouse 52

Jun 30 12:36 como.txt

-rw-r--r--

1 mickeymouse 158

Jun 30 13:49 programas

[mickeymouse@mycomputer programas]$

La forma ms til de ls es con la opcin l. ls l da un listado 'largo'


que proporciona ms informacin acerca de cada archivo. En el resultado,
'total 16' indica cuantos bloques son usados por los archivos en el disco.
La cadena "-rw-r--r--" informa acerca de los permisos sobre los
archivos. Se aprender ms acerca de esto en una seccin posterior. '1' es
el nmero de enlaces a un archivo. 'mickeymouse' es el dueo del archivo.
'4096' es el nmero de caracteres en el archivo. Esto es seguido por la
fecha y hora de creacin y por el nombre del archivo. Si el archivo es un
directorio, entonces se ver una d en la cadena que representa los permisos
sobre ese directorio.
ls i mostrar los archivos con sus nmeros de inodo.
Fin de Uso de Comando 4.5
A continuacin se presentan todos los usos vlidos de los comandos relacionados a
directorios.
/home/mickeymouse$ cd /home/jerry
Esto es vlido si mickeymouse tiene permiso para cambiar al directorio jerry.
[mickeymouse@mycomputer mickeymouse]$mkdir
documentos/docespeciales
Esto crea un subdirectorio llamado docespeciales en el subdirectorio documentos.
[mickeymouse@mycomputer mickeymouse]$rmdir
documentos/docespeciales
Esto elimina el subdirectorio docespeciales, si est vaco.
[mickeymouse@mycomputer mickeymouse]$ls
/home/mickeymouse/documentos
Esto es lo mismo que el siguiente comando:
[mickeymouse@mycomputer mickeymouse]$ls documentos

Unidad 4: La Estructura de Archivos Linux

Fundamentos de Linux y Sistemas de Archivos 68

Copyright IBM Corp. 2006


Los materiales del curso no pueden ser reproducidos total o
parcialmente sin el permiso escrito previo de IBM.

Gua del Estudiante

Fundamentos de Linux

En la primera forma de uso, se da la ruta completa desde la raz. En la segunda, slo se


da el nombre del directorio de cuyo listado se est interesado. Para poder hacer esto,
documentos debe ser un subdirectorio del directorio de trabajo actual.

6. Comandos de Archivos
A continuacin se presentan los comandos que trabajan especficamente con archivos.
Para trabajar con archivos el primer paso es crear un archivo. Se aprendi a crear un
archivo con el comando cat
[mickeymouse@mycomputer mickeymouse]$cat > myfile.txt
Hay tambin otras formas crear un archivo a travs de editores. Un editor es un
programa que permite la creacin y modificacin de un archivo.
vi es un editor disponible en los sistemas Linux. Es un editor visual. Se aprender
sobre este editor en l a Unidad 6 El Editor vi.
Otro editor, ed, es un editor de lnea. Los editores de lnea son aquellos que trabajan
con una lnea a la vez.
El comando cat simplemente permite crear un archivo a los usuarios. No les deja
modificar el contenido del archivo. Por otro lado, ed permite al usuario crear un archivo
y modificar su contenido.
Se discutirn brevemente algunas caractersticas importantes del editor ed.
Uso de Comando 4.6
Sintaxis de ed:

ed [archivo]

[mickeymouse@mycomputer mickeymouse]$ed

a
Este archivo fue creado usando el editor ed.
Creado el 30 Junio 2001.
A las 11:30 AM.
.
w miarchivo.txt
86
q
[mickeymouse@mycomputer mickeymouse]$

Si se ejecuta el editor sin un nombre de archivo, ste asume que es un


nuevo archivo. El nombre de archivo puede ser especificado dentro del
editor cuando se graben las lneas ingresadas. Para ingresar lneas existen
dos comandos en ed : a e i.

Fundamentos de Linux y Sistemas de Archivos

Unidad 4: La Estructura de Archivos Linux 69

Copyright IBM Corp. 2006


Los materiales del curso no pueden ser reproducidos total o
parcialmente sin el permiso escrito previo de IBM.

Fundamentos de Linux

Gua del Estudiante

El comando a viene de append (aadir) y el comando i viene de insert


(insertar).
En el ejemplo anterior, se encuentran tres lneas aadidas luego del
comando a. Los comandos del ed son simples y ellos deben estar solos en
una lnea. Para indicar la finalizacin del ingreso, se utiliza el . (otro
comando). Esto informa al ed que no se est en el modo de edicin, sino
que ahora se est en el modo de comandos.
El editor ed se inicia en el modo de comandos.
Las lneas que se ingresaron slo estn en la memoria de la computadora.
Para escribir las lneas en un archivo del disco, se usa el comando w
seguido por el nombre del archivo. El nombre del archivo se ingresa slo la
primera vez. Posteriormente se puede ingresar simplemente el comando w.
Las lneas se guardarn en el mismo archivo. El comando w escribe las
lneas a un archivo en el disco, en este caso al archivo llamado
miarchivo.txt, y muestra el nmero de caracteres escritos, que es 86.
El comando q termina el programa. Si se usa q sin haber escrito las lneas
en el archivo, ed mostrar ?. Esto es para informar que puede ser que no se
estn haciendo las cosas correctamente.
[mickeymouse@mycomputer mickeymouse]$cat miarchivo.txt
Este archivo fue creado usando el editor ed.
Creado el 30 Junio 2001.
A las 11:30 AM.
[mickeymouse@mycomputer mickeymouse]$

Usando cat se puede ver que las tres lneas ingresadas a travs de ed
estn correctas!.
[mickeymouse@mycomputer mickeymouse]$ed miarchivo.txt
86
a
Aadiendo otra lnea.
Esta lnea fue aadida 11:35 AM.
.
w
141
q
[mickeymouse@mycomputer mickeymouse]$

Esta vez, se usa ed con el nombre del archivo a continuacin. Se abre el


archivo si ste existe, en caso contrario se muestra un mensaje de error y
espera por otra entrada del usuario. Si el archivo no existe, se puede
continuar y usar el ed como se hizo previamente. El programa no terminar.
Unidad 4: La Estructura de Archivos Linux

Fundamentos de Linux y Sistemas de Archivos 70

Copyright IBM Corp. 2006


Los materiales del curso no pueden ser reproducidos total o
parcialmente sin el permiso escrito previo de IBM.

Gua del Estudiante

Fundamentos de Linux

Si el archivo existe, se mostrar el nmero de caracteres que contiene y se


esperar por la entrada del usuario. Se han agregado dos lneas ms y luego fueron
grabadas. Note que no se ingresa el nombre del archivo despus del comando w.
El archivo miarchivo.txt con las lneas aadidas se muestra a continuacin
usando el comando cat:
[mickeymouse@mycomputer mickeymouse]$cat miarchivo.txt
Este archivo fue creado usando el editor ed.
Creado el 30 Junio 2001.
A las 11:30 AM.
Aadiendo otra lnea.
Esta lnea fue aadida 11:35 AM.
[mickeymouse@mycomputer mickeymouse]$

Algunos comandos adicionales se muestran en el siguiente ejemplo.


[mickeymouse@mycomputer mickeymouse]$ed miarchivo.txt
141
$=
5
1
Este archivo fue creado usando el editor ed.
5
Esta lnea fue aadida 11:35 AM.
6
?
3
A las 11:30 AM.
i
Esto es aadido antes de "A las 11:30 AM.".
.
w
180
q
[mickeymouse@mycomputer mickeymouse]$

El archivo tiene 141 caracteres ahora. Para ver cuantas lneas tiene el
archivo se puede usar el comando $=.
Hay cinco lneas en el archivo y esto se muestra ejecutando el comando $=.
Como ed es un editor de lnea, slo se puede ver el contenido lnea por
lnea con el editor. As que para ver la lnea 1, se ingresa 1.
Se ingres 1 en el ejemplo y se muestra la primera lnea. Cuando se
ingresa 6, se muestra ?, pues no existe la lnea seis en el archivo.

Fundamentos de Linux y Sistemas de Archivos

Unidad 4: La Estructura de Archivos Linux 71

Copyright IBM Corp. 2006


Los materiales del curso no pueden ser reproducidos total o
parcialmente sin el permiso escrito previo de IBM.

Fundamentos de Linux

Gua del Estudiante

Anteriormente, se present como se puede aadir lneas. Tambin se puede


insertar una lnea antes de otra lnea en particular. Para hacer esto, primero
se debe ir a dicha lnea.
En el ejemplo, se va a la lnea 3 ingresando 3. El editor ed muestra la 3ra
lnea del archivo. Se debe ingresar el comando i para insertar una lnea. La
lnea que sigue al comando i se aade antes de la 3ra lnea. Como antes,
se ingresa un . para finalizar la entrada. Cuando se ve el archivo con cat,
se muestra el contenido del archivo con la nueva lnea insertada
[mickeymouse@mycomputer mickeymouse]$cat miarchivo.txt
Este archivo fue creado usando el editor ed.
Creado el 30 Junio 2001.
Esto es aadido antes de "A las 11:30 AM.".
A las 11:30 AM.
Aadiendo otra lnea.
Esta lnea fue aadida 11:35 AM.
[mickeymouse@mycomputer mickeymouse]$

De manera similar se puede eliminar una lnea usando el comando d. El


comando d elimina la lnea actual. As que para eliminar una lnea, se debe
ir a la lnea y luego ingresar d. Esto es bastante similar al comando i.
Fin de Uso de Comando 4.6
Habiendo aprendido otro mtodo para crear archivos, se van a estudiar a continuacin
algunos comandos especficos relacionados a archivos. Estos comandos permiten
copiar de un archivo a otro, cambiar el nombre de un archivo, eliminar un archivo y crear
enlaces a archivos.
cp
mv
rm
Uso de Comando 4.7
El comndo cp copia el contenido de un archivo a otro archivo.
Sintaxis de cp:
cp [opcin] origen destino
[mickeymouse@mycomputer mickeymouse]$cp miarchivo.txt
nuevoarchivo.txt
[mickeymouse@mycomputer mickeymouse]$

El contenido de miarchivo.txt se copia a nuevoarchivo.txt. El


comando cp sobrescribe el archivo destino. Vea el siguiente ejemplo:
[mickeymouse@mycomputer mickeymouse]$ cp miarchivo.txt
documentos/nuevoarchivo.txt

Unidad 4: La Estructura de Archivos Linux

Fundamentos de Linux y Sistemas de Archivos 72

Copyright IBM Corp. 2006


Los materiales del curso no pueden ser reproducidos total o
parcialmente sin el permiso escrito previo de IBM.

Gua del Estudiante

Fundamentos de Linux

miarchivo.txt se copia desde el directorio mickeymouse al directorio


documentos como nuevoarchivo.txt.
A veces el nombre destino puede no especificarse como en el siguiente
ejemplo:
[mickeymouse@mycomputer mickeymouse]$ cp miarchivo.txt
documentos
[mickeymouse@mycomputer mickeymouse]$

Aqu miarchivo.txt se copia al directorio documentos con el mismo


nombre miarchivo.txt.
El sistema reconoce que documentos es un directorio y por ello realiza la
copia de esa manera.
Fin de Uso de Comando 4.7
Cuando se copia un archivo, se crean dos archivos fsicos. El comando mv se usa para
renombrar un archivo existente. El comando da un nuevo nombre al archivo
especificado, pero sigue existiendo slo una copia del archivo.
El comando mv tambin puede usarse para mover archivos de un directorio a otro.
Uso de Comando 4.8
Sintaxis de mv:

mv [opcin] origen destino

[mickeymouse@mycomputer mickeymouse]$ mv miarchivo.txt


nuevoarchivo.txt
[mickeymouse@mycomputer mickeymouse]$

El comando anterior cambia el nombre de miarchivo.txt a


nuevoarchivo.txt. El comando mv puede usarse tambin para mover
archivos como se muestra en el siguiente ejemplo,
[mickeymouse@mycomputer mickeymouse]$ mv miarchivo.txt
documentos

Aqu miarchivo.txt se mueve al directorio documentos. El archivo ya


no existir ms en el directorio mickeymouse.
Fin de Uso de Comando 4.8
Uso de Comando 4.9
Un archivo puede ser eliminado usando el comando rm, siglas en ingls de la palabra
remove (eliminar).
Sintaxis de rm:

rm [opcin] archivo

[mickeymouse@mycomputer mickeymouse]$ rm miarchivo.txt

Fundamentos de Linux y Sistemas de Archivos

Unidad 4: La Estructura de Archivos Linux 73

Copyright IBM Corp. 2006


Los materiales del curso no pueden ser reproducidos total o
parcialmente sin el permiso escrito previo de IBM.

Fundamentos de Linux

Gua del Estudiante

Esto elimina miarchivo.txt del directorio mickeymouse. Se puede


eliminar archivos desde cualquier parte del sistema siempre que se tengan
los permisos necesarios para hacerlo. Se aprender sobre esto en la
siguiente seccin. Si hay ms de un enlace al archivo, rm slo elimina el
enlace actual. El archivo se elimina completamente del sistema cuando se
eliminan todos los enlaces.
El comando rm r se puede usar para eliminar el contenido de los
subdirectorios recursivamente. As, el argumento de rm r en el ejemplo
mostrado, es un directorio y no un archivo.
Sin embargo, los usuarios deben ser muy cuidadosos al usar el comando
con r. El comando rm r tambin puede tomar un archivo como
argumento. El comando con la opcin r opera de la siguiente forma:
Si el argumento es un archivo, entonces simplemente elimina el archivo. Si
el argumento es un directorio, entonces simplemente elimina el contenido
del directorio y el directorio mismo sin ningn aviso.
Fin de Uso de Comando 4.9
Algunos comandos como pr, rm, ls y muchos otros pueden usar comodines en los
nombres de archivo. Dos de los ms usados son * y ?, donde * significa "cualquier
cadena de caracteres " y ? equivale a 'un carcter cualquiera'. Vea el siguiente ejemplo:
[mickeymouse@mycomputer mickeymouse]$ ls *.txt
Este comando mostrar todos los archivos con la extensin .txt.
[mickeymouse@mycomputer mickeymouse]$ ls chap*
El comando anterior, por otro lado, mostrar los archivos que tienen los cuatro primeros
caracteres como chap. La cadena chap puede estar seguida de cero o ms caracteres.
[mickeymouse@mycomputer mickeymouse]$ ls chap?
Este ejemplo mostrar todos los archivos que tienen los cuatro primeros caracteres
como chap, pero seguidos por slo un carcter.

7. Permisos de Archivo
Cada archivo en Linux tiene un conjunto de permisos asociados. Estos permisos le
dicen al sistema quin puede hacer qu con el archivo. Los permisos ayudan a asegurar
que los datos almacenados en el archivo no sean daados por otros.
Linux divide a los usuarios en tres categoras:

Usuario.

Miembro de un grupo de usuarios.

Otros usuarios.

Unidad 4: La Estructura de Archivos Linux

Fundamentos de Linux y Sistemas de Archivos 74

Copyright IBM Corp. 2006


Los materiales del curso no pueden ser reproducidos total o
parcialmente sin el permiso escrito previo de IBM.

Gua del Estudiante

Fundamentos de Linux

Los grupos de usuario contienen dos o ms usuarios pertenecientes a un grupo


particular, tal como las personas que trabajan en el mismo proyecto. Normalmente
cuando el administrador del sistema crea cuentas para los usuarios, ellos son asociados
a un grupo.
Para cada categora, el sistema mantiene tres tipos de permisos: lectura, escritura y
ejecucin. De esta manera, hay 3 categoras y 3 permisos para cada categora,
resultando un total de 9 permisos que pueden establecerse para un archivo. Si slo se
otorga permiso de lectura a los usuarios sobre un archivo, entonces ellos slo pueden
leer el contenido del archivo, pero no pueden realizar ninguna modificacin en l.
Linux asigna diferentes valores para estos tres tipos de permisos:

4 para lectura.

2 para escritura.

1 para ejecucin.

El sistema usa el sistema de numeracin octal para establecer los permisos. Este
sistema tambin se llama sistema de base-8. Tiene 8 dgitos validos, 0,1,2,3,4,5,6 y 7.
Un nmero octal vlido es una combinacin de uno o ms de cualquiera de los dgitos
validos de 0 a 7. El nmero 456 es un nmero octal vlido, pero 458 no. Es importante
notar que 456 en octal NO es lo mismo que 456 en decimal.
Con los ocho dgitos, ocho combinaciones diferentes son posibles para cada categora.
0 --1 --x

ni lectura, ni escritura, ni permiso de ejecucin (permiso sin sentido!)


slo ejecucin

2 -w3 -wx
4 r--

slo escritura
escritura y ejecucin
slo lectura

5 r-x
6 rw7 rwx

lectura y ejecucin
lectura y escritura
lectura, escritura y ejecucin

r indica lectura (read), w indica escritura (write) y x indica ejecucin (execute)


Se presenta un ejemplo. El administrador del sistema quiere dar el siguiente permiso:

Todos los permisos al usuario.

Permiso de lectura y ejecucin para el grupo al que pertenece el usuario.

Permiso de slo lectura para los otros.

Los permisos en octal se escribirn como sigue:

7 para el usuario.

5 para el grupo.

4 para los otros.

Fundamentos de Linux y Sistemas de Archivos

Unidad 4: La Estructura de Archivos Linux 75

Copyright IBM Corp. 2006


Los materiales del curso no pueden ser reproducidos total o
parcialmente sin el permiso escrito previo de IBM.

Fundamentos de Linux

Gua del Estudiante

De ese modo el permiso se escribe 754.


Linux proporciona un comando chmod (siglas en ingls de change mode) para asignar
permisos a los archivos y directorios y para cambiar los permisos ya otorgados.
Uso de Comando 4.10
Sintaxis de chmod:

chmod [opcin] permiso archivo

[mickeymouse@mycomputer mickeymouse]$ chmod 754 miarchivo.txt


[mickeymouse@mycomputer mickeymouse]$

El comando anterior otorga permisos de lectura, escritura y ejecucin para


el usuario; lectura y ejecucin para el grupo y slo lectura para los otros.
Pero no tiene sentido dar permisos de ejecucin a un archivo de texto. Los
archivos de texto slo pueden ser ledos y modificados. Ejecutar un archivo
es correr un comando o un programa. Asuma que se ha escrito un
mifecha.c y que se ha creado un programa ejecutable mifecha.out
despus de compilar y enlazar. No se puede usar el siguiente comando:
[mickeymouse@mycomputer mickeymouse]$ mifecha.c,

Sin embargo, se puede usar el comando dado a continuacin:


[mickeymouse@mycomputer mickeymouse]$ mifecha.out

mifecha.c es un archivo de texto y slo puede ser visualizado a travs del


comando cat o un editor. Ahora, para el archivo mifecha.out, se puede
asignar el siguiente permiso:
[mickeymouse@mycomputer mickeymouse]$ chmod 710 mifecha.out

Tradicionalmente, los archivos ejecutables en Linux tiene la extensin


.out. Al dar el comando anterior, se ha asignado todos los permisos al
usuario. El usuario normalmente tiene todos los permisos por defecto para
un archivo (6 para archivos de texto y 7 para ejecutables). Se ha asignado
permiso de ejecucin para el grupo. Se quiere que el grupo pueda ejecutar
nuestro programa. Pero no se ha asignado permisos para los otros. Ningn
otro usuario en el sistema podr ni siquiera ejecutar este programa. De esta
manera se asegura que sus archivos no sean estropeados por otros.
Nota: Slo el dueo de un archivo puede asignar sus permisos.
Fin de Uso de Comando 4.10
Ejecutar un archivo es directo. Pero, qu se quiere decir con ejecutar un directorio? Si
no se asigna un permiso de ejecucin a un directorio, los usuarios no podrn usar el
nombre del directorio dentro de una ruta.
Sea la siguiente sentencia:

Unidad 4: La Estructura de Archivos Linux

Fundamentos de Linux y Sistemas de Archivos 76

Copyright IBM Corp. 2006


Los materiales del curso no pueden ser reproducidos total o
parcialmente sin el permiso escrito previo de IBM.

Gua del Estudiante

Fundamentos de Linux

[mickeymouse@mycomputer mickeymouse]$ chmod 750 documentos


Esto asigna todos los permisos para el usuario; lectura y ejecucin para el grupo y
ningn permiso para los otros sobre el directorio documentos. Un usuario
perteneciente a la categora de otros no podr hacer ni siquiera lo siguiente (asumiendo
que jerry es un usuario de la categora otros)
[jerry@mycomputer jerry]$ls /home/mickeymouse/documentos
Es posible que mickeymouse tenga todos los permisos para los otros. Pero como el
directorio documentos est protegido, el usuario jerry no puede listar el contenido
del directorio documentos perteneciente a mickeymouse.
Los permisos de lectura y escritura en los directorios son simples. Leer es simplemente
intentar ver el contenido del directorio. Escribir es la posibilidad de copiar, crear o
modificar documentos en el directorio.
Sea el siguiente ejemplo:
[mickeymouse@mycomputer mickeymouse]$ chmod 751 documentos
Aunque se ha dado el permiso de ejecucin a los otros sobre documentos, el usuario
jerry no podr listar el contenido del directorio documentos, pues no tiene permiso
de lectura. Sin embargo si podr usar el nombre del directorio en una ruta.
Sin permiso de escritura el usuario no podr llevar a cabo las siguientes tareas:

Copiar un archivo dentro del directorio.

Crear un nuevo archivo en el directorio.

Cuando se crea o copia un archivo en un directorio, el sistema debe escribir en el inodo


del archivo directorio, el cual no tiene permiso de escritura.
Similarmente, si a un directorio slo se le dan permisos de lectura y ejecucin, el
usuario no puede copiar archivos de otros directorios a ese directorio dado que el
directorio no tiene permiso de escritura.
Slo la prctica en un sistema operativo Linux le ayudar a entender mejor las
combinaciones de permisos y sus efectos.

Fundamentos de Linux y Sistemas de Archivos

Unidad 4: La Estructura de Archivos Linux 77

Copyright IBM Corp. 2006


Los materiales del curso no pueden ser reproducidos total o
parcialmente sin el permiso escrito previo de IBM.

Fundamentos de Linux

Gua del Estudiante

Resumen
Ahora que ha completado esta unidad, Ud. debe ser capaz de:

Explicar cmo Linux organiza su estructura de archivos.

Describir el uso de los comandos de archivos.

Discutir los directorios y los comandos relacionados a directorios.

Explicar cmo se otorgan permisos a los archivos.

Unidad 4: La Estructura de Archivos Linux

Fundamentos de Linux y Sistemas de Archivos 78

Copyright IBM Corp. 2006


Los materiales del curso no pueden ser reproducidos total o
parcialmente sin el permiso escrito previo de IBM.

Gua del Estudiante

Fundamentos de Linux

Unidad 4: Examen de Autoevaluacin


La estructura de directorios que se usar para las preguntas se presenta a continuacin:
/ (root)

home

dick

tom

documentos

programas

harry

proy.txt

chp1.txt

1) En el sistema operativo Linux, los directorios son un tipo especial de archivos.


a) Verdadero
b) Falso
2) En cul de los siguientes se guarda la informacin administrativa de un archivo
almacenado?
a) Archivos
b) Directorios
c) Inodos
d) Ninguna de las anteriores
3) Asumiendo que actualmente se est trabajando en el directorio programas, el
siguiente comando es vlido? cd home/dick/documentos
a) Verdadero
b) Falso

Fundamentos de Linux y Sistemas de Archivos

Unidad 4: La Estructura de Archivos Linux 79

Copyright IBM Corp. 2006


Los materiales del curso no pueden ser reproducidos total o
parcialmente sin el permiso escrito previo de IBM.

Fundamentos de Linux

Gua del Estudiante

4) Asumiendo que se est trabajando en el directorio dick. Cul de los siguientes


se muestra en la salida estndar cuando se ejecuta el comando pwd?
a) /dick
b) /home/dick
c) home/dick
d) /home/dick$
5) Cul de las siguientes opciones para ls muestra el nmero de inodo del archivo?
a) l
b) a
c) i
d) n
6) Cules de los siguientes comandos borra un directorio vacio?
a) rmdir
b) rm
c) mv
d) rm r
7) Cul de los siguientes comandos cambia el nombre a un archivo?
a) mv
b) cp
c) ren
d) rm
8)

ls l doc.* muestra la lista completa de todos los archivos de nombre doc


______________.
a) Que no tienen extensin
b) Junto con su nmero de inodo
c) Con cualquier nombre de extensin
d) Ninguna de las anteriores

Unidad 4: La Estructura de Archivos Linux

Fundamentos de Linux y Sistemas de Archivos 80

Copyright IBM Corp. 2006


Los materiales del curso no pueden ser reproducidos total o
parcialmente sin el permiso escrito previo de IBM.

Gua del Estudiante

Fundamentos de Linux

9) Cul de los siguientes permisos se establece con el nmero octal 641?


a) Lectura, escritura y ejecucin para el dueo, escritura para el grupo y
ejecucin para los otros
b) Lectura y escritura para el dueo, escritura y ejecucin para el grupo y
ejecucin para los otros
c) Lectura, escritura y ejecucin para el dueo, lectura para el grupo y ejecucin
para los otros
d) Lectura y escritura para el dueo, lectura para el grupo y ejecucin para los
otros
10) Asignar el permiso 751 a un directorio permite que los usuarios pertenecientes a la
categora de otros usen el nombre del directorio en una ruta, pero no puedan leer
ni escribir en l.
a) Verdadero
b) Falso

Fundamentos de Linux y Sistemas de Archivos

Unidad 4: La Estructura de Archivos Linux 81

Copyright IBM Corp. 2006


Los materiales del curso no pueden ser reproducidos total o
parcialmente sin el permiso escrito previo de IBM.

Fundamentos de Linux

Gua del Estudiante

Respuestas a Unidad 4: Examen de Autoevaluacin


1) a
2) c
3) b
4) b
5) c
6) a y d
7) a
8) c
9) d
10) a

Unidad 4: La Estructura de Archivos Linux

Fundamentos de Linux y Sistemas de Archivos 82

Copyright IBM Corp. 2006


Los materiales del curso no pueden ser reproducidos total o
parcialmente sin el permiso escrito previo de IBM.

Gua del Estudiante

Fundamentos de Linux

Unidad 5: Lab. Estructura de Archivos en


Linux.
Objetivos de Aprendizaje
Al final de esta unidad, Ud. ser capaz de:

Crear una estructura de directorios.

Usar los diferentes comandos relacionados a archivos y directorios.

Establecer permisos sobre archivos.

Fundamentos de Linux y Sistemas de Archivos


Unidad 5: Lab. Estructura de Archivos en Linux.
Copyright IBM Corp. 2006
Los materiales del curso no pueden ser reproducidos total o
parcialmente sin el permiso escrito previo de IBM.

83

Fundamentos de Linux

Gua del Estudiante

Ejercicios de Laboratorio
1) En su directorio home, crear los siguientes directorios.
linux
cprogramas
datastructures
documentos
En linux crear
proyectos
asignaciones
En asignaciones de linux crear
unit1
unit2
En cprogramas crear
proyectos
asignaciones
2) Usando ed crear un archivo llamado miprimerarchivo.txt y aada la pregunta
anterior en el archivo.
3) En cul directorio fue creado miprimerarchivo.txt y por qu?
4) Ingrese a proyectos dentro de linux (desde su ubicacin actual) y cree un
archivo, usando cat. Nombre el archivo como simple.txt.
5) Copiar el contenido de simple.txt con el mismo nombre al directorio
documentos. Haga esto dos veces. Primero realice la copia estando en el
directorio linux. Para la segunda, vaya al directorio documentos y copie
nuevamente. Esta vez coloque otro nombre al archivo, nuevosimple.txt.
6) Elimine simple.txt.
7) En el directorio documentos, ejecute ls y vea el listado completo de los archivos
en este directorio. Asigne permisos a nuevosimple.txt de tal manera que el
dueo tenga permiso de lectura y escritura, el grupo tenga slo lectura y los otros
no tengan ningn permiso.
8) Finalmente, intente ejecutar todos los comandos aprendidos en las dos unidades
anteriores. Revise las pginas de man para las opciones de los comandos y
practquelos.
Nota: Algunas de las preguntas en el ejercicio pueden depender de las preguntas
anteriores. Por lo tanto, siga las instrucciones en cada pregunta cuidadosamente.

Unidad 5: Lab. Estructura de Archivos en Linux.


Fundamentos de Linux y Sistemas de Archivos
Copyright IBM Corp. 2006
Los materiales del curso no pueden ser reproducidos total o
parcialmente sin el permiso escrito previo de IBM.

84

Gua del Estudiante

Fundamentos de Linux

Unidad 6: El Editor vi
Objetivos de Aprendizaje
Al final de esta unidad, Ud. ser capaz de:

Discutir cmo el editor visual vi trabaja en Linux.

Describir las diferentes categoras de comandos.

Explicar el uso de los comandos para editar archivos.

Fundamentos de Linux y Sistemas de Archivos

Unidad 6: El Editor vi 85

Copyright IBM Corp. 2006


Los materiales del curso no pueden ser reproducidos total o
parcialmente sin el permiso escrito previo de IBM.

Fundamentos de Linux

Gua del Estudiante

1. Introduccin
Los editores se usan principalmente para crear documentos. Linux ofrece varios
editores; algunos de ellos son: vi, emacs, ed, y ex. Los editores como ed y ex se
los conoce como editores de 'lnea'. Mientras que ed permite realizar la insercin,
eliminacin, modificacin etc., lnea por lnea, vi ofrece una facilidad de pantalla
completa para crear y editar documentos. Se ha discutido en detalle acerca de ed y sus
capacidades, en la Unidad 4 - La Estructura de Archivos Linux. En esta unidad, se
discutir el editor vi.
El trmino 'vi' viene de visual editor'. vi (en ingls 'vee eye') es el nico editor que se
encuentra en casi cada instalacin Unix/Linux. Fue escrito originalmente en la
Universidad de California en Berkeley y sus versiones ahora se pueden encontrar en
casi todas las ediciones de proveedores de Linux. vi empez como el editor de lnea
ex, y evolucion a lo largo de los aos hasta convertirse en un poderoso editor visual.
ex ahora existe en forma separada y es un modo de edicin especial de vi. A travs de
vi se pueden iniciar los comandos de ex.
vi proporciona un amplio conjunto de comandos para la insercin, eliminacin y
modificacin de texto. Usando expresiones regulares se pueden realizar poderosas
bsquedas y reemplazos de texto.
vi proporciona tres modos en que un usuario puede operar. A continuacin se
aprendern estos modos.

2. Modos en vi
vi proporciona tres modos: modo de comando, modo de entrada y modo ex. Cuando
se invoca el programa vi, est en el modo comando. En este modo, slo pueden
usarse comandos vi vlidos. En el modo de entrada, se puede ingresar, eliminar y
modificar texto. Mientras se est en modo de entrada, si se quiere ingresar un comando,
se puede regresar al modo de comando presionando la tecla <Esc>. Una vez ah, se
puede ingresar cualquiera de los comandos de vi. Del modo de comando, se puede ir a
los modos de entrada o ex. Cuando se est en el modo ex, se puede invocar cualquiera
de los comandos del editor ex. Normalmente, la mayora de los comandos para grabar
usados en vi son comandos ex.
La Figura 6.1 muestra la relacin entre los tres modos.

Unidad 6: El Editor vi

Fundamentos de Linux y Sistemas de Archivos 86

Copyright IBM Corp. 2006


Los materiales del curso no pueden ser reproducidos total o
parcialmente sin el permiso escrito previo de IBM.

Gua del Estudiante

Fundamentos de Linux

Figura 6.1: Modos del Editor vi

Las posibilidades de navegacin de un modo a otro son:


Del modo de comando al modo de entrada.
Del modo de comando al modo ex presionando la tecla : (dos puntos).
Del modo de entrada al modo de comando presionando la tecla Esc.
Del modo de entrada al modo ex, slo posible a travs del modo de comando.
Una vez que se invoca un comando de ex presionando : (dos puntos), el editor regresa
al modo de comandos.

3. Fundamentos de vi
Un editor vi puede abrirse ingresando vi seguido por un nombre de archivo como se
muestra en el comando dado a continuacin:
/home/mickeymouse]$ vi poem.txt
Aparece la ventana del editor vi como se muestra en la Figura 6.2.

.
Figura 6.2: Editor vi
Fundamentos de Linux y Sistemas de Archivos

Unidad 6: El Editor vi 87

Copyright IBM Corp. 2006


Los materiales del curso no pueden ser reproducidos total o
parcialmente sin el permiso escrito previo de IBM.

Fundamentos de Linux

Gua del Estudiante

El editor vi muestra el nombre del archivo en la parte inferior de la ventana. Se


muestra [New File] porque es un archivo recin creado. Por defecto, aparece una tilde
(~) en el lado izquierdo de la ventana del editor.
vi estar en el modo de comandos al invocarlo.
A continuacin, se explica cmo puede escribirse texto en el editor vi.
Se usar lneas de texto de ejemplo para ilustrar el uso de los comandos. En esta
unidad, se aprender acerca de los comandos que realizan las siguientes operaciones
en un archivo:

Insertar texto.

Guardar texto.

Eliminar texto.

Movimiento en pantalla.

Modificar texto.

Copiar y pegar texto.

Cortar y pegar texto.

Reemplazar texto.

El patrn adoptado en esta unidad para explicar los primeros tres comandos
importantes que son insertar, guardar y eliminar es como sigue:

Una breve introduccin al tema.

Texto de ejemplo para ilustrar los comandos.

Una tabla, que muestra los comandos, propsito de los comandos y ejemplos
usando el texto de ejemplo.

Explicar los diferentes comandos tomando el poema ejemplo dado a


continuacin:

Ejemplo de Poema:
I wanna brek free
From the sackles of this society,
From the rules and regulations governing it,
From its prevailing age-old.
Nota: Hay palabras incorrectas en la primera (brek) y segunda (sackles) lneas. Esto se
hace a propsito para entender el uso de los comandos de eliminacin de texto ms
adelante en esta unidad.

4. Insercin de Texto
En esta seccin, se entender como ingresar texto en el editor vi. No se puede
ingresar texto directamente en la ventana del editor vi, dado que el texto no aparecer

Unidad 6: El Editor vi

Fundamentos de Linux y Sistemas de Archivos 88

Copyright IBM Corp. 2006


Los materiales del curso no pueden ser reproducidos total o
parcialmente sin el permiso escrito previo de IBM.

Gua del Estudiante

Fundamentos de Linux

en la pantalla. A fin de iniciar el ingreso de texto en este editor, se tiene que ingresar
uno de los comandos de insercin.
Texto Ejemplo:
mickeymouse
La Tabla 6.1 ilustra los diferentes comandos de insercin y su propsito. Se usar 'key'
como el texto a insertar.
Comando

Propsito

Inserta a la izquierda
del cursor

Ejemplo
Si el cursor est en y, entonces inserta el texto a
la izquierda de y.
Resultado: mickekeyymouse

Inserta a la derecha
del cursor

Si el cursor est en y, entonces inserta el texto a


la derecha de y.
Resultado: mickeykeymouse

Inserta al inicio de la
lnea

Inserta el texto a la izquierda de la primera letra


m de la palabra 'mickeymouse', sin importar la
posicin del cursor.
Resultado: keymickeymouse

Inserta al final de la
lnea

Inserta el texto a la derecha de la primera letra e


de la palabra 'mickeymouse', sin importar la
posicin del cursor.
Resultado: mickeymousekey

Abre una nueva lnea


y agrega texto abajo
la lnea actual

Ayuda a escribir
'mickeymouse'.

una

nueva

lnea

bajo

Resultado: mickeymouse
<lnea en blanco abierta para insertar texto>

Abre una nueva lnea


y
agrega
texto
encima de la lnea
actual

Ayuda a escribir
'mickeymouse'.

una

nueva

lnea

sobre

Resultado: <lnea en blanco abierta para insertar


texto >
mickeymouse

Tabla 6.1: Comandos de Insercin vi

A continuacin se aprender como usar los comandos de insercin de vi listados en la


Tabla 6.1, usando el poema de ejemplo. Cuando se ingresa la letra i, el estado INSERT
aparece en la parte inferior de la ventana, como se muestra en la Figura 6.3.

Fundamentos de Linux y Sistemas de Archivos

Unidad 6: El Editor vi 89

Copyright IBM Corp. 2006


Los materiales del curso no pueden ser reproducidos total o
parcialmente sin el permiso escrito previo de IBM.

Fundamentos de Linux

Gua del Estudiante

El comando i, cuando el editor vi se abre por primera vez, permite ingresar texto
cambiando del modo de comando al modo de insercin. Ahora, se ingresar el poema y
luego se regresar al modo de comando presionando la tecla <Esc>.

Figura 6.3: Modo de Insercin vi

Al terminar el ingreso inicial de las cuatro lneas del poema, el cursor estar posicionado
bajo el final de la ltima lnea. Asuma que ahora se quiere agregar una palabra al
poema. Se ingresar el comando A y luego se ingresa 'prototype'. La palabra se
agregar al final como se muestra a continuacin:
I wanna brek free
From the sackles of this society,
From the rules and regulations governing it,
From its prevailing age-old. prototype.
Si se quiere agregar la palabra 'prototype' al inicio de la lnea, se usar el comando I.
A continuacin se aprender a corregir el error de la palabra incorrecta 'brek' en el
poema. Se puede usar cualquier comando de insercin para la correccin de texto.
Dependiendo de que palabra se necesite corregir, se puede usar a, i, A o I.
Se debe agregar una 'a', para cambiar brek por break. Usando las teclas del cursor
para moverse por la pantalla, se posicionar el cursor bajo la letra 'e' de 'brek' y se
ingresar a (el comando para insercin). El editor vi ahora est en modo de insercin.
Se ingresar la letra a.
La otra forma de hacer esta correccin es mover el cursor hasta 'k', presionar el
comando 'i' e ingresar 'a'.
El poema corregido se ver como se muestra en la Figura 6.4.
Unidad 6: El Editor vi

Fundamentos de Linux y Sistemas de Archivos 90

Copyright IBM Corp. 2006


Los materiales del curso no pueden ser reproducidos total o
parcialmente sin el permiso escrito previo de IBM.

Gua del Estudiante

Fundamentos de Linux

Figura 6.4: Modificando el Texto Insertado

A continuacin se va a aprender acerca de cmo guardar el trabajo que se ha creado.

5. Guardar un Archivo
Usando los comandos de insercin, se puede agregar texto y hacer correcciones al
texto. Para guardar en el almacenamiento secundario, se necesita usar los comandos
para guardar disponibles en vi, a travs de ex. La Tabla 6.2 muestra un conjunto de
comandos vi disponibles para guardar un archivo. Los comandos para guardar
mostrados en la tabla son comandos para guardar de ex, que son usados en vi.
Comando

Propsito

Guardar y continuar el trabajo

wq

Guardar y salir de vi

q!

Salir sin guardar el trabajo

Tabla 6.2: Comandos para Guardar de vi

En el ejemplo, para guardar el poema, asumiendo que se est en modo de insercin, se


debe cambiar al modo de comando. Cuando se cambia al modo de comando, el
INSERT mostrado en la parte inferior de la pantalla desaparece. Usando los comandos
para guardar archivos disponibles en ex, se pasar a modo ex presionando : (dos
puntos). Aparece : al final de la pantalla de vi. Luego, se ingresar el comando w para
guardar el trabajo. El archivo ser guardado en el archivo poem.txt en el medio de
almacenamiento secundario.
La Figura 6.5 ilustra el uso de los comandos para guardar.

Fundamentos de Linux y Sistemas de Archivos

Unidad 6: El Editor vi 91

Copyright IBM Corp. 2006


Los materiales del curso no pueden ser reproducidos total o
parcialmente sin el permiso escrito previo de IBM.

Fundamentos de Linux

Gua del Estudiante

Figura 6.5: Comandos para Guardar Archivos


Nota: En caso del comando :q!, si se olvida el !, vi no lo dejar salir sin guardar su trabajo.

6. Eliminar Texto
En esta seccin, se aprender cmo eliminar texto en el editor vi y cules son los
comandos que permiten eliminar una palabra o una lnea completa.
Texto Ejemplo:
Hi mickeymouse

La Tabla 6.3 ilustra los comandos de eliminacin y sus propsitos.


Comando
x

Propsito

Ejemplo

Elimina un carcter,
donde el cursor est
ubicado.

Si el cursor est en k, entonces elimina k.

Elimina
desde
la
posicin actual del
cursor hasta el final
de la palabra

Si el cursor est en y, entonces elimina


'ymouse'.

dd

Elimina la lnea actual

Si el cursor est en la lnea 'Hi mickeymouse',


entonces elimina 'Hi mickeymouse'.

Elimina
desde
la
posicin actual del
cursor hasta el final
de la lnea

Si el cursor est en i' de 'Hi', entonces elimina


'i mickeymouse'.

dw

Resultado: Hi miceymouse

Resultado: Hi micke

Resultado: H

Tabla 6.3: Comandos de Eliminacin de Texto de vi

Regresando al poema de ejemplo ilustrado en la Figura 6.5, en la lnea cuatro, luego de


la palabra 'age-old', hay un . (punto). Esto es incorrecto y se quiere eliminar. Se ver
como se puede hacer esto.

Unidad 6: El Editor vi

Fundamentos de Linux y Sistemas de Archivos 92

Copyright IBM Corp. 2006


Los materiales del curso no pueden ser reproducidos total o
parcialmente sin el permiso escrito previo de IBM.

Gua del Estudiante

Fundamentos de Linux

Simplemente se mueve el cursor hasta el carcter punto y se presiona x. El carcter


ser eliminado.
Asuma que ahora se quiere eliminar la palabra sackles' en la segunda lnea del
mismo ejemplo. Para hacer esto, se llevar el cursor hasta la primera letra de dicha
palabra (la letra s en este caso) y luego se ingresa el comando dw. La palabra ser
eliminada. El texto ahora se ver como se muestra en la Figura 6.6.
El texto mostrado en la figura es luego de remover el punto (.) y 'sackels'.

Figura 6.6: Comando de Eliminacin de Texto (x y dw)

Se presentar otro ejemplo. Coloque el cursor bajo la letra l en la palabra rules'


(tercera lnea). Ahora si ingresa el comando dw, elimina las letras a partir de l hasta
el final de la palabra, pero ru permanece, como se ilustra en la Figura 6.7.

Fundamentos de Linux y Sistemas de Archivos

Unidad 6: El Editor vi 93

Copyright IBM Corp. 2006


Los materiales del curso no pueden ser reproducidos total o
parcialmente sin el permiso escrito previo de IBM.

Fundamentos de Linux

Gua del Estudiante

Figura 6.7: Comando de Eliminacin de Texto (dw)

Si se desea eliminar una lnea completa, se puede hacer colocando el cursor al inicio de
la lnea e ingresando el comando dd. En el ejemplo, si se quiere eliminar la segunda
lnea, se mover el cursor hasta el inicio de la segunda lnea y se ingresar el comando
dd. La lnea completa ser eliminada. Lo que queda en la pantalla se muestra en la
Figura 6.8.

Figura 6.8: Comando de Eliminacin de Texto (dd)

vi proporciona una facilidad llamada modificadores de comando para eliminar ms de


una letra, palabra o lnea usando el mismo comando. Los modificadores de comando
mejoran y aumentan el poder de los comandos de eliminacin de texto.
La Tabla 6.4 muestra los modificadores de comando y sus usos.

Unidad 6: El Editor vi

Fundamentos de Linux y Sistemas de Archivos 94

Copyright IBM Corp. 2006


Los materiales del curso no pueden ser reproducidos total o
parcialmente sin el permiso escrito previo de IBM.

Gua del Estudiante

Fundamentos de Linux

Texto Ejemplo:
Hello Mickeymouse
Hello Donald
Hello Asterik
Comando

Propsito

Ejemplo

nx

Elimina n caracteres
a partir de la posicin
del cursor

Si el cursor est enc de 'Hello Mickeymouse'


en la primera lnea, entonces 3x elimina 'cke'.
Resultado: Hello Miymouse
Hello Donald
Hello Asterik

dnw

Elimina n palabras
de la posicin actual
del cursor

Si el cursor est en e de 'Hello' de la primera


lnea,
entonces
d2w
elimina
'ello'
y
'Mickeymouse'.
Resultado: H
Hello Donald
Hello Asterik

ndd

Elimina n lneas
desde la posicin
actual del cursor

Si el cursor est en H de 'Hello' en la segunda


lnea, entonces 2dd elimina 'Hello Donald' y
'Hello Asterik'.
Resultado: Hello Mickeymouse

DG

Elimina desde la
posicin actual del
cursor hasta el final
de dicha lnea y lleva
al cursor hasta el
final del archivo

Si el cursor est en M de 'Mickeymouse' en la


primera lnea, entonces elimina 'Mickeymouse', y
lleva el cursor al final del archivo.
Resultado: Hello
Hello Donald
Hello Asterik

DnG

Elimina
la
lnea
donde el cursor est
presente, y mueve el
cursor al inicio de la
nesima lnea

Si la posicin actual del cursor es H de 'Hello


Donald', entonces D1G elimina 'Hello Donald' y
lleva el cursor a la letra H de 'Hello
Mickeymouse'.
Resultado:
Hello Mickeymouse
Hello Asterik

D$

Elimina a partir de la
posicin actual hasta
el final de
la lnea

Si el cursor est en s de 'Asterik', entonces


elimina sterik.
Resultado: Hello Mickeymouse
Hello Donald
Hello A

Fundamentos de Linux y Sistemas de Archivos

Unidad 6: El Editor vi 95

Copyright IBM Corp. 2006


Los materiales del curso no pueden ser reproducidos total o
parcialmente sin el permiso escrito previo de IBM.

Fundamentos de Linux
dn$

Gua del Estudiante

Elimina desde la
posicin actual del
cursor hasta el final
de
la
lnea
n
especificada

Si el cursor est en y de 'Hello Mickeymouse',


entonces d2$ elimina ymouse y 'Hello Donald'.
Resultado: Hello Micke
Hello Asterik

Tabla 6.4: Modificadores de Comandos vi

Para eliminar tres letras de la palabra wanna en la primera lnea del poema, se mueve
el cursor bajo la letra w y se ingresa el comando 3x. Los tres caracteres desde la
posicin actual del cursor se eliminarn. La pantalla se ver como en la Figura 6.9.

Figura 6.9: Modificadores de Comandos vi (3x)

En el poema, para eliminar la palabra 'ruand regulations', se coloca el cursor al


inicio de la palabra (letra r en este caso) y luego se ingresa el comando 2dw. Las dos
palabras son eliminadas.
Para eliminar las dos primeras lneas del poema, se coloca el cursor bajo Ien la
primera lnea y se ingresa el comando d2$. La lnea ser removida y el poema se ver
como se muestra en la Figura 6.10.

Unidad 6: El Editor vi

Fundamentos de Linux y Sistemas de Archivos 96

Copyright IBM Corp. 2006


Los materiales del curso no pueden ser reproducidos total o
parcialmente sin el permiso escrito previo de IBM.

Gua del Estudiante

Fundamentos de Linux

Figura 6.10: Modificadores de Comando vi (d2$)

Una vez estudiados los comandos bsicos, se continuar con el aprendizaje del editor
vi en detalle. En la siguiente seccin, se aprender como mover una parte del archivo
a otra parte usando los comandos de movimiento de cursor de vi.

7. Comandos de Movimiento del Cursor


Se iniciar esta seccin con movimientos bsicos como moverse arriba y abajo, o
izquierda y derecha desde la posicin actual del cursor usando los comandos del editor
vi.
Nota: Tambin se pueden usar las teclas de direccin para mover el cursor en la
pantalla.

7.1 Movimiento del Cursor - Comandos Bsicos


La Tabla 6.5 presenta los comandos bsicos para el movimiento. Estos comandos se
usan para cambiar la posicin del cursor en la ventana del editor vi.
Texto Ejemplo:
Cricket
Football
Hockey

Fundamentos de Linux y Sistemas de Archivos

Unidad 6: El Editor vi 97

Copyright IBM Corp. 2006


Los materiales del curso no pueden ser reproducidos total o
parcialmente sin el permiso escrito previo de IBM.

Fundamentos de Linux

Gua del Estudiante

Comando

Propsito

Ejemplo

Un espacio a la
izquierda de la posicin
actual del cursor

Si el cursor est en la c de Hockey, lleva al


cursor a la o de Hockey.

Un espacio a la
derecha de la posicin
actual del cursor

Si el cursor est en la F de Football,


lleva el cursor a la primera o de Football.

Un espacio debajo de
la posicin actual del
cursor

Si el cursor est en la r de Cricket, lleva


el cursor a la primera o de 'Football'.

Un espacio arriba de la
posicin actual del
cursor

Si el cursor est en la k de 'Hockey' lleva el


cursor a t de 'Football'.

Tabla 6.5: Movimiento del Cursor - Comandos Bsicos

Nota: Si se intenta un movimiento imposible, tal como dar el comando k cuando el


cursor est en la primera lnea, la pantalla parpadear o el terminal emitir un beep.
Esto no debe causar alarma dado que el archivo no se daa.

7.2 Movimiento del Cursor - Comandos de Palabras


La Tabla 6.6 presenta los comandos de movimientos del cursor por palabras.
Texto Ejemplo:
welcome to Linux
Comando
eE

wW

bB

Propsito
Mueve el cursor al final
de la siguiente palabra
cuando el cursor est al
final de la palabra actual.
Caso contrario al final de
la misma palabra
Mueve el cursor al inicio
de la siguiente palabra
Mueve el cursor al inicio
de la palabra anterior slo
cuando el cursor est al
inicio de la palabra actual,
caso contrario al inicio de
la misma palabra

Ejemplo
Si el cursor est en la c de welcome, lleva el
cursor a e al final de welcome. Si el cursor
est en o de to, lleva el cursor a x de
Linux.

Si el cursor est en la o de welcome, lleva el


cursor a t de to.
Si el cursor est en la m de welcome, lleva el
cursor a w de welcome. Si el cursor est en
la t de to, lleva el cursor a w de
welcome.

Tabla 6.6: Movimiento del Cursor - Comandos de Palabra

Unidad 6: El Editor vi

Fundamentos de Linux y Sistemas de Archivos 98

Copyright IBM Corp. 2006


Los materiales del curso no pueden ser reproducidos total o
parcialmente sin el permiso escrito previo de IBM.

Gua del Estudiante

Fundamentos de Linux

7.3 Movimiento del Cursor - Comandos de lnea


La Tabla 6.7 presenta los comandos de movimientos del cursor por lnea
Texto Ejemplo:
This is test line
This is next test line
Comando Propsito

Ejemplo

0 (Cero) Mueve al inicio de la Si el cursor est en la l de 'line' en la primera


lnea
lnea, lleva el cursor a T de 'This'.
^
Mueve a la primera Si el cursor est en la e de 'test' en la primera
palabra de la lnea
lnea, lleva el cursor a T de 'This'.
$
Mueve al final de la Si el cursor est en la i de 'This' en la primera
lnea
lnea, lleva el cursor a e de 'line'.
<CR>
Mueve al inicio de la Si el cursor est en la n de 'line' en la primera
siguiente lnea. (CR del lnea, lleva el cursor a T de 'This' en la segunda
ingls 'carriage return'- lnea.
retorno de carro), que
equivale a presionar la
tecla <Enter>
Tabla 6.7: Movimiento del Cursor - Comandos de Lnea

7.4 Movimientos del Cursor - Comandos de Archivo


La Tabla 6.8 presenta los de movimiento del cursor para comandos archivo.
Texto Ejemplo:
This is test line
This is next test line
Comando Propsito
G

1G

Ejemplo

Mueve
al
primer Si el cursor est en la i de 'is' en la primera
carcter de la ltima lnea, lleva el cursor a T de 'This' en la segunda
lnea
lnea.
Mueve
al
primer Si el cursor est en la s de 'test' en la segunda
carcter de la primera lnea, lleva el cursor a T de 'This' en la primera
lnea
lnea.
Tabla 6.8: Movimiento del Cursor - Comandos de Archivo

Fundamentos de Linux y Sistemas de Archivos

Unidad 6: El Editor vi 99

Copyright IBM Corp. 2006


Los materiales del curso no pueden ser reproducidos total o
parcialmente sin el permiso escrito previo de IBM.

Fundamentos de Linux

Gua del Estudiante

7.5 Movimiento del Cursor - Comandos de Pantalla


La pantalla se desplazar automticamente cuando el cursor alcance ya sea el inicio
como el final de la pantalla. Hay algunos comandos adicionales, los cuales permiten
controlar el desplazamiento. Estos comandos se ilustran en la Tabla 6.9.
Comando

Propsito

<ctrl
<ctrl
<ctrl
<ctrl

Avanza (una pantalla completa)


Retrocede (una pantalla completa)
Desplaza hacia abajo (media pantalla)
Desplaza hacia arriba (media pantalla)

f>
b>
d>
u>

Tabla 6.9: Movimiento del Cursor - Comandos de Pantalla

7.6 Movimiento del Cursor Otros Comandos


La Tabla 6.10 presenta otros comandos de movimiento del cursor.
Texto Ejemplo:
This is first line
{
This is second line
}
This is third line
Comando

Propsito

Ejemplo

nG

Mueve el cursor
nmero de lnea n

al

Por ejemplo, 3G lleva el cursor a la tercera


lnea, 'This is second line'.

<ctrl G>

Muestra el nmero de
lnea actual

Si el cursor est en 'This is second


line', entonces se muestra como resultado
el nmero de lnea 3 of 5-60%--col 1.

Mueve el cursor a la llave,


parntesis o corchete
correspondiente

Lleva el cursor de la llave { de apertura a


su correspondiente llave } de cierre. Este
comando tambin sirve para () y [].

n|
(n
seguido
por el
smbolo |)

Mueve el cursor a la
columna n, donde n es un
entero.

Si el cursor est en la s de 'second' en la


tercera lnea, entonces 3| lleva al usuario a
i de 'This' en la tercera lnea.

n1
(n
seguido
por l)

Mueve
el
cursor
n
columnas a la derecha del
cursor

Si el cursor est en la s de 'second' en la


tercera lnea, entonces 4l lleva al usuario a
n de second en la tercera lnea.

Tabla 6.10: Movimiento del Cursor - Otros Comandos

Unidad 6: El Editor vi

Fundamentos de Linux y Sistemas de Archivos 100

Copyright IBM Corp. 2006


Los materiales del curso no pueden ser reproducidos total o
parcialmente sin el permiso escrito previo de IBM.

Gua del Estudiante

Fundamentos de Linux

8. Modificacin de Texto
vi ofrece un conjunto muy grande de comandos para ayudar a cambiar el contenido de
un archivo. En esta seccin, se discutirn algunos de estos comandos.

8.1 Deshacer Cambios


En ocasiones se podra necesitar deshacer los cambios realizados. Los siguientes
comandos restauran el texto antes de los cambios como se muestra en la Tabla 6.11.
Texto Ejemplo:
Atomica
Comando

Propsito

Ejemplo

Deshace
comando

ltimo

Si se agrega 'key' a 'Atomica', revierte al texto


original 'Atomica'.

Deshace los cambios en


la lnea actual

Si se cambia la lnea de 'Atomica' a 'Cell',


revierte al texto previo 'Atomica'

:e!

Editar
de
nuevo.
Restaura el texto al
estado que tena la
ltima vez que se grab.

Si se agrega l a 'Atomica' haciendo


'Atomical' y se graba, este comando revertir
al texto anterior 'Atomica'.

el

Tabla 6.11: Comandos para Deshacer

vi no slo permite deshacer cambios, sino tambin rehacer los cambios.

8.2 Otros Comandos de Modificacin de Texto


vi ofrece comandos, que permiten realizar reemplazos en el texto de manera
instantnea, ahorrando el problema de primero eliminar y luego escribir la nueva
versin. A continuacin se discutir como se usan el resto de los comandos de
modificacin.
Texto Ejemplo:
This Server
This Client
Propsito

Ejemplo

Reemplaza el carcter
donde est situado el
cursor, con una letra

Reemplaza el texto con


el nuevo texto

Si el cursor est en S de 'Server', entonces


ingresar rC reemplaza S con C para hacer
'Cerver'.
Resultado: This Cerver
This Client
Si el cursor est en v de Server, ingresar R
key cambia el texto 'key' por 'ver' para hacer
'Serkey'.
Resultado: This Serkey

Comando

Fundamentos de Linux y Sistemas de Archivos

Unidad 6: El Editor vi 101

Copyright IBM Corp. 2006


Los materiales del curso no pueden ser reproducidos total o
parcialmente sin el permiso escrito previo de IBM.

Fundamentos de Linux

Gua del Estudiante


This Client

cw

Cambia la palabra
actual

c$

Cambia el texto de la
posicin actual hasta el
final de la lnea

cnw
ncw

Cambia las siguientes


n palabras. (Igual como
cw)

cn$
nc$

Cambia hasta el final


de la lnea n

Cambia hasta el final


de la lnea

cc

Cambia la lnea actual

Sustituye el carcter
actual por el texto
ingresado

ns

Sustituye el texto
ingresado en los
siguientes n
caracteres

Reemplaza toda la
lnea

Si el cursor est en 'Server', ingresar cw key


para hacer 'This Key'.
Resultado: This key
This Client
Ayuda a eliminar letras desde r en 'Server'
hasta el final de la lnea y cambiarlas por el texto
'key'. Esto hace la nueva palabra 'This Sekey'.
Resultado: This Sekey
This Client
Por ejemplo, c2w ayuda a cambiar el texto 'This
Server' por otro texto diferente, tal como 'That
Cell'.
Resultado: That Cell
This Client
Si el cursor est en r de 'Server', entonces c2$
ayuda a cambiar el texto 'rver' por otro texto
diferente, como 'key' y adems la siguiente lnea
'This Client' con un texto, tal como 'This
Router'.
Resultado: This Sekey
This Router
Si el cursor est en e de 'Client' y el nuevo
texto es 'key', entonces se vuelve 'Clikey'.
Resultado: This Server
This Clikey
Cambia toda la lnea, por ejemplo, de 'This
Server' a 'That Server'.
Resultado: That Server
This Client
Cambia la letra C de 'Client' con P para hacer
'Plient'.
Resultado: This Server
This Plient
Ingresando 3s en el texto 'Server' con el cursor en
e y el nuevo texto 'key', lo hace 'Skeyer'.
Resultado: This Skeyer
This Client
Si el cursor est bajo 'C' de 'Client' y si se ingresa
S seguido por Server, cambiar la lnea a
'Server'. Al presionar S, se elimina toda la lnea.

Tabla 6.12: Comandos de Modificacin de Texto

En la siguiente seccin, se discutir como copiar una parte del texto desde un archivo y
reutilizarlo en otras partes del archivo.

Unidad 6: El Editor vi

Fundamentos de Linux y Sistemas de Archivos 102

Copyright IBM Corp. 2006


Los materiales del curso no pueden ser reproducidos total o
parcialmente sin el permiso escrito previo de IBM.

Gua del Estudiante

Fundamentos de Linux

8.3 Copiar y Pegar Texto


Copiar texto involucra los siguientes tres pasos principales:

Copiar el texto a un buffer. Un buffer es una ubicacin de almacenamiento


temporal para guardar texto.

Mover el cursor al lugar de destino.

Pegar (colocar) el texto del buffer de edicin.

La Tabla 6.13 presenta los comandos de copia.


Texto Ejemplo:
I am Happy
I am Wise
Comando

Propsito

Ejemplo

yy

Mueve una copia de la


lnea actual al buffer sin
nombre

Si el cursor est en I de 'I am Happy',


entonces copia 'I am Happy' a un buffer sin
nombre.

Mueve una copia de la


lnea actual al buffer sin
nombre

Si el cursor est en I de 'I am Happy',


entonces copia 'I am Happy' a un buffer sin
nombre.

nyy

Mueve las n lneas


siguientes al buffer sin
nombre

nY

Mueve las n lneas


siguientes al buffer sin
nombre

yw

Mueve una palabra al


buffer sin nombre

Si el cursor est en 'I am Happy', entonces


2yy copia 'I am Happy' y 'I am Wise' a un
buffer sin nombre.
Si el cursor est en 'I am Happy', entonces 2Y
copia 'I am Happy' y 'I am Wise' a un buffer
sin nombre.
Si el cursor est en H de 'Happy', entonces
copia 'Happy' a un buffer sin nombre.

ynw

Mueve n palabras
buffer sin nombre

al

Si el cursor est en a de 'am' en la primera


lnea, entonces y2w copia 'am' y 'Happy' a un
buffer sin nombre.

nyw

Mueve n palabras al
buffer sin nombre

y$

Mueve la posicin del


cursor al final de la lnea

Si el cursor est en a de 'am' en la primera


lnea, entonces 2yw copia 'am' y 'Happy' a un
buffer sin nombre.
Si el cursor est en I de 'I am Happy' se
mueve a y, que est al final de esa lnea.

Tabla 6.13: Comandos de Copia

La Tabla 6.14 presenta los comandos de Pegado.

Fundamentos de Linux y Sistemas de Archivos

Unidad 6: El Editor vi 103

Copyright IBM Corp. 2006


Los materiales del curso no pueden ser reproducidos total o
parcialmente sin el permiso escrito previo de IBM.

Fundamentos de Linux

Gua del Estudiante

Texto Ejemplo:
I am Happy
I am Wise
Comando

Propsito

Ejemplo

Pega del buffer sin


nombre a la derecha del
cursor

Pega, por ejemplo, 'Happy' almacenado en el


buffer sin nombre, al lado derecho del cursor.

Pega del buffer sin


nombre a la izquierda del
cursor

Pega, por ejemplo, 'Happy' almacenado en el


buffer sin nombre, al lado izquierdo del cursor.

nP
np

Pega n copias del


buffer sin nombre a la
izquierda del cursor

2P pega 'Happy' almacenado en el buffer sin


nombre, dos veces al lado izquierdo del cursor.

Tabla 6.14: Comandos de Pegado

Dado que el buffer sin nombre se puede corromper fcilmente por el uso de otros
comandos comunes, se puede usar los buffers nombrados. vi tiene 26 buffers con
nombre. Usan las letras del alfabeto como identificacin.
El carcter u se usa para distinguir los buffers con y sin nombre.
La Tabla 6.15 muestra los comandos de copia y pegado de buffers con nombre.
Texto Ejemplo:
This is Cat
This is Dog
El <char> usado en la siguiente tabla es cualquier carcter en minscula que no es un
comando vi tal como i, a, e, u, etc.

Comando

Propsito

Ejemplo

"<char>yy

Mueve la lnea actual


al buffer con nombre
<char>

Si el cursor est en T de 'This' en la primera


lnea, copia 'This is Cat' al buffer con
nombre, por ejemplo, m.

"<char>Y

Mueve la lnea actual


al buffer con nombre
<char>

Si el cursor est en T de 'This' en la primera


lnea, copia 'This is Cat' al buffer con
nombre, por ejemplo, m.

"<char>yw

Mueve
la
palabra
actual al buffer con
nombre <char>

Si el cursor est en C de 'Cat' en la primera


lnea, copia 'Cat' al buffer con nombre, por
ejemplo, m.

"<char>yw

Agrega la palabra al
contenido del buffer

Si el cursor est en D de 'Dog' en la primera

Unidad 6: El Editor vi

Fundamentos de Linux y Sistemas de Archivos 104

Copyright IBM Corp. 2006


Los materiales del curso no pueden ser reproducidos total o
parcialmente sin el permiso escrito previo de IBM.

Gua del Estudiante

Fundamentos de Linux

(<char>
en
maysculas)

con nombre <char>

lnea, agrega 'Dog' al buffer con nombre, por


ejemplo, M, que ya contena 'Cat'.

"<char>y2w

Mueve
las
dos
siguientes palabras al
buffer <char>

Si el cursor est en T de 'This' en la primera


lnea, entonces my2w copia 'This is' al buffer
con nombre, m.

"<char>p

Pega desde el buffer Pega el buffer con nombre, por ejemplo, m, que
con nombre <char> contiene por ejemplo, 'Cat' al lado derecho del
a la derecha del cursor.
cursor

"<char>nP

Pega
n
copias M3P pega tres copias del buffer con nombre M,
desde el buffer con que contiene, por ejemplo, 'Dog' al lado
nombre <char> a la izquierdo del cursor.
izquierda del cursor
Tabla 6.15: Comandos de Copia de Buffer con Nombre

8.4 Cortar y Pegar Texto


Cortar y pegar texto consiste de los siguientes tres pasos:

Eliminar el texto a un buffer con o sin nombre.

Mover el cursor a la ubicacin destino.

Pegar el buffer con nombre o sin nombre.

El proceso es el mismo que copiando, pero con un cambio en el primer paso, de copiar
a eliminar, que se presenta en la Tabla 6.16.
Texto Ejemplo:
My Book
My Pen
Comando

Propsito

Ejemplo

"bdd

Elimina la lnea y la coloca


en el buffer con nombre b

Si el cursor est en M de 'My Book', elimina


dicha lnea y la copia al buffer con nombre b.

"B2dd

Elimina dos lneas y las


coloca en el buffer con
nombre B

Si el cursor est en M de 'My Book', elimina


'My Book' y 'My Pen' y copia ambos al buffer
con nombre B

dw

Elimina una palabra y la


coloca en el buffer sin
nombre

Si el cursor est en P de 'My Pen', elimina la


palabra 'Pen' y la copia al buffer sin nombre.

Tabla 6.16: Comandos para Cortar y Pegar

En el caso que el sistema colapse, el contenido de los buffer con y sin nombre se
pierde, pero el contenido del buffer de edicin puede ser recuperado.

Fundamentos de Linux y Sistemas de Archivos

Unidad 6: El Editor vi 105

Copyright IBM Corp. 2006


Los materiales del curso no pueden ser reproducidos total o
parcialmente sin el permiso escrito previo de IBM.

Fundamentos de Linux

Gua del Estudiante

9. Buscar Texto
vi tiene cierto nmero de comandos de bsqueda. La Tabla 6.17 muestra los
comandos de bsqueda que comnmente se usan.
Texto Ejemplo:
The Client Machine
The Server Machine
Comando

Propsito

Ejemplo

fc

Encuentra el siguiente
carcter c a la derecha
del cursor en la misma
lnea

Si el cursor est en C de 'Client' y se usa


fa, el cursor se mueve hasta 'a' de 'Machine'
de la primera lnea

Fc

Encuentra el siguiente
carcter c a la izquierda
del cursor en la misma
lnea

Si el cursor est bajo 'c' de 'Machine' en la


segunda lnea y se usa FT, el cursor se mueve
hasta 'T' de The de la segunda lnea.

tc

Encuentra el carcter
antes
del
siguiente
carcter c a la derecha
del cursor en la misma
lnea

Si el cursor est en C y se usa ta, el cursor


se mueve hasta 'M' de 'Machine' de la primera
lnea.

Tc

Encuentra el carcter
despus del siguiente
carcter c a la derecha
del cursor en la misma
lnea

Si el cursor est bajo 'c' de 'Machine' en la


segunda lnea y se usa FS, el cursor se mueve
hasta 'e' luego de 'S' de Server de la segunda
lnea.

Repite el ltimo f, F, t y
T hacia adelante

Si el cursor est en C, y se usa fe, el cursor


se mueve al primer 'e' a la derecha. Al presionar
; se mueve al siguiente e, si lo encuentra, en la
misma lnea hacia la derecha.

Repite el ltimo f, F, t y
T hacia atrs

Igual que ; pero invierte la direccin del comando


original

Tabla 6.17: Comandos de Bsqueda

Nota: Los comandos que empiezan con f, F, t y T son aplicables solo para la lnea
actual. Si el carcter que se est buscando no se encuentra, vi emitir un sonido o
dar alguna otra clase de seal.
vi le permite buscar una cadena en el buffer de edicin. La Tabla 6.18 ilustra los
comandos relacionados a esto.

Unidad 6: El Editor vi

Fundamentos de Linux y Sistemas de Archivos 106

Copyright IBM Corp. 2006


Los materiales del curso no pueden ser reproducidos total o
parcialmente sin el permiso escrito previo de IBM.

Gua del Estudiante

Fundamentos de Linux

Texto Ejemplo:
This Client machine is on the desk of the Client
The Client is happy with the machine
Comando

Propsito

Ejemplo

/cadena

Encuentra la
siguiente ocurrencia
de cadena

Si el cursor est en 'C' de la primera palabra


'Client' en la primera lnea, ingresando /Client
se mover el cursor hasta 'C' de 'Client', que es la
ltima palabra en la lnea actual (la siguiente
ocurrencia de cadena) en el archivo.

?cadena

Encuentra la ltima
ocurrencia de
cadena

Si el cursor est en 'C' de la primera palabra


'Client' en la primera lnea, ingresando ?Client
se mover el cursor hasta 'C' de 'Client', que es la
segunda palabra en la segunda lnea (la ltima
ocurrencia de cadena) en el archivo.

Repite el ltimo
comando / ? hacia
adelante

Para la /cadena usada antes, n repite y encuentra


el siguiente Client, que es la segunda palabra en
la segunda lnea.

Repite el ltimo
comando / ? hacia
atrs

Igual que n, pero invierte la direccin del comando


original.

Tabla 6.18: Comandos de Bsqueda de Cadena

Cuando se usa los comandos / ?, se limpiar una lnea al final de la pantalla.


La cadena en el comando / ? puede ser una expresin regular. Una expresin
regular es una descripcin de un conjunto de caracteres. La descripcin se construye
usando el texto mezclado con caracteres especiales. Los caracteres especiales en las
expresiones regulares son . * [] ^$.

Fundamentos de Linux y Sistemas de Archivos

Unidad 6: El Editor vi 107

Copyright IBM Corp. 2006


Los materiales del curso no pueden ser reproducidos total o
parcialmente sin el permiso escrito previo de IBM.

Fundamentos de Linux

Gua del Estudiante

Resumen
Ahora que ha completado esta unidad, Ud. debe ser capaz de:

Discutir como trabaja el editor visual vi en Linux.

Describir las diferentes categoras de comandos.

Explicar el uso de los comandos para editar archivos.

Unidad 6: El Editor vi

Fundamentos de Linux y Sistemas de Archivos 108

Copyright IBM Corp. 2006


Los materiales del curso no pueden ser reproducidos total o
parcialmente sin el permiso escrito previo de IBM.

Gua del Estudiante

Fundamentos de Linux

Unidad 6: Examen de Autoevaluacin


1) Cul de los siguientes es el comando que se usa para insertar a la izquierda del
cursor?
a) l
b) i
c) a
d) Ninguno de las anteriores
2) Cul de los siguientes comandos permite al usuario mover el cursor un espacio
hacia arriba?
a) h
b) j
c) k
d) l
3) El comando dd elimina una lnea.
a) Verdadero
b) Falso
4) Cul de los siguientes comandos se usa para desplazarse hacia delante una
pantalla?
a) <ctrl + f>
b) <ctrl + b>
5) El comando 0G lleva al usuario a la primera lnea del archivo.
a) Verdadero
b) Falso
6) Cul de los siguientes comandos abre una nueva lnea e ingresa texto sobre la
lnea actual?
a) A
b) a
c) o
d) O

Fundamentos de Linux y Sistemas de Archivos

Unidad 6: El Editor vi 109

Copyright IBM Corp. 2006


Los materiales del curso no pueden ser reproducidos total o
parcialmente sin el permiso escrito previo de IBM.

Fundamentos de Linux

Gua del Estudiante

7) El comando dn$ elimina texto desde la posicin actual del cursor hasta el final de
la nesima lnea.
a) Verdadero
b) Falso
8) El comando n permite al usuario repetir el ltimo comando / ? en la direccin
opuesta.
a) Verdadero
b) Falso
9) El comando de bsqueda de cadena /cadena encuentra la ltima ocurrencia de
una cadena de bsqueda dada.
a) Verdadero
b) Falso
10) Cul de los siguientes comandos se usa para eliminar el texto desde la posicin
actual del cursor hasta el final de la lnea?
a) dd
b) dw
c) D
d) x

Unidad 6: El Editor vi

Fundamentos de Linux y Sistemas de Archivos 110

Copyright IBM Corp. 2006


Los materiales del curso no pueden ser reproducidos total o
parcialmente sin el permiso escrito previo de IBM.

Gua del Estudiante

Fundamentos de Linux

Respuestas a Unidad 6: Examen de Autoevaluacin


1) b
2) c
3) a
4) a
5) b
6) d
7) a
8) b
9) b
10) c

Fundamentos de Linux y Sistemas de Archivos

Unit 6: El Editor vi 111

Copyright IBM Corp. 2006


Los materiales del curso no pueden ser reproducidos total o
parcialmente sin el permiso escrito previo de IBM.

Gua del Estudiante

Fundamentos de Linux

Unidad 7: Lab. del Editor vi


Objetivos de Aprendizaje
Al final de esta unidad, Ud. ser capaz de:

Usar el editor vi.

Emplear diferentes grupos de comandos en vi.

Editar texto simple.

Fundamentos de Linux y Sistemas de Archivos

Unidad 7: Lab. del Editor vi 113

Copyright IBM Corp. 2006


Los materiales del curso no pueden ser reproducidos total o
parcialmente sin el permiso escrito previo de IBM.

Fundamentos de Linux

Gua del Estudiante

Ejercicio de Laboratorio
1) Cree un archivo de texto llamado vi.txt e ingrese el siguiente texto en l. Los
estudiantes pueden elegir cualquier otro texto de su predileccin.
Los editores se usan principalmente para crear documentos. Linux ofrece varios
editores; algunos de ellos son vi, emacs, ed, ex. Los editores como ed y ex
se llaman editores de 'lnea'. Mientras que ed permite realizar insercin,
eliminacin, modificacin etc. lnea por lnea; vi ofrece una facilidad de pantalla
completa para crear y editar documentos. Se ha discutido en detalle acerca de ed
y sus capacidades. En esta unidad, se discutir el editor vi.
El trmino 'vi' viene de 'visual editor'. vi (se pronuncia 'vee eye') es el nico editor
que se encuentra en casi cada instalacin Unix/Linux. Escrito originalmente en la
Universidad de California en Berkeley, debe su origen a William Joy. Sus versiones
pueden encontrarse ahora en casi cada edicin de venta de Linux. vi empez
como el editor de lnea ex y creci a lo largo de los aos hasta convertirse en un
poderoso editor visual. ex ahora existe en forma separada y es un modo de
edicin especial de vi. Los comandos de ex pueden ser iniciados a travs de vi.
vi proporciona un amplio conjunto de comandos para insertar, eliminar y modificar
texto. Usando expresiones regulares se pueden realizar poderosas bsquedas y
reemplazos de texto. Las expresiones regulares son frmulas que hacen coincidir
cadenas con un patrn dado.
vi proporciona tres modos en que un usuario puede operar. Ahora se aprendern
los modos en vi.
2) Practique todos los comandos que aprendi en la unidad anterior. Siga la misma
secuencia dada en la unidad anterior, de manera que todos los comandos se usen.
Al final de esta unidad, Ud. debe ser capaz de crear, modificar y visualizar un
archivo de texto simple usando vi.

Fundamentos de Linux y Sistemas de Archivos

Unit 6: El Editor vi 114

Copyright IBM Corp. 2006


Los materiales del curso no pueden ser reproducidos total o
parcialmente sin el permiso escrito previo de IBM.

Gua del Estudiante

Fundamentos de Linux

Volumen 2: Shell y Procesos en Linux

Fundamentos de Linux y Sistemas de Archivos

Unidad 7: Lab. del Editor vi 115

Copyright IBM Corp. 2006


Los materiales del curso no pueden ser reproducidos total o
parcialmente sin el permiso escrito previo de IBM.

Gua del Estudiante

Fundamentos de Linux

Unidad 1: Fundamentos de Shell


Objetivos de Aprendizaje
Al final de esta unidad, Ud ser capaz de:

Proporcionar una visin general del shell de Linux.

Discutir acerca de las variables shell.

Describir los metacaracteres.

Explicar cmo asignar y referenciar las variables shell.

Fundamentos de Linux y Sistemas de Archivos

Unidad 1: Fundamentos de Shell 117

Copyright IBM Corp. 2006


Los materiales del curso no pueden ser reproducidos total o
parcialmente sin el permiso escrito previo de IBM.

Fundamentos de Linux

Gua del Estudiante

1. Introduccin al Shell de Linux


En el volumen 1 Unidad 1 Fundamentos de Linux, se discuti brevemente acerca del
shell (Intrprete de Comandos). En esta unidad se estudiarn varios aspectos del shell
de Linux, las variables proporcionadas por el shell y los diferentes metacaracteres
utilizados por el shell.
El shell es una de las herramientas ms poderosas de los sistemas Linux. Como se
explic anteriormente, el shell es un programa escrito en C que ejecuta un conjunto de
comandos Linux y procesa las entradas del usuario. Empieza cuando el usuario ingresa
(log in) y termina cuando el usuario se desconecta (log out). Proporciona una interfaz
para el sistema operativo subyacente.
El shell interpreta los comandos ingresados por los usuarios y los comunica al ncleo
(kernel). El kernel maneja las interacciones complejas con el hardware del sistema.
Algunos ejemplos de interacciones complejas son abrir y cerrar archivos, imprimir, etc.
Estas interacciones son complejas porque necesitan trabajar con los recursos
soportados por el sistema operativo a bajo nivel. El usuario del sistema operativo Linux
funciona a alto nivel, de modo que al ingresar el comando en el indicador (prompt), se
produce el resultado deseado. Para imprimir un documento, el usuario tiene que invocar
un comando que maneja el trabajo de impresin. El kernel transmite los bytes a travs
del cable de la impresora a la impresora para imprimir y el usuario no necesita
preocuparse del manejo a bajo nivel sobre cmo imprimir un documento. El shell acta
como un intermediario entre el usuario y el kernel.
Algunas de las responsabilidades del shell son:

Controlar y asignar trabajos.

Manejar ms de un proceso a la vez.

Redireccionar la entrada y salida estndar.

Mantener un historial de comandos.

Proporcionar un lenguaje de comandos para escribir shell scripts.

Los shell scripts son programas escritos usando la sintaxis del lenguaje de comandos
del shell. De hecho, es slo otro lenguaje de programacin capaz de ejecutar comandos
a nivel del shell.
Los shell scripts permiten al usuario poner en lotes diversos comandos del shell en un
archivo. Hay un nmero de shells disponibles en Linux como el shell bash, el shell C,
etc., como se mencion en las unidades anteriores.
La diferencia ms importante entre los diferentes shells es el lenguaje de comandos que
ellos proporcionan. El shell C proporciona sintaxis muy similar al lenguaje de
programacin C. El bash (Bourne Again SHell) utiliza una sintaxis diferente.
En esta unidad, explicaremos el Linux bash, y las caractersticas que lo hacen
interesante. Se comenzar la discusin con las variables shell.

Fundamentos de Linux y Sistemas de Archivos

Unit 6: El Editor vi 118

Copyright IBM Corp. 2006


Los materiales del curso no pueden ser reproducidos total o
parcialmente sin el permiso escrito previo de IBM.

Gua del Estudiante

Fundamentos de Linux

2. Variables Shell
El shell mantiene un nmero de variables, llamadas variables shell, para mantener el
registro de diferentes tipos de informacin. Las variables shell son locales al shell en el
que estn definidas.
El shell utiliza variables para mantener el registro del usuario y la informacin del
sistema. Estas variables son especficas al shell en el que un usuario est trabajando.
Cada shell tiene su propio conjunto de variables, que pueden ser asignadas y
referenciadas por el usuario. Tambin hay variables de entorno que son visibles a
travs de todos los shells.
Una de las variables shell es PATH, la cual se explicar brevemente para entender otras
variables shell.
La mayora de los comandos que se ejecutan desde el directorio home estn ubicados
en otro lugar. Para ubicar estos comandos, la variable PATH en Linux se establece en
todos los directorios del sistema donde los comandos estn disponibles para su
ejecucin. As, cuando se ingresa cat en el prompt, la informacin con respecto a la
ubicacin del comando cat se obtiene de la variable PATH y luego se ejecuta. La
informacin disponible en PATH consiste simplemente de la ruta completa de los
directorios donde los comandos estn ubicados.
Se puede ver el contenido de todas las variables shell ingresando un smbolo $ antes
de la variable. De esta manera,
[mickeymouse@mycomputer mickeymouse]$ echo $PATH
/usr/local/bin:/bin:/usr/bin:/home/mickeymouse/bin
[mickeymouse@mycomputer mickeymouse]$
Lo anterior es el contenido de la variable PATH en un Red Hat Linux que se us para
probar los ejemplos dados en este texto. El contenido podra ser diferente en otros
sistemas. Cada ruta de directorio est separada por dos puntos (:).
PATH es slo una de las muchas variables predefinidas que mantiene un shell. En la
unidad 3: Caractersticas del Shell se estudiarn otras variables shell predefinidas.

2.1 Variables Shell Definidas por el Usuario


El Shell permite a los usuarios crear sus propias variables. Estas se denominan
variables shell definidas por el usuario. El trmino definidas por el usuario es para
distinguir estas variables de las variables predefinidas por el shell. Para crear una
variable, el usuario debe ingresar
name=value
donde name es la variable shell definida por el usuario y value es el valor asignado a la
variable shell definida por el usuario. Note que no debe existir espacio antes ni despus
del =.
[mickeymouse@mycomputer mickeymouse]$ color=azul
Fundamentos de Linux y Sistemas de Archivos

Unidad 1: Fundamentos de Shell 119

Copyright IBM Corp. 2006


Los materiales del curso no pueden ser reproducidos total o
parcialmente sin el permiso escrito previo de IBM.

Fundamentos de Linux

Gua del Estudiante

[mickeymouse@mycomputer mickeymouse]$
La variable color ahora es definida por el usuario y le es asignada el valor azul.
Para ver el valor de la variable shell definida por el usuario, se usa el signo $ junto con
el nombre de la variable. Usando el comando echo, se puede imprimir el valor
establecido por el usuario.
[mickeymouse@mycomputer mickeymouse]$ echo $color
azul
[mickeymouse@mycomputer mickeymouse]$
A continuacin ms ejemplos:
[mickeymouse@mycomputer mickeymouse]$ m00=100
[mickeymouse@mycomputer mickeymouse]$ echo $m00
100
[mickeymouse@mycomputer mickeymouse]$
[mickeymouse@mycomputer mickeymouse]$ 100=100
bash: 100=100: command not found
[mickeymouse@mycomputer mickeymouse]$
Primero se establece la variable definida por el usuario m00 a 100. Cuando se intent
establecer la variable definida por el usuario 100 con un valor 100, el shell present un
mensaje de error. Esto es porque los nombres de variables definidas por el usuario no
pueden empezar con un nmero. A continuacin se presentan los diferentes tipos de
metacaracteres proporcionados por el sistema operativo Linux.

3. Metacaracteres
Los metacaracteres son caracteres que tienen un significado especial para el shell.
Algunos de los metacaracteres disponibles son:
<>
|
;
?
*
[]
$
\
()
{}

'

Fundamentos de Linux y Sistemas de Archivos

Unit 6: El Editor vi 120

Copyright IBM Corp. 2006


Los materiales del curso no pueden ser reproducidos total o
parcialmente sin el permiso escrito previo de IBM.

Gua del Estudiante

Fundamentos de Linux

Se encontraron algunos caracteres, >, <, >> y I, en el Volumen 1 Unidad 2 El sistema


Linux. En dicha unidad, se les refera a ellos como operadores de redireccin. Para
facilitar su comprensin, los metacaracteres pueden agruparse en las siguientes
categoras:

Sustitucin de Comodines.

Redireccin y Tuberas (pipes).

Notacin de lnea de comandos.

Sustitucin de Parmetros.

Escapes y comillas.

Una lista completa de metacaracteres se muestra en una tabla al final de esta unidad.

3.1 Sustitucin de Comodines


Los caracteres de comodn son un subconjunto de metacaracteres que se usan para
buscar e igualar a un patrn de archivo. Los cuatro caracteres comodn que se
aprendern aqu, son:

*
: El metacarcter * equivale a cualquier cadena de cero o ms caracteres
en un nombre de archivo.

list] : Equivale cualquier carcter de list. Aqu list puede contener uno o ms
caracteres como [asdf].

^list]: Equivale a cualquier carcter que no est en list.

: El metacarcter ? equivale a cualquier carcter en un nombre de archivo.

Para entender estos metacaracteres, se asumir que el directorio de inicio (home) de


mickeymouse tiene los siguientes archivos y directorios.
linuxChap1.doc
linuxChap2.doc
linuxCont.doc
linux1.txt
linux2.doc
linux.txt
linuxInternals
unixInternals
lint.txt
listing.lst
mist.doc
nest.lst
linuxInternals y unixInternals son subdirectorios de mickeymouse.

Fundamentos de Linux y Sistemas de Archivos

Unidad 1: Fundamentos de Shell 121

Copyright IBM Corp. 2006


Los materiales del curso no pueden ser reproducidos total o
parcialmente sin el permiso escrito previo de IBM.

Fundamentos de Linux

Gua del Estudiante

En esta unidad, se proporcionarn ejemplos de muchas variables shell. Estos ejemplos


aparecern entre Uso de shvar y Fin del uso de shvar, donde shvar ser la variable
shell que se est estudiando.
Uso de ?
[mickeymouse@mycomputer mickeymouse]$ ls o
total 34
-rw-r--r--rw-r--r--

1 mickeymo
1 mickeymo

13 Jul
7 Jul

3 18:20 lint.txt
3 17:53 linux.txt

-rw-r--r--

1 mickeymo

12 Jul

3 17:40 linux1.txt

-rw-r--r--

1 mickeymo

13 Jul

3 17:40 linux2.doc

-rw-r--r--

1 mickeymo

16 Jul

3 17:39 linuxChap1.doc

-rw-r--r--

1 mickeymo

17 Jul

3 17:39 linuxChap2.doc

-rw-r--r--

1 mickeymo

9 Jul

3 17:39 linuxCont.doc

drwxr-xr-x
-rw-r--r--

2 mickeymo 4096 Jul


1 mickeymo
7 Jul

3 17:40 linuxInternals
3 18:53 listing.lst

-rw-r--r--

1 mickeymo

37 Jul

3 18:05 mist.doc

-rw-r--r--

1 mickeymo

12 Jul

3 18:59 nest.lst

drwxr-xr-x

2 mickeymo 4096 Jul

3 17:40 unixInternals

[mickeymouse@mycomputer mickeymouse]$
ls o muestra un listado largo de archivos sin informacin de grupo.
[mickeymouse@mycomputer mickeymouse]$ ls -o linux?.txt
-rw-r--r--

1 mickeymo

12 Jul

3 17:40 linux1.txt

[mickeymouse@mycomputer mickeymouse]$

En el ejemplo anterior slo se muestra una lnea porque el metacarcter ?


equivale exactamente a un carcter en la posicin donde apareci el
metacarcter ? en el comando.
[mickeymouse@mycomputer mickeymouse]$ ls -o ?????.txt
-rw-r--r--

1 mickeymo

7 Jul

3 17:53 linux.txt

[mickeymouse@mycomputer mickeymouse]$

El nombre del archivo linux.txt tiene cinco caracteres antes del . y as


corresponde a los cinco metacaracteres ? especificados con ls o. No se
muestran otros archivos, ya que ninguno de los otros tiene el modelo
especificado en el comando. El modelo es cinco metacaracteres ?,
seguidos por un . y luego txt.
[mickeymouse@mycomputer mickeymouse]$ ls ?
ls: ?: No such file or directory
[mickeymouse@mycomputer mickeymouse]$

Un nombre de archivo con un slo carcter no existe en el directorio de


inicio de mickeymouse.

Fundamentos de Linux y Sistemas de Archivos

Unit 6: El Editor vi 122

Copyright IBM Corp. 2006


Los materiales del curso no pueden ser reproducidos total o
parcialmente sin el permiso escrito previo de IBM.

Gua del Estudiante

Fundamentos de Linux

Uso de *
[mickeymouse@mycomputer mickeymouse]$ ls o linux*
-rw-r--r--rw-r--r--

1 mickeymo
1 mickeymo

7 Jul
12 Jul

3 17:53 linux.txt
3 17:40 linux1.txt

-rw-r--r--

1 mickeymo

13 Jul

3 17:40 linux2.doc

-rw-r--r--

1 mickeymo

16 Jul

3 17:39 linuxChap1.doc

-rw-r--r--

1 mickeymo

17 Jul

3 17:39 linuxChap2.doc

-rw-r--r--

1 mickeymo

9 Jul

3 17:39 linuxCont.doc

linuxInternals:
total 0
[mickeymouse@mycomputer mickeymouse]$

Muestra todos los archivos y directorios que tienen linux como patrn de
inicio. Se observa que Linux muestra el directorio linuxInternals en una
lnea con total 0 debajo. Dado que se encontr un nombre de directorio
con el patrn linux al inicio, se muestran los archivos de ese directorio. En
este caso, no se encontraron archivos o directorios en linuxInternals y
por eso se muestra total 0.
[mickeymouse@mycomputer mickeymouse]$ ls o linux*.txt
-rw-r--r--

1 mickeymo

7 Jul

3 17:53 linux.txt

-rw-r--r--

1 mickeymo

12 Jul

3 17:40 linux1.txt

[mickeymouse@mycomputer mickeymouse]$

linux.txt est incluido en la salida, dado que el metacarcter * implica 0


o ms carcteres. Se muestran algunos ejemplos ms.
[mickeymouse@mycomputer mickeymouse]$ ls o linuxC*.doc
-rw-r--r--

1 mickeymo

16 Jul

3 17:39 linuxChap1.doc

-rw-r--r--rw-r--r--

1 mickeymo
1 mickeymo

17 Jul
9 Jul

3 17:39 linuxChap2.doc
3 17:39 linuxCont.doc

[mickeymouse@mycomputer mickeymouse]$ ls o *.doc


-rw-r--r--

1 mickeymo

13 Jul

3 17:40 linux2.doc

-rw-r--r--

1 mickeymo

16 Jul

3 17:39 linuxChap1.doc

-rw-r--r--

1 mickeymo

17 Jul

3 17:39 linuxChap2.doc

-rw-r--r--

1 mickeymo

9 Jul

3 17:39 linuxCont.doc

[mickeymouse@mycomputer mickeymouse]$ ls o *Co*


-rw-r--r-1 mickeymouse
9 Jul 3 17:39 linuxCont.doc
[mickeymouse@mycomputer mickeymouse]$
[mickeymouse@mycomputer mickeymouse]$ ls o linux?.*
-rw-r--r--

1 mickeymo

12 Jul

3 17:40 linux1.txt

-rw-r--r--

1 mickeymo

13 Jul

3 17:40 linux2.doc

[mickeymouse@mycomputer mickeymouse]$

Se pueden combinar metacaracteres para obtener cualquier tipo de listado.


Fundamentos de Linux y Sistemas de Archivos

Unidad 1: Fundamentos de Shell 123

Copyright IBM Corp. 2006


Los materiales del curso no pueden ser reproducidos total o
parcialmente sin el permiso escrito previo de IBM.

Fundamentos de Linux

Gua del Estudiante

Uso de [list y [^list]


[mickeymouse@mycomputer mickeymouse]$ ls o li[ns]t*
-rw-r--r--rw-r--r--

1 mickeymo
1 mickeymo

13 Jul
7 Jul

3 18:20 lint.txt
3 18:53 listing.lst

[mickeymouse@mycomputer mickeymouse]$

Este busca n s en la tercera posicin.


[mickeymouse@mycomputer mickeymouse]$ ls o *[12C]*
-rw-r--r--

1 mickeymo

12 Jul

3 17:40 linux1.txt

-rw-r--r--

1 mickeymo

13 Jul

3 17:40 linux2.doc

-rw-r--r--

1 mickeymo

16 Jul

3 17:39 linuxChap1.doc

-rw-r--r--

1 mickeymo

17 Jul

3 17:39 linuxChap2.doc

-rw-r--r--

1 mickeymo

9 Jul

3 17:39 linuxCont.doc

[mickeymouse@mycomputer mickeymouse]$

Este muestra todas las lneas que tienen 0 o ms caracteres seguidos por
cualquiera de los caracteres de la lista 12C, seguidos por 0 o ms
caracteres nuevamente.
[mickeymouse@mycomputer mickeymouse]$ ls o [^lu]*
-rw-r--r--

1 mickeymo

37 Jul

3 18:05 mist.doc

-rw-r--r--

1 mickeymo

12 Jul

3 18:59 nest.lst

[mickeymouse@mycomputer mickeymouse]$

Se est usando el cuarto metacarcter comodn, que busca todos los


caracteres de manera que ni l ni u estn en la primera posicin.
[mickeymouse@mycomputer mickeymouse]$ ls o [^mnu]inux[12]*
-rw-r--r-1 mickeymo
12 Jul 3 17:40 linux1.txt
-rw-r--r--

1 mickeymo

13 Jul

3 17:40 linux2.doc

[mickeymouse@mycomputer mickeymouse]$

Se puede obtener el resultado anterior con linux[12]*. Pero si se tena


un archivo de nombre sinux.txt o binux.doc, se hubiera ignorados.
Tambin se puede usar [a-d], que buscar todos los caracteres en el
rango desde a hasta d.
Para entender los conceptos de redireccin y tuberas (pipe), se va a introducir primero
los conceptos de descriptores de archivos.

Fundamentos de Linux y Sistemas de Archivos

Unit 6: El Editor vi 124

Copyright IBM Corp. 2006


Los materiales del curso no pueden ser reproducidos total o
parcialmente sin el permiso escrito previo de IBM.

Gua del Estudiante

Fundamentos de Linux

3.2 Descriptores de Archivo


Cada programa tiene un descriptor asociado. El shell asigna 3 descriptores estndares
cuando el programa empieza. Estos son STDIN, STDOUT, STDERR. Estos tres
descriptores se asignan con un valor como se muestra a continuacin:
STDIN
STDOUT
STDERR
defecto)

0
1
2

StandardInput (Teclado)
StandardOutput (Monitor)
StandardError (direccionado al monitor por

3.3 Redireccin y Tuberas


En el volumen 1, Unidad 2: El Sistema Linux se discuti acerca de la redireccin y el
uso de tuberas (pipes). Se aprendi a usar >,< y >>. Estos se denominan
metacaracteres de redireccin y | es el metacarcter de tubera. A continuacin dos
usos adicionales de redireccin, n> y >&n.
Para mostrar los usos se asume que el archivo linux.txt contiene las siguientes
lneas.
Linux is an operating system.
It follows the GNU standard.
Linux provides users with a command language.
The kernel of Linux is the core of the operating system.
Linux is a powerful and versatile operating system.
Uso de n>
n> file
En este comando, n es por descriptor de archivos como se vio en la
seccin anterior. El nombre de archivo que sigue a > es el archivo destino al
que se desea enviar el resultado.
Por defecto, los mensajes de error son redireccionados a la salida, es decir,
al monitor. Si se desea redireccionar el error a un archivo podemos usar el
operador anterior como se muestra a continuacin:
[mickeymouse@mycomputer mickeymouse]$ cat linux.txt file1.txt
Linux is an operating system.
It follows the GNU standard.
Linux provides users with a command language.
The kernel of Linux is the core of the operating system.
Linux is a powerful and versatile operating system.
cat: file1.txt: No such file or directory
[mickeymouse@mycomputer mickeymouse]$

Fundamentos de Linux y Sistemas de Archivos

Unidad 1: Fundamentos de Shell 125

Copyright IBM Corp. 2006


Los materiales del curso no pueden ser reproducidos total o
parcialmente sin el permiso escrito previo de IBM.

Fundamentos de Linux

Gua del Estudiante

Como no existe file1.txt, despus que las lneas de linux.txt se


muestran se obtiene un mensaje de error apropiado.
Si se desea capturar el mensaje de error en otro archivo, se puede hacer lo
siguiente:
[mickeymouse@mycomputer
file1.txt 2>error

mickeymouse]$

cat

linux.txt

Linux is an operating system.


It follows the GNU standard.
Linux provides users with a command language.
The kernel of Linux is the core of the operating system.
Linux is a powerful and versatile operating system.
[mickeymouse@mycomputer mickeymouse]$

No se ve ahora el mensaje de error. n> file se reemplaza con 2>


error, donde 2 es el nmero de descriptor de archivo para el error
estndar mencionado en la seccin anterior, el cual se ha redireccionado al
archivo llamado error.
[mickeymouse@mycomputer mickeymouse]$ cat error
cat: file1.txt: No such file or directory
[mickeymouse@mycomputer mickeymouse]$

Este tipo de redireccin permite a los usuarios grabar mensajes de error


cuando los programas estn corriendo en segundo plano (background). Ms
adelante se discutir cmo correr programas en segundo plano.
Uso de >&n
En el caso de requerir redireccionar tanto la salida estndar como el error
estndar hacia el mismo archivo, se utiliza >&n. Esto es til cuando se
ejecutan programas en segundo plano, donde la salida y el error son
capturados en el mismo archivo.
El shell proporciona el mecanismo para combinar estos dos flujos.
[mickeymouse@mycomputer mickeymouse]$ cat linux.txt file1.txt
> outfile 2>&1
[mickeymouse@mycomputer mickeymouse]$

No se ve ninguna salida dirigida a la pantalla. Tanto la salida y el error


estndar se han redireccionados al archivo outfile.
Aqu la sintaxis es muy importante. Primero se redirecciona la salida
estndar a outfile. 2>&1 le dice al shell que el error estndar sea el
mismo que la salida estndar. Como se redirecciona la salida a outfile,
este se vuelve la salida estndar en este punto.

Fundamentos de Linux y Sistemas de Archivos

Unit 6: El Editor vi 126

Copyright IBM Corp. 2006


Los materiales del curso no pueden ser reproducidos total o
parcialmente sin el permiso escrito previo de IBM.

Gua del Estudiante

Fundamentos de Linux

Observe el siguiente comando:


[mickeymouse@mycomputer mickeymouse]$ cat linux.txt file1.txt
2>&1 > outfile
cat: file1.txt: No such file or directory
[mickeymouse@mycomputer mickeymouse]$

Se observa que el error se muestra en el monitor, mientras la salida se


enva a outfile.
El dispositivo de error se hace corresponder primero al monitor, como el
descriptor de archivo 1 es para el monitor en este punto. La salida se
redirecciona al archivo outfile despus de que se hace corresponder el
error estndar al monitor. As, el mensaje de error en la pantalla y la salida
se encuentra en el archivo outfile.
Esto es equivalente a decir
[mickeymouse@mycomputer
file1.txt > outfile

mickeymouse]$

cat

linux.txt

Esto es muy til cuando se desea capturar los mensajes de depuracin en


un archivo, cuando se compilan programas C o C++.

3.4 Notacin de Lnea de Comandos


Se pueden usar un nmero de metacaracteres en una lnea de comandos para realizar
algunas tareas especiales en el shell, a saber:

Los comandos se pueden ingresar en mltiples lneas usando \.

Los comandos se pueden ejecutar en segundo plano usando &.

Se pueden ingresar ms de un comando en una sola lnea usando ; (punto y


coma) como separador.

Los comandos pueden agruparse usando ().

Se pueden aplicar operaciones condicionales en los comandos, usando && y


||.

Estos se explican a continuacin con ejemplos.


Uso de \
El meta carcter \, seguido por la tecla <Enter>, permite al usuario
ingresar los parmetros del comando en mltiples lneas. Cuando se
presiona \ y la tecla <Enter>, un smbolo > aparece en la siguiente lnea
para indicar que el comando no est completo. Continuar el comando en la
siguiente lnea es til cuando los argumentos del comando son largos.
[mickeymouse@mycomputer mickeymouse]$ cat > \
> myfile.txt

Fundamentos de Linux y Sistemas de Archivos

Unidad 1: Fundamentos de Shell 127

Copyright IBM Corp. 2006


Los materiales del curso no pueden ser reproducidos total o
parcialmente sin el permiso escrito previo de IBM.

Fundamentos de Linux

Gua del Estudiante

This is a new file.


ctrl-d
[mickeymouse@mycomputer mickeymouse]$

El metacarcter \ le indica al shell que espere por una entrada adicional. Si


se omite el metacarcter, se genera un mensaje de error. Tambin note que
el smbolo > aparece donde se ha ingresado myfile.txt. Considere el
siguiente comando:
cat > \ <Enter> > myfile.txt
Esto es equivalente a cat > myfile.txt. <Enter> indica que se debe
presionar la tecla Enter del teclado.
[mickeymouse@mycomputer mickeymouse]$ cp \
> linux.txt \
> myfile.txt
[mickeymouse@mycomputer mickeymouse]$

En el ejemplo anterior se ha utilizado el metacarcter \ dos veces, y cada


vez el smbolo > aparece como se puede observar.
Uso de &
El metacarcter & se usa para ejecutar el comando anterior en segundo
plano.
[mickeymouse@mycomputer mickeymouse]$ monitor & cat linux.txt
[1] 2259
Linux is an operating system.
It follows the GNU standard.
Linux provides users with a command language.
The kernel of Linux is the core of the operating system.
Linux is a powerful and versatile operating system.
Number of users in the system: 204
[1] Done

monitor

[mickeymouse@mycomputer mickeymouse]$

monitor es un programa ejecutable C. Controla el sistema durante cinco


segundos y muestra el nmero de usuarios del sistema al final de los cinco
segundos. Se puede ejecutar este comando en segundo plano ingresando &
despus del comando.
Ahora monitor se est ejecutando en segundo plano y el shell le entrega
el nmero de identidad 2259. A este nmero se le denomina Process ID o
PID.

Fundamentos de Linux y Sistemas de Archivos

Unit 6: El Editor vi 128

Copyright IBM Corp. 2006


Los materiales del curso no pueden ser reproducidos total o
parcialmente sin el permiso escrito previo de IBM.

Gua del Estudiante

Fundamentos de Linux

Se aprender acerca de los procesos en la Unidad 5 Procesos en Linux


de este volumen.
El otro comando cat linux.txt no se ejecuta en segundo plano. Aqu, la
salida que se muestra es inmediata. Cuando el programa en segundo plano
termina, se muestran la salida del programa y el mensaje Done.
A veces, los programas en segundo plano se ejecutan por un largo periodo
de tiempo. En ese caso, el shell interrumpe el trabajo que se est
ejecutando en ese momento, muestra algn mensaje enviado por el
programa en segundo plano, y muestra Done si se completa exitosamente.
Uso de ;
El metacarcter ; se usa para separar comandos cuando se ingresa ms
de un comando en la misma lnea, como se muestra a continuacin:
[mickeymouse@mycomputer mickeymouse]$ ls o; cat linux.txt
total 34
-rw-r--r--

1 mickeymo

13 Jul

3 18:20 lint.txt

-rw-r--r--

1 mickeymo

7 Jul

3 17:53 linux.txt

-rw-r--r--

1 mickeymo

12 Jul

3 17:40 linux1.txt

-rw-r--r--

1 mickeymo

13 Jul

3 17:40 linux2.doc

-rw-r--r--

1 mickeymo

16 Jul

3 17:39 linuxChap1.doc

-rw-r--r--

1 mickeymo

17 Jul

3 17:39 linuxChap2.doc

-rw-r--r-drwxr-xr-x

1 mickeymo
9 Jul 3 17:39 linuxCont.doc
2 mickeymo 4096 Jul 3 17:40 linuxInternals

-rw-r--r--

1 mickeymo

7 Jul

3 18:53 listing.lst

-rw-r--r--

1 mickeymo

37 Jul

3 18:05 mist.doc

-rw-r--r--

1 mickeymo

12 Jul

3 18:59 nest.lst

drwxr-xr-x

2 mickeymo 4096 Jul

3 17:40 unixInternals

Linux is an operating system.


It follows the GNU standard.
Linux provides users with a command language.
The kernel of Linux is the core of the operating system.
Linux is a powerful and versatile operating system.
[mickeymouse@mycomputer mickeymouse]$

Nota: Generalmente, el carcter de nueva lnea acta como un finalizador de comando.


Alternativamente ; y & tambin pueden usarse como finalizadores de comandos.
Uso de ()
El metacarcter ()permite agrupar comandos en la lnea de comandos.
[mickeymouse@mycomputer mickeymouse]$ (cat linux.txt; date) >
datedfile
Fundamentos de Linux y Sistemas de Archivos

Unidad 1: Fundamentos de Shell 129

Copyright IBM Corp. 2006


Los materiales del curso no pueden ser reproducidos total o
parcialmente sin el permiso escrito previo de IBM.

Fundamentos de Linux

Gua del Estudiante

[mickeymouse@mycomputer mickeymouse]$

datedfile contendr la salida de linux.txt y la fecha del sistema


cuando se emite el comando. Asuma que se ha ingresado el comando como
se muestra a continuacin (sin el metacarcter ()).
[mickeymouse@mycomputer mickeymouse]$ cat linux.txt; date >
datedfile

Entonces, slo la salida date se habr almacenado en datedfile.


Agrupar comandos ayuda a combinar la salida de ms de un comando en
un archivo de salida.
Uso de && y ||
Los usos de && y || se muestran con algunos ejemplos para completar el tema de
notacin de la lnea de comandos. Se requieren de conocimientos de programacin
para usar && y || efectivamente. Estos dos metacarcteres son llamados operadores
condicionales.
&& se usa cuando el segundo comando va a ser ejecutado slo si el primer
comando tiene xito.
|| se usa cuando el segundo comando va a ser ejecutado slo si el primer
comando falla.
Cada comando devuelve al shell el estado de la salida. Se devuelve 0 si el
comando se ejecuta sin ningn problema (xito) y distinto de cero si algo va
mal. Este estado de la salida le dice al shell si el comando se ha ejecutado
con xito o no. En base al estado de la salida, el shell contina o detiene la
ejecucin del segundo comando.
Observe la sentencia que sigue:
[mickeymouse@mycomputer mickeymouse]$ cc prog.c && a.out

Esto le dice al shell de ejecutar a.out slo si la compilacin de prog.c


se ejecuta con xito, en otro caso no. cc es un compilador de programas C.
[mickeymouse@mycomputer mickeymouse]$ grep unix linux.txt &&
echo not found
[mickeymouse@mycomputer mickeymouse]$

Este comando no muestra nada. El patrn unix no se encuentra en


linux.txt. As grep devuelve un valor distinto de cero al shell, lo cual
significa que la ejecucin no fue exitosa. Aqu, el comando siguiente && no
se ejecuta. echo es un comando en Linux que slo muestra en la salida
estndar las palabras ingresadas despus de echo.
[mickeymouse@mycomputer mickeymouse]$ grep unix linux.txt ||
echo not found

Fundamentos de Linux y Sistemas de Archivos

Unit 6: El Editor vi 130

Copyright IBM Corp. 2006


Los materiales del curso no pueden ser reproducidos total o
parcialmente sin el permiso escrito previo de IBM.

Gua del Estudiante

Fundamentos de Linux

not found
[mickeymouse@mycomputer mickeymouse]$

Ahora se obtiene la salida deseada, ya que el comando || se ejecuta slo


si el primer comando falla.
A continuacin se va a aprender acerca de la sustitucin de parmetros.

3.5 Sustitucin de parmetros


El shell proporciona un mtodo para definir y sustituir variables usando metacaracteres
de sustitucin de parmetros {} (corchetes). Las siguientes son cuatro formas en las
que se puede hacer esto:

${variable-word}
${variable=word}
${variable+word}
${variable?mesg}

Muestra el valor de variable si ste existe; caso


contrario muestra el valor word
Muestra el valor de variable si ste existe; caso
contrario muestra el valor word y asigna a variable
el valor word
Si variable est asignada, muestra word, caso
contrario no muestra nada
Si variable ya est asignada, muestra el valor, en
caso contrario muestra mesg

A continuacin se muestran algunos ejemplos para ayudar a entender mejor esto.


Uso de Sustitucin de Parmetros
[mickeymouse@mycomputer mickeymouse]$ echo ${color-verde}
verde
[mickeymouse@mycomputer mickeymouse]$

Como color no est definido, se muestra verde.


[mickeymouse@mycomputer mickeymouse]$ color=azul
[mickeymouse@mycomputer mickeymouse]$ echo ${color-naranja}
azul
[mickeymouse@mycomputer mickeymouse]$

Muestra azul dado que color ya est definido. En ambos casos, la


variable color permanece sin cambios.
[mickeymouse@mycomputer mickeymouse]$ echo ${nuevocolor=verde}
verde
[mickeymouse@mycomputer mickeymouse]$

Muestra verde y le asigna a nuevocolor el valor verde.


[mickeymouse@mycomputer mickeymouse]$ echo
${nuevocolor+amarillo}
Fundamentos de Linux y Sistemas de Archivos

Unidad 1: Fundamentos de Shell 131

Copyright IBM Corp. 2006


Los materiales del curso no pueden ser reproducidos total o
parcialmente sin el permiso escrito previo de IBM.

Fundamentos de Linux

Gua del Estudiante

amarillo
[mickeymouse@mycomputer mickeymouse]$

Como nuevocolor est asignado, se muestra amarillo. nuevocolor no


es modificado.
[mickeymouse@mycomputer mickeymouse]$ echo ${otro+amarillo}
[mickeymouse@mycomputer mickeymouse]$

Como otro no est asignado no muestra nada.


[mickeymouse@mycomputer mickeymouse]$ echo ${nuevocolor? no
definido}
verde
[mickeymouse@mycomputer mickeymouse]$

Como la variable nuevocolor tiene valor asignado, muestra el valor de


nuevocolor.
[mickeymouse@mycomputer mickeymouse]$ echo ${otro?no definido}
bash: otro: no definido
[mickeymouse@mycomputer mickeymouse]$

El mensaje no definido es porque la variable otro no est definida


hasta ahora.
Al inicio de la unidad se explic acerca de las variables shell y las variables shell
definidas por el usuario. Se ha aprendido cuatro formas en las que las variables shell
definidas por el usuario se pueden definir y sustituir usando sustitucin de parmetros.
Antes de aprender acerca del ltimo conjunto de metacaracteres, denominados
Escapes y Comillas, se aprender cmo visualizar las variables asociadas con el shell.
Para obtener una lista de todas las variables con las que el shell est asociada, se
puede usar el comando set. El comando set muestra todas las variables actualmente
definidas para el shell. A continuacin, se van a establecer dos variables definidas por el
usuario.
[mickeymouse@mycomputer mickeymouse]$ set
BASH=/bin/bash
BASH_VERSINFO=([0]="2" [1]="05" [2]="8" [3]="1" [4]="release"
[5]="i386-redhat-linux-gnu")
BASH_VERSION=$'2.05.8(1)-release'
COLORS=/etc/DIR_COLORS
COLUMNS=80
DIRSTACK=()
EUID=504
GROUPS=()
HISTFILE=/home/mickeymouse/.bash_history

Fundamentos de Linux y Sistemas de Archivos

Unit 6: El Editor vi 132

Copyright IBM Corp. 2006


Los materiales del curso no pueden ser reproducidos total o
parcialmente sin el permiso escrito previo de IBM.

Gua del Estudiante

Fundamentos de Linux

HISTFILESIZE=1000
HISTSIZE=1000
HOME=/home/mickeymouse
HOSTNAME=mycomputer
HOSTTYPE=i386
IFS=$' \t\n'
INPUTRC=/etc/inputrc
KDEDIR=/usr
LAMHELPFILE=/etc/lam/lam-helpfile
LANG=en_US
LESSOPEN=$'|/usr/bin/lesspipe.sh %s'
LINES=25
LOGNAME=mickeymouse
LS_COLORS=
MACHTYPE=i386-redhat-linux-gnu
MAIL=/var/spool/mail/mickeymouse
MAILCHECK=60
OPTERR=1
OPTIND=1
OSTYPE=linux-gnu
PATH=/usr/kerberos/bin:/usr/local/bin:/bin:/usr/bin:/usr/X11R6
/bin:/home/mickeymouse/bin
PIPESTATUS=([0]="0")
PPID=14214
PS1=$'[\\u@\\h \\W]\\$ '
PS2=$'> '
PS4=$'+ '
PVM_ROOT=/usr/share/pvm3
PVM_RSH=/usr/bin/rsh
PWD=/home/mickeymouse
QTDIR=/usr/lib/qt-2.3.1
REMOTEHOST=192.168.1.201
SHELL=/bin/bash
SHELLOPTS=braceexpand:hashall:histexpand:monitor:history:inter
active-comments:emacs
SHLVL=1
SSH_ASKPASS=/usr/libexec/openssh/gnome-ssh-askpass
SUPPORTED=en_US:en
TERM=ansi
UID=504
USER=mickeymouse
XPVM_ROOT=/usr/share/pvm3/xpvm
Fundamentos de Linux y Sistemas de Archivos

Unidad 1: Fundamentos de Shell 133

Copyright IBM Corp. 2006


Los materiales del curso no pueden ser reproducidos total o
parcialmente sin el permiso escrito previo de IBM.

Fundamentos de Linux

Gua del Estudiante

_=
color=azul
langfile=/home/mickeymouse/.i18n
nuevocolor=verde
sourced=1
mc ()
{
mkdir -p ~/.mc/tmp 2>/dev/null;
chmod 700 ~/.mc/tmp;
MC=~/.mc/tmp/mc-$$;
/usr/bin/mc -P "$@" >"$MC";
cd "`cat $MC`";
/bin/rm "$MC";
unset MC
}
[mickeymouse@mycomputer mickeymouse]$

Lo anterior es la salida del comando set en el sistema en que se est trabajando. Las
dos variables definidas por el usuario, color y nuevocolor, tambin son parte de la
salida. Estas dos entradas se resaltan en la salida.
Finalmente, se pueden insertar comentarios usando el smbolo #. Esto es til
principalmente en shell scripts que requieren alguna documentacin. De hecho, todos
los metacaracteres que se han usado pueden usarse en cualquier shell script.

3.6 Escapes y Comillas


El shell le da significados especiales a todos los metacaracteres que reconoce. Por lo
tanto, si se desea usar estos caracteres especiales con su significado original, no es
posible hacerlo, ya que el intrprete los entiende de forma diferente. Para superar este
problema, se pueden neutralizar los metacaracteres usando escapes y comillas. A
continuacin se listan tres metacaracteres que permiten neutralizar los metacaracteres:

\ (Escape): Se usa para desactivar el significado especial de cualquier


metacarcter. Por defecto, el shell interpreta los caracteres con el significado
especial asociado a ste. Sin embargo, en el caso de necesitar usar los
metacaracteres como caracteres normales, se debe tomar la ruta de escape
usando el carcter \. El carcter \ debe usarse antes del metacarcter cuyo
significado especial debe ser desactivado.

''(Comillas simples): Desactivan el significado especial de todos los caracteres


que se encuentran entre ellas. Generalmente es til cuando se usa ms de un
metacarcter en la misma lnea. En lugar de usar \ antes de cada metacarcter
en la lnea, se puede encerrar la lnea entera con ''.

"" (Comillas dobles): Se usan para obtener la salida de la ejecucin del


comando encerrado en ellas.

Uso de \

Fundamentos de Linux y Sistemas de Archivos

Unit 6: El Editor vi 134

Copyright IBM Corp. 2006


Los materiales del curso no pueden ser reproducidos total o
parcialmente sin el permiso escrito previo de IBM.

Gua del Estudiante

Fundamentos de Linux

[mickeymouse@mycomputer mickeymouse]$ echo Enter * now


Enter lint.txt linux.txt linux1.txt linux2.doc
linuxChap1.doc linuxChap2.doc linuxCont.doc linuxInternals
listing.lst mist.doc nest.lst unixInternals now
[mickeymouse@mycomputer mickeymouse]$

Eso no es lo que se deseaba. Se quera el comando


simplemente mostrar Enter * now.

echo para

El shell entiende o interpreta el * como mostrar todos los archivos, que es


precisamente lo que ha hecho. Ingrese las palabras Enter y now, se
obtienen losnombres de todos los archivos del directorio actual. Se puede
rectificar esto usando el metacarcter \, el cual informa al shell que debe dar
el significado original a los caracteres especiales.
[mickeymouse@mycomputer mickeymouse]$ echo Enter \* now
Enter * now
[mickeymouse@mycomputer mickeymouse]$

Se ha neutralizado el metacarcter * ingresando \ inmediatamente antes *.


De manera similar, se puede usar el \ para neutralizar el mismo
metacarcter \.
[mickeymouse@mycomputer mickeymouse]$ echo \\
\
[mickeymouse@mycomputer mickeymouse]$

Uso de ''
[mickeymouse@mycomputer mickeymouse]$ echo 'Let us get $100 *
20'
Let us get $100 * 20
[mickeymouse@mycomputer mickeymouse]$

En la cadena anterior, se tienen dos metacaracteres, $ y *. Usando un par


de comillas simples, se ha desactivado su significado especial.
Tambin pudo hacerse lo siguiente:
[mickeymouse@mycomputer mickeymouse]$ echo Let us get \$100 \*
20
Let us get $100 * 20
[mickeymouse@mycomputer mickeymouse]$

Aqu, se us dos metacaracteres \.


Uso de ""
El uso de comillas dobles se explica mejor con el comando date.
Las comillas invertidas `` se usan para obtener la salida del comando que se
encuentra dentro de ellas. echo date mostrar date en la pantalla,

Fundamentos de Linux y Sistemas de Archivos

Unidad 1: Fundamentos de Shell 135

Copyright IBM Corp. 2006


Los materiales del curso no pueden ser reproducidos total o
parcialmente sin el permiso escrito previo de IBM.

Fundamentos de Linux

Gua del Estudiante

mientras que echo `date` mostrar la fecha del sistema ( la salida del
comando date).
[mickeymouse@mycomputer mickeymouse]$ echo date
date
[mickeymouse@mycomputer mickeymouse]$

El comando echo imprime la cadena date y no la salida del comando


date.
[mickeymouse@mycomputer mickeymouse]$ echo `date`
Sat Mar 2 13:10:28 GMT 2002
[mickeymouse@mycomputer mickeymouse]$

La salida del comando date se muestra aqu.


[mickeymouse@mycomputer mickeymouse]$ echo '*Date = `date`'
*Date = `date`
[mickeymouse@mycomputer mickeymouse]$

Si se usan comillas simples, no se obtiene el resultado requerido. Se debe


usar las comillas dobles.
[mickeymouse@mycomputer mickeymouse]$ echo "*Date = `date`"
*Date = Sat Mar 2 13:15:30 GMT 2002
[mickeymouse@mycomputer mickeymouse]$

Aqu, se obtiene la cadena *Date impresa junto a la salida del comando


date.
Las comillas dobles ("") desactivan el significado especial de todos los
metacaracteres excepto $, ` y \.
La tabla 1.2 lista todos los metacaracteres.
Categora
Notaciones de
la lnea de
comando

Metacarcter

Descripcin

Especifica que el comando contina en la siguiente


lnea. Cuando se ejecuta, se muestra un smbolo > en
la pantalla. Esto indica que el comando de la lnea
precedente no est completo.

&

Especifica que el comando declarado en esta lnea debe


ser ejecutado como un proceso de segundo plano.

Separa comandos en la misma lnea.

()

Agrupa comandos especificados dentro de ( ) en uno


solo.

Command1 &&
command2

Especifica que command2 debe ejecutarse slo si


command1 se ejecuta exitosamente.

Command1 ||
command2

Especifica que command2 debe ejecutarse slo si


command1 falla.

Fundamentos de Linux y Sistemas de Archivos

Unit 6: El Editor vi 136

Copyright IBM Corp. 2006


Los materiales del curso no pueden ser reproducidos total o
parcialmente sin el permiso escrito previo de IBM.

Gua del Estudiante


Sustitucin de
comodn

Redireccin y
Tuberas

Cualquier carcter nico.

Cualquier combinacin de caracteres. Esta combinacin


puede incluir tambin el carcter null, excluyendo un
punto inicial.

[list]

Cualquier carcter contenido en la lista.

[^list]

Cualquier carcter no contenido en la lista.

> archivo

Hace de archivo la salida estndar. Todas las


referencias a la salida estndar ahora se refieren a este
archivo.

< archivo

Hace de archivo la entrada estndar. Todas las


referencias a la entrada estndar ahora se refieren a
este archivo.

>> archivo

Hace de archivo la salida estndar, agregando la


salida a archivo si ya existe.

<< word

1>&2

Command1 |
command2
Variables
Especiales del
Shell

Especifica que la entrada del shell se va a tomar hasta


la primera lnea que contenga word o hasta el final del
archivo. Esta caracterstica es til cuando se hace
programacin shell. Sin embargo, esta fuera del alcance
de esta discusin.
Permite redireccionar la salida estndar al error
estndar. Cuando las aplicaciones se ejecutan, permite
que los mensajes de error se redireccionen al error
estndar, en lugar de la salida estndar. Esto ayuda a
evitar desorden de la salida y los mensajes de error.
A esto se denomina tuberas (piping). Hace que la salida
estndar de command1 sea la entrada estndar de
command2.

$#

Especifica el nmero de argumentos al shell.

$-

Especifica las opciones del shell.

$?
$$
$!
$0
$*
Sustitucin de
Parmetros

Fundamentos de Linux

${variableword}

Especifica el estado de la salida del ltimo comando


ejecutado.
Especifica el nmero del proceso o el PID del proceso
shell actual.
Especifica el nmero del proceso o el PID del ltimo
comando de segundo plano.
Especifica el nombre del comando que se est
ejecutando actualmente.
Especifica la lista de parmetros posicionales. Son los
argumentos pasados al shell. Se usa en programacin
shell.
Muestra el valor de variable si ste existe; caso
contrario muestra el valor word.

${variable=wor Muestra el valor de variable si ste existe; caso


d}
contrario muestra el valor word y asigna a variable
Fundamentos de Linux y Sistemas de Archivos

Unidad 1: Fundamentos de Shell 137

Copyright IBM Corp. 2006


Los materiales del curso no pueden ser reproducidos total o
parcialmente sin el permiso escrito previo de IBM.

Fundamentos de Linux

Gua del Estudiante


el valor word.

${variable+wor Si variable est asignada, muestra word, caso


d}
contrario no muestra nada.
${variable?mes Si variable ya est asignada, muestra el valor, en
g}
caso contrario muestra mesg y sale del shell
Comillas

Especifica que el carcter siguiente a \ debe ser


interpretado literalmente.

''

Especifica que el carcter encerrado dentro de '' debe


ser interpretado literalmente.

""

Especifica que los caracteres encerrados dentro de ""


son interpretados literalmente, excepto cuando se
encierran dentro de "" los metacaracteres $ y \, los
cuales conservan su funcion.
Tabla 1.2: Lista de Metacaracteres

Antes de terminar esta unidad, se va a aprender otra caracterstica del shell de Linux,
que es la capacidad de completar los nombres de archivos.

4. Completar Nombres de Archivos


Linux proporciona una forma de ayudar a completar un nombre de archivo. Se usa la
tecla tab para este propsito. Por completar nombres de archivo, se entiende la
capacidad de ingresar los primeros caracteres (uno o ms) del nombre del archivo y
seguir los caracteres con la tecla tab, el shell completa el resto de caracteres del
nombre del archivo. Esto es til cuando los nombres de archivos son largos y ayuda al
evitar ingresar los nombres completos. Por ejemplo, si se desea ver el contenido del
archivo linuxCont.doc, normalmente se ingresa el nombre completo del archivo. En
lugar de esto, si se ingresa una parte de ste y se le sigue con la tecla tab, el shell
completa el resto por nosotros, tal como se muestra.
[mickeymouse@mycomputer mickeymouse]$ cat linuxCo<tab
key>
[mickeymouse@mycomputer mickeymouse]$ cat linuxCont.doc
En el ejemplo anterior se asume que el directorio no contiene ningn otro archivo con un
nombre similar. Para entender mejor esto, asuma que el directorio actual de trabajo
contiene los siguientes archivos y directorios (resaltados en negrita):
linux1.txt
linux2.doc
linuxChap1.doc
linuxChap2.doc
linuxCont.doc
linuxInternals
linux.txt

Fundamentos de Linux y Sistemas de Archivos

Unit 6: El Editor vi 138

Copyright IBM Corp. 2006


Los materiales del curso no pueden ser reproducidos total o
parcialmente sin el permiso escrito previo de IBM.

Gua del Estudiante

Fundamentos de Linux

Si hay ms de un nombre de archivo con diferentes caracteres despus de Co,


entonces el sistema los mostrar todos y se podr elegir de la lista. En el ejemplo, se
tiene slo un archivo que tiene el patrn Co. Sea otro ejemplo para entender lo que
ocurre cuando hay ms de un archivo que tiene el mismo modelo inicial de caracteres.
Si se ingresa
[mickeymouse@mycomputer mickeymouse]$ cat linux<tab key>
Se observa que el shell no est llenando ningn carcter. Presionando la tecla tab
nuevamente, el shell mostrar todos los nombres de archivos empezando con el patrn
inicial de caracteres linux. Si se ingresa la tecla tab nuevamente, como se muestra:
[mickeymouse@mycomputer mickeymouse]$ cat linux<tab
key><tab key>
linux.txt
linux2.doc
linuxChap2.doc
linuxInternals
linux1.txt
linuxChap1.doc linuxCont.doc
Cuando se ingresa cat linux<tab key><tab key> el shell muestra todos los
archivos que empiezan con el patrn linux, como se mostr anteriormente y luego
muestra el prompt con cat linux esperando se elija uno de la lista. Se puede ingresar
unos pocos caracteres ms y presionar la tecla tab nuevamente, y el shell puede
completar el resto si no hay otros archivos con un patrn similar nuevamente.
La caracterstica de completar nombres de archivo de un shell de Linux es til por las
siguientes razones:

Cuando los nombres de archivo son muy largos.

Cuando hay un gran nmero de archivos en un directorio.

Cuando un gran nmero de archivos tienen nombres similares.

Fundamentos de Linux y Sistemas de Archivos

Unidad 1: Fundamentos de Shell 139

Copyright IBM Corp. 2006


Los materiales del curso no pueden ser reproducidos total o
parcialmente sin el permiso escrito previo de IBM.

Fundamentos de Linux

Gua del Estudiante

Resumen
Ahora que ha completado esta unidad, estar en capacidad de:

Proporcionar una visin general del shell de Linux.

Discutir acerca de las variables shell.

Describir los metacaracteres.

Explicar cmo asignar y referenciar las variables shell.

Fundamentos de Linux y Sistemas de Archivos

Unit 6: El Editor vi 140

Copyright IBM Corp. 2006


Los materiales del curso no pueden ser reproducidos total o
parcialmente sin el permiso escrito previo de IBM.

Gua del Estudiante

Fundamentos de Linux

Unidad 1: Examen de Autoevaluacin


1) El comodn que se usa para sustituir un solo carcter en nombres de archivo es
_______.
a) *
b) <
c) >
d) ?
2) [mickeymouse@mycomputer mickeymouse]$ ls o chap*.* equivale a
[mickeymouse@mycomputer mickeymouse]$ chap*
a) Verdadero
b) Falso
3) [mickeymouse@mycomputer mickeymouse]$ grep hola chap[a-duw].txt encontrar el patrn hola en todos los archivos que tienen chap como
patrn inicial seguido por cualquier carcter a, b, c, d, u, v or w, seguido
por .txt.
a)
b)

Verdadero
Falso

4) [mickeymouse@mycomputer mickeymouse]$ cat chap1.txt 1>


temp.txt no es lo mismo que cat chap1.txt > temp.txt
a) Verdadero
b) Falso
5) [mickeymouse@mycomputer mickeymouse]$ cat linux.txt file1.txt
> outfile 2>&1 redirecciona
a) La entrada estndar al mismo archivo como la salida estndar
b) La salida estndar al mismo archivo como la entrada estndar
c) La salida estndar al mismo archivo como el error estndar
d) El error estndar al mismo archivo como la salida estndar
6) [mickeymouse@mycomputer mickeymouse]$ cal; date > temp.txt
es lo mismo que
[mickeymouse@mycomputer mickeymouse]$ (cal; date) > temp.txt
a) Verdadero
b) Falso

Fundamentos de Linux y Sistemas de Archivos

Unidad 1: Fundamentos de Shell 141

Copyright IBM Corp. 2006


Los materiales del curso no pueden ser reproducidos total o
parcialmente sin el permiso escrito previo de IBM.

Fundamentos de Linux

Gua del Estudiante

7) Cul de los siguientes mostrar found siempre y cuando el patrn hello se


encuentre en el archivo myfile.txt?
a) [mickeymouse@mycomputer mickeymouse]$ grep hello myfile.txt > file || echo
found
b) [mickeymouse@mycomputer mickeymouse]$ grep hello myfile.txt > file &&
echo found
c) [mickeymouse@mycomputer mickeymouse]$ echo found || grep hello
myfile.txt > file
d) Ninguna de los anteriores
8) Cul de las siguientes ser la salida del comando [mickeymouse@mycomputer
mickeymouse]$ echo $!?
a) El PID del ltimo comando ejecutado en segundo plano
b) El PID del shell actual
c) El status de la salida del ltimo comando
d) Ninguno de los anteriores
9) Cul de las siguientes es la salida del comando [mickeymouse@mycomputer
mickeymouse]$ echo date\* ?
a) date\*
b) Wed Jul 4 16:09:23 GMT 2001\*
c) date*
d) Wed Jul 4 16:09:23 GMT 2001*
10)

Para asignar el valor rosa a la variable flor, si flor todava no est definida,
cul de los siguientes es el uso correcto?
a) echo $flor = rosa
b) echo $flor-rosa
c) echo ${flor-rosa}
d) echo ${flor=rosa}

Fundamentos de Linux y Sistemas de Archivos

Unit 6: El Editor vi 142

Copyright IBM Corp. 2006


Los materiales del curso no pueden ser reproducidos total o
parcialmente sin el permiso escrito previo de IBM.

Gua del Estudiante

Fundamentos de Linux

Respuestas a la Unidad 1: Examen de Autoevaluacin


1) d
2) b
3) a
4) b
5) d
6) b
7) b
8) a
9) c
10) d

Fundamentos de Linux y Sistemas de Archivos

Unidad 1: Fundamentos de Shell 143

Copyright IBM Corp. 2006


Los materiales del curso no pueden ser reproducidos total o
parcialmente sin el permiso escrito previo de IBM.

Gua del Estudiante

Fundamentos de Linux

Unidad 2: Lab. Fundamentos del Shell


Objetivos de Aprendizaje
Al final de esta unidad, Ud. ser capaz de:

Trabajar con variables shell.

Crear y asignar variables definidas por el usuario.

Trabajar con diferentes metacaracteres del shell.

Fundamentos de Linux y Sistemas de Archivos

Unidad 2: Lab. Fundamentos del Shell 145

Copyright IBM Corp. 2006


Los materiales del curso no pueden ser reproducidos total o
parcialmente sin el permiso escrito previo de IBM.

Fundamentos de Linux

Gua del Estudiante

Ejercicios de Laboratorio
1) Crear un directorio y llamarlo Personal en su directorio home.
2) Muvase a Personal y cree los siguientes documentos y subdirectorios.
Documentos:

Book1.txt

Book2.txt

Album1.txt

Album2.txt

Hobby.txt

Sport.txt

Subdirectorios:

Collections

Favorites

Albums

Nature
3) Listar los archivos usando los metacaracteres tal como
?, *, [list], [^list].
4) Usar todos los metacaracteres de redireccin como >,

; , &&, || .

5) Crear una variable shell llamada name y asignarle un valor llamado Mark.
6) Usar la sustitucin de parmetros para cambiar name de Mark a Richard.

Fundamentos de Linux y Sistemas de Archivos

Unit 6: El Editor vi 146

Copyright IBM Corp. 2006


Los materiales del curso no pueden ser reproducidos total o
parcialmente sin el permiso escrito previo de IBM.

Gua del Estudiante

Fundamentos de Linux

Unidad 3: Caractersticas del Shell


Objetivos de Aprendizaje
Al final de esta unidad, Ud. ser capaz de:

Explicar las variables predefinidas del shell.

Explicar los parmetros posicionales.

Describir cmo trabaja el comando expr.

Discutir acerca de los comandos read y test.

Describir la familia de filtros grep y el filtro sed.

Fundamentos de Linux y Sistemas de Archivos

Unit 6: El Editor vi 147

Copyright IBM Corp. 2006


Los materiales del curso no pueden ser reproducidos total o
parcialmente sin el permiso escrito previo de IBM.

Fundamentos de Linux

Gua del Estudiante

1. Introduccin
En la Unidad: Fundamentos del Shell, de este volumen, se presentaron diferentes
variables usadas por un shell. Se aprendi de diferentes variables shell, tanto las
definidas por el sistema como las definidas por el usuario. En esta unidad, se
aprendern ms detalles acerca del shell y sus caractersticas.
Las variables predefinidas son variables definidas por el sistema y se discutirn en esta
unidad todas las variables predefinidas de un shell. Tambin se aprender acerca de los
parmetros posicionales. Se manejarn algunos comandos como expr, read y test.
Se explicarn tambin los filtros con detalle, al igual que algunas facilidades adicionales
del shell a travs de comandos que tienen una sintaxis similar a la sintaxis de C.

2. Variables Shell Predefinidas


Las variables shell predefinidas son variables definidas por el sistema para cada shell,
que es el caso contrario de las variables definidas por el usuario. Generalmente, las
variables shell, tanto las predefinidas como las definidas por el usuario, pueden ser
establecidas de dos formas, asignando un valor a la variable, o activando la variable.
variable=value
Establece el valor a la variable.
set variable
Activa la variable.
La tabla 3.1 muestra una lista de variables predefinidas.
Nombre

Valor

BASH

Proporciona un nombre de ruta de una instancia de


bash, por ejemplo, echo
$BASH resultar
/bin/bash.

BASH_VERSION

Proporciona la versin actual de una instancia de


bash, por ejemplo, echo
$BASH_VERSION
resultar 2.05.8(1)-release.

COMMAND_ORIENTED_HISTORY

Almacena comandos de lneas simple o mltiples en


el archivo history.

HISTSIZE

Proporciona informacin acerca del nmero de


comandos que se van a almacenar en el archivo
history, por ejemplo, echo $HISTSIZE resultar
en 1000.

HOME

Proporciona informacin acerca del directorio home


del usuario actual, por ejemplo, echo $HOME entrega
/home/mickeymouse.

HOSTNAME_COMPLETION_FILE

Informa al bash acerca del mtodo para completar


los nombres de host (hostname). Los nombres host

Fundamentos de Linux y Sistemas de Archivos

Unit 6: El Editor vi 148

Copyright IBM Corp. 2006


Los materiales del curso no pueden ser reproducidos total o
parcialmente sin el permiso escrito previo de IBM.

Gua del Estudiante

Fundamentos de Linux

son nombres dados a un computador de una red. Por


defecto es /etc/hosts, que representa al archivo
host del sistema.
Proporciona informacin acerca de la naturaleza del
host en el que el usuario est, por ejemplo, echo
$HOSTTYPE dar la salida i386.

HOSTTYPE

MAIL

Notifica al usuario, si hay nuevos correos o no, por


ejemplo, mail dar 'No mails' para mickeymouse.

MAILCHECK

Le indica al bash acerca del intervalo de tiempo en


el que debe verificar por nuevos correos.
Proporciona una lista de nombres de archivos en la
cual recibir los correos. Estos nombres estn
separados por dos puntos. El nombre por defecto es
/var/spool/mail/$USER, donde $USER ser
sustituido con el nombre login del usuario.
Notifica al usuario acerca de trabajos de segundo
plano terminados inmediatamente. En caso contrario,
reporta al usuario antes de proporcionar el prompt
primario.
Proporciona informacin al usuario acerca del
reciente directorio de trabajo previo, por ejemplo
echo $OLDPWD puede devolver /home, si el
directorio de trabajo previo fue /home.

MAILPATH

NOTIFY

OLDPWD

PATH

PROMPT_COMMAND
PS1
PS2
PPID

Muestra la ruta de bsqueda del comando, por


ejemplo,
echo
$PATH
mostrar
/user/kerberos/bin:usr/local/bin:/usr/bin:/usr/X11R6/bi
n:/home /mickeymouse/bin.
Generalmente se ejecuta antes del comando prompt
primario.
Proporciona informacin acerca del prompt primario,
por ejemplo, echo $PS1 mostrar [\u@\h \W]\$.
Proporciona informacin acerca del prompt
secundario, por ejemplo, echo $PS2 resultar en >.
Proporciona la identificacin (ID) del proceso shell
padre, por ejemplo, echo $PPID devolver 26887.

PWD

Proporciona informacin acerca del directorio actual


de trabajo, por ejemplo, echo $PWD devolver
/home/mickeymouse.

RANDOM

Genera un nuevo nmero aleatorio cuando lo


requiera el usuario, por ejemplo echo $RANDOM
generar un nmero 30482. Sin embargo, no se
puede asignar este nmero a una variable al
momento de la creacin.
Proporciona informacin acerca de cundo fue
invocado el shell por ltima vez en segundos, por

SECONDS

Fundamentos de Linux y Sistemas de Archivos

Unidad 3: Caractersticas del Shell 149

Copyright IBM Corp. 2006


Los materiales del curso no pueden ser reproducidos total o
parcialmente sin el permiso escrito previo de IBM.

Fundamentos de Linux

Gua del Estudiante

ejemplo, echo $SECONDS mostrar 385 como


resultado.
Especifica el tiempo que el sistema debe esperar por
entrada del usuario antes de salir, por ejemplo,
$TMOUT 10 le dice al sistema de esperar 10
segundos antes de salir.
Proporciona la identificacin de usuario ID del
usuario actual. Por ejemplo, echo $UID devolver
503, si la identificacin de usuario asignado al usuario
es 503.

TMOUT

UID

Tabla 3.1: Variables Shell Predefinidas

El uso de algunas variables shell predefinidas se presenta a continuacin:


Uso de Algunas Variables Shell
[mickeymouse@mycomputer mickeymouse]$ echo $HOME
/home/mickeymouse
[mickeymouse@mycomputer mickeymouse]$
En este ejemplo, la salida de echo $HOME es la misma que
habra sido para pwd ya que el directorio actual de trabajo es
el directorio home.
Nota: pwd no es lo mismo que PWD. pwd es el comando y PWD es la variable shell.
[mickeymouse@mycomputer mickeymouse]$ echo $UID
501
[mickeymouse@mycomputer mickeymouse]$

501 es el ID que se le ha asignado al usuario cuando se cre el login para


el usuario.
[mickeymouse@mycomputer mickeymouse]$ PS1=`date`$
Sat Jul 7 15:47:45 GMT 2001$

Qu le ha ocurrido al prompt de comandos [mickeymouse@mycomputer


mickeymouse]$? Se ha cambiado la cadena del prompt de
[mickeymouse@mycomputer mickeymouse]$
a
Sat Jul 7
15:47:45 GMT 2001$ asignando el resultado del comando date. PS1 es
una variable shell que permite a los usuarios cambiar la cadena del prompt
a cualquier otra cadena que se desee.
Se ha asignado la salida del comando date seguido por $ a PS1.
Nota: Encerrando la fecha dentro de comillas invertidas se obtiene la salida
del comando date.
Para cambiar la cadena del prompt a la original, se puede simplemente
reasignar PS1.
Sat Jul 7 15:47:45 GMT 2001$ PS1=$PWD$
[mickeymouse@mycomputer mickeymouse]$

Fundamentos de Linux y Sistemas de Archivos

Unit 6: El Editor vi 150

Copyright IBM Corp. 2006


Los materiales del curso no pueden ser reproducidos total o
parcialmente sin el permiso escrito previo de IBM.

Gua del Estudiante

Fundamentos de Linux

Ahora se ha reasignado [mickeymouse@mycomputer mickeymouse]$


como la cadena del prompt. Aqu se ha usado PWD como directorio actual
de trabajo, que es /home/mickeymouse.
Fin del Uso de Algunas Variables Shell
Se ha aprendido una caracterstica muy importante del shell de Linux, que permite a los
usuarios cambiar y personalizar cadenas de prompts. En lo que queda del curso, se
usar la cadena prompt /home/mickeymouse$ estableciendo la cadena prompt PS1 a
$PWD$, como se mostr en el ltimo ejemplo. Sin embargo, este cambio debe hacerse
para cada sesin de ingreso (login).
En la Unidad 6: Personalizacin del Ambiente del Usuario, de este volumen, se
aprender cmo realizar personalizaciones adicionales, los cuales no requieren cambiar
la cadena prompt durante cada sesin de ingreso (login).
PS2 es la segunda cadena prompt. La segunda cadena prompt por defecto es >, la cual
se mostr cuando se us el metacarcter de continuacin de lnea (\). A PS2 tambin
se le puede asignar cualquier cadena elegida por el usuario.

3. Parmetros Posicionales
Cada shell proporciona un lenguaje llamado script shell o programa shell, el cual se
puede usar para escribir programas. El archivo que maneja el script shell se denomina
shell file.
Se pueden pasar argumentos de lnea de comandos a un archivo shell. Estos
argumentos estn contenidos en variables shell que son referidos como parmetros
posicionales.
Las siguientes son algunas de las caractersticas de los parmetros posicionales:

Son referenciados con las variables $0, $1, $2, etc. $0 contiene el nombre
del script, el primer argumento est contenido en $1, el segundo en $2 etc.
Nota: Los nombres de las variables no son 1, 2, 3 y etc. Estos son slo
notaciones compactas para indicar los parmetros posicionales de un archivo
shell.

El dgito siguiente al smbolo $ indica la posicin en la lnea de comando.

A diferencia de las variables de un lenguaje de programacin regular, los


parmetros posicionales o variables de argumentos, como se denominan, no
pueden ser alterados.

4. El Comando expr
El comando expr se presenta a continuacin para ilustrar cmo se usan los parmetros
posicionales. El comando expr evala la expresin dada como argumento e imprime el
resultado en la salida estndar.
Uso del Comando 3.1

Fundamentos de Linux y Sistemas de Archivos

Unidad 3: Caractersticas del Shell 151

Copyright IBM Corp. 2006


Los materiales del curso no pueden ser reproducidos total o
parcialmente sin el permiso escrito previo de IBM.

Fundamentos de Linux

Gua del Estudiante

/home/mickeymouse$ expr 2 + 3 + 5
10
/home/mickeymouse$

Los operadores que son permitidos en las expresiones proporcionadas a


expr son |, &, !=, =, <, <=, >, >=, +, -, *, /, y %. Como
*, > y < son metacaracteres, cuando estos operadores se usan en el
comando expr, deben combinarse con el carcter \ para ignorar el
significado especial de estos caracteres. Vase el ejemplo dado a
continuacin:
/home/mickeymouse$ expr 2 \* 3
6
/home/mickeymouse$

Si no se hubiera usado el operador \, el comando habra interpretado *


como todos los archivos del directorio y mostrado los archivos. Para los
operadores <= y >= tambin se debe usar \ porque el shell interpretar de
otra forma a > y < como caracteres especiales.
Fin del Uso de Comandos 3.1
Se pueden usar tambin las expresiones que se muestran en la tabla 3.2. Estos
bsicamente manejan cadenas. Las entradas de la tabla son de las pginas man de
Suse Linux 9.1.
Expresiones

Descripcin

match STRING REGEXP


substr
STRING
LENGTH

POS

index STRING CHARS

length STRING
+ TOKEN

Compara la cadena STRING con una expresin regular


o con otra cadena.
Proporciona la subcadena de STRING. La posicin POS
se cuenta a partir de 1.
Proporciona el ndice en STRING donde cualquier
CHARS se encuentra. Si no se encuentra CHARS,
devuelve 0.
Proporciona la longitud de STRING.
Interpreta TOKEN como una cadena incluso si se usan
las palabras claves como 'match' o el operador '/'.

Tabla 3.2: Operadores para expr y Descripciones

Las palabras que se muestran a continuacin en negrita son los argumentos para expr,
basados en los cuales expr ejecuta ciertas acciones.
Uso de Comandos 3.2
os=linux
/home/mickeymouse$ expr match linux $os
5
/home/mickeymouse$

Compara la cadena linux con el contenido de la variable os.


Fundamentos de Linux y Sistemas de Archivos

Unit 6: El Editor vi 152

Copyright IBM Corp. 2006


Los materiales del curso no pueden ser reproducidos total o
parcialmente sin el permiso escrito previo de IBM.

Gua del Estudiante

Fundamentos de Linux

/home/mickeymouse$ expr substr hello 3 5


llo
/home/mickeymouse$

Imprime la subcadena que empieza en la posicin 3 de la cadena.


/home/mickeymouse$ expr index hello e
2
/home/mickeymouse$

Imprime la posicin de la letra e en la cadena.


/home/mickeymouse$ expr index hello eo
2
/home/mickeymouse$

Imprime la posicin de la primera letra encontrada en la cadena, que es e


nuevamente.
/home/mickeymouse$ expr length hello
5
/home/mickeymouse$

Imprime el nmero de caracteres presentes en la cadena.


/home/mickeymouse$ expr index match m
expr: syntax error
/home/mickeymouse$

Devuelve un error, ya que match es un comando para expr.


/home/mickeymouse$ expr index + match m
1
/home/mickeymouse$

Imprime la posicin de la letra m en la cadena match. En este caso se le


indica a expr que interprete a match como una cadena simple. Usando +,
los comandos para expr regresan a su significado original.
Fin del Uso de Comandos 3.2
Luego aprenderemos acerca de algunos otros comandos que se pueden ejecutar en el
shell y usar en scripts shell.

5. El Comando find
Este comando se usa para buscar archivos en la jerarqua de directorios. La sintaxis
para este comando se muestra a continuacin:
find [ruta] expresin
Fundamentos de Linux y Sistemas de Archivos

Unidad 3: Caractersticas del Shell 153

Copyright IBM Corp. 2006


Los materiales del curso no pueden ser reproducidos total o
parcialmente sin el permiso escrito previo de IBM.

Fundamentos de Linux

Gua del Estudiante

En el ejemplo anteriormente, ruta especifica el directorio a partir del cual la bsqueda


debe empezar. Para comprender este comando, se asume que el directorio home tiene
los siguientes archivos.
file1.txt
newfile.txt
passwd
Uso de Comando 3.3
/home/mickeymouse$ find name passwd -print
/home/mickeymouse/passwd
/home/mickeymouse$

En el ejemplo anterior, se ha proporcionado un patrn passwd seguido de la


opcin name. Lo que sigue a name se trata como un nombre de archivo y
se busca en la ruta especificada por ruta. No se ha especificado ninguna
ruta, as que slo se busca y muestra el directorio actual. La opcin print
causa que la ruta completa sea impresa.
/home/mickeymouse$ find / name passwd -print
/etc/passwd
/usr/bin/passwd
/usr/local/ftp/etc/passwd
/home/mickeymouse/passwd
/home/mickeymouse$

El nico cambio en el find anterior es que la bsqueda se inicia en otro


punto de la jerarqua del directorio. Se especific /, significando la raz. El
comando busca en la jerarqua completa de la estructura del directorio y
muestra la ruta completa del nombre de archivo cuando lo encuentra en un
directorio. No se puede buscar en aquellos directorios que no tienen
permisos de ejecucin. El siguiente mensaje se muestra para todos esos
directorios:
find: /usr/lib/ircd: Permission denied

Est disponible un nmero de opciones para expresin utilizadas con el


comando find. Para mayor informacin acerca del comando, refirase a
las pginas man de find.
Fin del Uso de Comandos 3.3

6. El Comando read
El shell proporciona un comando read incorporado que lee una lnea de texto de la
entrada estndar y asigna el valor (en otras palabras, el texto) a una variable con
nombre. Sin embargo, el valor del texto asignado no tiene el carcter de nueva lnea.

Fundamentos de Linux y Sistemas de Archivos

Unit 6: El Editor vi 154

Copyright IBM Corp. 2006


Los materiales del curso no pueden ser reproducidos total o
parcialmente sin el permiso escrito previo de IBM.

Gua del Estudiante

Fundamentos de Linux

Entre los usos del comando read se destacan: configuracin de variables de entorno
en .bashrc, asignacin de valores a variables en programas Shell Scripts, entre otros.
Se aprender acerca de .bashrc y programas shell scripts en la Unidad 6:
Personalizar el Ambiente del Usuario de este volumen.
Uso de Comandos 3.4
/home/mickeymouse$ read firstVar
hello <enter>
/home/mickeymouse$

La cadena hello se almacena en la variable denominada firstVar. La


cadena 'hello' no es la salida del comando read, sino la entrada dada por
el usuario. El argumento para read es el nombre de la variable. El comando
read lee de la entrada estndar.
/home/mickeymouse$ read secondVar
my world
/home/mickeymouse$

Se ha asignado tambin una cadena a secondVar .


/home/mickeymouse$ echo $firstVar $secondVar
hello my world
/home/mickeymouse$

Imprime el contenido de ambas variables.


Fin del Uso de Comandos 3.4

7. El Comando test
El comando test en Linux se usa para realizar las siguientes funciones:

Verificar si el argumento dado es un archivo o un directorio.

Determinar si se han pasado suficientes argumentos para los scripts shell.

Comparar cadenas de caracteres o nmeros dados.

El comando test simplemente devuelve un estado de la salida al shell, reportando


xito o error.
Uso de Comandos 3.5
/home/mickeymouse$ flower=rose
/home/mickeymouse$ test $flower = rose
/home/mickeymouse$

Se ha asignado la variable definida por el usuario flower el valor rose. A


continuacin, se prueba usando el comando test si la variable flower
realmente tiene el valor rose. No hay salida desde test. Devuelve un

Fundamentos de Linux y Sistemas de Archivos

Unidad 3: Caractersticas del Shell 155

Copyright IBM Corp. 2006


Los materiales del curso no pueden ser reproducidos total o
parcialmente sin el permiso escrito previo de IBM.

Fundamentos de Linux

Gua del Estudiante

status de salida que puede ser capturado en comandos como while,


until e if en un script shell.
Alguna de las opciones que el comando test puede tomar son d, -w y
x.
/home/mickeymouse$ test d programs
/home/mickeymouse$ echo $?
0
/home/mickeymouse$

El status de salida del ltimo comando ejecutado es 0, lo cual indica xito.


-w y x indican si el argumento (un archivo o directorio) es de escritura y
ejecutable respectivamente. Esto depende de los permisos asignados por el
usuario.
El comando test es muy til en programacin shell para realizar acciones
basadas en las condiciones.
Fin del Uso de Comandos 3.5
Una vez aprendido acerca de las variables predefinidas, los parmetros posicionales y
cmo trabajar con expr, test y los comandos read, se aprender acerca de grep y
sed con poco detalle.

8. Filtros en Linux
Ya se ha explicado acerca de los filtros Linux en el Volumen 1, Unidad 2: El sistema
Linux. En esta unidad, se aprender acerca del uso adicional de grep, la familia grep
de filtros y el filtro sed. Para entender estos poderosos filtros, se debe comprender
primero las expresiones regulares.
Una expresin regular es la descripcin de una plantilla, la cual se usa para comparar
contra una cadena de caracteres. Las expresiones regulares son frmulas que hacen
corresponder una cadena con un patrn dado. El patrn usa caracteres que tienen un
especial significado. La expresin regular se especifica como una cadena.
Las expresiones regulares se usan para bsquedas sensitivas al contexto y
modificacin de texto. Proporcionan un mtodo para seleccionar una cadena especfica
de un conjunto de cadenas.
Algunos caracteres especiales usados en expresiones regulares se muestran en la
Tabla 3.3. Sin embargo, esto no es una lista exhaustiva.
Se aprender ms acerca de los caracteres especiales usados en las expresiones
regulares cuando se aprenda acerca de la familia de comandos grep y el filtro sed.
grep y sed tienen su propio conjunto de metacaracteres.
Carcter
Especial

Significado

Fundamentos de Linux y Sistemas de Archivos

Unit 6: El Editor vi 156

Copyright IBM Corp. 2006


Los materiales del curso no pueden ser reproducidos total o
parcialmente sin el permiso escrito previo de IBM.

Gua del Estudiante

Fundamentos de Linux

Equivale a cualquier carcter nico. r.n coincidir con run, ran,


rbn, ron, etc. Nota: El . significa un solo carcter entre r y n. La
lnea puede tener caracteres antes de r y despus de n. As el
patrn relaciona abrun, ranbb o abrankk.

[]

Equivale a cualquier carcter especificado en el rango.


[1234]book coincidir con 1book, 2book, 3book o 4book.

[^]

Equivale a cualquier carcter que no est en el rango. [^abc]


equivale a todas las lneas que contienen cualquier carcter que no
est en [a,b,c]. As adf y kkkkc coincidirn, pero no aabc o
aaaa.

Equivale a cero o una ocurrencia del carcter precedente. ab?


Coincidir con a y ab.

Equivale a cero o ms ocurrencias del carcter precedente. ab*


equivale a, ab, abb, abbbbb, aaa, acc etc. aaa y acc
tambin coinciden porque el * relaciona cero o ms ocurrencias del
carcter precedente, que es b en este caso.

Equivale a una o ms ocurrencias del carcter precedente. ab+


coincide con ab, abb, abbbb, etc. No coincide con acc aaa
ya que + indica una o ms ocurrencias del carcter precedente b.

^
$

Equivale al inicio de la lnea. Por ejemplo, ^this coincide con todas


las lneas que tienen this como patrn de inicio en las lneas.
Equivale al final de la lnea. Por ejemplo, this$ equivale a todas las
lneas que tienen this como patrn al final en todas las lneas.
Tabla 3.3: Metacaracteres Usados con Expresiones Regulares

La tabla 3.3 proporciona una lista de algunos metacaracteres simples. Sin embargo, no
todos ellos se usan con los comandos de bsqueda de patrn, grep y sed.

8.1 grep, egrep y fgrep


grep siglas en ingls de global regular expression print (impresin global de expresin
regular). grep fue presentado en el Volumen 1, Unidad 2 El Sistema Linux. El uso
ms simple de grep se muestra a continuacin:
grep patrn nombrearchivo
A continuacin se aprender ms acerca de grep y su familia de filtros. El patrn
para grep pueden ser los metacaracteres ^ y $, que se usan para fijar el patrn al
inicio o fin de la lnea, respectivamente. Considere un archivo denominado
filters.txt, para comprender alguno de los metacaracteres que grep usa. Asuma
que este archivo tiene las siguientes lneas:
filters are programs that read input, process the input and
write some output. Some examples of filters
are sort, tail, head and grep. There are many more
filters in Linux. grep is a powerful filter that finds the
pattern in the input and writes to the standard output.

Fundamentos de Linux y Sistemas de Archivos

Unidad 3: Caractersticas del Shell 157

Copyright IBM Corp. 2006


Los materiales del curso no pueden ser reproducidos total o
parcialmente sin el permiso escrito previo de IBM.

Fundamentos de Linux

Gua del Estudiante

Uso de Comandos 3.6


/home/mickeymouse$ grep filters filters.txt
filters are programs that read input, process the input and
write some output. Some examples of filters.
filters in Linux. grep is a powerful filter that finds the
/home/mickeymouse$

El uso anterior de grep es el ms simple. Encuentra el patrn filters en el


archivo filters.txt y muestran las lneas que coinciden con ste.
/home/mickeymouse$ grep ^filters filters.txt

filters
are
programs
that
read,
process
the
input
and
filters in Linux. grep is a powerful filter that finds the /home/mickeymouse$.
Muestra slo las lneas que tienen el patrn filters al principio de la lnea.
/home/mickeymouse$ grep filters$ filters.txt
write some output. Some examples of filters.
/home/mickeymouse$

Muestra las lneas que tienen el patrn filters al final de la lnea.


/home/mickeymouse$ ls l | grep '^d'

Imprime los nombres de los subdirectorios del directorio de trabajo actual.


Se obtiene los nombres de los subdirectorios como resultado del comando
anterior, esto es debido a que el listado completo muestra los permisos de
los archivos y si el archivo es un directorio, la lnea comienza con el carcter
d. El comando anterior imprimir las lneas que contienen el carcter 'd'. Las
comillas simples se usan para quitar el significado especial de ^.
Tambin se puede usar [list] y [^list] en grep. Por ejemplo,
considere lo siguiente:
/home/mickeymouse$ ls l | grep [5-6]
Equivale a todas las lneas que tienen 5 o 6 en ellas. Las otras lneas son
ignoradas.

Se aprendi que el punto (.) equivale a un solo carcter. * se aplica al


carcter previo o metacarcter en la expresin y hace coincidir cualquier
nmero de ocurrencias sucesivas del carcter o metacarcter, por ejemplo:
/home/mickeymouse$ ls l | grep f

Equivale a todas las lneas que tienen al menos una 'f' en ellas e ignora
aquellas que no tienen 'f'. Se obtiene el resultado como se declar, siempre
que exista al menos un archivo en el directorio que tiene el carcter f en su
nombre. En caso contrario, no se muestra nada.
Fin del Uso de Comandos 3.6
Fundamentos de Linux y Sistemas de Archivos

Unit 6: El Editor vi 158

Copyright IBM Corp. 2006


Los materiales del curso no pueden ser reproducidos total o
parcialmente sin el permiso escrito previo de IBM.

Gua del Estudiante

Fundamentos de Linux

egrep y fgrep son versiones un poco ms especializadas de grep. Ambas pueden


aceptar un archivo de comando con la opcin f. Adems, egrep puede usar el
operador | y parntesis para agrupar expresiones.
La bsqueda de patrones usando egrep y fgrep es ms rpida, porque se lleva a
cabo en paralelo. Los siguientes puntos muestran la forma en que se hace la bsqueda
de patrones usando egrep y fgrep.

Usando parntesis en egrep, se puede tener un patrn (ab)* que equivale a


ab, abab, ababab y as sucesivamente.

egrep tambin puede usar a+ o a?. grep no permite el uso de + y ?.

a+ equivale a una o ms ocurrencias de a y


ocurrencia de a.

a* en grep, egrep, y fgrep se refiere a cero o ms ocurrencias de a.

a? equivale a cero o una

Uso de Comandos 3.7


/home/mickeymouse$ egrep '(the)+' lines.txt

Muestra todas las lneas del archivo lines.txt que tienen al menos un
patrn the. + significa una o ms ocurrencias de the.
/home/mickeymouse$ egrep '(t|s)he+' lines.txt

Equivale a todas las lneas que tienen t o s antes del patrn he. El
operador | se usa para denotar o.
Fin del Uso de Comandos 3.7
fgrep es una herramienta rpida de bsqueda. Es capaz de buscar mltiples cadenas
al mismo tiempo. Su principal uso es en las bsquedas en directorio y bibliogrficas.
Uso de Comandos 3.8
Asuma que el archivo idnos contiene el nmero de identidad de los
estudiantes como se muestra a continuacin.
/home/mickeymouse$ cat > idnos
101
102
103
^d
/home/mickeymouse$

El archivo studentdetails contiene los siguientes detalles.


cat > studentdetails
101

John

102

Martina

Fundamentos de Linux y Sistemas de Archivos

Unidad 3: Caractersticas del Shell 159

Copyright IBM Corp. 2006


Los materiales del curso no pueden ser reproducidos total o
parcialmente sin el permiso escrito previo de IBM.

Fundamentos de Linux
103
^d

Gua del Estudiante

Richard

/home/mickeymouse$

Usando fgrep se pueden encontrar las lneas que coinciden con los
patrones, proporcionadas en el archivo de entrada.
home/mickeymouse$ fgrep f idnos studentdetails
101

John

102

Martina

103

Richard

/home/mickeymouse$

La opcin f le indica a fgrep de buscar patrones en un archivo. idnos


contiene una lista de nmeros de identidad de estudiantes de una clase.
fgrep encuentra las cadenas de patrn de bsqueda en el archivo idnos.
Usando los patrones en el archivo idnos, fgrep busca en el archivo
studentdetails todos estos patrones.
Fin del Uso de Comandos 3.8

8.2 sed
sed es el editor de flujos, derivado del editor ed. sed tambin funciona como un filtro.
La sintaxis de sed se muestra a continuacin.
/home/mickeymouse$ sed 'lista de comandos' nombres de
archivos
sed lee una lnea a la vez de los archivos de entrada, aplica la lista de comandos y
muestra las lneas en la salida estndar. Los comandos ed forman la lista de comandos
para sed. sed no altera el archivo original. Por medio de sed, se puede mostrar las
lneas que se desea, borrarlas, sustituirlas con otro texto, etc. El archivo intermedio
procesado puede ser redireccionado a otro archivo.
sed puede realizar las siguientes funciones:

Aceptar como entrada una combinacin de nmeros de lnea y un comando.

Aceptar como entrada una combinacin de patrn y comando.

Sustituir una cadena antigua con una nueva.

Uso de Comandos 3.9


/home/mickeymouse$ sed '2q' filters.txt

Sale despus de mostrar dos lneas, ya que 2 indica el nmero de lneas, y


q es el comando para salir.
/home/mickeymouse$ sed '$p' filters.txt

Imprime todas las lneas.

Fundamentos de Linux y Sistemas de Archivos

Unit 6: El Editor vi 160

Copyright IBM Corp. 2006


Los materiales del curso no pueden ser reproducidos total o
parcialmente sin el permiso escrito previo de IBM.

Gua del Estudiante

Fundamentos de Linux

/home/mickeymouse$ sed '/the/!d' filters.txt

El comando anterior muestra todas las lneas que contienen la cadena de


caracteres the, en el archivo filters.txt.
/home/mickeymouse$ sed '/^[ \t]*$/d' filters.txt

Borra todas las lneas en blanco del archivo. Este es un ejemplo de un


patrn y un comando. El patrn es un blanco al inicio (^), seguido de un
blanco o un tab
([ \t]), seguido por cualquier nmero de ocurrencias
del metacarcter previo (*) hasta el final de la lnea ($). El patrn ^ [
\t]*$ significa una lnea que contiene slo blancos o tabs. sed borra todas
estas lneas y muestra el resto del contenido del archivo.
La forma general de sustitucin es:
/oldstring/newstring/

oldstring y newstring pueden ser cadenas simples como en


/home/mickeymouse$ sed 's/filter/Filter/g' filters.txt
Reemplaza todas las ocurrencias de la cadena anterior filter con la nueva
cadena Filter. El comando g significa global. g reemplaza todas las
ocurrencias en la lnea. En caso contrario, slo se reemplaza la primera ocurrencia
en la lnea. El comando s le dice a sed de realizar la sustitucin.
oldstring y newstring tambin pueden incluir caracteres especiales. El
patrn para oldstring puede incluir todos los caracteres especiales que incluye
grep. newstring tambin incluye algunos caracteres especiales. El ms til es
&, que significa para todo oldstring.
/home/mickeymouse$ sed 's/Filter/"&"/g' filter.txt
Reemplazar todas las ocurrencias de Filter con "Filter" (encerrado dentro de
comillas dobles).
sed puede tomar las opciones n, -e, y f. La opcin n desactiva la
impresin automtica de las lneas procesadas. sed automticamente imprime
todas las lneas procesadas. n detiene eso y sed imprime slo aquellas lneas
afectadas por el comando p.
/home/mickeymouse$ sed n '$p' filters.txt
Imprime slo la ltima lnea del archivo.
La opcin f permite a sed tomar los comandos de edicin desde un archivo,
justo como lo hacen egrep y fgrep. La opcin e permite mezclar un
comando de edicin de lnea de comandos con comandos en un archivo.

Fin del Uso de Comandos 3.9

Fundamentos de Linux y Sistemas de Archivos

Unidad 3: Caractersticas del Shell 161

Copyright IBM Corp. 2006


Los materiales del curso no pueden ser reproducidos total o
parcialmente sin el permiso escrito previo de IBM.

Fundamentos de Linux

Gua del Estudiante

Resumen
Ahora que ha completado esta unidad, Ud. debe ser capaz de:

Explicar las variables predefinidas de shell.

Explicar acerca de los parmetros posicionales.

Describir cmo trabaja el comando expr.

Discutir acerca de los comandos read y test.

Describir la familia de filtros grep y el filtro sed.

Fundamentos de Linux y Sistemas de Archivos

Unit 6: El Editor vi 162

Copyright IBM Corp. 2006


Los materiales del curso no pueden ser reproducidos total o
parcialmente sin el permiso escrito previo de IBM.

Gua del Estudiante

Fundamentos de Linux

Unidad 3: Examen de Autoevaluacin


1) Cul de los siguientes variables contiene la identificacin (ID) del proceso shell
padre?
a) PID
b) PARENTID
c) PPID
d) d) Ninguna de las anteriores
2) Qu ID se almacena en el UID?
a) El ID del usuario que est conectado actualmente
b) El ID del sper usuario
c) El ID del proceso que se est ejecutando actualmente
d) El ID del shell actual
3) Cul de los siguientes comandos se usa para activar una variable shell
predefinida?
a) set variable=valor
b) variable=valor
c) variable
d) set variable
4) Los argumentos de lnea de comandos pasados a un archivo shell se almacenan
en variables shell llamadas parmetros posicionales.
a) Verdadero
b) Falso
5) expr index world w imprime la posicin de la letra w en la palabra world.
a) Verdadero
b) Falso
6) expr index substr s es vlido.
a) Verdadero
b) Falso
7) El comando read lee el valor de la entrada estndar y lo almacena en la variable
proporcionada como argumento.
a) Verdadero
b) Falso

Fundamentos de Linux y Sistemas de Archivos

Unidad 3: Caractersticas del Shell 163

Copyright IBM Corp. 2006


Los materiales del curso no pueden ser reproducidos total o
parcialmente sin el permiso escrito previo de IBM.

Fundamentos de Linux

Gua del Estudiante

8) Cul es la salida de la siguiente secuencia de comandos?


/home/mickeymouse$ read me
happy
/home/mickeymouse$ read happy
me
/home/mickeymouse$ echo happy me

a) happy me
b) me happy
c) Error de sintaxis
d) Ninguna de las anteriores
9) Cul es la salida de la siguiente secuencia de comandos?
/home/mickeymouse$ read me
happy
/home/mickeymouse$ read happy
me
/home/mickeymouse$ echo $happy $me

a) happy me
b) me happy
c) Error de sintaxis
d) Ninguna de las anteriores
10) Qu realiza sed en el siguiente comando?
/home/mickeymouse$ sed 's/my/&&/g' myfile.txt

a) Reemplaza todas las ocurrencias de my con &&


b) Reemplaza todas las ocurrencias de my con mymy
c) Reemplaza la primera ocurrencia de my en cada lnea con &&
d) Reemplaza la primera ocurrencia de my en cada lnea con mymy

Fundamentos de Linux y Sistemas de Archivos

Unit 6: El Editor vi 164

Copyright IBM Corp. 2006


Los materiales del curso no pueden ser reproducidos total o
parcialmente sin el permiso escrito previo de IBM.

Gua del Estudiante

Fundamentos de Linux

Respuestas a la Unidad 3: Examen de Autoevaluacin


1) c
2) a
3) d
4) a
5) a
6) b
7) a
8) a
9) b
10) b

Fundamentos de Linux y Sistemas de Archivos

Unidad 3: Caractersticas del Shell 165

Copyright IBM Corp. 2006


Los materiales del curso no pueden ser reproducidos total o
parcialmente sin el permiso escrito previo de IBM.

Gua del Estudiante

Fundamentos de Linux

Unidad 4: Lab. Caractersticas del Shell


Objetivos de Aprendizaje
Al final de esta unidad, Ud.ser capaz de:

Trabajar con variables shell predefinidas.

Aplicar los comandos read y test basados en la necesidad de una solucin a un


problema.

Resolver problemas usando grep, egrep, fgrep, y filtros sed.

Fundamentos de Linux y Sistemas de Archivos

Unit 6: El Editor vi 167

Copyright IBM Corp. 2006


Los materiales del curso no pueden ser reproducidos total o
parcialmente sin el permiso escrito previo de IBM.

Fundamentos de Linux

Gua del Estudiante

Ejercicios de Laboratorio
1) Conectarse al sistema y determinar su UID.
2) Hay dos formas de encontrar la ruta del directorio de trabajo. Use ambos mtodos.
3) Cambiar el prompt de la cadena actual al directorio actual de trabajo seguido de la
fecha y un signo dlar.
4) Cambiar la segunda cadena prompt al carcter # y verificar usando el metacarcter
de continuacin de lnea.
5) Mostrar el contenido de la variable definida por el usuario llamada var. El valor en
var debe asignarse por medio del comando read.
6) Determinar si un subdirectorio tiene permiso de escritura.
7) Crear un archivo llamado myfile.txt e ingresar el siguiente texto en l.
Hang over with us
Come over
Stay over
Dine with us and hang over with others
Let us enjoy and stay over with us for the day
Play with us
Let us party
8) Mostrar las lneas que tienen Hang over o Stay over.
9) Mostrar las lneas que tienen el carcter s seguido por un espacio.
10) Usar sed para sustituir todas las ocurrencias de la palabra over con la palabra
above.
11) Probar todos los comandos, metacaracteres y variables shell que ha aprendido
hasta ahora.

Fundamentos de Linux y Sistemas de Archivos

Unit 6: El Editor vi 168

Copyright IBM Corp. 2006


Los materiales del curso no pueden ser reproducidos total o
parcialmente sin el permiso escrito previo de IBM.

Gua del Estudiante

Fundamentos de Linux

Unidad 5: Procesos en Linux


Objetivos de Aprendizaje
Al final de esta unidad, estar en capacidad de:

Definir un proceso y sus usos en un sistema operativo.

Discutir el comando ps.

Discutir los procesos padre e hijo.

Explicar el concepto de procesos de primer plano y segundo plano.

Discutir cmo manejar el ambiente de procesos.

Explicar acerca de los procesos demonio.

Explicar acerca de las seales y su importancia en Linux.

Fundamentos de Linux y Sistemas de Archivos

Unit 6: El Editor vi 169

Copyright IBM Corp. 2006


Los materiales del curso no pueden ser reproducidos total o
parcialmente sin el permiso escrito previo de IBM.

Fundamentos de Linux

Gua del Estudiante

1. El Concepto de Proceso
En unidades anteriores, se ha trabajado con numerosos comandos de Linux. Cada
comando (programa) que un usuario ejecuta en Linux es una instancia de ese
programa. Este concepto de 'instancia' se entiende claramente con la ayuda de dos
ejemplos simples.

El usuario mickeymouse est conectado. Ejecuta el comando date. Repite el


proceso despus de algn tiempo. As, l puede ejecutar el comando date
cualquier nmero de veces durante una sesin.

Cuatro usuarios, usara, Serv, husera y uzead, sentados en diferentes


terminales estn conectados a un sistema Linux. Todos los usuarios han
ejecutado el programa vi, para crear o editar un archivo de su eleccin. El
sistema Linux proporciona slo una copia del programa vi en el sistema. Pero
en el ejemplo, se observa que todos los cuatro usuarios estn usando el
programa simultneamente.

En el primer ejemplo, un usuario ejecuta el mismo comando date varias veces. En el


segundo ejemplo, cuatro usuarios ejecutan vi al mismo tiempo. Cada vez que se
ejecuta un programa, se corre una 'instancia' de ese programa. Esta caracterstica
disponible en un sistema multitarea, es posible a travs del concepto de proceso en un
sistema operativo.
Un proceso (a veces referido como tarea) se define como 'una instancia de un programa
en ejecucin'.
A continuacin se presentan algunos puntos importantes acerca de los procesos:

Un proceso es la unidad bsica programada en un procesador por el sistema


operativo.

Un proceso es una entidad dinmica.

Cada proceso se ejecuta independientemente de otros procesos en el sistema.

Los procesos tambin pueden interactuar con otros procesos por medio de un
mecanismo permitido por el sistema operativo llamado Comunicacin entre
Procesos (Inter Process Communication - IPC). En este curso, no se ahondar
en detalles del IPC.

Cuando los procesos comparten datos, el sistema operativo hace uso de la


sincronizacin. La sincronizacin es un mtodo por el cual el sistema operativo
asegura que cuando un recurso compartido est siendo usado por un proceso,
los otros procesos no tienen acceso a l.

Se discuti que el sistema operativo permite que cuatro usuarios trabajen con el
programa vi, cada uno ejecutando una instancia de vi. Aunque la invocacin a vi
puede ser simultnea, la mquina en la que el sistema operativo reside tiene un
procesador para manejar las cuatro solicitudes. As, es importante para el procesador
administrar la ejecucin de programas solicitados por mltiples usuarios conectados al
Unidad 5: Procesos en Linux

Fundamentos de Linux y Sistemas de Archivos 170

Copyright IBM Corp. 2006


Los materiales del curso no pueden ser reproducidos total o
parcialmente sin el permiso escrito previo de IBM.

Gua del Estudiante

Fundamentos de Linux

sistema simultneamente. El kernel lo permite al usar el principio de tiempo compartido.


Cambia de un proceso a otro de manera que los usuarios no sienten ningn retraso.
En cualquier momento, cuando mltiples procesos estn activos, se le asigna a un
proceso el tiempo de CPU. Este proceso se dice est en estado de ejecucin mientras
los otros estn en estado de suspensin (sleeping). Es posible averiguar acerca de
todos los procesos que estn actualmente activos en el sistema por medio del comando
ps.
A continuacin se aprender a obtener informacin acerca de los procesos
ejecutndose en el sistema Linux.

2. El comando ps
Se puede conocer el estado de un proceso usando el comando ps, donde ps equivale a
process status (estado del proceso).
Uso de Comandos 5.1
/home/mickeymouse$ ps
PID
TTY
TIME

CMD

734

pts/1 00:00:12

bash

754

pts/1 00:00:01

ps

/home/mickeymouse$

PID muestra el nmero de identificacin del proceso. Cada proceso obtiene


un nmero de identificacin nico asignado por el kernel.
TTY es el tipo de terminal asociado con el proceso. Tambin puede ser otro
dispositivo de entrada conectado al sistema.
TIME es el tiempo que el proceso ha estado en ejecucin hasta ahora.
CMD es el nombre del comando que est siendo ejecutado, cuyo reporte de
estado se est visualizando. bash es el proceso shell.
/home/mickeymouse$ ps -A
PID TTY
TIME CMD
26887 pts/6

00:00:00 bash

26951 pts/6

00:00:00 bash

27104 pts/6

00:00:00 bash

29214 pts/0

00:00:00 eth0

32067 pts/4

00:00:00 bash

32234 pts/8

00:00:00 bash

309 pts/3

00:00:00 bash

Fundamentos de Linux y Sistemas de Archivos

Unit 6: El Editor vi 171

Copyright IBM Corp. 2006


Los materiales del curso no pueden ser reproducidos total o
parcialmente sin el permiso escrito previo de IBM.

Fundamentos de Linux
367 pts/9

Gua del Estudiante


00:00:00 bash

746 pts/3
00:00:00 ps
/home/mickeymouse$

La opcin A muestra los otros procesos ejecutndose en el sistema. El


comando bsico ps slo muestra la ejecucin de los procesos del usuario
actual.
/home/mickeymouse$ ps r
PID TTY

STAT

752 pts/3

R+

TIME COMMAND
0:00 ps r

/home/mickeymouse$

La opcin r muestra los detalles para el proceso ejecutndose


actualmente.
Tambin se puede ver un listado largo del comando ps, usando la opcin
l. El comando ps l proporciona el siguiente reporte de estado:
/home/mickeymouse$ ps l
F

UID

PID

100 S

507

309

PPID C PRI
308 0

000 R

507

763

309

TTY

TIME

CMD

72

NI ADDR
0

609 wait4

SZ WCHAN

pts/3

00:00:00

bash

0 76

766 -

pts/3

00:00:00

ps

/home/mickeymouse$

Se nota que hay muchas columnas; algunas de las ms importantes se


estudian en la siguiente seccin.
Fin del Uso de Comandos 5.1

3. Proceso Padre e Hijo


En nuestros ejemplos sobre el comando ps, se nota que el comando mismo ps se
muestra en la salida. La siguiente ejecucin de ps resultar en otro PID para ps, como
se muestra:
/home/mickeymouse$ ps
PID
TTY TIME
734
pts/1 00:00:12
781
pts/1 00:00:02
/home/mickeymouse$

CMD
bash
ps

Se nota que el PID para el shell permanece el mismo, pero el PID para el comando ps
difiere de los anteriores. Como se mencion anteriormente, a cada proceso se le da un
nuevo PID cuando es ejecutado.
El comando bash es el proceso shell que se est ejecutando. Est activo mientras el
usuario est conectado y por lo tanto, se ve que su PID permanece constante. El
Unidad 5: Procesos en Linux

Fundamentos de Linux y Sistemas de Archivos 172

Copyright IBM Corp. 2006


Los materiales del curso no pueden ser reproducidos total o
parcialmente sin el permiso escrito previo de IBM.

Gua del Estudiante

Fundamentos de Linux

proceso shell es llamado proceso padre. Todos los comandos que corren dentro del
shell son procesos hijos del proceso shell. As, todas las invocaciones del comando ps
sern ejecutadas como procesos hijos.
Usando ps, tambin se puede ver el PID del proceso padre.
/home/mickeymouse$ ps l
F

UID

PID

PPID

TTY

TIME

CMD

100 S

507

309

308

C PRI
0

72

NI ADDR
0

609 wait4

SZ WCHAN

pts/3

00:00:00

bash

000 R

507

763

309

76

766 -

pts/3

00:00:00

ps

/home/mickeymouse$

Se van a explicar algunas de las columnas de la salida. S proporciona el estado del


proceso; es decir, si el proceso est suspendido (S) o ejecutndose (R). UID es el ID del
usuario, PPID es el PID del padre.
Como el sistema de archivos, los procesos tambin estn organizados en una jerarqua.
A medida que ms procesos se producen, y ms procesos hijos se crean, se puede
concebir una jerarqua de procesos encadenados juntos por PID y PPID. A
continuacin un ejemplo para ilustrar esto.
/home/mickeymouse$ bash
/home/mickeymouse$ ps -l
F

UID

PID

PPID

100 S

507

309

308

C PRI
0

69

NI ADDR
0

609 wait4

SZ WCHAN

TTY
pts/3

00:00:00 bash

TIME CMD

000 S

507

722

309

71

631 wait4

pts/3

00:00:00 bash

000 R

507

839

722

75

765 -

pts/3

00:00:00 ps

/home/mickeymouse$
El comando bash crea un proceso shell hijo dentro del proceso shell padre. Aunque
ambos se denominan bash, ellos se diferencian por sus PIDs. El comando ps l
ahora se ejecuta en el proceso shell hijo. El PPID del segundo bash es 309 y el padre
de ps es 722, que es el PID del segundo bash. As, se puede ver una jerarqua de
procesos.
Siempre que un comando se ejecuta en un shell, temporalmente se crea un nuevo shell,
y el comando se ejecuta en este shell. Una vez que la ejecucin del comando se
completa, el control regresa al shell padre, que cre el proceso shell hijo para ejecutar el
comando. El shell padre ahora est listo para continuar.
Dado que se ha creado otra sesin bash, es necesario desconectarse dos veces para
salir del sistema. La primera desconexin nos lleva al bash padre y la segunda fuera
del sistema.
A continuacin se explica el proceso shell en detalle.

Fundamentos de Linux y Sistemas de Archivos

Unit 6: El Editor vi 173

Copyright IBM Corp. 2006


Los materiales del curso no pueden ser reproducidos total o
parcialmente sin el permiso escrito previo de IBM.

Fundamentos de Linux

Gua del Estudiante

4. El Proceso Shell
Cuando un usuario se conecta, el kernel empieza un proceso shell para el usuario.
Cuando el usuario ingresa un comando, el shell usa el kernel para iniciar un proceso
hijo. El comando se ejecuta y el control regresa al shell. El shell entonces espera por
ms entradas del usuario. Si el usuario desea terminar un proceso que durante algn
tiempo ha estado ejecutndose, puede usar el comando kill. El comando kill toma
el PID como argumento de la lnea de comandos.
A veces el comando kill puede no terminar el proceso porque es posible para el
proceso ignorar todas las seales enviadas para terminarlo por el comando kill. Si
esto ocurre, un administrador o el propietario del proceso puede usar la opcin -9 con el
comando kill. La seal 9 no puede ser ignorada por ninguno de los procesos en
ejecucin, as terminar definitivamente el proceso.
Se entender el uso de la opcin 9 a travs de un ejemplo.
Uso de Comandos 5.2
Asumiendo que lo siguiente es la salida del comando ps, se intentar matar
uno de los procesos en ejecucin.
/home/mickeymouse$ ps
PID TTY
TIME CMD
970 pts/3

00:00:00 bash

1072 pts/3

00:00:00 bash

1103 pts/3

00:00:00 ps

/home/mickeymouse$ kill 1072


/home/mickeymouse$

Si se ingresa ps nuevamente, probablemente se ver una salida similar a la


anterior, ya que el comando kill no ha terminado el segundo proceso
bash.
/home/mickeymouse$ ps
PID TTY

TIME CMD

970 pts/3

00:00:00 bash

1072 pts/3

00:00:00 bash

1107 pts/3

00:00:00 ps

/home/mickeymouse$ kill 9 1072


Killed
/home/mickeymouse$ ps
PID TTY

TIME CMD

970 pts/3
1129 pts/3

00:00:00 bash
00:00:00 ps

Unidad 5: Procesos en Linux

Fundamentos de Linux y Sistemas de Archivos 174

Copyright IBM Corp. 2006


Los materiales del curso no pueden ser reproducidos total o
parcialmente sin el permiso escrito previo de IBM.

Gua del Estudiante

Fundamentos de Linux

/home/mickeymouse$

Ahora se observa que el proceso bash hijo ha muerto. sta es otra forma
de salir del proceso bash hijo.
Fin del Uso de Comandos 5.2
A continuacin se aprender acerca de los procesos de Primer Plano.

5. Proceso de Primer Plano


Se ha visto que cuando se ingresa cualquier comando en el prompt del shell, se crea un
nuevo proceso shell. En la instancia de cal, el comando cal ser ejecutado bajo este
nuevo shell. Este proceso de cal estar ejecutndose en primer plano (foreground). El
control no se le dar al shell padre hasta la ejecucin del comando cal. El usuario no
puede realizar ninguna otra actividad. En trminos simples, el prompt $ no se mostrar
hasta que el programa se complete. Despus de la ejecucin, termina el shell
recientemente creado y el shell padre contina.
Se va a asumir que se tiene un programa llamado myProgram, el cual toma un tiempo
demasiado largo en completarse. Cuando se invoca este programa, el shell actual
crear un proceso shell hijo en el que se ejecutar myProgram, y el cual estar en
control hasta que termine. Si se desea ejecutar myProgram, y tambin continuar con
otro trabajo en el sistema, Linux proporciona un mtodo para ejecutar comandos en
segundo plano (background).

6. Procesos de Segundo Plano


Los procesos en ejecucin en segundo plano (background) son muy tiles en muchas
situaciones. El nico cambio que debe hacerse es agregar el smbolo & al final del
comando tal como se muestra a continuacin.
/home/mickeymouse$ myProgram &
824
/home/mickeymouse$
Al incluir el smbolo & con myprogram, inmediatamente se presenta el prompt de
comandos despus de mostrar el PID del proceso que corre en segundo plano. El
prompt de comandos /home/mickeymouse$ indica que se ha regresado al shell
padre. Esto significa que ahora se puede continuar trabajando bajo este shell. El & al
final del comando indica que el comando debe ejecutarse como un proceso en segundo
plano.

6.1 Filtros y Procesos Segundo Plano


/home/mickeymouse$ cat myFile | wc &

Fundamentos de Linux y Sistemas de Archivos

Unit 6: El Editor vi 175

Copyright IBM Corp. 2006


Los materiales del curso no pueden ser reproducidos total o
parcialmente sin el permiso escrito previo de IBM.

Fundamentos de Linux

Gua del Estudiante

[1] 1319
/home/mickeymouse$
El comando anterior crea dos procesos para cat y wc que se ejecutan en segundo
plano. Sin embargo, en ese caso, en lugar de imprimir dos PIDs, slo se imprime uno.
Este PID impreso es para el ltimo proceso en la secuencia en la lnea de comandos,
en este caso es wc. El PID 1319 se refiere al comando wc. Si se desea terminar el
proceso de segundo plano, quiz despus de esperar un largo tiempo y no ver
resultados, se puede simplemente dar el siguiente comando:
/home/mickeymouse$ kill 9 1319
/home/mickeymouse$
Puede haber instancias en las que se tiene que trabajar con programas que toman
mucho tiempo en completarse. Suponga que se invoca al programa y luego sale del
sistema, Linux inmediatamente termina el proceso. Idealmente, se puede desear que el
programa permanezca ejecutndose an despus de haberse desconectado. Esto
puede lograrse al usar el siguiente comando:
/home/mickeymouse$ nohup myProgram &
[1]1396
/home/mickeymouse$ nohup: appending output to `nohup.out'
Usando este comando, el proceso para myProgram continuar ejecutndose incluso
despus de que el usuario se haya desconectado. (nohup significa 'no hang-ups'). La
salida de myProgram se guardar en un archivo llamado nohup.out. Los comandos
que deben ser iniciados de esta forma deben ser decididos antes de usar nohup. No
se puede usar el comando nohup despus de que un comando ha sido iniciado.
Si myProgram toma mucho tiempo en ejecutarse y los recursos del computador estn
siendo compartidos por otros usuarios, se puede hacer que este proceso se ejecute con
una prioridad baja. En otras palabras, slo se desea ser amable con los otros usuarios
usando el siguiente comando:
/home/mickeymouse$ nice myProgram &
[1] 1401
/home/mickeymouse$
Establecer nohup automticamente invocar nice para que haga su trabajo de que el
proceso se ejecute con una prioridad ms baja.
Linux tambin permite iniciar un programa en un momento particular.
at 6am < myFile
Los comandos van a ser almacenados en el archivo myFile. Este es redireccionado al
comando at. Los comandos del archivo se ejecutan a las 6 AM.

Unidad 5: Procesos en Linux

Fundamentos de Linux y Sistemas de Archivos 176

Copyright IBM Corp. 2006


Los materiales del curso no pueden ser reproducidos total o
parcialmente sin el permiso escrito previo de IBM.

Gua del Estudiante

Fundamentos de Linux

El comando at puede darse con el tiempo en formato de 24 horas o como una hora
especificada, con AM o PM. Este comando se ejecutar como un proceso de segundo
plano en la hora sealada.
En este punto, es til entender que los usuarios pueden averiguar lo siguiente acerca de
un proceso.

El estado de la salida del ltimo comando ejecutado usando $?.

El PID del shell actual usando $$.

El PID del ltimo comando ejecutado en segundo plano usando $!.

Se darn detalles en la siguiente seccin.

6.2 Variables de Entorno


Se sabe que anteponiendo a una variable el smbolo $ se obtiene el valor de la misma.
Las variables usadas anteriormente son ?, $ y !. Estas son las variables de entorno.
Las variables de entorno son variables que mantiene el shell. Estas pueden diferir de
shell a shell. Normalmente se usan para configurar programas utilitarios en un sistema
como lpr (se refiere a la impresin fuera de lnea) y mail. Establecer estas variables
como variables de entorno implica que no se tiene que configurar ciertas opciones cada
vez que se conecta al sistema.
A continuacin se discute brevemente el uso de $?, $$ y $!.
Uso de $?, $$ y $!
/home/mickeymouse$ cat linux.txt
Linux is an operating system.
It follows the GNU standard.
Linux provides users with a command language.
The kernel of Linux is the core of the operating system.
Linux is a powerful and versatile operating system.
/home/mickeymouse$ /home/mickeymouse$ echo $?
0
/home/mickeymouse$

El comando anterior tuvo xito, aqu $? mostr 0, que es el estado de salida


del comando anterior.
/home/mickeymouse$ echo $$
2158
/home/mickeymouse$

Se sabe que el shell tambin es slo otro programa. Esto significa que tiene
un PID. $$ proporciona el PID del shell actual, el cual es 2158.

Fundamentos de Linux y Sistemas de Archivos

Unit 6: El Editor vi 177

Copyright IBM Corp. 2006


Los materiales del curso no pueden ser reproducidos total o
parcialmente sin el permiso escrito previo de IBM.

Fundamentos de Linux

Gua del Estudiante

/home/mickeymouse$ cat linux.txt &


[1] 2166
/home/mickeymouse$
/home/mickeymouse$ echo $!
2166
/home/mickeymouse$

$! Proporciona el PID del ltimo comando en segundo plano.


Fin del Uso de $?, $$ y $!

7. Administrar el Ambiente de Procesos


Linux proporciona un alto grado de flexibilidad para adaptar el ambiente de procesos de
forma que se ajuste a las necesidades de los usuarios. Por ejemplo, el usuario puede
desear cambiar los caracteres asignados para borrar un carcter o borrar una lnea,
puede desear modificar el contenido de la variable de ruta o cambiar el tipo de terminal.

7.1 Cambiando los Caracteres Erase y kill


Diferentes implementaciones y estndares de los sistemas operativos permiten
diferentes caracteres erase. Un erase de carcter, cuando se usa, borra los caracteres
de la pantalla. Si se est acostumbrado a otro carcter, se puede ajustar el ambiente
para tener ese carcter como el carcter erase. Esto se hace usando el siguiente
comando:
stty erase ^E
Aqu ^E es el carcter que se elige como carcter erase. Por defecto el carcter
proporcionado por el sistema es ^X.
Un solo carcter se puede usar para borrar una lnea ingresada. Este se llama carcter
'kill'. El carcter kill por defecto es ^U. Se puede cambiar el carcter kill a un carcter de
nuestra eleccin tal como se muestra:
/home/mickeymouse$ stty kill ^K
/home/mickeymouse$
Ahora, ^K ser el nuevo carcter kill personalizado. Considere este ejemplo:
/home/mickeymouse$ echo this is my boo^K
Esto matar la lnea entera tan pronto como se encuentra el carcter ^K.
El problema se presenta cuando se tiene que ingresar estos comandos cada vez que
se conecta. Personalizar el ambiente de procesos es una forma bastante simple y
poderosa de lograr un ambiente de trabajo personalizado. La mayora de
personalizaciones viene del uso modificado de variables shell. Se estar tratando con
Unidad 5: Procesos en Linux

Fundamentos de Linux y Sistemas de Archivos 178

Copyright IBM Corp. 2006


Los materiales del curso no pueden ser reproducidos total o
parcialmente sin el permiso escrito previo de IBM.

Gua del Estudiante

Fundamentos de Linux

personalizacin del ambiente de usuarios en la Unidad 6 Personalizacin del


Ambiente de Usuario.

7.2 Cambiar el Valor de PATH


Una de las variables shell ms importantes que controla dnde el shell busca los
comandos a ejecutar, es PATH. Por defecto, cuando se ingresa un comando, el shell
busca el comando en el directorio actual, luego en /bin, seguido por /usr/bin. /bin
y /usr/bin que son directorios disponibles en todos los sistemas Linux que almacenan
comandos.
Esta secuencia de directorios se denomina la ruta de bsqueda (search path) y se
almacena en la variable shell PATH. Se puede modificar la secuencia, as como el
contenido de la variable PATH, para especificar una ruta de bsqueda.
Uso de la Variable Shell PATH
/home/mickeymouse$ echo $PATH
/usr/local/bin:/bin:/usr/bin:/home/mickeymouse/bin
/home/mickeymouse$

El smbolo : separa dos directorios.


Si se establece PATH a,
/home/mickeymouse$ PATH=.:/usr/bin:/bin:/home/mickeymouse/book
/home/mickeymouse$

El smbolo. Representa el directorio actual. Se ha cambiado la secuencia


de path. Se ha retirado /usr/local/bin de path y agregado
/home/mickeymouse/book a path.
/home/mickeymouse$ echo $PATH
.:/usr/bin:/bin:/home/mickeymouse/book
/home/mickeymouse$

Tambin se puede agregar un nuevo conjunto de directorios a una ruta


existente.
/home/mickeymouse$ PATH=$PATH:/usr/local/bin
/home/mickeymouse$

Se agreg ahora /usr/local/bin a path.


/home/mickeymouse$ echo $PATH
.:/usr/bin:/bin:/home/mickeymouse/book:/usr/local/bin
/home/mickeymouse$

Fin del Uso de la variable shell PATH


Fundamentos de Linux y Sistemas de Archivos

Unit 6: El Editor vi 179

Copyright IBM Corp. 2006


Los materiales del curso no pueden ser reproducidos total o
parcialmente sin el permiso escrito previo de IBM.

Fundamentos de Linux

Gua del Estudiante

7.3 Configurar el Tipo de terminal


Los programas como vi requieren que el tipo de terminal se configure correctamente.
La variable shell TERM se puede usar para este propsito. Algunos tipos de terminales
son:

ansi

adm5

vt100

Si se usa TERM=vt100, se establece el tipo de terminal a vt100. Los tipos de


terminales ms usados son ansi y vt100.
Tambin se puede manipular el ambiente de procesos creando abreviaciones
(shortcuts) a directorios o nombres de archivo largos.

7.4 Crear Abreviaciones


Se puede desear adecuar el ambiente a que tenga shorcuts o abreviaciones para
comandos, nombres de archivos y nombres de directorios. Por ejemplo, el nombre de
directorio /home/mickeymouse/cprograms/projects/share se puede tener que
usar repetidamente. Se puede configurar abreviado como se muestra a continuacin:
/home/mickeymouse$rep=/home/mickeymouse/cprograms/projects
/share
/home/mickeymouse$
Esto permite decir cd $rep para cambiar el directorio. As, cuando decimos
/home/mickeymouse$ cd $rep
/home/mickeymouse/cprograms/projects/share$
Ahora, el directorio actual de trabajo, se vuelve el directorio share.
Tambin se ver brevemente cmo las variables pueden ser exportadas a un proceso
hijo.

7.5 Exportar la Configuracin Personalizada a un Proceso Shell Hijo


Se ha visto cmo personalizar algunas de las variables shell. Para asegurar que estas
configuraciones estn presentes en todos los procesos shell hijo que el padre shell crea,
se debe usar el comando export en Linux. Este comando toma la lista de variables
shell que se debe exportar.
/home/mickeymouse$ export PATH TERM
/home/mickeymouse$
Si el comando export se usa sin ningn argumento, lista el conjunto de todas las
variables shell que actualmente son exportadas a un proceso shell hijo. Se aprender
Unidad 5: Procesos en Linux

Fundamentos de Linux y Sistemas de Archivos 180

Copyright IBM Corp. 2006


Los materiales del curso no pueden ser reproducidos total o
parcialmente sin el permiso escrito previo de IBM.

Gua del Estudiante

Fundamentos de Linux

acerca del proceso hijo y el comando export en detalle en la Unidad 6


Personalizacin del Ambiente de Usuario.
Manejar un ambiente de procesos es importante porque un proceso puede accesar y
usar cualquiera de las variables del entorno. Dar la posibilidad al usuario de configurar
las variables ofrecidas por el shell, es una flexibilidad permitida por el sistema Linux. Los
usuarios pueden personalizar el ambiente para ajustarlo a sus necesidades.
A continuacin se aprender acerca de los procesos demonio.

8. Proceso Demonio
Un programa que corre en segundo plano y atiende una solicitud legal, se denomina
proceso demonio. Algunos procesos que corren como procesos demonios son:

Demonio de la cola de impresin (print spooler).

Demonio del listener de red TCP.

Demonio del listener de correos.

Cuando el sistema operativo se carga en la memoria principal, el kernel verifica si los


discos son apropiados y si el sistema de archivos est en su lugar. Luego ejecuta los
demonios que estn programados para correr en segundo plano sin interrupcin.
Los tipos de demonios que corren bajo un sistema son especficos a ese sistema.
Generalmente un demonio de impresin est presente en la mayora de sistemas.
Cuando usamos el comando ps e se encuentran muchos procesos del sistema,
algunos de los cuales se ejecutan como demonios. Algunos de los demonios que se
ejecutan en un sistema Linux son:
lpd

Controla la cola de impresin para cualquier trabajo que va a ser impreso.

getty

Monitorea el proceso de inicio de sesin en los terminales.

atd

Verifica cundo ejecutar los trabajos programados usando el comando at.

crond

Verifica cundo ejecutar los trabajos programados en el proceso cron.

Nota: Los demonios no se ejecutan basados en la iniciacin del usuario. No estn


asociados con un terminal. As, la salida del comando ps ef muestra un? para indicar
que es un demonio.

9. Seales
En el contexto del comando kill usado para terminar un proceso en ejecucin, se
introdujo el trmino seal. Cuando se presiona <Ctrl+c>, se genera una seal. Esta
es la tecla de interrupcin que interrumpe y termina el comando que se est ejecutando.
El comando kill enva una seal a un proceso para que sea terminado.

Fundamentos de Linux y Sistemas de Archivos

Unit 6: El Editor vi 181

Copyright IBM Corp. 2006


Los materiales del curso no pueden ser reproducidos total o
parcialmente sin el permiso escrito previo de IBM.

Fundamentos de Linux

Gua del Estudiante

Un proceso en Linux puede recibir distintos tipos de seales. Algunos de los nombres
simblicos asociados con las seales se muestran en la tabla 5.1.
#Seal

Nombre
Smblico

Descripcin

SIGHUP

Suspensin

SIGINT

Interrupcin

SIGQUIT

Salida como <ctrl+ \>

SIGILL

Instruccin ilegal

SIGFPE

Excepcin de punto flotante

SIGKILL

No puede ser ignorada

12

SIGSYS

La llamada al sistema tiene un argumento


errado
Tabla 5.1: Seales en Linux

Linux proporciona un comando llamado trap, que permite que las seales de una
aplicacin sean capturadas. El comando trap toma un comando y una lista de seales.
La sintaxis de trap es como sigue:
trap comando lista-de-seales
El comando espera que cualquiera de las seales mencionadas en la lista se lleve a
cabo. Al recibir la seal, se ejecuta command. Las interrupciones a un proceso
manejadas de esta forma aseguran una salida limpia del proceso. Esto es una facilidad
al correr aplicaciones crticas y complejas.

Unidad 5: Procesos en Linux

Fundamentos de Linux y Sistemas de Archivos 182

Copyright IBM Corp. 2006


Los materiales del curso no pueden ser reproducidos total o
parcialmente sin el permiso escrito previo de IBM.

Gua del Estudiante

Fundamentos de Linux

Resumen
Ahora que ha completado esta unidad, Ud. debe ser capaz de:

Definir un proceso y sus usos en un sistema operativo.

Explicar el comando ps.

Explicar los procesos padre e hijo.

Explicar el concepto de procesos de primer plano y segundo plano.

Explicar cmo manejar el ambiente de procesos.

Explicar acerca de los procesos demonio.

Explicar acerca de las seales y su importancia en Linux.

Fundamentos de Linux y Sistemas de Archivos

Unit 6: El Editor vi 183

Copyright IBM Corp. 2006


Los materiales del curso no pueden ser reproducidos total o
parcialmente sin el permiso escrito previo de IBM.

Fundamentos de Linux

Gua del Estudiante

Unidad 5: Examen de Autoevaluacin


1)

No hay una diferencia fundamental entre un programa y un proceso en el contexto


de sistemas operativos.
a) Verdadero
b) Falso

2) Cules de las siguientes son sentencias correctas acerca de un proceso?


a) Un proceso es una entidad esttica.
b) Un proceso es la unidad bsica programada para ejecutarse en un
procesador.
c) Un proceso no puede ejecutarse en segundo plano.
d) Un proceso puede interactuar con otros procesos.
3) En Linux, un proceso puede estar en estado 'ejecucin' y 'suspensin'.
a) Verdadero
b) Falso
4) El comando ps de Linux proporciona
a) Un mecanismo de arranque de proceso
b) Un reporte de estado del proceso
5) Cules de los siguientes se muestran cuando se ejecuta el comando ps ?
a) El tipo de terminal
b) El nombre del comando
c) El PID
d) El PID del shell padre
6) El comando who | wc l & configura para que los procesos se ejecuten en
__________.
a) Primer Plano
b) Segundo plano
c) Kernel
d) Ninguna de las anteriores

Unidad 5: Procesos en Linux

Fundamentos de Linux y Sistemas de Archivos 184

Copyright IBM Corp. 2006


Los materiales del curso no pueden ser reproducidos total o
parcialmente sin el permiso escrito previo de IBM.

Gua del Estudiante

Fundamentos de Linux

7) Cul de los siguientes permite el comando nohup?


a) Que los procesos continen incluso despus de que se haya perdido la
conexin o se haya desconectado el usuario.
b) Que el proceso se termine inmediatamente si no puede ser programado para
ejecutarse en baja prioridad.
c) Ni a) ni b)
8) Cul de las siguientes es funcin del comando nice?
a) Permite que un proceso se ejecute con la prioridad ms baja.
b) Permite que un proceso se ejecute con la prioridad ms alta.
c) Permite que un proceso se ejecute con prioridad media.
d) No permite que el proceso se ejecute.
9) Cul de los siguientes archivos se ejecuta para configurar el ambiente de usuario
para un programa?
a) .bashrc
b) .bash_profile
c) .bash
10) Cul de las siguientes es la funcin del comando kill 9 435?
a) Enviar un nmero de seal 9 para procesar 435, que el proceso elegir
ignorar o tener en cuenta.
b) Terminar obligatoriamente el proceso 435 sin que la seal sea ignorada.
c) Iniciar el proceso 435
d) Ignorar el proceso 435

Fundamentos de Linux y Sistemas de Archivos

Unit 6: El Editor vi 185

Copyright IBM Corp. 2006


Los materiales del curso no pueden ser reproducidos total o
parcialmente sin el permiso escrito previo de IBM.

Fundamentos de Linux

Gua del Estudiante

Respuestas a la Unidad 5: Examen de Autoevaluacin


1) b
2) b y d
3) b
4) b
5) a, b y c
6) b
7) a
8) a
9) a
10) b

Unidad 5: Procesos en Linux

Fundamentos de Linux y Sistemas de Archivos 186

Copyright IBM Corp. 2006


Los materiales del curso no pueden ser reproducidos total o
parcialmente sin el permiso escrito previo de IBM.

Gua del Estudiante

Fundamentos de Linux

Unidad 6: Personalizar el Ambiente de


Usuario
Objetivos de Aprendizaje
Al final de esta unidad, Ud ser capaz de:

Personalizar las variables de entorno en una instalacin Linux.

Explicar la funcionalidad de los archivos .bash_profile y .bashrc.

Describir un alias y sus usos.

Explicar el comando history.

Fundamentos de Linux y Sistemas de Archivos

Unit 6: El Editor vi 187

Copyright IBM Corp. 2006


Los materiales del curso no pueden ser reproducidos total o
parcialmente sin el permiso escrito previo de IBM.

Fundamentos de Linux

Gua del Estudiante

1. Configuraciones Personalizables
En la Unidad 3:Caractersticas del Shell, se indic que si se desea cambiar la cadena
del prompt, se debe hacer cada vez que se ingresa al sistema. En esta unidad, se
aprender cmo almacenar la cadena prompt requerida para que cada sesin de
ingreso no requiera que el usuario explcitamente lo cambie, adems de cmo hacer
esto en la seccin .bash_profile File.
En la unidad anterior, se explic cmo se puede administrar el ambiente de procesos.
Se aprendi a establecer los caracteres kill y erase y se explic cmo cambiar las
variables shell PATH y TERM. En todos estos casos, se tiene que ingresar el comando
cada vez que se conecta.
Se usar un ejemplo para entender esto. El usuario se conecta, realiza las siguientes
tareas y finalmente se desconecta.
login: mickeymouse
password: ********
[mickeymouse@mycomputer mickeymouse]$ PS1=$PWD$
/home/mickeymouse$ echo $PATH
/usr/local/bin:/bin:/usr/bin:/home/mickeymouse/bin
/home/mickeymouse$ PATH=$PATH:/usr/local/bin
/home/mickeymouse$ echo $PATH
.:/usr/bin:/bin:/home/mickeymouse/book:/usr/local/bin
/home/mickeymouse$ exit
El usuario mickeymouse cambi la cadena de prompt a /home/mickeymouse y tambin
cambi la variable shell PATH.
Al salir y conectarse nuevamente, el usuario encuentra lo siguiente:
login: mickeymouse
password: ********
[mickeymouse@mycomputer mickeymouse]$ echo $PATH
/usr/local/bin:/bin:/usr/bin:/home/mickeymouse/bin
[mickeymouse@mycomputer mickeymouse]$
Ambas variables shell establecidas por el usuario se han revertido a sus valores
anteriores. Esto ocurre, porque estas configuraciones eran vlidas slo para la sesin
de ingreso actual.
Al personalizar el ambiente se puede ir un paso adelante administrando justo el
ambiente de procesos. Personalizar el ambiente de procesos es una forma simple pero
poderosa de lograr un ambiente de trabajo personalizado. La mayor parte de la
personalizacin se puede lograr modificando las variables shell.

Unidad 6: Personalizar el Ambiente de Usuario Fundamentos de Linux y Sistemas de Archivos 188


Copyright IBM Corp. 2006
Los materiales del curso no pueden ser reproducidos total o
parcialmente sin el permiso escrito previo de IBM.

Gua del Estudiante

Fundamentos de Linux

En esta unidad, se aprender a personalizar lo siguiente:

Configuraciones del Ambiente.

Scripts de arranque del Shell.

Alias.

Historial de Comandos.

2. Configuraciones del Ambiente


Cada programa se ejecuta en un ambiente. El shell en el que el programa se est
ejecutando define ese entorno. El entorno existe dentro del shell. El entorno est
definido por los valores asignados a las variables de entorno. El comando export se
usa para agregar o modificar variables de entorno. Se va a aprender cmo usar el
comando export en las variables de entorno.

2.1 El comando export


Linux proporciona la capacidad de correr un shell dentro de otro. Generalmente las
variables declaradas en un shell son locales al shell y estn disponibles slo dentro de
ese shell. Si se corre otro shell dentro del shell actual y existe la necesidad de usar una
de las variables definidas para el shell padre (el shell que crea otro shell), entonces el
shell padre debe exportar la variable shell al shell hijo. Simplemente invocando bash en
el prompt se puede correr un nuevo shell.
Entindase esto con un ejemplo.
[mickeymouse@mycomputer mickeymouse]$ color=azul
[mickeymouse@mycomputer mickeymouse]$ echo $color
azul
[mickeymouse@mycomputer mickeymouse]$
Se cre una variable shell color y se le asign el valor azul. La variable color es
local al shell actual. Ahora se va a crear otro shell desde el shell actual.
[mickeymouse@mycomputer mickeymouse]$ bash
[mickeymouse@mycomputer mickeymouse]$
El comando anterior bash crea un shell dentro del shell actual. Se va a intentar hacer lo
siguiente:
[mickeymouse@mycomputer mickeymouse]$ echo $color
[mickeymouse@mycomputer mickeymouse]$
Se encuentra que el valor azul ahora no se muestra ya que se est en el shell hijo y el
shell padre no ha exportado la variable color a sus shell hijos. El comando export debe
usarse antes de crear un shell hijo. Ahora se va a hacerlo correctamente. Para exportar

Fundamentos de Linux y Sistemas de Archivos

Unit 6: El Editor vi 189

Copyright IBM Corp. 2006


Los materiales del curso no pueden ser reproducidos total o
parcialmente sin el permiso escrito previo de IBM.

Fundamentos de Linux

Gua del Estudiante

la variable, se debe regresar al shell padre. Se hace esto presionando Ctrl+D o


ingresando exit.
[mickeymouse@mycomputer
[mickeymouse@mycomputer
[mickeymouse@mycomputer
[mickeymouse@mycomputer
azul
[mickeymouse@mycomputer

mickeymouse]$
mickeymouse]$
mickeymouse]$
mickeymouse]$

exit
export color
bash
echo $color

mickeymouse]$

Movindose al shell padre usando exit en la secuencia de pasos anterior, ahora se


invoca el comando export para exportar la variable shell color. Se invoca bash
nuevamente para crear un shell hijo. Ahora el valor de color es visible en el shell hijo.
Las variables exportadas se denominan variables globales, ya que son visibles a otros
shells creados dentro de un shell.
As como con las variables shell, el smbolo $ se usa para evaluar variables de entorno.
El uso del smbolo $ para evaluar la variable de entorno se hace slo en el contexto del
shell, mientras el shell est interpretando. El shell realiza la interpretacin cuando los
comandos son ingresados en el prompt o cuando bash lee los comandos de un archivo
como .bashrc o .bash_profile. Estos dos .archivos son archivos importantes
para un shell. Ahora se va a explicar el archivo .bash_profile.

2.2 Archivo .bash_profile


Hay un nmero de archivos que empiezan con.(punto). Estos son archivos
especiales y los usa el sistema para varios propsitos. .bash_profile es uno de esos
archivos. Cada directorio home tiene una copia del archivo .bash_profile. Este
archivo se usa para personalizar la configuracin del usuario. .bash_profile se
ejecuta slo una vez cuando el usuario se conecta al sistema. En cada sesin de
ingreso, el usuario tendr que ejecutar el archivo .bash_profile.
Asuma que la entrada en .bash_profile es como se muestra:
# .bash_profile
# Obtener alias y funciones
if [ -f ~/.bashrc ]; then
. ~/.bashrc
fi
# Ambiente especfico del usuario y programas de arranque
PATH=$PATH:$HOME/bin

Unidad 6: Personalizar el Ambiente de Usuario Fundamentos de Linux y Sistemas de Archivos 190


Copyright IBM Corp. 2006
Los materiales del curso no pueden ser reproducidos total o
parcialmente sin el permiso escrito previo de IBM.

Gua del Estudiante

Fundamentos de Linux

export PATH
unset USERNAME
Se pueden agregar ms entradas al archivo simplemente invocando vi
.bash_profile y agregando lneas. Se va a agregar algunas entradas, marcadas en
negrita aqu.
# .bash_profile
# Obtener alias y funciones
if [ -f ~/.bashrc ]; then
. ~/.bashrc
fi
# Ambiente especfico del usuario y programas de arranque
PATH=$PATH:$HOME/bin
export PATH
unset USERNAME
date
PS1=$PWD$
Una vez incluidas esas dos lneas, se guarda el archivo, se sale del sistema y
nuevamente se vuelve a conectar. Esto es lo que se observa en la pantalla.
Welcome to Suse Linux 9.1 (i586)
Kernel 2.6.4-52-default
login: mickeymouse
Password:
Last login: Thu May 30 10:58:58 on tty2
Thu May 30 11:20:16 IST 2006
/home/mickeymouse$
Se observa que se muestra la fecha y hora actual y la nueva cadena prompt. De esta
forma, los usuarios pueden personalizar el ambiente a su preferencia, usando el archivo
.bash_profile .
Una pregunta puede formularse. Cmo se visualizan los archivos que empiezan con
un .?
Usando ls -al.
/home/mickeymouse$ ls -al
total 60
drwx-----drwxr-xr-x

4 mickeymo lgrp
10 root

root

Fundamentos de Linux y Sistemas de Archivos

4096 May 30 11:20 .


4096 May 29 09:50 ..

Unit 6: El Editor vi 191

Copyright IBM Corp. 2006


Los materiales del curso no pueden ser reproducidos total o
parcialmente sin el permiso escrito previo de IBM.

Fundamentos de Linux

Gua del Estudiante

-rw-------

1 mickeymo lgrp

2624 May 30 11:20 .bash_history

-rw-r--r--

1 mickeymo lgrp

24 May 29 09:50 .bash_logout

-rw-r--r--

1 mickeymo lgrp

206 May 30 11:20 .bash_profile

-rw-r--r--

1 mickeymo lgrp

124 May 30 10:58 .bashrc

-rw-r--r--

1 mickeymo lgrp

68 May 29 17:57 check

-rw-r--r--

1 mickeymo lgrp

820 May 29 09:50 .emacs

-rw-r--r--

1 mickeymo lgrp

5 May 29 09:54 file

-rw-r--r--

1 mickeymo lgrp

118 May 29 09:50 .gtkrc

drwxr-xr-x

3 mickeymo lgrp

-rw-------

1 mickeymo lgrp

30 May 30 00:50 nohup.out

-rw-r--r--

1 mickeymo lgrp

3511 May 29 09:50 .screenrc

-rw-r--r--

1 mickeymo lgrp

645 May 30 09:49 mytext.txt

drwxr-xr-x

2 mickeymo lgrp

4096 May 29 10:48 mickeymouse

4096 May 29 09:50 .kde

/home/mickeymouse$

2.3 El archivo .bashrc


Los archivos que tienen el sufijo rc tienen un significado especial. rc son las siglas de
'run control'. Estos archivos permiten que los programas sean configurados de acuerdo
a lo que los usuarios desean. .bashrc se refiere al archivo de configuracin especial
para el programa bash. Cada directorio home tiene una copia del archivo .bashrc.
En el archivo . bashrc, se pueden ubicar los comandos shell que se van a ejecutar cada
vez que se inicia un nuevo programa. La entrada por defecto del archivo .bashrc se
muestra a continuacin:
# .bashrc
# User specific aliases and functions
# Source global definitions
if [ -f /etc/bashrc ]; then
. /etc/bashrc
fi
Se pueden agregar los comandos shell y establecer las variables shell que se desea
ejecutar inmediatamente al ingresar. Se van a agregar las siguientes lneas al archivo
.bashrc existente.
PS1=$PWD$
date
Las nuevas entradas en .bashrc se muestran a continuacin.

# .bashrc
# User specific aliases and functions
# Source global definitions
Unidad 6: Personalizar el Ambiente de Usuario Fundamentos de Linux y Sistemas de Archivos 192
Copyright IBM Corp. 2006
Los materiales del curso no pueden ser reproducidos total o
parcialmente sin el permiso escrito previo de IBM.

Gua del Estudiante

Fundamentos de Linux

if [ -f /etc/bashrc ]; then
. /etc/bashrc
fi
whoami
Un punto muy importante a notar aqu, es que cada vez que se ejecuta bash en el
prompt de comandos, se mostrar la fecha.
/home/mickeymouse$ bash
mickeymouse
/home/mickeymouse$
/home/mickeymouse$ bash
mickeymouse
/home/mickeymouse$
Si se desconecta y se conecta nuevamente, encontrar la siguiente impresin en
pantalla:
Welcome to Suse Linux 9.1 (i586)
Kernel 2.6.4-52-default
login: mickeymouse
Password:
Last login: Thu May 30 12:58:58 on tty2
mickeymouse
Thu May 30 11:52:31 IST 2006
/home/mickeymouse$
Se observa que se muestran las entradas adicionales hechas en .bash_profile y
.bash_rc. Si se hubiera mencionado tambin una fecha en .bash_rc, se hubiera
observado que se mostraran dos salidas de fechas.
La principal diferencia entre .bash_profile y .bashrc es que mientras
.bash_profile se ejecuta slo una vez cuando el usuario se conecta, .bashrc se
ejecuta por cada ejecucin de bash. .bashrc proporciona una forma por la cual se
puede personalizar un programa, el programa bash en este caso.
Hay algunas variables que no son configuradas normalmente en el archivo .bashrc, ya
que son importantes para una sesin de ingreso y no para un proceso shell. Algunas de
estas son HOME y USER.
De manera similar se tiene a .bash_logout, que se ejecuta cuando el usuario se
desconecta del sistema.
A continuacin se da a conocer el comando env.

Fundamentos de Linux y Sistemas de Archivos

Unit 6: El Editor vi 193

Copyright IBM Corp. 2006


Los materiales del curso no pueden ser reproducidos total o
parcialmente sin el permiso escrito previo de IBM.

Fundamentos de Linux

Gua del Estudiante

3. El comando env
El comando env es muy utilizado para consultar el ambiente. Muestra todas las
variables de entorno. Algunas de las variables de entorno se muestran en la Tabla 6.1.
Nombre de la
Variable de
Entorno
EDITOR

Descripcin
Para establecer el editor por defecto.
Generalmente se configura a emacs o
vi

Ejemplo
EDITOR=emacs
EDITOR=vi

HOME

Para establecer el directorio de inicio


(home) del usuario

HOME=/home/mickeymouse

SHELL

Para establecer el programa shell


actual en ejecucin

SHELL=/bin/bash

TERM

Para establecer el tipo de terminal que


se est usando

TERM=ansi

USER

Para establecer el nombre del usuario


actual

USER=mickeymouse

Tabla 6.1: Muestra de las Variables de Entorno

Observe la salida del comando env.


/home/mickeymouse$ env
PWD=/home/mickeymouse
REMOTEHOST=192.168.1.201
HOSTNAME=mycomputer
PVM_RSH=/usr/bin/rsh
QTDIR=/usr/lib/qt-2.3.1
LESSOPEN=|/usr/bin/lesspipe.sh %s
XPVM_ROOT=/usr/share/pvm3/xpvm
KDEDIR=/usr
USER=mickeymouse
LS_COLORS=
MACHTYPE=i686-suse-linux
MAIL=/var/spool/mail/mickeymouse
INPUTRC=/etc/inputrc
LANG=en_US
LOGNAME=mickeymouse
Unidad 6: Personalizar el Ambiente de Usuario Fundamentos de Linux y Sistemas de Archivos 194
Copyright IBM Corp. 2006
Los materiales del curso no pueden ser reproducidos total o
parcialmente sin el permiso escrito previo de IBM.

Gua del Estudiante

Fundamentos de Linux

SHLVL=1
SHELL=/bin/bash
HOSTTYPE=i386
OSTYPE=linux
HISTSIZE=1000
LAMHELPFILE=/etc/lam/lam-helpfile
PVM_ROOT=/usr/share/pvm3
TERM=linux
HOME=/home/mickeymouse
SSH_ASKPASS=/usr/libexec/openssh/gnome-ssh-askpass
PATH=/usr/kerberos/bin:/usr/local/bin:/bin:/usr/bin:/usr/X
11R6/bin:/home/mickeymouse/bin
_=/usr/bin/env
/home/mickeymouse$
Generalmente los shell utilizan determinados shell scripts para realizar muchas de las
tareas. .bash_profile es un ejemplo de un shell script. A continuacin se dar un
breve explicacin acerca de los shell scripts.

4. Shell Scripts
Un bash puede ejecutarse como un login shell, un shell interactivo o un shell no
interactivo. Un determinado conjunto de programas se ejecutan en secuencia cuando un
shell arranca. Estos programas se denominan shell scripts o simplemente scripts. Se
est trabajando con Bourne Again SHell, y por lo tanto se estar usando algunos scripts
relacionados a bash. Algunos de los shell scripts que se ejecutan comnmente durante
una sesin de ingreso y desconexin son .bash_profile, .bashrc, y
.bash_logout. Estos shell scripts estn disponibles en $HOME. El .bash_profile
se ejecuta antes de un .bashrc.
Pueden haber otros scripts que se ejecutan dependiendo de la versin e
implementacin especfica del sistema. Un archivo llamado .inputrc tambin puede
ser ejecutado. Este contiene alias y funciones de usuarios. Un archivo llamado profile en
el directorio /etc se usa para modificar los parmetros de todos los usuarios en el
sistema.
Otros archivos del directorio home del usuario pueden ser:
.emacs

: Para el editor emacs

.exrc

: Para el editor vi

.newsrc : Para newsreaders (grupos de noticias). Esto es relevante cuando un


conjunto de nuevos grupos de noticias se ofrece en la mquina.
Fundamentos de Linux y Sistemas de Archivos

Unit 6: El Editor vi 195

Copyright IBM Corp. 2006


Los materiales del curso no pueden ser reproducidos total o
parcialmente sin el permiso escrito previo de IBM.

Fundamentos de Linux

Gua del Estudiante

Los usuarios pueden dar diferentes nombres a los comandos que utilizan
frecuentemente. Esta facilidad se denomina alias, la cual ser explicada a continuacin.

5. Alias
El alias es un mtodo por el cual el sistema Linux permite al usuario dar nombres cortos
a los comandos. Observe el siguiente ejemplo:
/home/mickeymouse$ alias dt=date
/home/mickeymouse$
El comando date ha sido abreviado como dt. Ahora se puede usar dt para mostrar la
fecha. Si se ingresa dt en el prompt de comandos, se obtiene la salida del comando
date.
/home/mickeymouse$ dt
Thu May 30 13:14:47 IST 2001
/home/mickeymouse$
Un punto importante a notar aqu es que las opciones para un comando se dan cuando
se crea el alias. El alias si puede tomar una opcin. Si se desea abreviar ls al, se
puede hacer lo siguiente:
/home/mickeymouse$ alias la=ls al
/home/mickeymouse$
Note que el comando con la opcin est encerrado con comillas dobles. Si no se
encierra, se mostrar el siguiente mensaje en pantalla:
bash: alias: `-al' not found
El shell trata ls y al como dos comandos diferentes.
Tambin se pueden usar tuberas y filtros en un alias. Se va a presentar un ejemplo
para entender esto. Asuma que se tiene un archivo llamado myFile.txt en el
directorio home.
/home/mickeymouse$cat myFile.txt
This is all about aliasing.
It is an interesting feature in Linux.
I am enjoying learning this.
Are there more such features?
/home/mickeymouse$
Se van a crear algunos alias usando este archivo.

/home/mickeymouse$ alias cf="cat myFile.txt"


/home/mickeymouse$ cf
This is all about aliasing.
Unidad 6: Personalizar el Ambiente de Usuario Fundamentos de Linux y Sistemas de Archivos 196
Copyright IBM Corp. 2006
Los materiales del curso no pueden ser reproducidos total o
parcialmente sin el permiso escrito previo de IBM.

Gua del Estudiante

Fundamentos de Linux

It is an interesting feature in Linux.


I am enjoying learning this.
Are there more such features?
/home/mickeymouse$
cf ahora es el alias para el comando cat myFile.txt.

/home/mickeymouse$ alias pm="cat myFile.txt|grep feature"


/home/mickeymouse$ pm
It is an interesting feature in Linux.
Are there more such features?
/home/mickeymouse$
La salida del comando cat se est enviando a grep. Para esto se ha creado un alias
llamado pm.
Se muestra otro ejemplo:
/home/mickeymouse$ alias pmwc="cat myFile.txt|grep
feature|wc"
/home/mickeymouse$ pmwc
2
12
69
/home/mickeymouse$
Estos alias pueden ser agregados a los archivos .bash_profile o .bashrc. Agregar
alias comunes a uno de estos archivos, asegurar que no se necesita volver a crear
estos alias para cada sesin de ingreso.

6. Comando History
Cuando se trabaja en un sistema durante largo tiempo, se ejecutan numerosos
comandos, y se puede necesitar ejecutar algunos de los comandos anteriores. As,
cada comando que se ingresa se almacena en un archivo llamado .bash_history.
Este archivo est disponible en el directorio home del usuario. Al desconectarse del
sistema, los comandos usados se agregan al archivo .bash_history.
En cualquier momento, se pueden encontrar los ltimos n comandos utilizados en el
sistema. El comando history seguido de un nmero, muestra los ltimos n comandos
utilizados. Observe el siguiente ejemplo:
/home/mickeymouse$ history 10
325 vi .bash_profile
326 vi .bashrc
327 vi .bash_profile
328 exit
329 cf
Fundamentos de Linux y Sistemas de Archivos

Unit 6: El Editor vi 197

Copyright IBM Corp. 2006


Los materiales del curso no pueden ser reproducidos total o
parcialmente sin el permiso escrito previo de IBM.

Fundamentos de Linux

Gua del Estudiante

330 man history


331 clear
332 vi .bash_history
333 history 4
334 history 10
/home/mickeymouse$
En el ejemplo anterior, hasta ahora, 334 comandos han sido agregados al archivo
.bash_history. El comando history ha listado los ltimos 10 comandos, que
tambin incluye el comando actual que est siendo ejecutado, es decir, history 10.
Ahora que se conoce el nmero del comando, se ejecuta el comando usando:
/home/mickeymouse$ !329
cf
This is all about aliasing.
It is an interesting feature in Linux.
I am enjoying learning this.
Are there more such features?
/home/mickeymouse$
El smbolo ! se usa antes del nmero para ejecutar el comando. El comando se
muestra, seguido de la salida del comando. El nmero 329 fue cf, el cual era un alias
que se haba creado.

Unidad 6: Personalizar el Ambiente de Usuario Fundamentos de Linux y Sistemas de Archivos 198


Copyright IBM Corp. 2006
Los materiales del curso no pueden ser reproducidos total o
parcialmente sin el permiso escrito previo de IBM.

Gua del Estudiante

Fundamentos de Linux

Resumen
Ahora que ha completado esta unidad, Ud. debe ser capaz de:

Personalizar las variables de entorno de una instalacin Linux.

Explicar la funcionalidad de los archivos .bash_profile y .bashrc.

Describir un alias y sus usos.

Explicar el comando history.

Fundamentos de Linux y Sistemas de Archivos

Unit 6: El Editor vi 199

Copyright IBM Corp. 2006


Los materiales del curso no pueden ser reproducidos total o
parcialmente sin el permiso escrito previo de IBM.

Fundamentos de Linux

Gua del Estudiante

Unidad 6: Examen de Autoevaluacin


1) Qu variable de entorno configura el editor para usuarios?
a) vi
b) emacs
c) EDITOR
d) Editor
2) Qu informacin proporciona la variable TERM ?
a) Nmero de terminal del usuario
b) Nmero de terminal del sper usuario
c) Tipo de terminal que se est usando
d) Ninguno de los anteriores
3) Cules de las siguientes variables normalmente no son configuradas en el archivo
.bashrc?
a) TMPDIR
b) HOME
c) USERNAME
d) Todas las anteriores
4) rc se refiere a 'remove configuration'.
a) Verdadero
b) Falso
5) Al ingresar al sistema Linux, cul de los siguientes scripts correr primero, por
defecto?
a) .bash_profile
b) .bashrc
c) .inputrc
d) Ninguno de los anteriores
6) El script .bash_profile se usa para ejecutar una configuracin de inicio
personalizada por el usuario
a) Verdadero
b) Falso

Unidad 6: Personalizar el Ambiente de Usuario Fundamentos de Linux y Sistemas de Archivos 200


Copyright IBM Corp. 2006
Los materiales del curso no pueden ser reproducidos total o
parcialmente sin el permiso escrito previo de IBM.

Gua del Estudiante

Fundamentos de Linux

7) Qu hace este comando?


alias ll="ls l".
a) Muestra un listado largo de archivos de un directorio
b) Muestra un listado simple de archivos de un directorio
c) Muestra un listado largo de archivos de un directorio sin agrupar la
informacin
d) Ninguno de los anteriores
8) Qu archivo de configuracin usa el editor vi?
a) .vi
b) .editor
c) .viexrc
d) .exrc
9) El comando history 10 muestra los ltimos 10 comandos almacenados en la
historia.
a) Verdadero
b) Falso
10) Los comandos que se usan en una sesin de ingreso se pierden despus de
desconectarse.
a) Verdadero
b) Falso

Fundamentos de Linux y Sistemas de Archivos

Unit 6: El Editor vi 201

Copyright IBM Corp. 2006


Los materiales del curso no pueden ser reproducidos total o
parcialmente sin el permiso escrito previo de IBM.

Fundamentos de Linux

Gua del Estudiante

Respuestas a la Unidad 6: Examen de Autoevaluacin


1) c
2) c
3) b y c
4) b
5) a
6) a
7) d
8) d
9) a

Unidad 6: Personalizar el Ambiente de Usuario Fundamentos de Linux y Sistemas de Archivos 202


Copyright IBM Corp. 2006
Los materiales del curso no pueden ser reproducidos total o
parcialmente sin el permiso escrito previo de IBM.

Potrebbero piacerti anche