Académique Documents
Professionnel Documents
Culture Documents
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
50
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
88
5. Guardar un Archivo
91
6. Eliminar Texto
92
97
8. Modificacin de Texto
101
9. Buscar Texto
106
Resumen
108
109
111
113
Ejercicio de Laboratorio
114
ii
Fundamentos de Linux
117
118
2. Variables Shell
119
3. Metacaracteres
120
138
Resumen
140
141
143
145
Ejercicios de Laboratorio
146
147
1. Introduccin
148
148
3. Parmetros Posicionales
151
4. El Comando expr
151
5. El Comando find
153
6. El Comando read
154
7. El Comando test
155
8. Filtros en Linux
156
Resumen
162
163
165
167
Ejercicios de Laboratorio
168
169
1. El Concepto de Proceso
170
2. El comando ps
171
iii
Fundamentos de Linux
172
4. El Proceso Shell
174
175
175
178
8. Proceso Demonio
181
9. Seales
181
Resumen
183
184
186
187
1. Configuraciones Personalizables
188
189
3. El comando env
194
4. Shell Scripts
195
5. Alias
196
6. Comando History
197
Resumen
199
200
202
iv
Copyright IBM Corp. 2006
Course materials may not be reproduced in whole or in part
without the prior written permission of IBM.
Fundamentos de Linux
Duracin
La duracin del curso es de 28 horas.
Propsito
Este curso ofrece a los estudiantes una visin general del sistema operativo Linux. La
primera parte de este curso, introduce algunos de los conceptos preliminares de Linux
como un sistema operativo de creciente popularidad. Los estudiantes aprendern los
comandos bsicos del Sistema Linux, su organizacin estructural y sistemas de archivo.
Tambin aprendern a crear y administrar directorios y archivos. Este curso proporciona
una introduccin al editor vi, uno de los editores ms usados en Linux.
La segunda parte del curso presenta una descripcin del shell de Linux, uno de los
principales componentes con el que un usuario interacta, junto con algunos comandos
simples del shell. Los estudiantes finalizarn aprendiendo acerca de los conceptos de
procesos de Linux. Este curso tambin describe los mtodos mediante los cuales el
ambiente de Linux puede ser personalizado para ajustarse a las necesidades
individuales.
El curso Fundamentos de Linux incorpora varias sesiones de laboratorio donde los
estudiantes podrn adquirir experiencia prctica acerca de Linux.
Audiencia
Estudiantes, Profesionales y Personas de Negocio.
Prerrequisitos
Ninguno
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, y la historia de su
desarrollo tambin se presenta. Los requerimientos de hardware de Linux, su estructura
y el procesamiento de archivos son los principales componentes de esta Unidad.
Unidad 6: El Editor vi
Esta Unidad se ocupa de uno de los editores de Linux (y por cierto de cualquier sistema
operativo derivado de Unix) ms usados el editor vi. Este editor es bastante amplio y
algunos de sus comandos se discuten all, desde el punto de vista de edicin de
archivos. Los comandos se estudian como si pertenecieran a determinadas categoras.
Unidad 7: Lab. Editor vi
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 cmo:
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 un sistema operativo. El sistema operativo reside en el disco duro de la
computadora y acta como un puente entre los programas de usuario y los programas
que controlan el hardware de la computadora.
El sistema operativo trabaja principalmente en segundo plano. Se encarga de los
componentes de hardware de una computadora, adems de asegurar el inicio y
ejecucin de los otros diversos programas. Tambin se encarga de los datos
almacenados en los dispositivos de almacenamiento de la computadora.
El sistema operativo es responsable de las siguientes funciones del sistema de
computadora:
Sistema
Operativo
Programa de
Usuario
Programas que
Controlan el
Hardware de la
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
El sistema operativo UNIX tiene una historia muy interesante. Algunos de los
aspectos de su evolucin son:
desde
Es conocido como un sistema operativo 'abierto' dado que puede ser llevado e
instalado en cualquier clase de sistema de computadora y plataforma de
hardware.
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
Por 1990, la mayora de piezas de software del sistema operativo basado en GNU se
haban escrito, excepto la ms importante, el kernel. El kernel es el ncleo del sistema
operativo.
Ms tarde, el kernel gratuito basado en UNIX desarrollado por Linus Torvalds fue
combinado con el sistema GNU. As naci un sistema operativo, el sistema GNU
basado en Linux.
Las etapas significativas en la evolucin de Linux son:
La versin 2.6 actual, completa fue lanzada en Diciembre 2003. Sin embargo, su
desarrollo an contina.
Los siguientes son algunos de los hechos bsicos acerca del sistema operativo Linux:
Fundamentos de Linux
Requerimientos
CPU
Memoria
Monitor y Adaptador de Video
Dispositivos de Puntero
Unidades CD-ROM
Unidades de Cinta
SCSI
Impresoras
Impresoras paralelas
Modems
Tarjetas Ethernet
Fundamentos de Linux
Tabla 1.1: Requerimientos de Hardware para Linux
5. Distribuciones de Linux
Como el cdigo fuente para Linux est siendo distribuido gratuitamente, diferentes
compaas han desarrollado sus propias versiones o distribuciones de Linux.
Cada una de estas variedades tiene su propio conjunto de caractersticas, tales como
procedimientos de instalacin y administracin, paquetes de software, y
configuraciones. Muchas de ellas estn configuradas para un tipo especfico de
computadora.
Las 10 distribuciones principales se listan a continuacin:
Existen muchas ms, aunquela distribucin Linux ms usada es Red Hat Linux.
6. Organizacin de Linux
El sistema operativo Linux est organizado funcionalmente en los siguientes tres
niveles:
Kernel (Ncleo).
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, ya sea ejecuta el programa apropiado, o
los traduce en instrucciones que el kernel entiende. Por ejemplo, un comando tal como
chdir ser traducido por el shell a un formato entendible por el kernel, mientras que un
comando tal como ls ser ejecutado por el shell como un programa en el directorio
/usr/bin/ls.
El shell es una interfaz basada en texto para el sistema operativo Linux. En Linux, las
interfaces grficas tales como el Sistema X Window (similar al presentado por Windows
NT y Windows 2000, que permite al usuario ejecutar comandos usando el ratn y el
teclado) tambin pueden ser usadas.
El shell por defecto en Linux es bash (Bourne Again SHell). Otros tipos de shell
disponibles en Linux son:
csh (C SHell).
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
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. Vamos a considerar un ejemplo.
La pronunciacin de la palabra pronunciacin es pronunciacin
En esta oracin el patrn 'pronunciacin' ocurre tres veces en el texto.
Cierto nmero de herramientas, tales como grep, egrep, y fgrep, estn disponibles
para realizar procesamiento de texto.
Tambin existen otras herramientas de procesamiento de texto, que son conocidos
como editores. Estas proporcionan las funcionalidades para crear, editar (modificar) y
guardar texto. Algunos ejemplos de editores son:
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, que viene de pginas de manual.
A continuacin se dan ejemplos de uso. El comando man ser discutido en detalle en la
Unidad 2: El Sistema Linux.
man clear
man date
man man
Los dos primeros usos del comando man muestran la documentacin para los
comandos clear y date, respectivamente. El tercer uso muestra la documentacin del
mismo comando man.
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
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 (un solo procesador).
Linux cumple con POSIX (Portable Operating System Interface for UNIX), y es un
sistema operativo estable y verstil. A travs del curso, se usar UNIX y Linux
indistintamente.
A continuacin se aprender a usar las poderosas caractersticas del sistema.
2. Ingreso y Salida
Los usuarios en un sistema operativo multiusuario trabajan en terminales, que
comprenden una unidad de salida (tambin conocida como monitor) y un teclado. Los
terminales tienen un nmero nico asociados con ellos y estn conectados a la unidad
principal, que no necesariamente reside en la misma ubicacin.
En un sistema que permite que mltiples usuarios operen en forma concurrente, debe
existir una forma de identificar a los usuarios. El sistema tambin debe asegurar que un
usuario no suplante a otro y obtenga acceso a archivos confidenciales. Todo esto se
logra a travs del procedimiento de ingreso (login).
Algunos puntos a notar acerca del procedimiento de ingreso son:
Los usuarios son identificados por su nombre de registro (login name), y sus
cuentas estn protegidas a travs de contraseas de usuario (user passwords).
Fundamentos de Linux
2.1 Ingreso
Una solicitud tpica de ingreso y registro en un sistema Linux se ve como sigue:
login:
El usuario tiene que ingresar el nombre de registro (login name). En nuestro ejemplo, se
ingresar mickeymouse. Inmediatamente se muestra la solicitud de contrasea:
login: mickeymouse
password:
El usuario tiene que ingresar la contrasea (password). La contrasea debe ingresarse
cuidadosamente dado que los caracteres ingresados no aparecen en la pantalla. Si la
contrasea no se ingresa correctamente, aparecer el siguiente mensaje de error.
Login incorrect
Todos los sistemas operativos similares a UNIX, incluyendo Linux, son sensibles a
maysculas y minsculas (por ejemplo, la letra a minscula es diferente de la A
mayscula).
Cuando tanto el nombre de ingreso como la contrasea se ingresan correctamente, el
usuario ingresa en el sistema. En nuestro ejemplo, cuando se ingresa exitosamente, se
estar en un directorio llamado
/home/mickeymouse
Este se llama el directorio home del usuario. El primer / indica el directorio raz y los
subsecuentes slo son separadores para directorios. Los archivos y directorios se
estudian en la Unidad 4 - La Estructura de Archivos de Linux. Aqu ser suficiente con
establecer que los directorios son lugares de almacenamiento para archivos.
El sistema presentar una pantalla y una solicitud de comandos, donde se puede
ingresar comandos. La solicitud de comandos visible en la pantalla es:
[mickeymouse@mycomputer mickeymouse]$
El nombre de ingreso mickeymouse que aparece por segunda vez indica que se est
en el directorio home de mickeymouse. Se aprender ms respecto a esto en la
Unidad 4 - La Estructura de Archivos de Linux.
El signo $ al final de la cadena de la solicitud indica que se est en el bash, y est
esperando alguna entrada del usuario. Para diferenciar un usuario normal del
superusuario, el sistema operativo Linux coloca el smbolo # en lugar de $ para el
superusuario.
Fundamentos de Linux
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
Se usar un editor de texto cuando se escribe un programa en C. Para compilar un
programa en C a su forma ejecutable, se usa un compilador de C. Estos son programas
que realizan tareas especficas. A nivel del sistema operativo, estos programas se
llaman comandos.
Un comando es un programa que realiza una tarea especfica. Todas nuestras tareas
en un sistema Linux pueden llevarse a cabo a travs de comandos. Una lnea de
comandos puede ser estructurada en tres partes:
El nombre del comando: Es el nombre del comando que realiza una tarea
especfica.
Fundamentos de Linux
Fundamentos de Linux
clear(1)
NAME
clear - clear the terminal screen
SYNOPSIS
clear
DESCRIPTION
clear clears your screen if this is possible.
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:
[mickeymouse@mycomputer mickeymouse]$ cat
El programa espera alguna entrada, para que pueda concatenar los datos
de entrada y mostrarlos. Dado que no se proporcion argumento, cualquier
cosa que se ingrese en el teclado ser mostrado. La entrada se toma del
teclado, que es el dispositivo de entrada estndar.
Se ver otro ejemplo.
[mickeymouse@mycomputer mickeymouse]$ cat n myfile.txt
1
2
3
Fundamentos de Linux
[mickeymouse@mycomputer mickeymouse]$
Entrada estndar.
Salida estndar.
Error estndar.
Fundamentos de Linux
Salida Estndar
Entrada Estndar
Salida
Comando Linux
Error
Estndar
Mensajes
de Error
Figura 2.1: Linux y la Entrada Estndar, Salida Estndar y Error Estndar
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:
El operador > hace del archivo que sigue al operador la nueva salida estndar y
de manera similar, el operador < cambia la entrada estndar
Fundamentos de Linux
2001.
ctrl-d
[mickeymouse@mycomputer mickeymouse]$
2001.
2001.
ctrl-d
[mickeymouse@mycomputer mickeymouse]$
Fundamentos de Linux
Por aadir se quiere indicar que los datos son siempre agregados al final del
archivo ya existente.
Dado que newfile.txt ha sido sobrescrito, se recrea con las dos lneas
originales.
[mickeymouse@mycomputer mickeymouse]$ cat > newfile.txt
Este es el primer archivo que he creado.
Lo he creado el 29 de Junio del
2001.
ctrl-d
[mickeymouse@mycomputer mickeymouse]$
2001.
[mickeymouse@mycomputer mickeymouse]$
Mientras se muestra este mensaje de error para indicar que se est usando
el mismo archivo como entrada y como salida, el contenido de file1 es
aadido a file2. La salida del uso anterior es la misma que la obtenida
usando el comando dado a continuacin:
Fundamentos de Linux y Sistemas de Archivos
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: cal [opciones] [mes] [ao]
[mickeymouse@mycomputer mickeymouse]$ cal
July 2001
Su Mo Tu We Th Fr Sa
1
8
2 3 4 5 6 7
9 10 11 12 13 14
15 16 17 18 19 20 21
22 23 24 25 26 27 28
29 30 31
[mickeymouse@mycomputer mickeymouse]$
Fundamentos de Linux
Fundamentos de Linux
jerry
donald
mickey
asterix
tintin
obelix
El archivo lines.txt contiene las 11 lneas siguientes, que son citas bien conocidas
de personas famosas.
1.
2.
3.
4.
Los nmeros de lnea dados por lines.txt no son parte del texto. Es
simplemente para permitirnos entender los comandos con claridad
Una lnea est definida como una secuencia de caracteres delimitada por un
carcter de cambio de lnea. As, una lnea puede estar en ms de una fila.
Fundamentos de Linux
Esto mostrar las primeras 10 lneas del archivo lineas.txt. El valor por
defecto es 10.
[mickeymouse@mycomputer mickeymouse]$ head 4 lines.txt
Una mentira nunca vive para ser vieja. -- Sfocles
Un hombre honesto es siempre un nio. -- Martial
Cuando ests en duda, di la verdad. Mark Twain
Las palabras falsas no son solo malas en s mismas, sino que
infectan el alma con maldad. -- Scrates
[mickeymouse@mycomputer mickeymouse]$
Fundamentos de Linux
Esto ordena las lneas del archivo names.txt y muestra los datos ordenados
[mickeymouse@mycomputer mickeymouse]$ sort -r names.txt
Fundamentos de Linux
En file2.txt se tiene
abcde
egh
ijkl
nopq
rstu
Fundamentos de Linux
wc [opciones] [archivo]
52 names.txt
11
142
707 lines.txt
19
150
759 total
[mickeymouse@mycomputer mickeymouse]$ wc
52 names.txt
[mickeymouse@mycomputer mickeymouse]$
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:
[mickeymouse@mycomputer mickeymouse]$ grep esper lines.txt
Grandes esperanzas hacen grandes hombres. -- Thomas Fuller
Una mente fuerte siempre tiene esperanzas, y tiene siempre
razn para estar esperanzada. Polybius
Aquel que tiene salud, tiene esperanza; y aquel que tiene
esperanzas lo tiene todo. Proverbio rabe
[mickeymouse@mycomputer mickeymouse]$
Ahora se ve que las lneas en las cuales el patrn esper" ocurre han sido
mostradas. Note que la lnea La Esperanza es como un cebo, cubre
cualquier anzuelo. -- Ben Jonson no es parte de la salida. Puede adivinar
por qu? grep realiza una comparacin considerando maysculas y
minsculas y de acuerdo a eso el patrn "esper" no es lo mismo que el
patrn "Esper". Se puede instruir al grep para que se ignore esto usando la
opcin i. El comando grep tiene muchas opciones. Refirase a las pginas
de man para ms detalle acerca de ellos.
Fin de Uso de Comando 2.12
Uso de Comando 2.13
El comando pr se usa para convertir un archivo de texto para su impresin.
Sintaxis de pr:
pr [opcin] [archivo]
Fundamentos de Linux
2001-06-22 17:58
noddy
tom
mickey
asterix
jerry
tintin
donald
obelix
names.txt
Page 1
[mickeymouse@mycomputer mickeymouse]$
Fundamentos de Linux
[mickeymouse@mycomputer mickeymouse]$
En el ejemplo anterior, el comando cut imprime todas las lneas, dado que
el delimitador por defecto para separar las columnas es la tabulacin, y se
tienen espacios en blanco como delimitador.
cut f1 imprime la primera columna. Dado que no hay tabulaciones para
separar las columnas, toda la fila ser tratada como una sola columna.
Ahora se rectificar esto.
[mickeymouse@mycomputer mickeymouse]$ cut d' ' f1
mylines.txt
Esta
Esta
1
9
[mickeymouse@mycomputer mickeymouse]$
Se ha cambiado el delimitador a un espacio en blanco y as slo se ve la primera
columna de cada fila. La opcin d slo se usa con campos.
Para imprimir varias columnas, se usa el siguiente comando:
[mickeymouse@mycomputer mickeymouse]$ cut d' ' f1,3,5
mylines.txt
Esta mi lnea
Esta mi lnea
1 3 5
9 11 13
[mickeymouse@mycomputer mickeymouse]$
Tambin se puede imprimir a nivel de byte.
[mickeymouse@mycomputer mickeymouse]$ cut b1 mylines.txt
E
E
1
9
[mickeymouse@mycomputer mickeymouse]$
En el ejemplo dado, se imprime el primer byte de cada fila, que slo es un carcter.
Un carcter ocupa un byte en los sistemas Linux.
Ahora se ver como pueden imprimirse varios bytes de una sola fila, para todas las
filas en un archivo. Recuerde, el comando cut trabaja sobre todo el archivo, por
cada fila.
[mickeymouse@mycomputer mickeymouse]$ cut b1,6,12 mylines.txt
Eep
Ees
1
911
Fundamentos de Linux y Sistemas de Archivos
Fundamentos de Linux
[mickeymouse@mycomputer mickeymouse]$
En el ejemplo, se ven impresos el primero, sexto y doceavo byte. La tercera lnea
de la salida slo contiene 1. Esto es porque el sexto y doceavo byte en la tercera
lnea son espacios en blanco. Note que no hay espacio entre b y los nmeros
subsecuentes.
Los ejemplos usando las opciones f y b muestran claramente la diferencia entre
sus usos. Uno trata con un conjunto de caracteres (como parte de un campo o una
columna) y el otro con un slo carcter.
7. Tuberas (Pipes)
La redireccin en Linux ayuda a conectar programas con archivos, mientras que las
tuberas ayudan a conectar un programa con otros programas. Las tuberas en lnea es
Unidad 2: El Sistema Linux
Fundamentos de Linux
una caracterstica donde la salida de un programa es enviada como entrada para otro
programa. El carcter | (un carcter barra vertical) representa una tubera.
Puede ser representado en forma diagramtica como se muestra en la Figura 2.2.
salida entrada
Programa
1
salida entrada
Programa
2
salida
Programa
3
Salida
estndar
Fundamentos de Linux
8. Filtros
Un filtro es un programa que lee datos de la entrada estndar, los procesa, y enva los
datos procesados a la salida estndar. La Figura 2.3 ilustra un filtro.
Entrada
Estndar
datos
Programa
Filtro
datos procesados
Salida
Estndar
Fundamentos de Linux
En el primer ejemplo, se obtienen las seis primeras lneas usando head y pasndolas a
tail. Las ltimas tres lneas de las primeras seis lneas sern la cuarta, quinta y sexta
lneas.
En el segundo caso, se obtienen las ltimas ocho lneas y luego se ven las tres
primeras de stas, que son las cuarta, quinta y sexta lneas en el archivo. Se ha usado
8 dado que hay 11 lneas en el archivo. Se sabe que se puede encontrar el nmero de
lneas en un archivo usando el comando wc l.
Fundamentos de Linux
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
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
dados a continuacin.
2) Usando el comando cat, cree dos archivos con los datos de los nombres y lneas
(luego de Uso de Comando 2.6) dados en la Unidad 2: El Sistema Linux. Llmelos
names.txt y lines.txt.
3) Muestre el contenido de names.txt.
4) Encuentre si el patrn 'y' existe en las ltimas seis lneas de lines.txt.
5) Encuentre el nmero de lneas en que la letra 'z' aparece en las primeras cuatro
lneas de lines.txt. (Lea cuidadosamente la pregunta antes de intentar
resolverla).
6) Capture el calendario para el mes de Diciembre 2001 en un archivo llamado
calendar.txt.
Agregue el calendario de Noviembre 2001 a calendar.txt. El mes de Noviembre
debe preceder al mes de Diciembre en calendar.txt.
Sugerencia: Puede tener que usar tres comandos para lograr esto.
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 como los archivos estn organizados en un sistema
operativo Linux.
Existen tanto una vista fsica como una vista lgica del sistema de archivos. Los
archivos se almacenan fsicamente en el disco dentro de un sistema de archivos.
Lgicamente, un sistema de archivos en Linux puede ser visto como una estructura
jerrquica (tipo rbol).
Se va a entender a continuacin qu son los archivos y directorios y los comandos
relacionados a estos.
2. Archivos
Estas son algunas de las principales caractersticas de los archivos:
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 ha visto las diferentes fechas almacenadas en un inodo. Aparte de esto, un inodo
tambin mantiene la siguiente informacin:
Identificacin del propietario del archivo
Un individuo o un grupo pueden ser propietarios de un archivo. Los detalles respecto
a los usuarios que tienen derechos de acceso al archivo se mantienen en el inodo.
Tipo del archivo
La informacin de si el tipo de archivo es regular o un directorio. Tambin se
mantiene la informacin de si el archivo es tipo carcter o de bloque especial.
Nmero de enlaces al archivo
Un archivo puede residir fsicamente en un directorio y tener cierto nmero de
enlaces a l desde otras secciones del sistema de archivos. El inodo mantiene el
nmero de nombres que tiene el archivo en la jerarqua de directorios.
Tamao del archivo
Tambin se almacena informacin acerca del tamao del archivo en bytes.
Lista de direcciones de disco para el archivo
La vista lgica de un archivo es que el contenido es almacenado en un flujo
secuencial de byte. El kernel tpicamente almacena el contenido en bloques de disco
no contiguos. El inodo mantiene la lista de las direcciones en el disco donde reside
cada parte del archivo.
Fundamentos de Linux
5. Comandos de Directorio
Ya se conoce como crear un archivo. Ahora, para colocar los archivos en diferentes
directorios, estos directorios tienen que ser creados. Cuando se instala Linux, se crea el
directorio / (raz) y muchos otros subdirectorios para archivos relacionados al sistema
operativo. Sin embargo, cuando el usuario ingresa, estar en su directorio de inicio.
Pueden crear subdirectorios y archivos slo en sus respectivos directorios home.
A continuacin se muestra cmo utilizar algunos comandos relacionados con
directorios. Estos comandos permiten crear un directorio, mover archivos a un
directorio, eliminar un directorio, encontrar la ruta del directorio de trabajo actual y listar
el contenido de un directorio.
Se discutirn los siguientes comandos:
mkdir
cd
rmdir
pwd
ls
Uso de Comando 4.1
Para organizar mejor el espacio en disco, Linux permite crear directorios. El comando
mkdir se usa para crear un directorio.
Fundamentos de Linux
Fundamentos de Linux
home
jerry
mickeymouse
donald
documentos
programas
proyectos
cd directorio
Fundamentos de Linux
pwd [opcin]
[mickeymouse@mycomputer mickeymouse]$pwd
/home/mickeymouse
[mickeymouse@mycomputer mickeymouse]$cd documentos
[mickeymouse@mycomputer documentos]$pwd
/home/mickeymouse/documentos
[mickeymouse@mycomputer documentos]$
Fundamentos de Linux
home
mickeymouse
documentos
como.txt
programas
comentarios.txt
cprogramas
programas
Sintaxis de ls:
ls [opcin] [archivo]
cprograms
como.txt
programas
Fundamentos de Linux
[mickeymouse@mycomputer programas]$
drw-r--r--
-rw-r--r--
1 mickeymouse 52
-rw-r--r--
1 mickeymouse 158
[mickeymouse@mycomputer programas]$
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
[mickeymouse@mycomputer mickeymouse]$cat > myfile.txt
Hay tambin otras formas crear un archivo a travs de editores. Un editor es un
programa que permite la creacin y modificacin de un archivo.
vi es un editor disponible en los sistemas Linux. Es un editor visual. Se aprender
sobre este editor en l a Unidad 6 El Editor vi.
Otro editor, ed, es un editor de lnea. Los editores de lnea son aquellos que trabajan
con una lnea a la vez.
El comando cat simplemente permite crear un archivo a los usuarios. No les deja
modificar el contenido del archivo. Por otro lado, ed permite al usuario crear un archivo
y modificar su contenido.
Se discutirn brevemente algunas caractersticas importantes del editor ed.
Uso de Comando 4.6
Sintaxis de ed:
ed [archivo]
[mickeymouse@mycomputer mickeymouse]$ed
a
Este archivo fue creado usando el editor ed.
Creado el 30 Junio 2001.
A las 11:30 AM.
.
w miarchivo.txt
86
q
[mickeymouse@mycomputer mickeymouse]$
Fundamentos de Linux
Usando cat se puede ver que las tres lneas ingresadas a travs de ed
estn correctas!.
[mickeymouse@mycomputer mickeymouse]$ed miarchivo.txt
86
a
Aadiendo otra lnea.
Esta lnea fue aadida 11:35 AM.
.
w
141
q
[mickeymouse@mycomputer mickeymouse]$
Fundamentos de Linux
El archivo tiene 141 caracteres ahora. Para ver cuantas lneas tiene el
archivo se puede usar el comando $=.
Hay cinco lneas en el archivo y esto se muestra ejecutando el comando $=.
Como ed es un editor de lnea, slo se puede ver el contenido lnea por
lnea con el editor. As que para ver la lnea 1, se ingresa 1.
Se ingres 1 en el ejemplo y se muestra la primera lnea. Cuando se
ingresa 6, se muestra ?, pues no existe la lnea seis en el archivo.
Fundamentos de Linux
Fundamentos de Linux
rm [opcin] archivo
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.
Fundamentos de Linux
4 para lectura.
2 para escritura.
1 para ejecucin.
El sistema usa el sistema de numeracin octal para establecer los permisos. Este
sistema tambin se llama sistema de base-8. Tiene 8 dgitos validos, 0,1,2,3,4,5,6 y 7.
Un nmero octal vlido es una combinacin de uno o ms de cualquiera de los dgitos
validos de 0 a 7. El nmero 456 es un nmero octal vlido, pero 458 no. Es importante
notar que 456 en octal NO es lo mismo que 456 en decimal.
Con los ocho dgitos, ocho combinaciones diferentes son posibles para cada categora.
0 --1 --x
2 -w3 -wx
4 r--
slo escritura
escritura y ejecucin
slo lectura
5 r-x
6 rw7 rwx
lectura y ejecucin
lectura y escritura
lectura, escritura y ejecucin
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
los conoce como editores de 'lnea'. Mientras que ed permite realizar la insercin,
eliminacin, modificacin etc., lnea por lnea, vi ofrece una facilidad de pantalla
completa para crear y editar documentos. Se ha discutido en detalle acerca de ed y sus
capacidades, en la Unidad 4 - La Estructura de Archivos Linux. En esta unidad, se
discutir el editor vi.
El trmino 'vi' viene de visual editor'. vi (en ingls 'vee eye') es el nico editor que se
encuentra en casi cada instalacin Unix/Linux. Fue escrito originalmente en la
Universidad de California en Berkeley y sus versiones ahora se pueden encontrar en
casi todas las ediciones de proveedores de Linux. vi empez como el editor de lnea
ex, y evolucion a lo largo de los aos hasta convertirse en un poderoso editor visual.
ex ahora existe en forma separada y es un modo de edicin especial de vi. A travs de
vi se pueden iniciar los comandos de ex.
vi proporciona un amplio conjunto de comandos para la insercin, eliminacin y
modificacin de texto. Usando expresiones regulares se pueden realizar poderosas
bsquedas y reemplazos de texto.
vi proporciona tres modos en que un usuario puede operar. A continuacin se
aprendern estos modos.
2. Modos en vi
vi proporciona tres modos: modo de comando, modo de entrada y modo ex. Cuando
se invoca el programa vi, est en el modo comando. En este modo, slo pueden
usarse comandos vi vlidos. En el modo de entrada, se puede ingresar, eliminar y
modificar texto. Mientras se est en modo de entrada, si se quiere ingresar un comando,
se puede regresar al modo de comando presionando la tecla <Esc>. Una vez ah, se
puede ingresar cualquiera de los comandos de vi. Del modo de comando, se puede ir a
los modos de entrada o ex. Cuando se est en el modo ex, se puede invocar cualquiera
de los comandos del editor ex. Normalmente, la mayora de los comandos para grabar
usados en vi son comandos ex.
La Figura 6.1 muestra la relacin entre los tres modos.
Unidad 6: El Editor vi
Fundamentos de Linux
3. Fundamentos de vi
Un editor vi puede abrirse ingresando vi seguido por un nombre de archivo como se
muestra en el comando dado a continuacin:
/home/mickeymouse]$ vi poem.txt
Aparece la ventana del editor vi como se muestra en la Figura 6.2.
.
Figura 6.2: Editor vi
Fundamentos de Linux y Sistemas de Archivos
Unidad 6: El Editor vi 87
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:
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 como ingresar texto en el editor vi. No se puede
ingresar texto directamente en la ventana del editor vi, dado que el texto no aparecer
Unidad 6: El Editor vi
Fundamentos de Linux
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
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 89
Fundamentos de Linux
El comando i, cuando el editor vi se abre por primera vez, permite ingresar texto
cambiando del modo de comando al modo de insercin. Ahora, se ingresar el poema y
luego se regresar al modo de comando presionando la tecla <Esc>.
Al terminar el ingreso inicial de las cuatro lneas del poema, el cursor estar posicionado
bajo el final de la ltima lnea. Asuma que ahora se quiere agregar una palabra al
poema. Se ingresar el comando A y luego se ingresa 'prototype'. La palabra se
agregar al final como se muestra a continuacin:
I wanna brek free
From the sackles of this society,
From the rules and regulations governing it,
From its prevailing age-old. prototype.
Si se quiere agregar la palabra 'prototype' al inicio de la lnea, se usar el comando I.
A continuacin se aprender a corregir el error de la palabra incorrecta 'brek' en el
poema. Se puede usar cualquier comando de insercin para la correccin de texto.
Dependiendo de que palabra se necesite corregir, se puede usar a, i, A o I.
Se debe agregar una 'a', para cambiar brek por break. Usando las teclas del cursor
para moverse por la pantalla, se posicionar el cursor bajo la letra 'e' de 'brek' y se
ingresar a (el comando para insercin). El editor vi ahora est en modo de insercin.
Se ingresar la letra a.
La otra forma de hacer esta correccin es mover el cursor hasta 'k', presionar el
comando 'i' e ingresar 'a'.
El poema corregido se ver como se muestra en la Figura 6.4.
Unidad 6: El Editor vi
Fundamentos de Linux
5. Guardar un Archivo
Usando los comandos de insercin, se puede agregar texto y hacer correcciones al
texto. Para guardar en el almacenamiento secundario, se necesita usar los comandos
para guardar disponibles en vi, a travs de ex. La Tabla 6.2 muestra un conjunto de
comandos vi disponibles para guardar un archivo. Los comandos para guardar
mostrados en la tabla son comandos para guardar de ex, que son usados en vi.
Comando
Propsito
wq
Guardar y salir de vi
q!
Unidad 6: El Editor vi 91
Fundamentos de Linux
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
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
desde
la
posicin actual del
cursor hasta el final
de la lnea
dw
Resultado: Hi miceymouse
Resultado: Hi micke
Resultado: H
Unidad 6: El Editor vi
Fundamentos de Linux
Unidad 6: El Editor vi 93
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.
Unidad 6: El Editor vi
Fundamentos de Linux
Texto Ejemplo:
Hello Mickeymouse
Hello Donald
Hello Asterik
Comando
Propsito
Ejemplo
nx
Elimina n caracteres
a partir de la posicin
del cursor
dnw
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
al 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
Unidad 6: El Editor vi 95
Fundamentos de Linux
dn$
Elimina desde la
posicin actual del
cursor hasta el final
de
la
lnea
n
especificada
Para eliminar tres letras de la palabra wanna en la primera lnea del poema, se mueve
el cursor bajo la letra w y se ingresa el comando 3x. Los tres caracteres desde la
posicin actual del cursor se eliminarn. La pantalla se ver como en la Figura 6.9.
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 como mover una parte del archivo
a otra parte usando los comandos de movimiento de cursor de vi.
Unidad 6: El Editor vi 97
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.
Caso contrario al final de
la misma palabra
Mueve el cursor al inicio
de la siguiente palabra
Mueve el cursor al inicio
de la palabra anterior slo
cuando el cursor est al
inicio de la palabra actual,
caso contrario al inicio de
la misma palabra
Ejemplo
Si el cursor est en la c de welcome, lleva el
cursor a e al final de welcome. Si el cursor
est en o de to, lleva el cursor a x de
Linux.
Unidad 6: El Editor vi
Fundamentos de Linux
Ejemplo
1G
Ejemplo
Mueve
al
primer Si el cursor est en la i de 'is' en la primera
carcter de la ltima lnea, lleva el cursor a T de 'This' en la segunda
lnea
lnea.
Mueve
al
primer Si el cursor est en la s de 'test' en la segunda
carcter de la primera lnea, lleva el cursor a T de 'This' en la primera
lnea
lnea.
Tabla 6.8: Movimiento del Cursor - Comandos de Archivo
Unidad 6: El Editor vi 99
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
Ejemplo
Reemplaza el carcter
donde est situado el
cursor, con una letra
Comando
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 como 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 puede usar los buffers nombrados. vi tiene 26 buffers con
nombre. Usan las letras del alfabeto como identificacin.
El carcter u se usa para distinguir los buffers con y sin nombre.
La Tabla 6.15 muestra los comandos de copia y pegado de buffers con nombre.
Texto Ejemplo:
This is Cat
This is Dog
El <char> usado en la siguiente tabla es cualquier carcter en minscula que no es un
comando vi tal como i, a, e, u, etc.
Comando
Propsito
Ejemplo
"<char>yy
"<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
Pega desde el buffer Pega el buffer con nombre, por ejemplo, m, que
con nombre <char> contiene por ejemplo, 'Cat' al lado derecho del
a la derecha del cursor.
cursor
"<char>nP
Pega
n
copias M3P pega tres copias del buffer con nombre M,
desde el buffer con que contiene, por ejemplo, 'Dog' al lado
nombre <char> a la izquierdo del cursor.
izquierda del cursor
Tabla 6.15: Comandos de Copia de Buffer con Nombre
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 comnmente se usan.
Texto Ejemplo:
The Client Machine
The Server Machine
Comando
Propsito
Ejemplo
fc
Encuentra el siguiente
carcter c a la derecha
del cursor en la misma
lnea
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 adelante
Repite el ltimo f, F, t y
T hacia atrs
Nota: Los comandos que empiezan con f, F, t y T son aplicables solo para la lnea
actual. Si el carcter que se est buscando no se encuentra, vi emitir un sonido o
dar alguna otra clase de seal.
vi le permite buscar una cadena en el buffer de edicin. La Tabla 6.18 ilustra los
comandos relacionados a esto.
Unidad 6: El Editor vi
Fundamentos de Linux
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
adelante
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, explicaremos 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,
[mickeymouse@mycomputer mickeymouse]$ echo $PATH
/usr/local/bin:/bin:/usr/bin:/home/mickeymouse/bin
[mickeymouse@mycomputer mickeymouse]$
Lo anterior es el contenido de la variable PATH en un Red Hat Linux que se us para
probar los ejemplos dados en este texto. El contenido podra ser diferente en otros
sistemas. Cada ruta de directorio est separada por dos puntos (:).
PATH es slo una de las muchas variables predefinidas que mantiene un shell. En la
unidad 3: Caractersticas del Shell se estudiarn otras variables shell predefinidas.
Fundamentos de Linux
[mickeymouse@mycomputer mickeymouse]$
La variable color ahora es definida por el usuario y le es asignada el valor azul.
Para ver el valor de la variable shell definida por el usuario, se usa el signo $ junto con
el nombre de la variable. Usando el comando echo, se puede imprimir el valor
establecido por el usuario.
[mickeymouse@mycomputer mickeymouse]$ echo $color
azul
[mickeymouse@mycomputer mickeymouse]$
A continuacin ms ejemplos:
[mickeymouse@mycomputer mickeymouse]$ m00=100
[mickeymouse@mycomputer mickeymouse]$ echo $m00
100
[mickeymouse@mycomputer mickeymouse]$
[mickeymouse@mycomputer mickeymouse]$ 100=100
bash: 100=100: command not found
[mickeymouse@mycomputer mickeymouse]$
Primero se establece la variable definida por el usuario m00 a 100. Cuando se intent
establecer la variable definida por el usuario 100 con un valor 100, el shell present un
mensaje de error. Esto es porque los nombres de variables definidas por el usuario no
pueden empezar con un nmero. A continuacin se presentan los diferentes tipos de
metacaracteres proporcionados por el sistema operativo Linux.
3. Metacaracteres
Los metacaracteres son caracteres que tienen un significado especial para el shell.
Algunos de los metacaracteres disponibles son:
<>
|
;
?
*
[]
$
\
()
{}
'
Fundamentos de Linux
Sustitucin de Comodines.
Sustitucin de Parmetros.
Escapes y comillas.
Una lista completa de metacaracteres se muestra en una tabla al final de esta unidad.
*
: El metacarcter * equivale a cualquier cadena de cero o ms caracteres
en un nombre de archivo.
list] : Equivale cualquier carcter de list. Aqu list puede contener uno o ms
caracteres como [asdf].
Fundamentos de Linux
1 mickeymo
1 mickeymo
13 Jul
7 Jul
3 18:20 lint.txt
3 17:53 linux.txt
-rw-r--r--
1 mickeymo
12 Jul
3 17:40 linux1.txt
-rw-r--r--
1 mickeymo
13 Jul
3 17:40 linux2.doc
-rw-r--r--
1 mickeymo
16 Jul
3 17:39 linuxChap1.doc
-rw-r--r--
1 mickeymo
17 Jul
3 17:39 linuxChap2.doc
-rw-r--r--
1 mickeymo
9 Jul
3 17:39 linuxCont.doc
drwxr-xr-x
-rw-r--r--
3 17:40 linuxInternals
3 18:53 listing.lst
-rw-r--r--
1 mickeymo
37 Jul
3 18:05 mist.doc
-rw-r--r--
1 mickeymo
12 Jul
3 18:59 nest.lst
drwxr-xr-x
3 17:40 unixInternals
[mickeymouse@mycomputer mickeymouse]$
ls o muestra un listado largo de archivos sin informacin de grupo.
[mickeymouse@mycomputer mickeymouse]$ ls -o linux?.txt
-rw-r--r--
1 mickeymo
12 Jul
3 17:40 linux1.txt
[mickeymouse@mycomputer mickeymouse]$
1 mickeymo
7 Jul
3 17:53 linux.txt
[mickeymouse@mycomputer mickeymouse]$
Fundamentos de Linux
Uso de *
[mickeymouse@mycomputer mickeymouse]$ ls o linux*
-rw-r--r--rw-r--r--
1 mickeymo
1 mickeymo
7 Jul
12 Jul
3 17:53 linux.txt
3 17:40 linux1.txt
-rw-r--r--
1 mickeymo
13 Jul
3 17:40 linux2.doc
-rw-r--r--
1 mickeymo
16 Jul
3 17:39 linuxChap1.doc
-rw-r--r--
1 mickeymo
17 Jul
3 17:39 linuxChap2.doc
-rw-r--r--
1 mickeymo
9 Jul
3 17:39 linuxCont.doc
linuxInternals:
total 0
[mickeymouse@mycomputer mickeymouse]$
Muestra todos los archivos y directorios que tienen linux como patrn de
inicio. Se observa que Linux muestra el directorio linuxInternals en una
lnea con total 0 debajo. Dado que se encontr un nombre de directorio
con el patrn linux al inicio, se muestran los archivos de ese directorio. En
este caso, no se encontraron archivos o directorios en linuxInternals y
por eso se muestra total 0.
[mickeymouse@mycomputer mickeymouse]$ ls o linux*.txt
-rw-r--r--
1 mickeymo
7 Jul
3 17:53 linux.txt
-rw-r--r--
1 mickeymo
12 Jul
3 17:40 linux1.txt
[mickeymouse@mycomputer mickeymouse]$
1 mickeymo
16 Jul
3 17:39 linuxChap1.doc
-rw-r--r--rw-r--r--
1 mickeymo
1 mickeymo
17 Jul
9 Jul
3 17:39 linuxChap2.doc
3 17:39 linuxCont.doc
1 mickeymo
13 Jul
3 17:40 linux2.doc
-rw-r--r--
1 mickeymo
16 Jul
3 17:39 linuxChap1.doc
-rw-r--r--
1 mickeymo
17 Jul
3 17:39 linuxChap2.doc
-rw-r--r--
1 mickeymo
9 Jul
3 17:39 linuxCont.doc
1 mickeymo
12 Jul
3 17:40 linux1.txt
-rw-r--r--
1 mickeymo
13 Jul
3 17:40 linux2.doc
[mickeymouse@mycomputer mickeymouse]$
Fundamentos de Linux
1 mickeymo
1 mickeymo
13 Jul
7 Jul
3 18:20 lint.txt
3 18:53 listing.lst
[mickeymouse@mycomputer mickeymouse]$
1 mickeymo
12 Jul
3 17:40 linux1.txt
-rw-r--r--
1 mickeymo
13 Jul
3 17:40 linux2.doc
-rw-r--r--
1 mickeymo
16 Jul
3 17:39 linuxChap1.doc
-rw-r--r--
1 mickeymo
17 Jul
3 17:39 linuxChap2.doc
-rw-r--r--
1 mickeymo
9 Jul
3 17:39 linuxCont.doc
[mickeymouse@mycomputer mickeymouse]$
Este muestra todas las lneas que tienen 0 o ms caracteres seguidos por
cualquiera de los caracteres de la lista 12C, seguidos por 0 o ms
caracteres nuevamente.
[mickeymouse@mycomputer mickeymouse]$ ls o [^lu]*
-rw-r--r--
1 mickeymo
37 Jul
3 18:05 mist.doc
-rw-r--r--
1 mickeymo
12 Jul
3 18:59 nest.lst
[mickeymouse@mycomputer mickeymouse]$
1 mickeymo
13 Jul
3 17:40 linux2.doc
[mickeymouse@mycomputer mickeymouse]$
Fundamentos de Linux
0
1
2
StandardInput (Teclado)
StandardOutput (Monitor)
StandardError (direccionado al monitor por
Fundamentos de Linux
mickeymouse]$
cat
linux.txt
Fundamentos de Linux
mickeymouse]$
cat
linux.txt
Fundamentos de Linux
monitor
[mickeymouse@mycomputer mickeymouse]$
Fundamentos de Linux
1 mickeymo
13 Jul
3 18:20 lint.txt
-rw-r--r--
1 mickeymo
7 Jul
3 17:53 linux.txt
-rw-r--r--
1 mickeymo
12 Jul
3 17:40 linux1.txt
-rw-r--r--
1 mickeymo
13 Jul
3 17:40 linux2.doc
-rw-r--r--
1 mickeymo
16 Jul
3 17:39 linuxChap1.doc
-rw-r--r--
1 mickeymo
17 Jul
3 17:39 linuxChap2.doc
-rw-r--r-drwxr-xr-x
1 mickeymo
9 Jul 3 17:39 linuxCont.doc
2 mickeymo 4096 Jul 3 17:40 linuxInternals
-rw-r--r--
1 mickeymo
7 Jul
3 18:53 listing.lst
-rw-r--r--
1 mickeymo
37 Jul
3 18:05 mist.doc
-rw-r--r--
1 mickeymo
12 Jul
3 18:59 nest.lst
drwxr-xr-x
3 17:40 unixInternals
Fundamentos de Linux
[mickeymouse@mycomputer mickeymouse]$
Fundamentos de Linux
not found
[mickeymouse@mycomputer mickeymouse]$
${variable-word}
${variable=word}
${variable+word}
${variable?mesg}
Fundamentos de Linux
amarillo
[mickeymouse@mycomputer mickeymouse]$
Fundamentos de Linux
HISTFILESIZE=1000
HISTSIZE=1000
HOME=/home/mickeymouse
HOSTNAME=mycomputer
HOSTTYPE=i386
IFS=$' \t\n'
INPUTRC=/etc/inputrc
KDEDIR=/usr
LAMHELPFILE=/etc/lam/lam-helpfile
LANG=en_US
LESSOPEN=$'|/usr/bin/lesspipe.sh %s'
LINES=25
LOGNAME=mickeymouse
LS_COLORS=
MACHTYPE=i386-redhat-linux-gnu
MAIL=/var/spool/mail/mickeymouse
MAILCHECK=60
OPTERR=1
OPTIND=1
OSTYPE=linux-gnu
PATH=/usr/kerberos/bin:/usr/local/bin:/bin:/usr/bin:/usr/X11R6
/bin:/home/mickeymouse/bin
PIPESTATUS=([0]="0")
PPID=14214
PS1=$'[\\u@\\h \\W]\\$ '
PS2=$'> '
PS4=$'+ '
PVM_ROOT=/usr/share/pvm3
PVM_RSH=/usr/bin/rsh
PWD=/home/mickeymouse
QTDIR=/usr/lib/qt-2.3.1
REMOTEHOST=192.168.1.201
SHELL=/bin/bash
SHELLOPTS=braceexpand:hashall:histexpand:monitor:history:inter
active-comments:emacs
SHLVL=1
SSH_ASKPASS=/usr/libexec/openssh/gnome-ssh-askpass
SUPPORTED=en_US:en
TERM=ansi
UID=504
USER=mickeymouse
XPVM_ROOT=/usr/share/pvm3/xpvm
Fundamentos de Linux y Sistemas de Archivos
Fundamentos de Linux
_=
color=azul
langfile=/home/mickeymouse/.i18n
nuevocolor=verde
sourced=1
mc ()
{
mkdir -p ~/.mc/tmp 2>/dev/null;
chmod 700 ~/.mc/tmp;
MC=~/.mc/tmp/mc-$$;
/usr/bin/mc -P "$@" >"$MC";
cd "`cat $MC`";
/bin/rm "$MC";
unset MC
}
[mickeymouse@mycomputer mickeymouse]$
Lo anterior es la salida del comando set en el sistema en que se est trabajando. Las
dos variables definidas por el usuario, color y nuevocolor, tambin son parte de la
salida. Estas dos entradas se resaltan en la salida.
Finalmente, se pueden insertar comentarios usando el smbolo #. Esto es til
principalmente en shell scripts que requieren alguna documentacin. De hecho, todos
los metacaracteres que se han usado pueden usarse en cualquier shell script.
Uso de \
Fundamentos de Linux
echo para
Uso de ''
[mickeymouse@mycomputer mickeymouse]$ echo 'Let us get $100 *
20'
Let us get $100 * 20
[mickeymouse@mycomputer mickeymouse]$
Fundamentos de Linux
mientras que echo `date` mostrar la fecha del sistema ( la salida del
comando date).
[mickeymouse@mycomputer mickeymouse]$ echo date
date
[mickeymouse@mycomputer mickeymouse]$
Metacarcter
Descripcin
&
()
Command1 &&
command2
Command1 ||
command2
Redireccin y
Tuberas
[list]
[^list]
> archivo
< archivo
>> archivo
<< word
1>&2
Command1 |
command2
Variables
Especiales del
Shell
$#
$-
$?
$$
$!
$0
$*
Sustitucin de
Parmetros
Fundamentos de Linux
${variableword}
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
Fundamentos de Linux
Resumen
Ahora que ha completado esta unidad, estar en capacidad de:
Fundamentos de Linux
Verdadero
Falso
Fundamentos de Linux
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
3) Listar los archivos usando los metacaracteres tal como
?, *, [list], [^list].
4) Usar todos los metacaracteres de redireccin como >,
; , &&, || .
5) Crear una variable shell llamada name y asignarle un valor llamado Mark.
6) Usar la sustitucin de parmetros para cambiar name de Mark a Richard.
Fundamentos de Linux
Fundamentos de Linux
1. Introduccin
En la Unidad: Fundamentos del Shell, de este volumen, se presentaron diferentes
variables usadas por un shell. Se aprendi de diferentes variables shell, tanto las
definidas por el sistema como las definidas por el usuario. En esta unidad, se
aprendern ms detalles acerca del shell y sus caractersticas.
Las variables predefinidas son variables definidas por el sistema y se discutirn en esta
unidad todas las variables predefinidas de un shell. Tambin se aprender acerca de los
parmetros posicionales. Se manejarn algunos comandos como expr, read y test.
Se explicarn tambin los filtros con detalle, al igual que algunas facilidades adicionales
del shell a travs de comandos que tienen una sintaxis similar a la sintaxis de C.
Valor
BASH
BASH_VERSION
COMMAND_ORIENTED_HISTORY
HISTSIZE
HOME
HOSTNAME_COMPLETION_FILE
Fundamentos de Linux
HOSTTYPE
MAILCHECK
MAILPATH
NOTIFY
OLDPWD
PATH
PROMPT_COMMAND
PS1
PS2
PPID
PWD
RANDOM
SECONDS
Fundamentos de Linux
TMOUT
UID
Fundamentos de Linux
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
Fundamentos de Linux
/home/mickeymouse$ expr 2 + 3 + 5
10
/home/mickeymouse$
Descripcin
POS
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/mickeymouse$ expr match linux $os
5
/home/mickeymouse$
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:
find [ruta] expresin
Fundamentos de Linux y Sistemas de Archivos
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
Entre los usos del comando read se destacan: configuracin de variables de entorno
en .bashrc, asignacin de valores a variables en programas Shell Scripts, entre otros.
Se aprender acerca de .bashrc y programas shell scripts en la Unidad 6:
Personalizar el Ambiente del Usuario de este volumen.
Uso de Comandos 3.4
/home/mickeymouse$ read firstVar
hello <enter>
/home/mickeymouse$
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.
Carcter
Especial
Significado
Fundamentos de Linux
[]
[^]
^
$
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
filters
are
programs
that
read,
process
the
input
and
filters in Linux. grep is a powerful filter that finds the /home/mickeymouse$.
Muestra slo las lneas que tienen el patrn filters al principio de la lnea.
/home/mickeymouse$ grep filters$ filters.txt
write some output. Some examples of filters.
/home/mickeymouse$
Equivale a todas las lneas que tienen al menos una 'f' en ellas e ignora
aquellas que no tienen 'f'. Se obtiene el resultado como se declar, siempre
que exista al menos un archivo en el directorio que tiene el carcter f en su
nombre. En caso contrario, no se muestra nada.
Fin del Uso de Comandos 3.6
Fundamentos de Linux y Sistemas de Archivos
Fundamentos de Linux
Muestra todas las lneas del archivo lines.txt que tienen al menos un
patrn the. + significa una o ms ocurrencias de the.
/home/mickeymouse$ egrep '(t|s)he+' lines.txt
Equivale a todas las lneas que tienen t o s antes del patrn he. El
operador | se usa para denotar o.
Fin del Uso de Comandos 3.7
fgrep es una herramienta rpida de bsqueda. Es capaz de buscar mltiples cadenas
al mismo tiempo. Su principal uso es en las bsquedas en directorio y bibliogrficas.
Uso de Comandos 3.8
Asuma que el archivo idnos contiene el nmero de identidad de los
estudiantes como se muestra a continuacin.
/home/mickeymouse$ cat > idnos
101
102
103
^d
/home/mickeymouse$
John
102
Martina
Fundamentos de Linux
103
^d
Richard
/home/mickeymouse$
Usando fgrep se pueden encontrar las lneas que coinciden con los
patrones, proporcionadas en el archivo de entrada.
home/mickeymouse$ fgrep f idnos studentdetails
101
John
102
Martina
103
Richard
/home/mickeymouse$
8.2 sed
sed es el editor de flujos, derivado del editor ed. sed tambin funciona como un filtro.
La sintaxis de sed se muestra a continuacin.
/home/mickeymouse$ sed 'lista de comandos' nombres de
archivos
sed lee una lnea a la vez de los archivos de entrada, aplica la lista de comandos y
muestra las lneas en la salida estndar. Los comandos ed forman la lista de comandos
para sed. sed no altera el archivo original. Por medio de sed, se puede mostrar las
lneas que se desea, borrarlas, sustituirlas con otro texto, etc. El archivo intermedio
procesado puede ser redireccionado a otro archivo.
sed puede realizar las siguientes funciones:
Fundamentos de Linux
Fundamentos de Linux
Resumen
Ahora que ha completado esta unidad, Ud. debe ser capaz de:
Fundamentos de Linux
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/mickeymouse$ read me
happy
/home/mickeymouse$ read happy
me
/home/mickeymouse$ echo $happy $me
a) happy me
b) me happy
c) Error de sintaxis
d) Ninguna de las anteriores
10) Qu realiza sed en el siguiente comando?
/home/mickeymouse$ sed 's/my/&&/g' myfile.txt
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 myfile.txt e ingresar el siguiente texto en l.
Hang over with us
Come over
Stay over
Dine with us and hang over with others
Let us enjoy and stay over with us for the day
Play with us
Let us party
8) Mostrar las lneas que tienen Hang over o Stay over.
9) Mostrar las lneas que tienen el carcter s seguido por un espacio.
10) Usar sed para sustituir todas las ocurrencias de la palabra over con la palabra
above.
11) Probar todos los comandos, metacaracteres y variables shell que ha aprendido
hasta ahora.
Fundamentos de Linux
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/mickeymouse$ ps
PID
TTY
TIME
CMD
734
pts/1 00:00:12
bash
754
pts/1 00:00:01
ps
/home/mickeymouse$
00:00:00 bash
26951 pts/6
00:00:00 bash
27104 pts/6
00:00:00 bash
29214 pts/0
00:00:00 eth0
32067 pts/4
00:00:00 bash
32234 pts/8
00:00:00 bash
309 pts/3
00:00:00 bash
Fundamentos de Linux
367 pts/9
746 pts/3
00:00:00 ps
/home/mickeymouse$
STAT
752 pts/3
R+
TIME COMMAND
0:00 ps r
/home/mickeymouse$
UID
PID
100 S
507
309
PPID C PRI
308 0
000 R
507
763
309
TTY
TIME
CMD
72
NI ADDR
0
609 wait4
SZ WCHAN
pts/3
00:00:00
bash
0 76
766 -
pts/3
00:00:00
ps
/home/mickeymouse$
CMD
bash
ps
Se nota que el PID para el shell permanece el mismo, pero el PID para el comando ps
difiere de los anteriores. Como se mencion anteriormente, a cada proceso se le da un
nuevo PID cuando es ejecutado.
El comando bash es el proceso shell que se est ejecutando. Est activo mientras el
usuario est conectado y por lo tanto, se ve que su PID permanece constante. El
Unidad 5: Procesos en Linux
Fundamentos de Linux
proceso shell es llamado proceso padre. Todos los comandos que corren dentro del
shell son procesos hijos del proceso shell. As, todas las invocaciones del comando ps
sern ejecutadas como procesos hijos.
Usando ps, tambin se puede ver el PID del proceso padre.
/home/mickeymouse$ ps l
F
UID
PID
PPID
TTY
TIME
CMD
100 S
507
309
308
C PRI
0
72
NI ADDR
0
609 wait4
SZ WCHAN
pts/3
00:00:00
bash
000 R
507
763
309
76
766 -
pts/3
00:00:00
ps
/home/mickeymouse$
UID
PID
PPID
100 S
507
309
308
C PRI
0
69
NI ADDR
0
609 wait4
SZ WCHAN
TTY
pts/3
00:00:00 bash
TIME CMD
000 S
507
722
309
71
631 wait4
pts/3
00:00:00 bash
000 R
507
839
722
75
765 -
pts/3
00:00:00 ps
/home/mickeymouse$
El comando bash crea un proceso shell hijo dentro del proceso shell padre. Aunque
ambos se denominan bash, ellos se diferencian por sus PIDs. El comando ps l
ahora se ejecuta en el proceso shell hijo. El PPID del segundo bash es 309 y el padre
de ps es 722, que es el PID del segundo bash. As, se puede ver una jerarqua de
procesos.
Siempre que un comando se ejecuta en un shell, temporalmente se crea un nuevo shell,
y el comando se ejecuta en este shell. Una vez que la ejecucin del comando se
completa, el control regresa al shell padre, que cre el proceso shell hijo para ejecutar el
comando. El shell padre ahora est listo para continuar.
Dado que se ha creado otra sesin bash, es necesario desconectarse dos veces para
salir del sistema. La primera desconexin nos lleva al bash padre y la segunda fuera
del sistema.
A continuacin se explica el proceso shell en detalle.
Fundamentos de Linux
4. El Proceso Shell
Cuando un usuario se conecta, el kernel empieza un proceso shell para el usuario.
Cuando el usuario ingresa un comando, el shell usa el kernel para iniciar un proceso
hijo. El comando se ejecuta y el control regresa al shell. El shell entonces espera por
ms entradas del usuario. Si el usuario desea terminar un proceso que durante algn
tiempo ha estado ejecutndose, puede usar el comando kill. El comando kill toma
el PID como argumento de la lnea de comandos.
A veces el comando kill puede no terminar el proceso porque es posible para el
proceso ignorar todas las seales enviadas para terminarlo por el comando kill. Si
esto ocurre, un administrador o el propietario del proceso puede usar la opcin -9 con el
comando kill. La seal 9 no puede ser ignorada por ninguno de los procesos en
ejecucin, as terminar definitivamente el proceso.
Se entender el uso de la opcin 9 a travs de un ejemplo.
Uso de Comandos 5.2
Asumiendo que lo siguiente es la salida del comando ps, se intentar matar
uno de los procesos en ejecucin.
/home/mickeymouse$ ps
PID TTY
TIME CMD
970 pts/3
00:00:00 bash
1072 pts/3
00:00:00 bash
1103 pts/3
00:00:00 ps
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
1129 pts/3
00:00:00 bash
00:00:00 ps
Fundamentos de Linux
/home/mickeymouse$
Ahora se observa que el proceso bash hijo ha muerto. sta es otra forma
de salir del proceso bash hijo.
Fin del Uso de Comandos 5.2
A continuacin se aprender acerca de los procesos de Primer Plano.
Fundamentos de Linux
[1] 1319
/home/mickeymouse$
El comando anterior crea dos procesos para cat y wc que se ejecutan en segundo
plano. Sin embargo, en ese caso, en lugar de imprimir dos PIDs, slo se imprime uno.
Este PID impreso es para el ltimo proceso en la secuencia en la lnea de comandos,
en este caso es wc. El PID 1319 se refiere al comando wc. Si se desea terminar el
proceso de segundo plano, quiz despus de esperar un largo tiempo y no ver
resultados, se puede simplemente dar el siguiente comando:
/home/mickeymouse$ kill 9 1319
/home/mickeymouse$
Puede haber instancias en las que se tiene que trabajar con programas que toman
mucho tiempo en completarse. Suponga que se invoca al programa y luego sale del
sistema, Linux inmediatamente termina el proceso. Idealmente, se puede desear que el
programa permanezca ejecutndose an despus de haberse desconectado. Esto
puede lograrse al usar el siguiente comando:
/home/mickeymouse$ nohup myProgram &
[1]1396
/home/mickeymouse$ nohup: appending output to `nohup.out'
Usando este comando, el proceso para myProgram continuar ejecutndose incluso
despus de que el usuario se haya desconectado. (nohup significa 'no hang-ups'). La
salida de myProgram se guardar en un archivo llamado nohup.out. Los comandos
que deben ser iniciados de esta forma deben ser decididos antes de usar nohup. No
se puede usar el comando nohup despus de que un comando ha sido iniciado.
Si myProgram toma mucho tiempo en ejecutarse y los recursos del computador estn
siendo compartidos por otros usuarios, se puede hacer que este proceso se ejecute con
una prioridad baja. En otras palabras, slo se desea ser amable con los otros usuarios
usando el siguiente comando:
/home/mickeymouse$ nice myProgram &
[1] 1401
/home/mickeymouse$
Establecer nohup automticamente invocar nice para que haga su trabajo de que el
proceso se ejecute con una prioridad ms baja.
Linux tambin permite iniciar un programa en un momento particular.
at 6am < myFile
Los comandos van a ser almacenados en el archivo myFile. Este es redireccionado al
comando at. Los comandos del archivo se ejecutan a las 6 AM.
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.
Fundamentos de Linux
Fundamentos de Linux
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
Smblico
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: mickeymouse
password: ********
[mickeymouse@mycomputer mickeymouse]$ PS1=$PWD$
/home/mickeymouse$ echo $PATH
/usr/local/bin:/bin:/usr/bin:/home/mickeymouse/bin
/home/mickeymouse$ PATH=$PATH:/usr/local/bin
/home/mickeymouse$ echo $PATH
.:/usr/bin:/bin:/home/mickeymouse/book:/usr/local/bin
/home/mickeymouse$ exit
El usuario mickeymouse cambi la cadena de prompt a /home/mickeymouse y tambin
cambi la variable shell PATH.
Al salir y conectarse nuevamente, el usuario encuentra lo siguiente:
login: mickeymouse
password: ********
[mickeymouse@mycomputer mickeymouse]$ echo $PATH
/usr/local/bin:/bin:/usr/bin:/home/mickeymouse/bin
[mickeymouse@mycomputer mickeymouse]$
Ambas variables shell establecidas por el usuario se han revertido a sus valores
anteriores. Esto ocurre, porque estas configuraciones eran vlidas slo para la sesin
de ingreso actual.
Al personalizar el ambiente se puede ir un paso adelante administrando justo el
ambiente de procesos. Personalizar el ambiente de procesos es una forma simple pero
poderosa de lograr un ambiente de trabajo personalizado. La mayor parte de la
personalizacin se puede lograr modificando las variables shell.
Fundamentos de Linux
Alias.
Historial de Comandos.
Fundamentos de Linux
mickeymouse]$
mickeymouse]$
mickeymouse]$
mickeymouse]$
exit
export color
bash
echo $color
mickeymouse]$
Fundamentos de Linux
export PATH
unset USERNAME
Se pueden agregar ms entradas al archivo simplemente invocando vi
.bash_profile y agregando lneas. Se va a agregar algunas entradas, marcadas en
negrita aqu.
# .bash_profile
# Obtener alias y funciones
if [ -f ~/.bashrc ]; then
. ~/.bashrc
fi
# Ambiente especfico del usuario y programas de arranque
PATH=$PATH:$HOME/bin
export PATH
unset USERNAME
date
PS1=$PWD$
Una vez incluidas esas dos lneas, se guarda el archivo, se sale del sistema y
nuevamente se vuelve a conectar. Esto es lo que se observa en la pantalla.
Welcome to Suse Linux 9.1 (i586)
Kernel 2.6.4-52-default
login: mickeymouse
Password:
Last login: Thu May 30 10:58:58 on tty2
Thu May 30 11:20:16 IST 2006
/home/mickeymouse$
Se observa que se muestra la fecha y hora actual y la nueva cadena prompt. De esta
forma, los usuarios pueden personalizar el ambiente a su preferencia, usando el archivo
.bash_profile .
Una pregunta puede formularse. Cmo se visualizan los archivos que empiezan con
un .?
Usando ls -al.
/home/mickeymouse$ ls -al
total 60
drwx-----drwxr-xr-x
4 mickeymo lgrp
10 root
root
Fundamentos de Linux
-rw-------
1 mickeymo lgrp
-rw-r--r--
1 mickeymo lgrp
-rw-r--r--
1 mickeymo lgrp
-rw-r--r--
1 mickeymo lgrp
-rw-r--r--
1 mickeymo lgrp
-rw-r--r--
1 mickeymo lgrp
-rw-r--r--
1 mickeymo lgrp
-rw-r--r--
1 mickeymo lgrp
drwxr-xr-x
3 mickeymo lgrp
-rw-------
1 mickeymo lgrp
-rw-r--r--
1 mickeymo lgrp
-rw-r--r--
1 mickeymo lgrp
drwxr-xr-x
2 mickeymo lgrp
/home/mickeymouse$
# .bashrc
# User specific aliases and functions
# Source global definitions
Unidad 6: Personalizar el Ambiente de Usuario Fundamentos de Linux y Sistemas de Archivos 192
Copyright IBM Corp. 2006
Los materiales del curso no pueden ser reproducidos total o
parcialmente sin el permiso escrito previo de IBM.
Fundamentos de Linux
if [ -f /etc/bashrc ]; then
. /etc/bashrc
fi
whoami
Un punto muy importante a notar aqu, es que cada vez que se ejecuta bash en el
prompt de comandos, se mostrar la fecha.
/home/mickeymouse$ bash
mickeymouse
/home/mickeymouse$
/home/mickeymouse$ bash
mickeymouse
/home/mickeymouse$
Si se desconecta y se conecta nuevamente, encontrar la siguiente impresin en
pantalla:
Welcome to Suse Linux 9.1 (i586)
Kernel 2.6.4-52-default
login: mickeymouse
Password:
Last login: Thu May 30 12:58:58 on tty2
mickeymouse
Thu May 30 11:52:31 IST 2006
/home/mickeymouse$
Se observa que se muestran las entradas adicionales hechas en .bash_profile y
.bash_rc. Si se hubiera mencionado tambin una fecha en .bash_rc, se hubiera
observado que se mostraran dos salidas de fechas.
La principal diferencia entre .bash_profile y .bashrc es que mientras
.bash_profile se ejecuta slo una vez cuando el usuario se conecta, .bashrc se
ejecuta por cada ejecucin de bash. .bashrc proporciona una forma por la cual se
puede personalizar un programa, el programa bash en este caso.
Hay algunas variables que no son configuradas normalmente en el archivo .bashrc, ya
que son importantes para una sesin de ingreso y no para un proceso shell. Algunas de
estas son HOME y USER.
De manera similar se tiene a .bash_logout, que se ejecuta cuando el usuario se
desconecta del sistema.
A continuacin se da a conocer el comando env.
Fundamentos de Linux
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/mickeymouse
SHELL
SHELL=/bin/bash
TERM
TERM=ansi
USER
USER=mickeymouse
Fundamentos de Linux
SHLVL=1
SHELL=/bin/bash
HOSTTYPE=i386
OSTYPE=linux
HISTSIZE=1000
LAMHELPFILE=/etc/lam/lam-helpfile
PVM_ROOT=/usr/share/pvm3
TERM=linux
HOME=/home/mickeymouse
SSH_ASKPASS=/usr/libexec/openssh/gnome-ssh-askpass
PATH=/usr/kerberos/bin:/usr/local/bin:/bin:/usr/bin:/usr/X
11R6/bin:/home/mickeymouse/bin
_=/usr/bin/env
/home/mickeymouse$
Generalmente los shell utilizan determinados shell scripts para realizar muchas de las
tareas. .bash_profile es un ejemplo de un shell script. A continuacin se dar un
breve explicacin acerca de los shell scripts.
4. Shell Scripts
Un bash puede ejecutarse como un login shell, un shell interactivo o un shell no
interactivo. Un determinado conjunto de programas se ejecutan en secuencia cuando un
shell arranca. Estos programas se denominan shell scripts o simplemente scripts. Se
est trabajando con Bourne Again SHell, y por lo tanto se estar usando algunos scripts
relacionados a bash. Algunos de los shell scripts que se ejecutan comnmente durante
una sesin de ingreso y desconexin son .bash_profile, .bashrc, y
.bash_logout. Estos shell scripts estn disponibles en $HOME. El .bash_profile
se ejecuta antes de un .bashrc.
Pueden haber otros scripts que se ejecutan dependiendo de la versin e
implementacin especfica del sistema. Un archivo llamado .inputrc tambin puede
ser ejecutado. Este contiene alias y funciones de usuarios. Un archivo llamado profile en
el directorio /etc se usa para modificar los parmetros de todos los usuarios en el
sistema.
Otros archivos del directorio home del usuario pueden ser:
.emacs
.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/mickeymouse$ alias dt=date
/home/mickeymouse$
El comando date ha sido abreviado como dt. Ahora se puede usar dt para mostrar la
fecha. Si se ingresa dt en el prompt de comandos, se obtiene la salida del comando
date.
/home/mickeymouse$ dt
Thu May 30 13:14:47 IST 2001
/home/mickeymouse$
Un punto importante a notar aqu es que las opciones para un comando se dan cuando
se crea el alias. El alias si puede tomar una opcin. Si se desea abreviar ls al, se
puede hacer lo siguiente:
/home/mickeymouse$ alias la=ls al
/home/mickeymouse$
Note que el comando con la opcin est encerrado con comillas dobles. Si no se
encierra, se mostrar el siguiente mensaje en pantalla:
bash: alias: `-al' not found
El shell trata ls y al como dos comandos diferentes.
Tambin se pueden usar tuberas y filtros en un alias. Se va a presentar un ejemplo
para entender esto. Asuma que se tiene un archivo llamado myFile.txt en el
directorio home.
/home/mickeymouse$cat myFile.txt
This is all about aliasing.
It is an interesting feature in Linux.
I am enjoying learning this.
Are there more such features?
/home/mickeymouse$
Se van a crear algunos alias usando este archivo.
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/mickeymouse$ history 10
325 vi .bash_profile
326 vi .bashrc
327 vi .bash_profile
328 exit
329 cf
Fundamentos de Linux y Sistemas de Archivos
Fundamentos de Linux
Fundamentos de Linux
Resumen
Ahora que ha completado esta unidad, Ud. debe ser capaz de:
Fundamentos de Linux
Fundamentos de Linux
Fundamentos de Linux