Escolar Documentos
Profissional Documentos
Cultura Documentos
Fundamentos de Linux
Cdigo de Curso: CY310
Versin 3.1
Fundamentos de Linux
Informix
Lotus Script
Net.data
Microsoft Corporation
Sybase
Sybase Inc.
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
10
11
12
5. Distribuciones de Linux
13
6. Organizacin de Linux
13
15
8. Procesamiento de Texto
19
9. Programacin
20
10. Documentacin
20
21
21
Resumen
22
23
25
27
1. Introduccin
28
2. Ingreso y Salida
28
3. Formato de Comandos
30
34
5. Redireccin de Entrada/Salida
35
6. Comandos Simples
38
7. Tuberas (Pipes)
48
8. Filtros
49
Resumen
52
53
55
i
Fundamentos de Linux
57
Ejercicios de Laboratorio
58
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
79
82
83
Ejercicios de Laboratorio
84
85
1. Introduccin
86
2. Modos en vi
86
3. Fundamentos de vi
87
4. Insercin de Texto
89
5. Guardar un Archivo
92
6. Eliminar Texto
93
99
8. Modificacin de Texto
103
9. Buscar Texto
108
Resumen
110
111
113
115
Ejercicio de Laboratorio
116
ii
Fundamentos de Linux
119
120
2. Variables Shell
121
3. Metacaracteres
122
140
Resumen
142
143
145
147
Ejercicios de Laboratorio
148
149
1. Introduccin
150
150
3. Parmetros Posicionales
154
4. El Comando expr
154
5. El Comando find
156
6. El Comando read
157
7. El Comando test
158
8. Filtros en Linux
159
Resumen
165
166
168
169
Ejercicios de Laboratorio
170
171
1. El Concepto de Proceso
172
2. El comando ps
173
iii
Fundamentos de Linux
174
4. El Proceso Shell
176
177
177
180
8. Proceso Demonio
183
9. Seales
183
Resumen
185
186
188
189
1. Configuraciones Personalizables
190
191
3. El comando env
196
4. Shell Scripts
197
5. Alias
198
6. Comando History
199
Resumen
201
202
204
iv
Copyright IBM Corp. 2007
Course materials may not be reproduced in whole or in part
without the prior written permission of IBM.
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.
Pre-requisitos
Ninguno
Fundamentos de Linux
Objetivos
Al finalizar este curso, usted ser capaz de:
Explicar los procedimientos de ingreso (log in) y salida (log out) en el sistema
operativo Linux.
Agenda
Cada unidad en este curso es de dos horas de duracin.
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, aunado a esto se
presenta adems la historia de su desarrollo. Los requerimientos de hardware de Linux,
su estructura y el procesamiento de archivos son los principales componentes de esta
Unidad.
Unidad 6: El Editor vi
Esta Unidad se ocupa de uno de los editores de Linux ms usados, adems de
cualquier sistema operativo derivado de Unix el editor vi. Este editor es bastante
amplio y algunos de sus comandos son discutidos desde el punto de vista de edicin de
archivos. Los comandos se estudian como si pertenecieran a determinadas categoras.
Descripcin de Unidades 3
Fundamentos de Linux
Descripcin de Unidades
Fundamentos de Linux
Descripcin de Unidades
Descripcin de Unidades 5
Fundamentos de Linux
Fundamentos de Linux
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 como:
Conectar computadoras en una Red de rea Local (Local Area Network - LAN).
Controlar su hardware.
Para que una computadora sea capaz de hacer todo esto, requiere de un programa
especial llamado 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:
Fundamentos de Linux
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.
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
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.
Fundamentos de Linux
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.
En 1990, la mayora de las 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:
La versin 2.6 actual, completa fue lanzada en Diciembre de 2003. Sin embargo,
su desarrollo an contina.
Los siguientes son algunos de los hechos bsicos acerca del sistema operativo Linux:
Fundamentos de Linux
Requerimientos
CPU
Memoria
Monitor y Adaptador de Video
Dispositivos de Puntero
Unidades CD-ROM
Unidades de Cinta
SCSI
Impresoras
Impresoras paralelas.
Mdems
Tarjetas Ethernet
Fundamentos de 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:
Existen muchas ms, aunque la 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).
Herramientas y aplicaciones.
Fundamentos de Linux
Kernel
Shell
Programas de
Usuario
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:
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
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, ejecuta el programa apropiado o lo
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).
sh (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.
Fundamentos de Linux
Sistema de
Archivos 1
Sistema de
Archivos 2
Sistema de
Archivos 3
Sistema de
Archivos 4
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.
Superbloque.
Bloque inodo.
Bloque de datos.
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
Superbloque
Fundamentos de Linux
Bloque Inodo
Bloque de Datos
Las particiones del espacio de intercambio (space swap) son una secuencia
lineal de bloques.
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. A continuacin se 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 el procesamiento de texto.
Tambin existen otras herramientas de procesamiento de texto, que son conocidas
como editores. stas proporcionan las funcionalidades para crear, editar (modificar) y
guardar texto. Algunos ejemplos de editores son:
Fundamentos de Linux
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:
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.
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.
Fundamentos de Linux
Aplicaciones.
Software de Desarrollo.
Software Cientfico.
Software de Sistema.
Utilitarios.
Juegos.
Fundamentos de Linux
Resumen
Ahora que ha completado esta unidad, Ud. debe ser capaz de:
Fundamentos de Linux
Fundamentos de Linux
Fundamentos de Linux
Fundamentos de Linux
Fundamentos de Linux
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 (slo un 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 aprendern 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:
Los usuarios son identificados por su nombre de registro (login name) y sus
cuentas estn protegidas a travs de contraseas de usuario (user passwords).
En todos los ejemplos en este curso, se usar el bash Konsole 1.6 para KDE3.5.1 Level
a y SUSE 10.1, el nombre de servidor IBMMCT01 adems del nombre de registro
estudiante1.
Unidad 2: El Sistema Linux
Fundamentos de Linux
2.1 Ingreso
Una solicitud tpica de ingreso y registro en un sistema Linux es como sigue:
login:
El usuario tiene que ingresar el nombre de registro (login name). En este ejemplo, se
ingresar estudiante1. Inmediatamente se muestra la solicitud de contrasea:
login: estudiante1
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).
Una vez que tanto el nombre de ingreso como la contrasea se ingresan correctamente,
el usuario ingresa en el sistema. En este ejemplo, cuando se ingresa exitosamente, se
estar en un directorio llamado:
/home/estudiante1
Este se llama el directorio home del usuario. La primera barra diagonal / indica el
directorio raz y las 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:
estudiante1@IBMMCT01 :~>
El nombre de ingreso estudiante1, que aparece por segunda vez, indica que se est
en el directorio home de estudiante1. 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
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
3. Formato de Comandos
Al momento de escribir un programa en C, se usar un editor de texto. 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 las tareas
realizadas 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.
Fundamentos de Linux
passwd
Fundamentos de Linux
clear(1)
NAME
clear - clear the terminal screen
SYNOPSIS
clear
DESCRIPTION
clear clears your screen if this is possible.
looks in
It
Fundamentos de Linux
Sintaxis de cat:
2001.
El comando simplemente une los dos archivos y los muestra. Tambin cat
puede usarse sin argumentos. Asuma que se ha ingresado lo siguiente:
estudiante1@IBMMCT01:~> 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.
estudiante1@IBMMCT01:~> cat n miarchivo.txt
1
2001.
estudiante1@IBMMCT01:~>
Fundamentos de Linux
Entrada estndar.
Salida estndar.
Error estndar.
Fundamentos de Linux
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:
Fundamentos de Linux
El operador > hace del archivo que sigue al operador la nueva salida estndar y
de manera similar, el operador < cambia la entrada estndar.
2001.
ctrl-d
estudiante1@IBMMCT01:~>
2001.
2001.
ctrl-d
estudiante1@IBMMCT01:~>
Fundamentos de Linux
2001.
ctrl-d
estudiante1@IBMMCT01:~>
2001.
2001.
estudiante1@IBMMCT01:~>
Mientras se muestre este mensaje de error para indicar que se est usando
el mismo archivo como entrada y como salida, el contenido de archivo1
Fundamentos de Linux y Sistemas de Archivos
Fundamentos de Linux
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:
estudiante1@IBMMCT01:~> cal
agosto de 2007
do lu ma mi ju vi s
1
5
6 7 89
10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 31
Fundamentos de Linux
estudiante1@IBMMCT01:~>
cal 12 2006
cal 12
estudiante1@IBMMCT01:~> date
jue ago 23 10:10:04 VET 2007
estudiante1@IBMMCT01:~>
El comando date sin ningn argumento muestra el da, mes, fecha, hora
y ao actual.
estudiante1@IBMMCT01:~> date +%H
10
estudiante1@IBMMCT01:~>
date con el formato %H muestra solo la hora.
Fundamentos de Linux
Para los comandos restantes, como. head, tail sort, cmp y grep se usarn dos
archivos nombres.txt y lineas.txt. El archivo nombres.txt contiene los siguientes
nombres:
noddy
tom
jerry
donald
mickey
asterix
tintin
obelix
El archivo lineas.txt contiene las 11 lneas siguientes, que son citas bien conocidas
de personas famosas.
1. Una mentira nunca vive para ser vieja. -- Sfocles
2. Un hombre honesto es siempre un nio. -- Martial
3. Cuando ests en duda, di la verdad. -- Mark Twain
4. 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 lineas.txt no son parte del texto. Es
simplemente para 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.
Fundamentos de Linux
Esto mostrar las primeras 10 lneas del archivo lineas.txt. El valor por
defecto es 10.
estudiante1@IBMMCT01:~>
head 4 lineas.txt
bio rabe
estudiante1@IBMMCT01:~>
Fundamentos de Linux
Esto ordena las lneas del archivo nombres.txt y muestra los datos
ordenados.
estudiante1@IBMMCT01:~>
sort -r nombres.txt
Fundamentos de Linux
En archivo2.txt se tiene:
abcde
egh
ijkl
nopq
rstu
12 145
6 145
12
7 146 145
16 155 156
17 156 157
18 157 160
19 160 161
cmp: fin de fichero encontrado en archivo1.txt
estudiante1@IBMMCT01:~>
Fundamentos de Linux
wc [opciones] [archivo]
estudiante1@IBMMCT01:~> wc nombres.txt
8
52 nombres.txt
estudiante1@IBMMCT01:~>
wc nombres.txt lineas.txt
11
142
707 lineas.txt
52 nombres.txt
19
150
759 total
[estudiante1@IBMMCT01 estudiante1]$ wc
wc w nombres.txt
8 nombres.txt
estudiante1@IBMMCT01:~>
52 nombres.txt
estudiante1@IBMMCT01]:~>
Fundamentos de Linux
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:
estudiante1@IBMMCT01:~> grep esper lineas.txt
8. Grandes esperanzas hacen grandes hombres. -- Thomas Fuller
9. Una mente fuerte siempre tiene esperanzas, y tiene siempre razn
para estar esperanzada. Polybius
11. Aquel que tiene salud, tiene esperanza; y aquel que tiene
esperanzas lo tiene todo. Proverbio rabe
estudiante1@IBMMCT01:~>
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]
Fundamentos de Linux
estudiante1@IBMMCT01:~> pr 2 nombres.txt
2007-08-23 11:28
noddy
mickey
tom
asterix
jerry
tintin
donald
obelix
nombres.txt
Page 1
estudiante1@IBMMCT01:~>
Fundamentos de Linux
estudiante1@IBMMCT01:~>
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.
estudiante1@IBMMCT01:~>
Esta
Esta
1
9
estudiante1@IBMMCT01:~>
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:
estudiante1@IBMMCT01:~> cut d' ' f1,3,5 mislineas.txt
Esta mi lnea
Esta mi lnea
1 3 5
9 11 13
estudiante1@IBMMCT01:~>
Tambin se puede imprimir a nivel de byte.
estudiante1@IBMMCT01:~> cut b1 mislineas.txt
E
E
1
9
estudiante1@IBMMCT01:~>
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.
estudiante1@IBMMCT01:~> cut b1,6,12 mislineas.txt
Eep
Ees
1
911
estudiante1@IBMMCT01:~>
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
Fundamentos de Linux
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
una caracterstica donde la salida de un programa es enviada como entrada para otro
programa. El carcter | (un carcter barra vertical) representa una tubera.
Unidad 2: El Sistema Linux
Fundamentos de Linux
salida
salida entrada
Programa
2
Programa
3
Salida
estndar
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.
Fundamentos de Linux
Entrada
Estndar
datos
Programa
Filtro
datos procesados
Salida
Estndar
Fundamentos de Linux
En el segundo caso, se obtienen las ltimas ocho lneas y luego se ven las tres
primeras de stas, que son la cuarta, quinta y sexta lnea 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
Resumen
Ahora que ha completado esta unidad, Ud. debe ser capaz de:
Fundamentos de Linux
Fundamentos de Linux
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
Fundamentos de Linux
Fundamentos de Linux
Usar tuberas y filtros para obtener los resultados deseados del procesamiento
de un archivo.
Fundamentos de Linux
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
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
nombres.txt y lineas.txt.
3) Muestre el contenido de nombres.txt.
4) Encuentre si el patrn 'y' existe en las ltimas seis lneas de lineas.txt.
5) Encuentre el nmero de lneas en que la letra 'z' aparece en las primeras cuatro
lneas de lineas.txt. (Lea cuidadosamente la pregunta antes de intentar
resolverla).
6) Capture el calendario para el mes de Diciembre de 2001 en un archivo llamado
calendar.txt.
Agregue el calendario de Noviembre de 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.
Fundamentos de Linux
Fundamentos de Linux
1. Introduccin
Se discuti brevemente el sistema de archivos en Linux en la Unidad 1: Fundamentos
de Linux. Ahora se aprender cmo 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:
Los archivos son almacenes para datos. Los datos pueden ser simple texto
ASCII, documentos con formato, programas fuente, archivos ejecutables o
imgenes.
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:
Un directorio Linux es un archivo especial que mantiene una lista de todos los
archivos almacenados en l.
Fundamentos de Linux
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
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
Fechas de modificacin
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 han 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
En el cual se encuentra 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
Incluye el almacenamiento de 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
5. Comandos de Directorio
Ya se conoce cmo 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
Sintaxis de mkdir:
Fundamentos de Linux
home
jerry
estudiante1
donald
documentos
programas
proyectos
cd directorio
estudiante1@IBMMCT01:~> cd programas
estudiante1@IBMMCT01:~/programas>
Fundamentos de Linux
estudiante1@IBMMCT01:~>rmdir proyectos
estudiante1@IBMMCT01:~>
pwd [opcin]
estudiante1@IBMMCT01:~> pwd
/home/estudiante1
estudiante1@IBMMCT01:~> cd documentos
estudiante1@IBMMCT01:~/documentos>pwd
/home/estudiante1/documentos
estudiante1@IBMMCT01:~/ documentos>
Fundamentos de Linux
home
estudiante1
programas
documentos
como.txt
comentarios.txt
cprogramas
programas
Sintaxis de ls:
ls [opcin] [archivo]
cprograms
como.txt
programas
estudiante1@IBMMCT01:~/programas>
Fundamentos de Linux
1 estudiante1 users 2
-rw-r--r--
1 estudiante1 users
drwxr-xr-x
drwxr-xr-x
2 estudiante1 users
estudiante1@IBMMCT01:~/programas>
total 16
mkdir documentos/docespeciales
Fundamentos de Linux
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
estudiante1@IBMMCT01:~> cat > miarchivo.txt
Hay tambin otras formas de 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 la 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]
estudiante1@IBMMCT01:~> 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
estudiante1@IBMMCT01:~>
Fundamentos de Linux
Usando cat se puede ver que las tres lneas ingresadas a travs de ed
estn correctas.
estudiante1@IBMMCT01:~> ed miarchivo.txt
86
a
Aadiendo otra lnea.
Esta lnea fue aadida 11:35 AM.
.
w
141
q
estudiante1@IBMMCT01:~>
Fundamentos de Linux
El archivo tiene 141 caracteres ahora. Para ver cuntas 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.
Anteriormente, se present cmo 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,
Fundamentos de Linux
Fundamentos de Linux
rm [opcin] archivo
estudiante1@IBMMCT01:~> rm miarchivo.txt
Fundamentos de Linux
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.
Otros usuarios.
4 para lectura.
2 para escritura.
Fundamentos de Linux
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
slo ejecucin
2 -w-
slo escritura
3 -wx
escritura y ejecucin
4 r--
slo lectura
5 r-x
lectura y ejecucin
6 rw-
lectura y escritura
7 rwx
7 para el usuario.
5 para el grupo.
Fundamentos de Linux
Fundamentos de Linux
Fundamentos de Linux
Resumen
Ahora que ha completado esta unidad, Ud. debe ser capaz de:
Fundamentos de Linux
home
dick
tom
documentos
programas
harry
proy.txt
chp1.txt
Fundamentos de Linux
Fundamentos de Linux
Fundamentos de Linux
Fundamentos de Linux
83
Fundamentos de Linux
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.
84
Fundamentos de Linux
Unidad 6: El Editor vi
Objetivos de Aprendizaje
Al final de esta unidad, Ud. ser capaz de:
Unidad 6: El Editor vi 85
Fundamentos de Linux
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
conocen 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
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:
estudiante1@IBMMCT01:~> vi poem.txt
Aparece la ventana del editor vi como se muestra en la Figura 6.2.
Unidad 6: El Editor vi 87
Fundamentos de Linux
Insertar texto.
Guardar texto.
Eliminar texto.
Movimiento en pantalla.
Modificar 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:
Unidad 6: El Editor vi
Fundamentos de Linux
Una tabla, que muestra los comandos, propsito de los comandos y ejemplos
usando el texto de ejemplo.
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 cmo ingresar texto en el editor vi. No se puede
ingresar texto directamente en la ventana del editor vi, dado que el texto no aparecer
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
Inserta al inicio de la
lnea
Unidad 6: El Editor vi 89
Fundamentos de Linux
A
Inserta al final de la
lnea
Ayuda a escribir
'mickeymouse'.
una
nueva
lnea
bajo
Resultado: mickeymouse
<lnea en blanco abierta para insertar texto>
Ayuda a escribir
'mickeymouse'.
una
nueva
lnea
sobre
Unidad 6: El Editor vi
Fundamentos de Linux
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.
Fundamentos de Linux y Sistemas de Archivos
Unidad 6: El Editor vi 91
Fundamentos de Linux
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 empleados para
guardar, mostrados en la tabla son comandos para guardar de ex, que son usados en
vi.
Comando
Propsito
wq
Guardar y salir de vi
q!
Fundamentos de Linux
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
Unidad 6: El Editor vi 93
Fundamentos de Linux
Comando
x
Propsito
Ejemplo
Elimina un carcter,
donde el cursor est
ubicado.
Elimina
desde
la
posicin actual del
cursor hasta el final
de la palabra.
dd
Elimina
actual.
lnea
Elimina
desde
la
posicin actual del
cursor hasta el final
de la lnea.
dw
la
Resultado: Hi miceymouse
Resultado: Hi micke
Resultado: H
Unidad 6: El Editor vi
Fundamentos de Linux
Unidad 6: El Editor vi 95
Fundamentos de Linux
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.
Propsito
Ejemplo
nx
Elimina n caracteres
a partir de la posicin
del cursor
Unidad 6: El Editor vi
Fundamentos de Linux
Elimina n palabras
de la posicin actual
del cursor.
ndd
Elimina n lneas
desde la posicin
actual del cursor.
DG
Elimina desde la
posicin actual del
cursor hasta el final
de dicha lnea y lleva
el cursor hasta el
final del archivo.
DnG
Elimina
la
lnea
donde el cursor est
presente y mueve el
cursor al inicio de la
nesima lnea
D$
Elimina a partir de la
posicin actual hasta
el final de la lnea.
Hello Donald
Hello A
dn$
Elimina desde la
posicin actual del
cursor hasta el final
de
la
lnea
n
especificada.
Para eliminar tres letras de la palabra wannaen 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.
Unidad 6: El Editor vi 97
Fundamentos de Linux
Unidad 6: El Editor vi
Fundamentos de Linux
Una vez estudiados los comandos bsicos, se continuar con el aprendizaje del editor
vi en detalle. En la siguiente seccin, se aprender cmo mover una parte del archivo
a otra parte usando los comandos de movimiento de cursor de vi.
Unidad 6: El Editor vi 99
Fundamentos de Linux
Comando
Propsito
Ejemplo
Un espacio a la
izquierda de la posicin
actual del cursor.
Un espacio a la
derecha de la posicin
actual del cursor.
Un espacio debajo de
la posicin actual del
cursor.
Un espacio arriba de la
posicin actual del
cursor.
wW
bB
Propsito
Mueve el cursor al final
de la siguiente palabra,
cuando el cursor est al
final de la palabra actual.
En 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,
en 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.
Unidad 6: El Editor vi
Fundamentos de Linux
$
<CR>
Ejemplo
al Si el cursor est en la l de 'line' en la primera
lnea, lleva el cursor a T de 'This'.
Mueve el cursor a la
primera palabra de la
lnea.
Mueve el cursor al final
de la lnea.
1G
Ejemplo
Fundamentos de Linux
Propsito
<ctrl
<ctrl
<ctrl
<ctrl
f>
b>
d>
u>
Propsito
Ejemplo
nG
Mueve el cursor
nmero de lnea n.
al
<ctrl G>
Muestra el nmero de
lnea actual.
n|
(n
seguido
por el
smbolo |)
Mueve el cursor a la
columna n, donde n es un
entero.
n1
(n
seguido
por l)
Mueve
el
cursor
n
columnas a la derecha del
cursor.
Unidad 6: El Editor vi
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.
Propsito
Ejemplo
Deshace
comando.
ltimo
:e!
Editar
de
nuevo.
Restaura el texto al
estado que tena la
ltima vez que se grab.
el
Propsito
Ejemplo
Reemplaza el carcter
donde est situado el
cursor, con una letra.
Fundamentos de Linux
cw
Cambia la palabra
actual.
c$
Cambia el texto de la
posicin actual hasta el
final de la lnea.
cnw
ncw
cn$
nc$
cc
Sustituye el carcter
actual por el texto
ingresado.
ns
Sustituye el texto
ingresado en los
siguientes n
caracteres.
Reemplaza toda la
lnea.
En la siguiente seccin, se discutir cmo copiar una parte del texto desde un archivo y
reutilizarlo en otras partes del archivo.
Unidad 6: El Editor vi
Fundamentos de Linux
Propsito
Ejemplo
yy
nyy
nY
yw
ynw
Mueve n palabras
buffer sin nombre.
al
nyw
Mueve n palabras al
buffer sin nombre.
y$
Fundamentos de Linux
Texto Ejemplo:
I am Happy
I am Wise
Comando
Propsito
Ejemplo
nP
np
Dado que el buffer sin nombre se puede corromper fcilmente por el uso de otros
comandos comunes, se pueden 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
"<char>Y
"<char>yw
Mueve
la
palabra
actual al buffer con
nombre <char>
"<char>yw
Agrega la palabra al
contenido del buffer
Unidad 6: El Editor vi
Fundamentos de Linux
(<char>
en
maysculas)
"<char>y2w
Mueve
las
dos
siguientes palabras al
buffer <char>
"<char>p
"<char>nP
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
"B2dd
"dw
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
9. Buscar Texto
vi tiene cierto nmero de comandos de bsqueda. La Tabla 6.17 muestra los
comandos de bsqueda que se usan comnmente.
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.
Fc
Encuentra el siguiente
carcter c a la izquierda
del cursor en la misma
lnea.
tc
Encuentra el carcter
antes
del
siguiente
carcter c a la derecha
del cursor en la misma
lnea.
Tc
Encuentra el carcter
despus del siguiente
carcter c a la derecha
del cursor en la misma
lnea.
Repite el ltimo f, F, t y
T hacia delante.
Repite el ltimo f, F, t y
T hacia atrs.
Nota: Los comandos que empiezan con f, F, t y T son aplicables slo 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
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.
?cadena
Encuentra la ltima
ocurrencia de
cadena.
Repite el ltimo
comando / ? hacia
delante.
Repite el ltimo
comando / ? hacia
atrs.
Fundamentos de Linux
Resumen
Ahora que ha completado esta unidad, Ud. debe ser capaz de:
Unidad 6: El Editor vi
Fundamentos de Linux
Fundamentos de Linux
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
Fundamentos de Linux
Fundamentos de Linux
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
Fundamentos de Linux
Fundamentos de Linux
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, se explicar el Linux bash y las caractersticas que lo hacen
interesante. Se comenzar la discusin con las variables shell.
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,
estudiante1@IBMMCT01:~> echo $PATH
/opt/java/bin:/opt/java/bin:/home/estudiante1/bin:/usr/loc
al/bin:/usr/bin:/usr/X11R6/bin:/bin:/usr/games:/opt/gnome/
bin:/opt/kde3/bin:/usr/lib/mit/bin:/usr/lib/mit/sbin:/usr/
lib/qt3/bin:/opt/IBMJava2-142/bin:/usr/local/lib/xerces-csrc_2_7_0/bin:/usr/local/pgsql/bin
estudiante1@IBMMCT01:~>
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.
Fundamentos de Linux
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 =.
estudiante1@IBMMCT01:~> color=azul
estudiante1@IBMMCT01:~>
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.
estudiante1@IBMMCT01:~> echo $color
azul
estudiante1@IBMMCT01:~>
A continuacin ms ejemplos:
estudiante1@IBMMCT01:~> m00=100
estudiante1@IBMMCT01:~> echo $m00
100
estudiante1@IBMMCT01:~>
estudiante1@IBMMCT01:~> 100=100
bash: 100=100: command not found
estudiante1@IBMMCT01:~>
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
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.
Sustitucin de Parmetros.
Escapes y comillas.
Una lista completa de metacaracteres se muestra en una tabla al final de esta unidad.
[list]: Equivale a cualquier carcter de list. Aqu list puede contener uno o
ms caracteres como [asdf].
Fundamentos de Linux
2007-08-24
09:18
lint.txt
-rw-r--r-- 1 estudiante1
2007-08-24
09:16
linux1.txt
-rw-r--r-- 1 estudiante1
2007-08-24
09:16
linux2.doc
-rw-r--r-- 1 estudiante1
2007-08-24
09:15
linuxChap1.doc
-rw-r--r-- 1 estudiante1
2007-08-24
09:15
linuxChap2.doc
-rw-r--r-- 1 estudiante1
2007-08-24
09:16
linuxCont.doc
drwxr-xr-x 2 estudiante1 48
2007-08-24
09:17
linuxInternals
-rw-r--r-- 1 estudiante1
2007-08-24
09:16
linux.txt
-rw-r--r-- 1 estudiante1
2007-08-24
09:18
listing.lst
-rw-r--r-- 1 estudiante1
2007-08-24
09:18
mist.doc
-rw-r--r-- 1 estudiante1
2007-08-24
09:18
nest.lst
drwxr-xr-x 2 estudiante1 48
2007-08-24
09:17
unixInternals
estudiante1@IBMMCT01:~>
ls o muestra un listado largo de archivos sin informacin de grupo.
estudiante1@IBMMCT01:~> ls -o linux?.txt
-rw-r--r-- 1 estudiante1
estudiante1@IBMMCT01:~>
2007-08-24
09:16
linux1.txt
2007-08-24
09:16
linux1.txt
estudiante1@IBMMCT01:~>
Fundamentos de Linux
Uso de *
estudiante1@IBMMCT01:~> ls o linux*
-rw-r--r-- 1 estudiante1
2007-08-24
09:16
linux1.txt
-rw-r--r-- 1 estudiante1
2007-08-24
09:16
linux2.doc
-rw-r--r-- 1 estudiante1
2007-08-24
09:15
linuxChap1.doc
-rw-r--r-- 1 estudiante1
2007-08-24
09:15
linuxChap2.doc
-rw-r--r-- 1 estudiante1
2007-08-24
09:16
linuxCont.doc
-rw-r--r-- 1 estudiante1
2007-08-24
09:16
linux.txt
linuxInternals:
total 0
estudiante1@IBMMCT01:~>
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 observa total 0.
estudiante1@IBMMCT01:~> ls o linux*.txt
-rw-r--r-- 1 estudiante1
2007-08-24
09:16
linux1.txt
-rw-r--r-- 1 estudiante1
2007-08-24
09:16
linux.txt
estudiante1@IBMMCT01:~>
2007-08-24
09:15
linuxChap1.doc
-rw-r--r-- 1 estudiante1
2007-08-24
09:15
linuxChap2.doc
-rw-r--r-- 1 estudiante1
2007-08-24
09:16
linuxCont.doc
estudiante1@IBMMCT01:~> ls o *.doc
-rw-r--r-- 1 estudiante1
2007-08-24
09:16
linux2.doc
-rw-r--r-- 1 estudiante1
2007-08-24
09:15
linuxChap1.doc
-rw-r--r-- 1 estudiante1
2007-08-24
09:15
linuxChap2.doc
-rw-r--r-- 1 estudiante1
2007-08-24
09:16
linuxCont.doc
-rw-r--r-- 1 estudiante1
2007-08-24
09:18
mist.doc
09:16
linuxCont.doc
estudiante1@IBMMCT01:~> ls o *Co*
-rw-r--r-- 1 estudiante1
2007-08-24
2007-08-24
09:16
linux1.txt
-rw-r--r-- 1 estudiante1
2007-08-24
09:16
linux2.doc
estudiante1@IBMMCT01:~>
Fundamentos de Linux
2007-08-24
09:18
lint.txt
-rw-r--r-- 1 estudiante1
2007-08-24
09:18
listing.lst
estudiante1@IBMMCT01:~>
2007-08-24
09:16
linux1.txt
-rw-r--r-- 1 estudiante1
2007-08-24
09:16
linux2.doc
-rw-r--r-- 1 estudiante1
2007-08-24
09:15
linuxChap1.doc
-rw-r--r-- 1 estudiante1
2007-08-24
09:15
linuxChap2.doc
-rw-r--r-- 1 estudiante1
2007-08-24
09:16
linuxCont.doc
estudiante1@IBMMCT01:~>
Este muestra todas las lneas que tienen 0 ms caracteres seguidos por
cualquiera de los caracteres de la lista 12C, seguidos por 0 ms
caracteres nuevamente.
estudiante1@IBMMCT01:~> ls o [^lu]*
-rw-r--r-- 1 estudiante1
2007-08-24
09:18
09:18
mist.doc
2007-08-24
09:16
linux1.txt
-rw-r--r-- 1 estudiante1
2007-08-24
09:16
linux2.doc
estudiante1@IBMMCT01:~>
Fundamentos de Linux
StandardInput (Teclado)
STDOUT
STDERR
defecto)
1
2
StandardOutput (Monitor)
StandardError (direccionado al monitor por
Fundamentos de Linux
Fundamentos de Linux
cat > \
> miarchivo.txt
This is a new file.
ctrl-d
estudiante1@IBMMCT01:~>
Fundamentos de Linux
monitor
estudiante1@IBMMCT01:~>
Fundamentos de Linux
2007-08-24
10:29
error
-rw-r--r-- 1 estudiante1
2007-08-24
09:18
lint.txt
-rw-r--r-- 1 estudiante1
2007-08-24
09:16
linux1.txt
-rw-r--r-- 1 estudiante1
2007-08-24
09:16
linux2.doc
-rw-r--r-- 1 estudiante1
2007-08-24
09:15
linuxChap1.doc
-rw-r--r-- 1 estudiante1
2007-08-24
09:15
linuxChap2.doc
-rw-r--r-- 1 estudiante1
2007-08-24
09:16
linuxCont.doc
drwxr-xr-x 2 estudiante1 48
2007-08-24
09:17
linuxInternals
-rw-r--r-- 1 estudiante1
2007-08-24
09:16
linux.txt
-rw-r--r-- 1 estudiante1
2007-08-24
09:18
listing.lst
2007-08-24
10:47
miarchivo.txt
-rw-r--r-- 1 estudiante1
2007-08-24
09:18
mist.doc
-rw-r--r-- 1 estudiante1
2007-08-24
09:18
nest.lst
2007-08-24
2007-08-24
10:36
09:17
outfile
unixInternals
Fundamentos de Linux
Fundamentos de Linux
${variable-word}
${variable=word}
${variable+word}
${variable?mesg}
Fundamentos de Linux
Fundamentos de Linux
LOGNAME=estudiante1
LS_COLORS=
MACHTYPE=i386-redhat-linux-gnu
MAIL=/var/spool/mail/estudiante1
MAILCHECK=60
OPTERR=1
OPTIND=1
OSTYPE=linux-gnu
PATH=/usr/kerberos/bin:/usr/local/bin:/bin:/usr/bin:/usr/X11R6/bin:/h
ome/estudiante1/bin
PIPESTATUS=([0]="0")
PPID=14214
PS1=$'[\\u@\\h \\W]\\$ '
PS2=$'> '
PS4=$'+ '
PVM_ROOT=/usr/share/pvm3
PVM_RSH=/usr/bin/rsh
PWD=/home/estudiante1
QTDIR=/usr/lib/qt-2.3.1
REMOTEHOST=192.168.1.201
SHELL=/bin/bash
SHELLOPTS=braceexpand:hashall:histexpand:monitor:history:interactivecomments:emacs
SHLVL=1
SSH_ASKPASS=/usr/libexec/openssh/gnome-ssh-askpass
SUPPORTED=en_US:en
TERM=ansi
UID=504
USER=estudiante1
XPVM_ROOT=/usr/share/pvm3/xpvm
_=
color=azul
langfile=/home/estudiante1/.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
}
Fundamentos de Linux
estudiante1@IBMMCT01:~>
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.
Uso de \
estudiante1@IBMMCT01:~> 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
estudiante1@IBMMCT01:~>
Fundamentos de Linux
Uso de ''
estudiante1@IBMMCT01:~> echo 'Let us get $100 * 20'
Let us get $100 * 20
estudiante1@IBMMCT01:~>
Fundamentos de Linux
Sustitucin de
comodn
Redireccin y
Tuberas
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.
&
()
Command1 &&
command2
Command1 ||
command2
[list]
[^list]
> archivo
< archivo
>> archivo
<< word
Fundamentos de Linux
1>&2
Command1 |
command2
Variables
Especiales del
Shell
$#
$-
$?
$$
$!
$0
$*
Sustitucin de
Parmetros
Comillas
${variableword}
${variable=wor
d}
${variable+wor
d}
${variable?mes
g}
''
""
Fundamentos de Linux
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.
Fundamentos de Linux
ingresar unos pocos caracteres ms y presionar la tecla tab nuevamente; 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:
Fundamentos de Linux
Resumen
Ahora que ha completado esta unidad, estar en capacidad de:
Fundamentos de Linux
Verdadero
b)
Falso
Fundamentos de Linux
echo
found
||
grep
hello
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
Fundamentos de Linux
Fundamentos de Linux
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
Fundamentos de Linux
Fundamentos de Linux
1. Introduccin
En la Unidad 1: 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.
BASH_VERSION
COMMAND_ORIENTED
_HISTORY
HISTSIZE
Valor
HOME
HOSTNAME_COMPLET
ION_FILE
HOSTTYPE
MAILCHECK
NOTIFY
OLDPWD
MAILPATH
Fundamentos de Linux
Fundamentos de Linux
PATH
PROMPT_COMMAND
PS1
PS2
PPID
PWD
RANDOM
SECONDS
TMOUT
UID
Fundamentos de Linux
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.
vie ago 24 13:13:37 VET 2007$
PS1=$PWD$
/home/estudiante1$
Fundamentos de Linux
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/estudiante1$ 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, las 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.
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
/home/estudiante1$ expr 2 + 3 + 5
10
/home/estudiante1$
Fundamentos de Linux
Descripcin
match STRING
REGEXP
substr STRING
POS LENGTH
index STRING
CHARS
length STRING
+ TOKEN
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/estudiante1$ expr match linux $os
5
/home/estudiante1$
Fundamentos de Linux
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:
Fundamentos de Linux
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
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/estudiante1$ read firstVar
hello
<enter>
/home/estudiante1$
7. El Comando test
El comando test en Linux se usa para realizar las siguientes funciones:
Fundamentos de Linux
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.
Fundamentos de Linux
Carcter
Especial
Significado
[]
[^]
^
$
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.
Fundamentos de Linux
Muestra slo las lneas que tienen el patrn filters al principio de la lnea.
/home/estudiante1$ grep filters$ filters.txt
write some output. Some examples of filters.
/home/estudiante1$
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.
Fundamentos de Linux
Muestra todas las lneas del archivo lineas.txt que tienen al menos un
patrn the. + significa una o ms ocurrencias de the.
/home/estudiante1$ egrep '(t|s)he+' lineas.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/estudiante1$ cat > idnos
101
102
103
<Ctrl+d>
/home/estudiante1$
John
102
Martina
Fundamentos de Linux
Richard
<Ctrl+d>/home/estudiante1$
Usando fgrep se pueden encontrar las lneas que coinciden con los
patrones, proporcionadas en el archivo de entrada.
/home/estudiante1$ fgrep f idnos studentdetails
101
John
102
Martina
103
Richard
/home/estudiante1$
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/estudiante1$ 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:
Fundamentos de Linux
Fundamentos de Linux
Resumen
Ahora que ha completado esta unidad, Ud. debe ser capaz de:
Fundamentos de Linux
Falso
Falso
Fundamentos de Linux
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/estudiante1$ read me
happy
/home/estudiante1$ read happy
me
/home/estudiante1$ echo $happy $me
a) happy me
b)
me happy
c) Error de sintaxis
d)
Fundamentos de Linux
Fundamentos de Linux
Fundamentos de Linux
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 miarchivo.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
Fundamentos de Linux
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.
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.
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
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/estudiante1$ ps
PID
TTY
TIME
CMD
734
pts/1 00:00:12
bash
754
pts/1 00:00:01
ps
/home/estudiante1$
TIME CMD
26887 pts/6
00:00:00 bash
26951 pts/6
00:00:00 bashop
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
367 pts/9
00:00:00 bash
746 pts/3
00:00:00 ps
Fundamentos de Linux
/home/estudiante1$
STAT
752 pts/3
R+
TIME COMMAND
0:00 ps r
/home/estudiante1$
UID
PID
PPID C PRI
100 S
bash
507
309
308 0
000 R
ps
507
763
309
NI ADDR
SZ WCHAN
TTY
TIME
72
609 wait4
pts/3
00:00:00
0 76
766 -
pts/3
00:00:00
/home/estudiante1$
TTY TIME
pts/1 00:00:12
pts/1 00:00:02
CMD
bash
ps
/home/estudiante1$
Se nota que el PID para el shell permanece, 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.
Fundamentos de Linux
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
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/estudiante1$ ps l
F
S
CMD
UID
PID
PPID
C PRI
NI ADDR
100 S
bash
507
309
308
72
000 R
ps
507
763
309
76
SZ WCHAN
TTY
TIME
609 wait4
pts/3
00:00:00
766 -
pts/3
00:00:00
/home/estudiante1$
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/estudiante1$
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 lleva al bash padre y la segunda fuera del
sistema.
Fundamentos de Linux
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/estudiante1$ 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
TIME CMD
970 pts/3
00:00:00 bash
1072 pts/3
00:00:00 bash
1107 pts/3
00:00:00 ps
TIME CMD
970 pts/3
00:00:00 bash
Fundamentos de Linux
00:00:00 ps
/home/estudiante1$
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.
Fundamentos de Linux
[1] 1319
/home/estudiante1$
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, quizs despus de esperar un largo tiempo y no ver
resultados, se puede simplemente ingresar el siguiente comando:
/home/estudiante1$ kill 9 1319
/home/estudiante1$
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/estudiante1$ nohup myProgram &
[1]1396
/home/estudiante1$ 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/estudiante1$ nice myProgram &
[1] 1401
/home/estudiante1$
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 < miarchivo
Los comandos van a ser almacenados en el archivo miarchivo. Este es
redireccionado al comando at. Los comandos del archivo se ejecutan a las 6 AM.
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.
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.
/home/estudiante1$ cat linux.txt &
Fundamentos de Linux
[1] 2166
/home/estudiante1$
/home/estudiante1$ echo $!
2166
/home/estudiante1$
Fundamentos de Linux
/opt/java/bin:/opt/java/bin:/opt/java/bin:/home/estudiante1/bin:/us
r/local/bin:/usr/bin:/usr/X11R6/bin:/bin:/usr/games:/opt/gnome/bin:
/opt/kde3/bin:/usr/lib/mit/bin:/usr/lib/mit/sbin:/usr/lib/qt3/bin:/
opt/IBMJava2-142/bin:/usr/local/lib/xerces-csrc_2_7_0/bin:/usr/local/pgsql/bin
/home/estudiante1$
Fundamentos de Linux
ansi
adm5
vt100
Fundamentos de Linux
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:
getty
atd
crond
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
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
Simblico
Descripcin
SIGHUP
Suspensin
SIGINT
Interrupcin
SIGQUIT
SIGILL
Instruccin ilegal
SIGFPE
SIGKILL
12
SIGSYS
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.
Fundamentos de Linux
Resumen
Ahora que ha completado esta unidad, Ud. debe ser capaz de:
Fundamentos de Linux
Fundamentos de Linux
Fundamentos de Linux
Fundamentos de Linux
Fundamentos de Linux
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: estudiante1
password: ********
estudiante1@IBMMCT01:~> PS1=$PWD$
/home/estudiante1$ echo $PATH
/usr/local/bin:/bin:/usr/bin:/home/estudiante1/bin
/home/estudiante1$ PATH=$PATH:/usr/local/bin
/home/estudiante1$ echo $PATH
.:/usr/bin:/bin:/home/estudiante1/book:/usr/local/bin
/home/estudiante1$ exit
El usuario estudiante1 cambi la cadena de prompt a /home/estudiante1 y tambin
cambi la variable shell PATH.
Al salir y conectarse nuevamente, el usuario encuentra lo siguiente:
login: estudiante1
password: ********
estudiante1@IBMMCT01:~> echo $PATH
/usr/local/bin:/bin:/usr/bin:/home/estudiante1/bin
estudiante1@IBMMCT01:~>
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.
Fundamentos de Linux
Alias.
Historial de Comandos.
Fundamentos de Linux
exportar la variable, se debe regresar al shell padre. Se hace esto presionando Ctrl+D
o ingresando exit.
estudiante1@IBMMCT01:~> exit
estudiante1@IBMMCT01:~> export color
estudiante1@IBMMCT01:~> bash
estudiante1@IBMMCT01:~> echo $color
azul
estudiante1@IBMMCT01:~>
Movindose al shell padre usando exit en la secuencia de pasos anterior, 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.
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: estudiante1
Password:
Last login: Thu May 30 10:58:58 on tty2
Thu May 30 11:20:16 IST 2006
/home/estudiante1$
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/estudiante1$ ls -al
total 60
drwx-----drwxr-xr-x
4 estudiante1 lgrp
10 root
root
Fundamentos de Linux
-rw-------
1 estudiante1 lgrp
-rw-r--r--
1 estudiante1o lgrp
-rw-r--r--
1 estudiante1 lgrp
-rw-r--r--
1 estudiante1 lgrp
-rw-r--r--
1 estudiante1 lgrp
-rw-r--r--
1 estudiante1 lgrp
-rw-r--r--
1 estudiante1 lgrp
-rw-r--r--
1 estudiante1 lgrp
drwxr-xr-x
3 estudiante1 lgrp
-rw-------
1 estudiante1 lgrp
-rw-r--r--
1 estudiante1 lgrp
-rw-r--r--
1 estudiante1 lgrp
drwxr-xr-x
2 estudiante1 lgrp
/home/estudiante1$
# .bashrc
# User specific aliases and functions
# Source global definitions
Unidad 6: Personalizar el Ambiente de Usuario Fundamentos de Linux y Sistemas de Archivos 194
Copyright IBM Corp. 2007
Los materiales del curso no pueden ser reproducidos total o
parcialmente sin el permiso escrito previo de IBM.
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/estudiante1$ bash
estudiante1
/home/estudiante1$
/home/estudiante1$ bash
estudiante1
/home/estudiante1$
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: estudiante1
Password:
Last login: Thu May 30 12:58:58 on tty2
estudiante1
Thu May 30 11:52:31 IST 2006
/home/estudiante1$
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
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
HOME=/home/estudiante1
SHELL
SHELL=/bin/bash
TERM
TERM=ansi
USER
USER=estudiante1
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/estudiante1
SSH_ASKPASS=/usr/libexec/openssh/gnome-ssh-askpass
PATH=/usr/kerberos/bin:/usr/local/bin:/bin:/usr/bin:/usr/X
11R6/bin:/home/estudiante1/bin
_=/usr/bin/env
/home/estudiante1$
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
.exrc
: Para el editor vi
Fundamentos de Linux
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/estudiante1$ alias dt=date
/home/estudiante1$
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/estudiante1$ dt
vie ago 24 14:59:19 VET 2007
/home/estudiante1$
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/estudiante1$ alias la=ls al
/home/estudiante1$
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 miarchivo.txt en el
directorio home.
/home/estudiante1$cat miarchivo.txt
This is all about aliasing.
It is an interesting feature in Linux.
I am enjoying learning this.
Are there more such features?
/home/estudiante1$
Se van a crear algunos alias usando este archivo.
Fundamentos de Linux
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/estudiante1$ history 10
325 vi .bash_profile
326 vi .bashrc
327 vi .bash_profile
328 exit
Fundamentos de Linux y Sistemas de Archivos
Fundamentos de Linux
329 cf
330 man history
331 clear
332 vi .bash_history
333 history 4
334 history 10
/home/estudiante1$
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/estudiante1$ !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/estudiante1$
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.
Fundamentos de Linux
Resumen
Ahora que ha completado esta unidad, Ud. debe ser capaz de:
Fundamentos de Linux
Fundamentos de Linux
Fundamentos de Linux