Está en la página 1de 163

EL SISTEMA

OPERATIVO UNIX

PARA USUARIOS
J ulio Borque Almajano
CCUZ - 31
Servicio de I nformtica-Centro de Clculo

Universidad de Zaragoza
EL SISTEMA OPERATIVO
UNIX PARA USUARIOS
Autor: Julio Borque Almajano
Servicio de Informtica - Centro de Clculo
de la Universidad de Zaragoza, 1995.
(Sistemas Centrales)
Edificio de Matemticas
Ciudad Universitaria. 50009 - ZARAGOZA
Tfno: 976 761000 Ext. 3167
Edita: Secretariado de Publicaciones
de la Universidad de Zaragoza
Depsito Legal: Z-881-95
PRESENTACION
==============
SISTEMA OPERATIVO UNIX PARA USUARIOS
======================================
Esta publicacin recoge la documentacin que se entrega en el Curso de
"Bsico de Sistema Operativo Unix" impartido por el Centro de Clculo de la
Universidad de Zaragoza.
Contiene una reproduccin de todas las transparencias que usa el
profesor en sus exposiciones.
No es un manual de referencia, sino un material didctico dirigido a
facilitar la utilizacin del Sistema Operativo Unix por aquellos usuarios que no
hayan tenido un contacto profundo con dicho sistema operativo.
El curso se divide en siete captulos de los que:
El primero trata una introduccin al sistema operativo, se comentan
caractersticas generales, diferentes versiones e historia del sistema,
comandos bsicos, etc.
El segundo es un estudio a nivel de usuario sobre las operaciones
relacionadas con el sistema de ficheros que proporciona Unix.
El tercero es una gua sobre el editor vi.
El cuarto trata sobre algunas utilidades encaminadas a la comunicacin
entre diferentes usuarios y sistemas.
El quinto es un estudio somero de conceptos relacionados con shells y
procesos.
En el sexto se trata el tema de redireccin de procesos y los filtros ms
importantes.
El captulo sptimo es un anexo sobre algunas utilidades que
proporciona la shell de Korn.
Existen unos pequeos ejercicios intercalados en el manual, son de fcil
solucin y se pueden tomar en forma de ejemplos.
El Sistema Operativo utilizado para elaborar este manual ha sido HP-UX
versin 9.0 y los cursos se impartieron en mquinas de dicho fabricante.
Este manual tiene su continuacin en el titulado "Herramientas de
programacin en Sistema Operativo Unix".

INDICE UNIX BASICO PARA USUARIO
===================================
OBJETIVO : Aprender a operar con las ordenes mas importantes
a nivel de usuario .
CONTENIDO :
1. INTRODUCCION Y ORDENES BASICAS PARA OPERAR .
- Introduccin :
- Historia de Unix , generaciones.
- Caractersticas del Unix.
- Introduccin a la estructura interna de Unix , las shells.
- Comentario sobre sistemas abiertos.
- Ordenes:
- Entrar y salir al sistema:
login password passwd exit.
- Estructura de las ordenes en Unix , separadores ; y \.
- Problemas mas usuales.
- Utilidades practicas repeticin de comandos.
- Situacin frente al entorno:
id who whoami finger pwd.
- Peticin de ayuda, como usar y estructura de man:
man info.
- Algunas ordenes:
echo banner date cal clear.
2. MANEJO DE FICHEROS .
- Introduccin , conceptos bsicos ( fichero, directorio
directorio de entrada y de trabajo, estructura de rbol
invertido etc ).
- Operaciones con directorios.
- Operaciones con ficheros.
Incluyendo:
- imprimir ficheros particularizando .
- caracteres especiales ? * [ ] - !.
- Protecciones.
- Copias de seguridad . salvar y recuperar ficheros.
( tar tcio cpio ).
3. EL EDITOR VI .
- Introduccin ( modos de operacin , forma de cambiar de uno
a otro ).
- Entrar salir.
- Movimiento de cursor.
- Operaciones de edicin.
- Localizacin de cadenas sustitucin de ellas.
- Mover y copiar bloques de texto.
- Ordenes al sistema operativo.
- Cambiar el entorno de trabajo.
4. COMUNICACION ENTRE USUARIOS , USO DE SERVICIOS EN RED .
- Comunicacin entre usuarios del mismo Unix:
mail mailx write mesg news wall .mailrc.
- Comunicacin exterior:
ftp telnet hostname rlogin rcp remsh.
5. LA SHELL , EJECUCION DE COMANDOS , MULTITAREA .
- Que es y tipos.
- Proceso hijo , ejecucin de comandos.
- Variables y entornos , exportacin de variables.
- Comandos sobre variables.
- Ordenes para manejar procesos nice nohup kill.
- Procesamiento modo background.
- .profile ( procedimiento de entrada ).
6. REDIRECCIONAMIENTO DE ENTRADA Y SALIDA , PIPELINES,
FILTROS.
- Redireccionamiento de entrada salida.
- stdin stdout stderr < > << >> 2> 2>>.
- Pipelines | .
- Filtros interesantes :
- Ordenes cat more lp.
- Ordenes cat sort grep wc.
- Ordenes tee cut pr.
- Orden awk.
- Orden diff.
7. PARTICULARIDADES K-SHELL.
- Alias.
- Edicin de la linea de comandos.
- Finalizacin del nombre de un fichero.
- Historia de un comando.
- Comparacin de csh ksh sh.
SISTEMA OPERATIVO UNIX . CURSO BASICO
1.1.- INTRODUCCION : Contenido del curso
QUE INCLUYE ESTE CURSO Y QUE NO ?
INCLUYE ESTE CURSO NO INCLUYE ESTE CURSO
- Introduccin general a Unix - Programacin de la shell
- Estudio sistema de ficheros - Administracin del sistema
- Vi - Puesta a punto y rendimiento
- La shell - Llamadas al sistema
- Redireccin E/S - Herramientas de programacin
- Tuberas - Lenguaje C
- Uso de redes
- Uso de mail
- La Korn shell
- Almacenamiento de ficheros off-line
SISTEMA OPERATIVO UNIX . CURSO BASICO
1.2.- INTRODUCCION : Notacin utilizada . Formato
Convenciones de la notacin :
- RETURN Retorno de carro
- cursivas Texto proporcionado por el usuario
- negrita Trminos o comandos nuevos
- |
- CTRL-d Control-d
- [ texto ] Texto opcional
- ESC Escape
- .... Mas del mismo tipo
SISTEMA OPERATIVO UNIX . CURSO BASICO
1.3.- INTRODUCCION : Sistema Operativo
Definicin de sistema operativo :
Es un conjunto integrado de programas de control y programas de proceso
diseados para maximizar totalmente la efectividad operativa de un ordenador
Sistema operativo
Programas
Aplicaciones
Memoria
C.P.U.
Usuarios
Hardware
Dispositivos
fisicos
Las funciones de un sistema operativo se engloban en tres grupos: de gestin del
sistema, de gestin de datos y de gestin de trabajos, dentro de estos grupos
algunas de ellas son planificacin de la ejecucin de programas, asignacin de
memoria, controlar operaciones de entrada salida, manejar errores, etc.
SISTEMA OPERATIVO UNIX . CURSO BASICO
1.4.- INTRODUCCION : Sistema operativo Unix
Orgenes
Unix fue creado en 1969 por Dennis Ritchie y Ken Thompson.
El sistema operativo originario era el sistema Multics.
Los laboratorios Bell fue la primera organizacin que lo utiliz.
Sus primeras versiones fueron desarrolladas en cdigo maquina pero a partir de la
tercera se realizo en C, creado para este motivo.
A partir de la versin 7, en 1978, un grupo de usuarios asumi la responsabilidad
administrativa del control de su distribucin, que al principio lo hacan solo al coste
de la copia, incluyndose el cdigo fuente escrito en C, eso produjo que Unix
tuviera gran xito entre las universidades americanas.
Objetivos perseguidos por los usuarios de Unix
Asegurar la portabilidad de los desarrollos, eliminando as la dependencia de los
sistemas propietarios ( esta portabilidad no es completa ).
Permitir a fabricantes independientes de software la oferta de productos en este
entorno, eso aumenta la oferta de productos y los precios son mas bajos.
Proteger la inversin realizada en aplicaciones.
Es un estndar en entornos cientficos y lo esta empezando a ser en los de gestin.
SISTEMA OPERATIVO UNIX . CURSO BASICO
1.5.- INTRODUCCION : Evolucin de Unix a travs del tiempo
Unix SVR4
Xenix
BSD 4.X
OSF / 1
OSF / 2
Unix V 7
BSD 3.0
Unix S III Unix SV
32/V
Mach
1970
1980
1990
SCO SV/386
Unix V 3
AIX
SISTEMA OPERATIVO UNIX . CURSO BASICO
1.6.- INTRODUCCION : versiones Unix segn fabricantes
SYSTEM V R4 Versin de ATT, es la referencia para las dems.
AIX Versin IBM del sistema Unix SV, en RISC S/6000.
ULTRIX Versin Digital, en sistemas Alpha.
HP-UX Versin HP basada en BSD y System V.
SUN-OS Versin SUN basada en BSD y System V, en desuso.
SOLARIS Versin SUN actual, para procesadores SPARC.
XENIX Versin para pc creada por Microsoft, ahora de SCO.
UNICOS Versin de Cray para grandes ordenadores vectoriales.
CONVEXOS Versin de Convex basado en BSD.
OSF/2 Versin de OSF donde se integran IBM, Digital, HP, etc.
LINUX Versin para pc, estn los fuentes y es pblica.
AUX Versin para Mac.
386/ix Versin para pc de Interactive Systems.
SISTEMA OPERATIVO UNIX . CURSO BASICO
1.7.- INTRODUCCION : Caractersticas principales de Unix
Standard
hecho en C
Portable
Escalable
Modular
Flexible
Potente
Multiusuario
Tiempo compartido
Memoria virtual
Entorno de programacin
Interpretes de comandos (shells) estandar e intercambiables
Muchos comandos de utilidad
Sistema de ficheros jerrquico
SISTEMA OPERATIVO UNIX . CURSO BASICO
1.8.- INTRODUCCION : Estructura interna del sistema Unix

USUARIOS
Shells Comandos
Compiladores Interpretes
Librerias del sistema
Interface de las llamadas del sistema con el kernel
Interface del kernel con el hardware
terminales dispositivos y controladores de memoria
discos cintas y memoria fisica
K E R N E L
SISTEMA OPERATIVO UNIX . CURSO BASICO
1.9.- INTRODUCCION : Estandarizacin . Sistemas abiertos
Estandarizacin informtica
Es una corriente de intencin por el cual algunas organizaciones tanto publicas
como privadas intentan dar normas para el desarrollo, manejo y comunicacin de
productos informticos.
Sistemas abiertos
Se llaman a aquellos que siguen las normas de estandarizacin, en concreto en
sistemas operativos aquellos que siguen las normas POSIX.
POSIX
Es un conjunto de normas que definen los servicios del sistema operativo.
Este estndar esta producido por IEEE y ha sido asumido por ISO ( organizacin
de estndares internacionales ).
Estas normas son soportadas por la mayora de los sistemas Unix en el mercado
pero tambin hay llamadas de algunos sistemas Unix que no responden al
estndar POSIX.
X/OPEN
Grupos de fabricantes que se han puesto de acuerdo para definir un CAE
( entorno comn de aplicacin ) donde se definen, accesos a bases de datos,
comunicaciones y otros elementos que permiten asegurar la portabilidad a los
productos desarrollados conforme a estas especificaciones.
Otras organizaciones son OSF, Unix International, GOSIP.
SISTEMA OPERATIVO UNIX . CURSO BASICO
1.10.- INTRODUCCION : Ventajas e inconvenientes de Unix
Inconvenientes
El usuario puede tener una sensacin de desanimo cuando comprueba que la
compatibilidad entre sistemas Unix en algunos casos presenta problemas, hay
muchas marcas introducidas en este campo y se encuentran algunos problemas.
Limitaciones en la gestin de seguridad en el que no es comparable en la
actualidad con sistemas como MVS, lo que es difcil implantarlos en entornos
bancarios y lineas areas.
Poca oferta hasta hace poco de monitores de teleproceso y la limitacin en el
tratamiento masivo de transacciones on line.
Falta de referencias de instalaciones Unix suficientes en grandes mainframes, lo
que hace que sea limitada la disponibilidad de tcnicos conocedores de Unix en el
entorno de grandes maquinas.
Ventajas
No se necesita un hardware determinado, corre sobre procesadores de distinta
filosofa, intel, risc, etc.
Mayor competitividad entre productores de software con precios muy atractivos.
Gran cantidad de desarrollos de software pblicos al alcance de los usuarios.
Expansin del mundo Unix muy fuerte, 20% de crecimiento anual.
Apoyo de los organismos internacionales.
SISTEMA OPERATIVO UNIX . CURSO BASICO
1.11.- INTRODUCCION : Entrada al sistema 1
Para entrar en el sistema necesitas :
Un terminal con un juego completo de caracteres ascii.
Una linea de comunicacin de datos.
Identificacin para entrar al sistema (nombre de usuario).
Una palabra clave (password).
Como entrar al sistema
Cuando te conectas a un equipo Unix primero aparece en pantalla :
identificacin del equipo
login: nombre_usuario
password: palabra_clave
El nombre de usuario es una palabra como mximo de 8 caracteres ademas
tiene asignado un uid que es un nmero natural que te identifica en el sistema.
El nombre de usuario lo asigna el administrador cuando te da de alta como cliente
del sistema.
SISTEMA OPERATIVO UNIX . CURSO BASICO
1.12.- INTRODUCCION : Entrada al sistema 2
Consideraciones sobre la password :
La longitud mxima de la palabra clave es de 8 caracteres.
Usa una palabra clave suficientemente grande.
No escojas una clave - Ni demasiado fcil - ej. xxxxxxx.
- Ni con nombres - ej. pcarlos.
- Ni con nmeros de telfono - ej. 356728.
- Ni con tu nombre de usuario - ej. curunix2.
Unix diferencia entre letras maysculas y minsculas.
Tiende a utilizar una palabra clave que mezcle letras nmeros y caracteres
especiales
ej. Go8e7!j-0.
Cambia peridica y frecuentemente tu palabra clave.
A la hora de teclear usuario y password :
Puedes utilizar los caracteres : # No considerar el ultimo carcter tecleado
ej. useer##r3 = user3.
@ No considerar lo escrito en la linea
ej. userjkjh@user3 = user3.
SISTEMA OPERATIVO UNIX . CURSO BASICO
1.13.- INTRODUCCION : Cambiar la password
Comando passwd
Cuando teclees el comando passwd te pedir tu palabra clave.
Despus te pedir la nueva palabra clave.
Finalmente debers repetir la nueva palabra clave.
$ passwd RETURN
Changing password for user3
Old password: palabra_clave_actual RETURN
New password: palabra_clave_nueva RETURN
Retype new password: palabra_clave_nueva RETURN
SISTEMA OPERATIVO UNIX . CURSO BASICO
1.14.- INTRODUCCION : Salir del sistema
Comando exit
Tecleando exit te despides del sistema $ exit .
CTRL-D
Pulsando CTRL-D sales del sistema.
Es equivalente al comando exit.
Otras formas en otros equipos
En otros equipos es normal utilizar el comando logout para salir del sistema.
SISTEMA OPERATIVO UNIX . CURSO BASICO
1.15.- INTRODUCCION : Formato general de los comandos
El formato general de todos los comandos Unix es :
$ comando [ -opciones ] [ argumentos ] RETURN
- $ Es el prompt que el sistema ofrece para que el usuario se
de cuenta que esta dispuesto a recibir informacin.
- comando Accin a realizar por el sistema.
- -opciones Modificaciones al comando.
- argumentos Aquellos objetos sobre los que se ejecuta el comando.
Se deben dejar espacios en blanco entre las diferentes partes de las instrucciones.
SISTEMA OPERATIVO UNIX . CURSO BASICO
1.16.- INTRODUCCION : Teclas de control y caracteres ; \
Teclas de control
CTRL-C Cancela la ejecucin de un comando sin darte control.
CTRL-S Interrumpe la ejecucin de un comando.
CTRL-Q Reanuda la ejecucin de un comando.
CTRL-Z Interrumpe la ejecucin pero dndote control.
Los caracteres especiales ; \
; Separa comandos en una linea y hace la ejecucin de ellos sea
consecutiva.
ej. $ echo hola ; echo adis RETURN
\ Habilita la linea siguiente para seguir con el mismo comando
en la siguiente linea no aparece el prompt $ sino > .
ej. $ echo \ RETURN
> hola RETURN
SISTEMA OPERATIVO UNIX . CURSO BASICO
1.17.- INTRODUCCION : Opciones ante un problema
Problemas Posibles soluciones
La maquina lo muestra todo en Sal del sistema con la tecla CTRL-D
letras maysculas o caracteres y vuelve a entrar.
especiales .
El terminal se queda colgado. Teclea CTRL-Q es posible que estes
con el proceso interrumpido,
pulsa luego RETURN,
pulsa CTRL-C varias veces,
pulsa CTRL-D para intentar salir,
comprueba la conexin fsica entre el
teclado y el equipo o el cable de la
salida a red,
cancela la conexin.
No aparece el prompt $ sino >. Pulsa CTRL-C o teclea ' " ` y
RETURN.
SISTEMA OPERATIVO UNIX . CURSO BASICO
1.18.- INTRODUCCION : Repeticin de comandos
Observacin :
Esta opcin no es estndar para todo el sistema Unix sino que depende en que
shell se trabaje.
La forma que vemos es propia de la k-shell.
Forma :
En la linea de comandos pulsa la tecla escape ESC.
Con las teclas + - se recuperan ordenes anteriores.
+ orden anterior
- orden posterior
La forma de recuperar es leer de un fichero history.
SISTEMA OPERATIVO UNIX . CURSO BASICO
1.19.- INTRODUCCION : Identificacin de usuarios
Comando id
Respuesta uid=253(user3) gid=611(nombre_grupo)
Informa del nmero identificativo de usuario, nombre del grupo
de usuarios al que perteneces y nmero identificativo de grupo.
Comando who
Respuesta lista de usuarios con formato:
nombre_usuario terminal fecha hora
Informa de los usuarios que estn conectados en que terminal
y cual ha sido la fecha y hora de entrada al sistema.
Comando whoami
Respuesta nombre_usuario
Informa de que usuario eres para la mquina.
Comando finger
Formato $ finger nombre_usuario
Informa de datos referentes al usuario tecleado como
nombre real, telfono, ultimo acceso, shell de arranque, etc.
SISTEMA OPERATIVO UNIX . CURSO BASICO
1.20.- INTRODUCCION : Consulta del manual 1
Comando man
$ man [1234579m -k] comando | palabra_clave
El comando man se utiliza para buscar informacin en el manual de referencia
las opciones que damos aqu son :
man -k palabra_clave Lista todos los comandos que tienen la
cadena palabra_clave en su descripcin.
man [1234579m] comando Busca y muestra la informacin sobre
comando en la seccin de manual
especificada.
man comando Busca y muestra la informacin sobre
comando en todo el manual de referencia.
Una vez que en la pantalla ha aparecido la primera pgina de informacin se
pueden utilizar las siguientes teclas:
RETURN Saca por pantalla la siguiente linea.
SPACE Saca por pantalla la siguiente pgina.
q Salida de man y vuelve a la shell.
SISTEMA OPERATIVO UNIX . CURSO BASICO
1.21.- INTRODUCCION : Consulta del manual 2
Formato de la informacin suministrada por el comando man
NOMBRE
SINOPSIS
DESCRIPCION
DEPENDENCIAS DEL HARDWARE
EJEMPLOS
FICHEROS
VER TAMBIEN
DIAGNOSTICOS
ERRORES
AVISOS
AUTOR
Nota: En algunos sistemas existe otra utilidad de peticin de informacin,
esta se activa ejecutando el comando info, por ejemplo el sistema
convex-os la tiene.
SISTEMA OPERATIVO UNIX . CURSO BASICO
1.22.- INTRODUCCION : Consulta del manual 3
Secciones del manual de referencia
Seccin 1 Comandos de usuario
Seccin 1m Comandos de mantenimiento de sistema
Seccin 2 Llamadas al sistema
Seccin 3 Subrutinas de librera
Seccin 4 Ficheros especiales
Seccin 5 Formatos de ficheros
Seccin 7 Funciones miscelneas
Seccin 9 Glosario
Observacin : Hay algunos mandatos que no estn como entrada en la
utilidad man, eso es porque son ordenes internas de la shell,
para consultarlos solo hay que invocar a man con el comando
ksh o sh.
SISTEMA OPERATIVO UNIX . CURSO BASICO
1.23.- INTRODUCCION : Ordenes bsicas 1
Comando echo
$ echo texto
Escribe texto sobre la salida por defecto, normalmente la pantalla.
Si texto contiene varias palabras las tomar como unidades independientes,
si quieres que se integre en una sola unidad debes poner texto entre comillas
simples.
Comando banner
$ banner texto
Escribe texto con formato grande en la salida por defecto.
Comando cal
$ cal [ mes ] [ ao ]
Escribe el calendario del mes y ao especificados, se puede especificar solo
ao y entonces muestra el calendario del ao completo.
SISTEMA OPERATIVO UNIX . CURSO BASICO
1.24.- INTRODUCCION : Ordenes bsicas 2
Comando date
$ date
Muestra por pantalla la fecha hora y uso horario del sistema.
Comando clear
$ clear
Limpia la pantalla en la que estas trabajando.
Comando sleep
$ sleep cantidad_tiempo
Interrumpe el control durante la cantidad_tiempo medida en segundos.
SISTEMA OPERATIVO UNIX . CURSO BASICO
1.25.- INTRODUCCION : Ordenes bsicas 3
Comando cat
$ cat fichero
Lista el contenido del fichero especificado.
Comando ls
$ ls
Lista los ficheros donde estas trabajando.
SISTEMA OPERATIVO UNIX . CURSO BASICO
2.1.- GESTION DE FICHEROS : Introduccin al sistema de
ficheros
Que es un fichero ?
Es una secuencia de bytes de datos.
Hay diferentes tipos de ficheros segn su contenido:
Ficheros ejecutables.
Ficheros de datos.
Dispositivos fsicos.
Ficheros de texto.
Canales de comunicacin.
Ficheros tipo directorios.
Observaciones :
La organizacin de los ficheros en Unix es secuencial,
es decir los ficheros Unix son secuencias de bytes.
Salto de linea es la nica organizacin en ficheros texto
pero esto es transparente para el kernel de Unix.
SISTEMA OPERATIVO UNIX . CURSO BASICO
2.2.- GESTION DE FICHEROS : Estructura del sistema de
ficheros . Directorios
Los ficheros se organizan agrupados en directorios.
Los directorios contienen informacin sobre como encontrar sus ficheros.
A su vez los directorios tambin estn incluidos en otros directorios.
A esta estructura del sistema de ficheros se le conoce por rbol invertido.
/
fichero1 fichero3 fichero2 direc1 direc2
juan pedro dir-ana
dir-ventas almacen dir-pagos cont
proveedores clientes
Notar que los directorios son tambin un tipo especial de ficheros.
SISTEMA OPERATIVO UNIX . CURSO BASICO
2.3.- GESTION DE FICHEROS : Conceptos 1
Pathname
Direccin dentro de la jerarqua de arboles es decir lista
de los directorios para llegar al objeto en cuestin
separados por slash (/).
Directorio padre
Cuando hablamos de dos directorios uno incluido en el
otro llamamos directorio padre al que contiene.
Directorio hijo
Cuando hablamos de dos directorios uno incluido en el
otro llamamos directorio hijo al que es contenido.
Directorio raz /
Primer directorio de la jerarqua del sistema de ficheros
de el cuelgan todos los dems ficheros y directorios.
Siempre se representa con un slash ( / ).
Directorio actual o de trabajo
Directorio donde esta el usuario en ese instante.
Siempre se esta activo en algn directorio.
Se puede consultar con el comando pwd y cambiar con
cd.
SISTEMA OPERATIVO UNIX . CURSO BASICO
2.4.- GESTION DE FICHEROS : Conceptos 2
Direccin absoluta
Es aquella que esta referida siempre desde el directorio
raz, siempre empiezan con slash ( / ).
Direccin relativa
Es aquella que esta referida desde el directorio actual.
Directorio de entrada o HOME
Directorio actual nada mas entrar al sistema, definido en
el fichero /etc/passwd, cada usuario tiene uno y es su
propietario.
Comando pwd
Si lo invocas te indica cual es tu directorio actual.
Directorio punto ( . )
Cada directorio tiene dentro de el otro directorio que
se apunta a el mismo, este es el directorio ( . ).
Directorio doble punto ( .. )
Cada directorio tiene dentro de l otro directorio que
apunta al directorio padre, este es el directorio ( .. ).
SISTEMA OPERATIVO UNIX . CURSO BASICO
2.5.- GESTION DE FICHEROS : Ver contenido de directorios
Comando ls
$ ls [-lFaR] [nombre_de_fichero | nombre_de_directorio ]
Si en la orden se especifica un nombre_de_fichero su ejecucin te informar
si este fichero existe.
En cambio si se especifica un nombre_de_directorio listar los ficheros que
estn dentro del directorio.
En el caso de no especificar ningn directorio se entender referente al
directorio de trabajo.
OPCIONES
-l Proporciona un listado que describe los atributos de cada fichero.
-F Aade un slash (/) a cada fichero listado que sea un directorio
y un asterisco (*) a cada fichero ejecutable.
-a Lista todos los ficheros incluyendo aquellos cuyos nombres empiezan
por punto (.).
-R Lista ficheros recursivamente los suyos y los de sus subdirectorios.
SISTEMA OPERATIVO UNIX . CURSO BASICO
2.6.- GESTION DE FICHEROS : Uso de metacaracteres
Metacaracteres :
Son caracteres especiales que sustituyen a otros caracteres.
Asterisco * Representa cualquier lista de caracteres incluso a
la lista vaca.
Interrogacin ? Representa un caracter cualquiera.
Las nicas excepciones a los metacaracteres * y ?
es que no sustituyen nunca al caracter punto ( . )
al principio de la palabra.
Corchetes [ ] Sustituye un caracter de los especificados entre
los corchetes.
Y adems guin - Combinado con guin define el rango de los
caracteres que sustituye.
Y adems exclamacin ! Combinado con exclamacin se sustituye por los
caracteres no representados ah.
Ejemplo : ?pru[!0-9a-z] * Todas las palabras que en la primera posicin
tengan un caracter distinto de punto, luego
aparezca la cadena pru e inmediatamente
despus tenga un caracter que no sea un dgito ni
una letra minscula.
SISTEMA OPERATIVO UNIX . CURSO BASICO
2.7.- GESTION DE FICHEROS : Cambiar el directorio actual
Comando cd
$ cd [directorio ]
Cambia el directorio de trabajo por el especificado.
Si no se menciona ningn directorio toma por defecto el directorio de entrada.
Se puede utilizar notacin absoluta o relativa.
Para cambiar al directorio padre solo hace falta hacer referencia al directorio
doble punto ( .. ).
Ej. De entrada en el directorio HOME
cd ..
cd usr
cd /usr
cd ../tmp
cd .
SISTEMA OPERATIVO UNIX . CURSO BASICO
2.8.- GESTION DE FICHEROS : Crear y borrar directorios
Comando mkdir
$ mkdir [directorio ]
Crea un directorio con el nombre especificado.
El directorio se puede especificar con direccin absoluta o relativa.
La creacin del directorio implica automticamente la generacin de los directorios
punto ( . ) y doble punto ( .. ) dentro del directorio a crear.
Comando rmdir
$ rmdir [directorio ]
Elimina, borra directorios vacos ( conteniendo solo los directorios . y .. ).
El directorio se puede especificar con direccin absoluta o relativa.
El borrado del directorio implica automticamente la eliminacin de los directorios
punto ( . ) y doble punto ( .. ) del directorio especificado.
SISTEMA OPERATIVO UNIX . CURSO BASICO
2.9.- GESTION DE FICHEROS : Directorios interesantes
/bin Contiene comandos ejecutables del sistema.
/usr Contiene muchos de los ficheros y directorios utilizados
por el sistema.
/usr/bin Contiene mas comandos ejecutables del sistema.
/usr/lib Contiene ficheros de librera de lenguajes y aplicaciones.
/usr/mail Contiene un fichero correo por cada usuario.
/usr/man Contiene las pginas del manual de referencia.
/usr/local/bin Contiene comandos desarrollados en el entorno local.
/usr/contrib/bin Contiene comandos ejecutables de dominio pblico.
/users Contiene los directorios y ficheros de los usuarios.
/etc Contiene ficheros y comandos para la administracin del
propio sistema.
/dev Contiene los ficheros de dispositivo para perifricos.
SISTEMA OPERATIVO UNIX . CURSO BASICO
2.10.- GESTION DE FICHEROS : Comentarios sobre ficheros
nota : Las siguientes ordenes no son estndar, dependen de cada fabricante.
Comando lsf
$ lsf [-aR] [nombre_de_fichero | nombre_de_directorio ]
Es similar a la orden ls con la opcin -f.
Comando ll
$ ll [-aR] [nombre_de_fichero | nombre_de_directorio ]
Es similar a la orden ls con la opcin -l.
Formato del listado salida :
-rw-r----- 1 user3 grupo4 62 May 13 09:54 prueba1
El primer caracter puede ser - d c l s.
Los nueve caracteres siguientes indican las protecciones del fichero.
El siguiente nmero muestra el nmero de enlaces que tiene el fichero.
El nombre del usuario propietario del fichero y nombre del grupo al que esta
asignado el fichero.
Tamao del fichero en bytes, fecha y hora de ultima actualizacin.
Nombre del fichero.

EJERCICIOS GESTION DE FICHEROS 1
================================
1 ) Crea un directorio en tu directorio HOME llamado "prueba1". Haz que este
directorio sea el de trabajo actual.
2 ) Cambia tu directorio de trabajo otra vez a tu directorio HOME. Desde aqu,
sin cambiar el directorio de trabajo, averigua la estructura de rbol cuya raz esta
en el directorio /lib, tiene subdirectorios este directorio?. Para este ejercicio utiliza
las ordenes ls, ll y lsf, y compara resultados.
3 ) Cual es la direccin relativa desde tu directorio prueba1 del fichero
/lib/libp/libvis.a?. Y la direccin absoluta de "prueba1"?. Cambia tu directorio de
trabajo a libp y desde all ejecuta un mandato que liste los usuarios del sistema.
4 ) Crea los siguientes directorios:
prueba1/dirA
prueba1/dirA/dir1
prueba1/dirA/dir21
prueba1/dirA/dir1/dirc
Utiliza la opcin -R del comando ls para visualizarlos. Intenta borrar el directorio
"dirA" sin borrar los dems.
5 ) Lista los directorios, con sus contenidos, que esten por debajo de
"prueba1/dirA" y que contengan un nmero en la cuarta posicin de su
nombre, haz esto desde el directorio "prueba1" y con una sola orden.
SISTEMA OPERATIVO UNIX . CURSO BASICO
2.11.- GESTION DE FICHEROS : Listar contenido de ficheros
Comando cat
$ cat [ -s ] [fichero ]
Lista el contenido del fichero especificado con direccin relativa o absoluta.
Se pueden listar varios ficheros y los concatena.
Te indica si ha habido errores de acceso a los ficheros.
La opcin -s omite los mensajes de error que pueden darse al acceder a un
fichero.
Si no se especifica fichero de entrada entiende por defecto que la entrada del
comando es lo que introduzcas por pantalla hasta pulsar CRTL-D.
Se utiliza mas redireccionando la salida a ficheros con el caracter >.
SISTEMA OPERATIVO UNIX . CURSO BASICO
2.12.- GESTION DE FICHEROS : Visualizar paginando
contenido de un fichero
Comando more
$ more [ -nmero -c +linea +/patrn ] [fichero ]
Muestra el contenido del fichero especificado paginando la salida.
Una vez que has ejecutado el comando pasas a la siguiente pagina pulsando
la barra espaciadora ( SPACE ).
Si quieres terminar el comando pulsa q.
Para ver mas opciones puedes pulsar h y te muestra un pequea ayuda.
OPCIONES
-nmero Nmero de lineas que salta al paginar por defecto
son 22.
-c Pagina reescribiendo y no haciendo scrolling.
+linea Nmero de linea del fichero a partir de la cual se
ejecuta el comando more.
+/patrn Busca la cadena patrn y ejecuta more desde ah.
SISTEMA OPERATIVO UNIX . CURSO BASICO
2.13.- GESTION DE FICHEROS : Copiar ficheros
Comando cp
$ cp [ -ip ] fichero_a_copiar fichero_final | directorio_final
Copia un fichero en otro fichero existente o no.
Si tecleas fichero_final ( puedes indicar su direccin ) se copiar con ese
nombre y si existe lo machacar.
Si tecleas directorio_final se copiar con su mismo nombre en ese directorio.
Puedes teclear varios ficheros a copiar cuando especificas directorio pero no
cuando lo haces con fichero.
OPCIONES
-i Informa si el fichero destino ya existe y te pide
confirmacin del mandato, es muy til para evitar
despistes.
-p Copia el fichero poniendo la fecha y hora de ultima
actualizacin del fichero copiado igual a la del inicial.
SISTEMA OPERATIVO UNIX . CURSO BASICO
2.14.- GESTION DE FICHEROS : Mover ficheros
Comando mv
$ mv [ -i ] fichero_a_mover fichero_final | directorio_final
Mueve un fichero a otro fichero existente o no, es similar a renombrar.
Si tecleas fichero_final ( puedes indicar su direccin ) se copiar con el ese
nombre y si existe lo machacar, ademas borrar el fichero_a_mover .
Si tecleas directorio_final se mover con su mismo nombre a ese directorio.
Puedes teclear varios ficheros a mover cuando especificas directorio pero no
cuando lo haces con fichero.
OPCIONES
-i Informa si el fichero destino ya existe y te pide
confirmacin del mandato, es muy til para evitar
despistes.
SISTEMA OPERATIVO UNIX . CURSO BASICO
2.15.- GESTION DE FICHEROS : Enlazar ficheros
Comando ln
$ ln [ -i ] fichero_a_enlazar... fichero_final |directorio_final
Enlaza dos ficheros.
Tiene la posibilidad de indicar mas de un fichero_a_enlazar y el resultado
seria como enlazar cada uno de esos ficheros de uno en uno.
Si indicas fichero_final se crear un fichero con ese nombre enlazado con
el fichero_a_enlazar , si el nombre de fichero_final exista ya, se machaca
su contenido.
Si en cambio se especifica directorio_final se crea un enlace con el mismo
nombre del fichero_a_enlazar pero en aquel directorio.
Cuando dos o mas ficheros estn enlazados indica la sola existencia de un
contenido y que a ese contenido se puede acceder por todos los ficheros
enlazados.
El contenido ya no se puede acceder cuando borras todos los ficheros que
estaban enlazados.
OPCIONES
-i Pide confirmacin de los ficheros a enlazar.
SISTEMA OPERATIVO UNIX . CURSO BASICO
2.16.- GESTION DE FICHEROS : Borrar ficheros
Comando rm
$ rm [ -i ] fichero_a_borrar ...
Borra ficheros.
Se puede indicar mas de un fichero.
Se pueden utilizar metacaracteres en la composicin del nombre del fichero
a borrar.
OPCION
-i Pide confirmacin para cada uno de los ficheros
a borrar.
SISTEMA OPERATIVO UNIX . CURSO BASICO
2.17.- GESTION DE FICHEROS : Opciones de directorios 1
Nota : Estas opciones de los comandos anteriores tienen como argumentos
a directorios.
Comando cp opcin -r
$ cp -r directorio_a_copiar ... directorio_final
Copia directorios 'recursivamente' en otro directorio.
Copia todo lo que hay por debajo de directorio_a_copiar en directorio_final.
Se puede teclear mas de un directorio_a_copiar .
Se pueden incluir opciones indicadas en la hoja del comando cp.
Comando rm opcin -r
$ rm -r directorio_a_borrar
Borra directorios recursvamente, es decir borra todo lo que cuelga del directorio
especificado.
importante : Hay que llevar mucho cuidado se pueden borrar ficheros de
manera no consciente, es bueno utilizar tambin la opcin -i .
SISTEMA OPERATIVO UNIX . CURSO BASICO
2.18.- GESTION DE FICHEROS : Opciones de directorios 2
Comando ln opcin -s
$ ln -s directorio_a_enlazar ... directorio_final
Enlaza directorios a otro directorio.
Esta opcin se denomina enlace simblico, este tipo de enlace lo indica en
el listado de ficheros con el comando ll.
La direccin del directorio_a_enlazar si es relativa se da con respecto a la
del directorio_final no a la del directorio actual.
Se pueden incluir opciones indicadas en la hoja del comando ln.
Comando mv
$ mv directorio_a_mover directorio_final
Mueve directorios.
Si el directorio_final ya existe traslada directorio_a_mover con el mismo
nombre debajo de directorio_final .
Si el directorio_final no existe entonces crea un directorio con ese nombre
moviendo todo el contenido de directorio_a_mover a este y borrando el
antiguo directorio_a_mover .
SISTEMA OPERATIVO UNIX . CURSO BASICO
2.19.- GESTION DE FICHEROS : Otros comandos de ficheros
Comando head
$ head [ -n nmero ] fichero ...
Muestra por pantalla las primeras lineas del fichero especificado.
Por defecto el nmero de lineas es 10.
-n nmero cambia ese nmero.
Comando tail
$ tail [ -n nmero ] fichero ...
Muestra por pantalla las ultimas lineas del fichero especificado .
Por defecto el nmero de lineas es 10.
-n nmero cambia ese nmero.
Comando paste
$ paste fichero_1 fichero_2
Concatena ficheros horizontalmente.
Comando pg
$ pg fichero
Versin de more.

EJERCICIOS GESTION DE FICHEROS 2
=============================
1 ) Con el comando "cat > prueba1/texto1", introduce el texto siguiente pulsando
RETURN despus de cada palabra:
"Este ejercicio nos permitir probar algunos comandos Unix para trabajar con
ficheros podremos copiar, mover, visualizar, borrar y enlazar ficheros, tambin
trabajaremos con directorios ya que algunas de las ordenes que probamos tienen
opciones especificas para directorios",
al terminar pulsa CTRL-D.
Repite la operacin con el fichero "prueba1/textoa":
"Este es el segundo fichero de prueba con el que vamos a trabajar ".
2 ) Visualiza el contenido del fichero "texto1" con las ordenes cat y more. Prueba
las opciones del comando more.
3 ) Haz una copia del fichero "texto1" en el directorio "dirA" con el nombre de
"texto2". Cambia de nombre a este fichero y llamalo "texto3". Ahora cmbialo de
direccin, culgalo del directorio "dirc". Por fin copia "texto1" en "dirc" con el
nombre de "texto3" utilizando la opcin i.
4 ) Enlaza el fichero "textoa" con el fichero "textob" en el directorio "dir21".
Borra ahora "textoa" y comprueba si existe el contenido de "textob". Enlaza el
directorio "dir21" con un directorio por debajo de "dirc". Comprueba que el
contenido de los dos es el mismo. Prueba a borrar un fichero en uno de los dos
directorios y mira en el otro.
5 ) Borra con las opciones r i, el directorio "dirc". Comprueba el funcionamiento
del comando paste con los ficheros "texto1" y "textob".
SISTEMA OPERATIVO UNIX . CURSO BASICO
2.20.- GESTION DE FICHEROS : Buscar ficheros
Comando find
$ find directorio [ expresin ]
Busca nombres de ficheros a partir de una direccin especificada.
El directorio tecleado indica la direccin a partir de la cual se buscar el
nombre de fichero, es decir este se buscar en todo el subrbol del que es
raz el directorio .
La expresin contiene caractersticas del fichero a buscar, por ejemplo:
-inum nmero Nmero de identificacin del fichero.
-name "nombre_fichero " Nombre de fichero ( permite utilizar
metacaracteres ).
-type tipo Tipo de fichero.
-liks nmero Nmero de enlaces del fichero.
-user nombre_usuario Dueo del fichero.
-group nombre_grupo Grupo del fichero.
-size nmero Tamao en bloques del fichero.
SISTEMA OPERATIVO UNIX . CURSO BASICO
2.21.- GESTION DE FICHEROS : Introduccin a permisos
Clases de permisos
Hay tres clases de permisos :
Usuario Permisos que afectan al dueo del fichero.
Grupo Permisos que afectan a los integrantes del grupo al que
esta adscrito el fichero.
Otros Permisos que afectan a todos los que no estn
integrados en alguna de las dos clases anteriores.
Tipos de permisos
Lectura ( r ) Escritura ( w ) Ejecucin ( x ) Denegado ( - ).
Ejemplo
- rwx rwx rwx 1 jborque cc 253 Apr 20 12:21 ejemplo
El primer bloque rwx hace referencia a los permisos del usuario, el segundo a los
del grupo y el tercero a los dems usuarios.
La posicin dentro del bloque de las letras rwx es fija.
Si el correspondiente permiso no esta concedido en el lugar correspondiente
aparecer un guin ( - ).
SISTEMA OPERATIVO UNIX . CURSO BASICO
2.22.- GESTION DE FICHEROS : Permisos directorios ficheros
Permisos a ficheros
Lectura r Se puede examinar el contenido del fichero con comandos
como more, lp o cat .
Escritura w Se puede cambiar su contenido por ejemplo con el
comando vi.
Ejecucin x Se puede usar como un comando.
Permisos a directorios
Lectura r Se pueden ver los ficheros que cuelgan de l con los
comandos ls, ll y lsf.
Escritura w Se puede cambiar el contenido del directorio, se puede utilizar
las ordenes rmdir, cp ( estando vaco ) y mv.
Ejecucin x Se puede convertir ese directorio en el directorio actual o de
trabajo utilizando la orden cd, con ello haces posible trabajar
con los ficheros que estn en ese directorio.
SISTEMA OPERATIVO UNIX . CURSO BASICO
2.23.- GESTION DE FICHEROS : Cambiar permisos 1
Comando chmod
$ chmod nmero_octal fichero ....
Cambia los permisos de ficheros.
El nmero_octal es un nmero de tres dgitos cada uno de ellos referencia
respectivamente a los permisos de usuario, grupo y otros.
Por ejemplo: 675 ( nmero en octal cifras de 0 a 7 )
6 permisos de usuario
7 permisos de grupo
5 permisos otros
Tomando un dgito en octal se encuentra el correspondiente binario.
Por ejemplo: 6 110
7 111
5 101
Entonces la existencia de un 1 implica que el permiso correspondiente est
concedido y un 0 que no, la posicin del dgito har referencia a permiso de lectura
escritura y ejecucin respectivamente.
EJEMPLO Si ejecutas el comando chmod 675 conseguirs unos permisos
rw-rwxr-x es decir permiso de lectura para todos los usuarios de
escritura solo para el usuario y los componentes del grupo al que est
adscrito el fichero y de ejecucin a todos menos al usuario dueo.
SISTEMA OPERATIVO UNIX . CURSO BASICO
2.24.- GESTION DE FICHEROS : Cambiar permisos 2
Comando chmod
$ chmod expresin fichero ....
Cambia los permisos de ficheros.
La expresin se forma de la siguiente forma:
Primero se hace referencia a que clases de permisos vas a cambiar
( u usuario, g grupo, o otros, a todos ).
Luego aade en que va a consistir la modificacin
( + aadir permisos, - quitar permisos, = poner todos los permisos a ).
Por ultimo tecleas los permisos r lectura, w escritura, x ejecucin.
EJEMPLOS
Permisos antiguos Comando Permisos nuevos
r-x---rwx chmod g+rw fichero r-xrw-rwx
r-xrw---- chmod u-x+w fichero rw-rw----
r--r--r-- chmod a+w fichero rw-rw-rw-
rwxr----- chmod ug=rw- fichero rw-rw----
rwxrwxrwx chmod a=r-- fichero r--r--r--
SISTEMA OPERATIVO UNIX . CURSO BASICO
2.25.- GESTION DE FICHEROS : Cambio de propietario
Comando chown
$ chown propietario_nuevo fichero
Cambia el propietario de un fichero.
Este mandato solo puede ser ejecutado por el propio propietario del fichero o por
el superusuario.
La modificacin la podemos ver si ejecutamos el comando ll
-rw-rw---- 1 usuario1 cc 599 Jun 14 14:11 fichero-prueba
$ chown usuario2 fichero-prueba
-rw-rw---- 1 usuario2 cc 599 Jun 14 14:11 fichero-prueba
NOTA : Hay que tener cuidado si no se es superusuario ya que podemos
quedar sin acceso al fichero.
SISTEMA OPERATIVO UNIX . CURSO BASICO
2.26.- GESTION DE FICHEROS : Cambio de grupo
Comando chgrp
$ chgrp grupo_nuevo fichero
Cambia el grupo al que esta suscrito un fichero.
Este mandato solo puede ser ejecutado por el propio propietario del fichero por
el superusuario.
La modificacin la podemos ver si ejecutamos el comando ll:
-rw-rw---- 1 usuario1 cc 599 Jun 14 14:11 fichero-prueba
$ chgrp curso fichero-prueba
-rw-rw---- 1 usuario1 curso 599 Jun 14 14:11 fichero-prueba
NOTAS : Los permisos de los usuarios que no son dueos del fichero
cambiaran si pertenecen a cualquiera de los dos grupos de
usuarios.
Los permisos del dueo respecto al fichero no cambian.
SISTEMA OPERATIVO UNIX . CURSO BASICO
2.27.- GESTION DE FICHEROS : Advertencias protecciones
Todos los directorios en el pathname completo de un fichero deben tener permisos de
acceso para que el fichero sea accesible.
Para proteger un fichero, lo mas comn es quitar el permiso de escritura en ese fichero
y en el directorio que lo contiene.
Recordar que solo el usuario dueo de un fichero o el superusuario del sistema tiene
posibilidad de cambiar los atributos de dueo y grupo de ese fichero.
Para ver usuarios y grupos validos del sistema podemos acceder a los ficheros
/etc/passwd y /etc/group.
SISTEMA OPERATIVO UNIX . CURSO BASICO
2.28.- GESTION DE FICHEROS : Ficheros de dispositivos
Concepto
Los ficheros de dispositivos son un tipo especial de ficheros, hacen las veces
de puerta de acceso hacia las unidades de entrada y salida de datos que hay
conectados al sistema.
Localizacin
Este tipo de ficheros estn situados en el directorio /dev.
Caractersticas
El caracter que los representa es la c.
En vez de indicar el tamao en bloques la ejecucin del comando ll nos muestra
el nmero de dispositivo y la direccin del dispositivo.
crw-rw-rw- 2 root other 16 0x00001c Apr 11 1991 ptyqc
Los tipos de dispositivos representados all son cintas, discos, terminales,
impresoras, plotters, incluso hay uno que no apunta a ningn dispositivo fsico,
suele llamarse null.
SISTEMA OPERATIVO UNIX . CURSO BASICO
2.29.- GESTION DE FICHEROS : Imprimir ficheros 1
Comando lp
$ lp [ -c ] [ -d destino ] [ -m ] [ -n nmero ] fichero_a_imprimir ...
Imprime ficheros
Se puede especificar mas de un fichero.
OPCIONES
-c Hace copias de los ficheros que imprime.
-d destino Para escoger la impresora por la que se imprimir
tiene que ser un dispositivo.
-w Te avisa por pantalla cuando ha terminado de imprimir.
-s Suprime mensajes de la impresora.
-n nmero Nmero de copias que quieres imprimir.
-t titulo Titulo para la cabecera del trabajo.
-p prioridad Prioridad del trabajo de 0 a 7.
SISTEMA OPERATIVO UNIX . CURSO BASICO
2.30.- GESTION DE FICHEROS : Imprimir ficheros 2
Comando lpstat
$ lpstat [ -t ] [ -u "usuario1, ... " ] [ -d ]
Lista las impresoras que estn colgadas del sistema as como su estado y fichero
de dispositivo asociado.
-t Da informacin de todas las impresoras y trabajos.
-u "usuario, .. " Solo da informacin de los trabajos pertenecientes a los
usuarios especificados.
-d Informa de la impresora por defecto.
Comando cancel
$ cancel identificador | impresora [ -uusuario ]
Cancela la impresin de un trabajo (identificador ) o una impresora (impresora ).
Se puede circunscribir a un solo usuario.
Comando lpalt
$ lpalt identificador [ -d destino ] [ -m ] ...
Para cambiar algn calificador del trabajo que se ha mandado imprimir.
Hay que hacer referencia al identificador del trabajo.
Hacer referencia a lo que se quiere cambiar ( atributos del comando lp ).
SISTEMA OPERATIVO UNIX . CURSO BASICO
2.31.- GESTION DE FICHEROS : Grabacin a cinta 1. tar
Comando tar
$ tar [ - ] [ c ] [ t ] [ x ] [ r ] [ u ] [ v ] [ w ] [ f dispositivo ]
fichero ... | directorio ....
Graba ficheros en cinta o en cualquier otro dispositivo que le tecleemos.
Lo que esta haciendo internamente es crear un archivo donde se contienen
los ficheros que queremos almacenar aadindoles una cabecera
identificativa.
Si especificamos un directorio nos almacenara recursivamente todos los
ficheros y directorios que cuelgan de el, guardando tambin su estructura y
localizacin.
OPCIONES
f dispositivo Dispositivo de salida se puede indicar tambin un fichero
normal, por defecto toma el dispositivo /dev/rmt/0m.
c Crea un nuevo archivo conteniendo los ficheros
especificados.
t Visualiza los ficheros contenidos en el archivo.
SISTEMA OPERATIVO UNIX . CURSO BASICO
2.32.- GESTION DE FICHEROS : Grabacin a cinta 2. tar
Comando tar
$ tar [ - ] [ c ] [ t ] [ x ] [ r ] [ u ] [ v ] [ w ] [ f dispositivo ]
fichero ... | directorio ....
OPCIONES
r Aade los ficheros indicados al final del archivo que estar ya
creado.
u Aade ficheros si no existen en el archivo o los sustituye si ya
existen.
x Extrae los ficheros indicados del archivo y los restaura.
Si no especificas ficheros extraer todo lo que haya en el
dispositivo.
v Muestra por pantalla lo que esta haciendo en cada momento.
w Pide confirmacin de los pasos que se realizan.
Es muy til tambin para concatenar ficheros en uno solo, simplemente deberemos
indicar en dispositivo el fichero que los contendr.
Un convenio de notacin es que a estos ficheros se les aada el sufijo .tar al
nombre que lo identifique.

EJERCICIOS GESTION DE FICHEROS 3
================================
1 ) Intenta acceder al fichero de tu compaero. Cambia los permisos para que tu
compaero pueda listar tu fichero (ver si existe) pero solo esto. Ahora cambia los
permisos para que pueda visualizar su contenido pero que no lo pueda modificar.
Finalmente modifica los permisos para que se pueda actualizar el fichero.
2 ) Visualiza todas las impresoras activas en el sistema. Prueba a lanzar un
trabajo de una pgina. Intenta cancelarlo.
3 ) Crea un archivo con los contenidos que cuelgan del directorio "prueba1",
luego comprueba su contenido y crea otro directorio "prueba.tar" volviendo a
desplegar el archivo sobre l.
4 ) Busca sobre tu directorio de entrada todos los ficheros cuyo nombre este
formado por la palabra "texto" y una letra, haz lo mismo con directorios que
contengan "dir" en alguna posicin.
SISTEMA OPERATIVO UNIX . CURSO BASICO
3.1.- EDITOR VI : Introduccin a editores Unix
Concepto
Un editor es un programa software que te hace posible modificar, borrar, crear y
consultar el texto de un fichero, incluye facilidades de manejo del texto como por
ejemplo hacer bsquedas, sustituciones, moverse por el texto, etc.
Unix
En Unix existen varios editores de texto casi todos estandard, algunos de ellos
no tienen propsito general.
Algunos editores que podemos mencionar son:
VI Es el editor mas comn en el mundo Unix se ha convertido en
un estndar muy solido, es el nico editor Unix de propsito
general que no ha cado en desuso, los otros que se utilizan
son de propsito particular.
ED Es el primer editor de Unix, gestiona solo linea a linea,
actualmente no se utiliza mucho.
EX Versin extendida del editor ed.
SED Editor de propsito particular utilizado para ediciones batch.
es decir las ordenes de edicin se leen de un fichero.
EMACS Editor sensible a programacin (lisp).
Otros Como editores x xedit, asedit, editores procesadores nroff, troff.
SISTEMA OPERATIVO UNIX . CURSO BASICO
3.2.- EDITOR VI : Introduccin a vi
Historia
El editor vi es una contribucin del Unix de Berkeley lo desarroll Bill Joy.
En ese momento fue un gran avance frente al editor de lineas existente ed y pronto
llego a ser muy popular en el mundo Unix pasando a formar parte de las versiones
de ATT y ahora esta integrado dentro del sistema operativo de toda maquina Unix.
Caractersticas
Es un editor de pantalla completa, pero con la particularidad que no puedes
trabajar ni situarte donde no hay texto, en cambio en los editores de lineas, tu solo
puedes editar una linea a la vez, por ejemplo ed.
Su caracter estndar implica que se puede manejar desde multitud de
dispositivos, tanto grficos como modo caracter es ese el motivo de que el manejo
del editor se base en los caracteres alfanumricos que todos los terminales tienen
y son comunes.
El comienzo de los usuarios vi es difcil por la razn ya comentada todas las
operaciones se llevan a cabo mediante caracteres alfanumricos y no siempre
son sencillos de recordar, no tiene una vocacin grfica, sin ratn, sin tipos de
letra, etc.
Sin embargo cuando se esta ya habituado a manejarlo es muy cmodo poder
editar texto en un sistema Unix sin preocuparte de que mquina ni que tipo de
terminal utilizas.
SISTEMA OPERATIVO UNIX . CURSO BASICO
3.3.- EDITOR VI : Entrar y salir de vi
Como entrar al editor vi
Comando vi
$ vi [ -x ] [ -R ] [ -r ] fichero
Este es el comando para entrar al editor vi, si el fichero indicado existe te mostrar
su contenido por pantalla, si no existe te dir que es un fichero nuevo y la pantalla
aparecer en blanco.
OPCIONES
-x Modo encriptado, primero te pedir una clave y si no introduces
esa misma clave no podras visualizar de forma legible el texto.
-R Acceder al fichero solo para leerlo.
-r Recuperar ficheros despus de una cada de sistema.
Como salir del editor vi
Si estas activo la forma de salir del editor es, primero pulsar la tecla ESC
( en algunos casos no har falta ).
Luego pulsar: O bien ZZ para salir grabando.
O bien :q! para salir sin grabar.
Otra opcin :q para salir grabando.
SISTEMA OPERATIVO UNIX . CURSO BASICO
3.4.- EDITOR VI : Modos de operacin
Que son los modos de operacin
Son diferentes formas de utilizar el editor vi, hay funciones que se pueden ejecutar
desde varios modos de operacin y otras solo desde uno.
Hay tres modos bsicos de operacin mientras se usa el vi.
Modo Comando
Es el modo en el cual se entra por defecto cuando se comienza una sesin de vi.
En este modo de operacin cualquier cosa que se escriba se interpreta como un
comando.
Es el modo normal de trabajo, puedes recorrer toda la pantalla en este modo.
Modo Insertar
Cualquier cosa que se escriba en l se interpreta como una entrada al fichero, solo
la tecla ESC no sigue esta regla ya que con ella se sale del modo insertar y se
vuelve a modo comando.
Para acceder a este modo se teclean unos mandatos en el modo comando.
Modo Ejecucin
Cualquier cosa que se escriba se interpreta como un comando ejecutable.
Cuando estas en modo ejecucin solo puedes introducir tus peticiones en la ultima
linea del editor.
Se pasa a trabajar en modo ejecucin tecleando los caracteres / : ?.
Se sale una vez invocado el mandato o con la tecla ESC, vuelve a modo comando.
SISTEMA OPERATIVO UNIX . CURSO BASICO
3.5.- EDITOR VI : Formato de las ordenes comando
Formato general de los mandatos en modo comando
A primera vista, parece que hay diferentes formas de los mandatos tipo comando
en vi, sin embargo solo hay una sintaxis para estos mandatos.
Esta es:
[ contador ] verbo [ contador ] [ objeto ]
La parte mas difcil del uso de vi es aprenderse los verbos o comandos,
bsicamente cualquier comando que maneje el cursor se puede usar como
un objeto en otro comando vi.
Como veras hay muchos mandatos simples quiere esto decir que no se les puede
aadir ni contadores ni objetos.
El modo comando es el bsico en la utilizacin de vi, si tienes duda en que modo
ests, con la tecla ESC pasaras a modo comando si no lo estabas.
SISTEMA OPERATIVO UNIX . CURSO BASICO
3.6.- EDITOR VI : Aadir texto
Instrucciones comando para aadir texto
Las instrucciones son a, A, i, I, o, O.
a Para insertar texto a continuacin de la posicin del cursor.
A Inserta texto al final de la linea donde te encuentres.
i Inserta texto por detrs de la posicin del cursor.
I Inserta texto por detrs del primer caracter de la linea que sea
distinto de espacio en blanco.
o Abre una linea por debajo de la linea actual.
O Abre una linea encima de la linea actual.
Todas estas instrucciones de modo comando implican entrar en modo insertar,
con lo cual se introducira el texto en el fichero para terminar con el modo insertar
pulsar la tecla de escape ESC.
SISTEMA OPERATIVO UNIX . CURSO BASICO
3.7.- EDITOR VI : Movimiento de cursor 1
Instrucciones comando para moverse por el texto
Estas instrucciones son las que habamos llamado objetos.
h o <-- Mueve el cursor un caracter a la izquierda.
l o --> o SPACE Mueve el cursor un caracter a la derecha.
k o flecha-arriba o - Mueve el cursor hacia arriba una linea.
j o flecha-abajo o + Mueve el cursor hacia abajo una linea.
0 Mueve el cursor al principio de la linea actual.
$ Mueve el cursor al final de la linea actual.
nmero | Mueve el cursor hasta la columna indicada por
nmero.
w Sita el cursor al comienzo de la palabra
siguiente.
b Sita el cursor al comienzo de la palabra anterior.
SISTEMA OPERATIVO UNIX . CURSO BASICO
3.8.- EDITOR VI : Movimiento de cursor 2
Instrucciones comando para moverse por el texto
e Mueve el cursor al final de la palabra donde ests.
nmero G Mueve el cursor hasta la linea que esta en la
posicin nmero en el fichero que ests editando.
G Mueve el cursor hasta la ltima linea del fichero.
H Sita el cursor en la primera linea del texto en
pantalla.
L Sita el cursor en la ltima linea del texto de la
pantalla.
M Sita el cursor en la linea que esta en la mitad del
texto de la pantalla.
CTRL+U Para subir media pantalla haciendo scrolling.
CTRL+D Para bajar media pantalla haciendo scrolling.
CRTL+F Avanzar una pantalla.
CTRL+B Retroceder una pantalla.
SISTEMA OPERATIVO UNIX . CURSO BASICO
3.9.- EDITOR VI : Borrado de texto
Instrucciones comando para borrar texto
x Borra el caracter donde esta situado el cursor.
d [ objeto ] Borra el objeto especificado.
Si en este caso en vez de incluir un objeto duplicamos el verbo tenemos:
dd Borra la linea actual donde se encuentre el cursor
Ejemplos con objetos:
dw Borra hasta el principio de la siguiente palabra.
dG Borra hasta el final del fichero.
d$ Borra hasta final de linea.
Se puede incluir un nmero al principio del comando para repetir el comando
tantas veces como se quiera o tambin entre el verbo y el objeto.
4dd Borra cuatro lineas por debajo de la actual.
d5w Borra cinco palabras despus de la actual.
SISTEMA OPERATIVO UNIX . CURSO BASICO
3.10.- EDITOR VI : Cambiar texto
Instrucciones comando para cambiar texto
r caracter Sustituye el caracter actual por el tecleado.
R Sustituye el texto de la linea donde se teclee el
comando por el texto que introduzcas despus
hasta que pulses la tecla ESC.
Siempre dentro de la linea no en las adyacentes.
c [objeto ] Cambia el objeto especificado desde la posicin
en que ests.
Ejemplos de este comando:
cc Sustituciones en toda la linea.
cw Sustitucin hasta el principio de la siguiente
palabra.
Cuando utilizas las instrucciones R o c en cualquiera de sus modalidades,
despus de la sustitucin si no pulsas ESC, el editor se queda en modo de
insercin.
s Sustituye el caracter por uno o mas nuevos.
S Sustituye la linea actual por lo que se escriba.

EJERCICIOS EDITOR VI 1
===================
1 ) Introduce el texto siguiente en una sesin vi en el fichero "prueba.vi":
" Esta es una sesin de praticas sobre el uso del editor vi. Necesittamos algunas
lneas ms para apreender los mandatos mas usuales del editor. Ahora estamos en
el modo de introduccin de textoluego vamos a pasar al modo de mandatos.
a000
a111
a222
a333
a444
a555
a666
a777
a888
a999
c000
c111
c222
c333
c444
c555
c666
c777
c888
c999"
Luego sal de la sesin vi grabando el fichero.
2 ) Modifica los errores del texto: praticas, necesittamos, apreender, textoluego.
3 ) Inserta entre "a999'' y "c000" la serie correspondiente de "b000" hasta
"b999".
4 ) Inserta sin dejar espacio despus del texto "pasar al modo mandatos.", la
frase "Tambin haremos prcticas en modo ejecucin.".
5 ) Inserta en la primera lnea el ttulo de cabecera "PRUEBA PARA VI".
6 ) Sita el cursor con un solo comando al comienzo del texto.
7 ) Recorre el texto de arriba a abajo haciendo scrolling.
8 ) Recorre el texto desde el final al comienzo saltando de comienzo de palabra
a comienzo de palabra. Cual es el comando para situar el cursor al final de la
lnea?, y al final de todo el texto?.
9 ) Borra "c444". Borra "c777" y "c888" con un solo comando. Con mandatos de
sustitucin cambia "c666" y "c999" por la serie "d000" a "d555". Como borraras con
un solo comando desde la lnea "c555" al final sin saber cuantas lneas son.
SISTEMA OPERATIVO UNIX . CURSO BASICO
3.11.- EDITOR VI : Mover y copiar texto 1
Instrucciones comando para mover texto
Para mover texto debes por una parte cortar o borrar el texto que quieres mover y
luego pegarlo donde lo desees.
Cuando cortas o borras un texto estas almacenando ese contenido en un buffer.
La primera parte ya hemos visto como se hace ( borrado de texto ) y la segunda
sera con el mandato:
p Pega el contenido del buffer por defecto antes del
cursor.
P Pega el contenido del buffer por defecto despus
del cursor.
Se puede utilizar otro buffer hay 26 buffers diferentes denominados por las letras
minsculas ( a - z ), se utilizan con el formato:
" letra_buffer verbo_borrar
As copiaramos en el buffer letra_buffer el contenido de la accin del verbo_borra.
" letra_buffer p | P
Copiamos contenido de buffer letra_buffer antes o despus del cursor.
SISTEMA OPERATIVO UNIX . CURSO BASICO
3.12.- EDITOR VI : Mover y copiar texto 2
Ejemplos para mover texto
Si tecleamos 5dd y luego en la posicin deseada p
estaremos moviendo la linea donde estuviera en principio y las cuatro siguientes
al lugar indicado con el mandato p.
De la misma forma "bd9Gy luego "bP seria mover desde la
primera posicin del cursor hasta la linea 9 por medio del buffer llamado b hasta
la posicin donde se ejecuta la instruccin "bP.
Instrucciones comando para copiar texto
Para copiar texto en vez de borrar al principio se utiliza el siguiente mandato:
y [objeto ]
Su mecnica es igual a la del mandato d, con la nica diferencia que tan solo
copia en el buffer y el texto no lo borra.
Tambin se puede utilizar con la estructura:
" letra_buffer verbo_borrar
Para insertar se utiliza la misma orden que para mover:
" letra_buffer p | P si se especifica buffer o p|P si no se hace.
SISTEMA OPERATIVO UNIX . CURSO BASICO
3.13.- EDITOR VI : Modos de grabar y salir
Utilizacin de buffers para operaciones de grabacin
Cuando tu modificas un fichero y pulsas RETURN, no estas modificando
fsicamente el fichero sino que actualizas un buffer asociado a la sesin de editor
vi, con este buffer se puede trabajar de la siguiente forma.
Mandatos modo ejecucin para operaciones de salida
:w Escribe el contenido del buffer en el fichero fsico del
mismo nombre, este mandato no te hace salir del editor.
:q Sale del editor sin escribir el contenido del buffer en el
fichero fsico.
:w fichero_1 Escribe el buffer en fichero_1.
:wq Escribe el buffer en el fichero y sale del editor.
:q! Salida inmediata: no se graban los cambios.
:r fichero_1 Lee fichero_1 en el buffer.
:e fichero_1 Edita fichero_1 vaciando el buffer actual.
:w >> fichero_1 Escribe buffer en el fichero fsico y lo aade a fichero_1.
:M , N w fichero_1 Escribe desde la linea M hasta la N del buffer en
fichero_1.
SISTEMA OPERATIVO UNIX . CURSO BASICO
3.14.- EDITOR VI : Buscar texto
Mandatos en modo ejecucin para operaciones de bsqueda
/ texto Bsqueda de texto hacia el final del fichero.
? texto Bsqueda de texto hacia el comienzo del fichero.
n Repite la bsqueda en la misma direccin que la
bsqueda original.
N Repite la bsqueda en la direccin opuesta a la
original.
Estos dos ltimos mandatos se ejecutan en modo comando.
/ ^ texto Busca texto al principio de la linea.
/ texto $ Busca texto al final de la linea.
/ parte_texto [ caracter1 caracter2 ] resto_texto
Busca el texto compuesto por
parte_texto caracter1 resto_texto o por
parte_texto caracter2 resto_texto.
/ . Busca cualquier caracter simple.
/ caracter * Busca cero o mas ocurrencias de caracter.
SISTEMA OPERATIVO UNIX . CURSO BASICO
3.15.- EDITOR VI : Cambiar texto
Mandatos en modo ejecucin para operaciones de cambio
:1,$ s / texto_antiguo / texto_nuevo / [ g ]
Cambia la ocurrencia de texto_antiguo por texto_nuevo en cada linea del fichero.
La opcin g indica que si en una misma linea hay dos ocurrencias de
texto_antiguo cambie todas ellas, ya que en su defecto solo cambiara la primera.
:m,n s / texto_antiguo / texto_nuevo /
Tambin se puede utilizar esta variante con lo que se cambiaran solo las
ocurrencias de texto_antiguo entre las lineas m a n.
Las opciones estudiadas en 'buscar texto' se pueden utilizar para estos mandatos
entonces funcionara de forma tal que toda cadena de caracteres que fuera
encontrada con el formato de bsqueda, sera cambiada por el texto nuevo que
especificsemos.
Ejemplos
: 1,$ s / ^h[ou]l. / xito / g
: 5,25 s / orcata / horchata /
SISTEMA OPERATIVO UNIX . CURSO BASICO
3.16.- EDITOR VI : Comandos miscelneos
Mandatos en modo comando para operaciones tiles
u Deshace el ultimo cambio en el texto.
U Deshace todos los cambios efectuados en la linea actual
( no mueve el cursor ).
. Repite el ultimo cambio en el texto.
J Une la siguiente linea a la actual.
Mandatos en modo ejecucin para hacer llamadas al sistema
!! orden_shell Se ejecutara en el sistema la orden_shell y si esta
tuviera salida se incluira en el buffer.
Atencin el primer ! no aparecer en pantalla.
:! orden_shell Se ejecuta en el sistema la orden_shell y cuando
termina te devuelve al editor sin modificar nada.
: sh Se pasa a la shell para ejecutar ordenes, se termina esta
modalidad pulsando CTRL-D.
SISTEMA OPERATIVO UNIX . CURSO BASICO
3.17.- EDITOR VI : Cambiar el entorno de trabajo 1
Cuando tu invocas el editor vi este tiene unas condiciones de trabajo por defecto.
Estas condiciones de trabajo hacen referencia al formato de pantalla, opciones
tiles, etc.
Se pueden cambiar con los siguientes mandatos.
Mandatos en modo ejecucin para cambiar el entorno de trabajo
:set opcin Para activar una opcin del entorno de trabajo.
:set noopcion Para desactivar una opcin del entorno de trabajo.
Los valores mas comunes de opcin son:
all Muestra todas las posibilidades para la palabra opcin.
number Muestra el nmero de linea cuando estas trabajando.
showmode Muestra el modo de trabajo activo en la parte baja de la
pantalla.
showmatch Te indica siempre que cierras parntesis ) , llaves } y
signo mayor que > , el asociado al que hace referencia.
SISTEMA OPERATIVO UNIX . CURSO BASICO
3.18.- EDITOR VI : Cambiar el entorno de trabajo 2
Tambin tenemos la posibilidad de crear sinnimos y macros.
Mandatos en modo ejecucin para crear sinnimos y macros
: ab abreviatura cadena_caracteres_que_vamos_ha_abreviar
Define la conexin entre la abreviatura y la
cadena_caracteres_que_vamos_ha_abreviar , esta conexin
hace que cuando insertes el texto abreviatura y dejes un
espacio en blanco cambiar el texto abreviatura por el
indicado.
: una abreviatura
Cancela la abreviatura.
: map tecla secuencia_ordenes_vi
Asocia a tecla toda la secuencia_ordenes_vi entonces
podras utilizar tecla como otro mandato tipo comando mas.
: umap tecla
Cancela la asociacin de tecla.
SISTEMA OPERATIVO UNIX . CURSO BASICO
3.19.- EDITOR VI : Cambiar el entorno de trabajo 3
Las opciones del entorno de trabajo abreviaturas y macros se pueden guardar en un
fichero desde donde se van a leer las condiciones de trabajo por defecto.
Conservacin del entorno de trabajo
El fichero que antes mencionbamos se denomina .exrc y es nico para cada
usuario Unix.
Se encuentra situado en el directorio de entrada de cada usuario respectivamente.
Los formatos que se incluyen en este fichero son los de las ordenes que hemos
visto pero sin incluir los dos puntos previos.
Si quieres conservar una de las caractersticas de la sesin de trabajo
permanentemente para todas las ocasiones que entres al sistema con tu
usuario, no tienes mas que modificar este fichero.

EJERCICIOS EDITOR VI 2
====================
1 ) Entra en sesin vi en el fichero "prueba.vi". Cambia todas las ocurrencias de
la palabra "de" por "cambio".
2 ) Escribe las diez primeras lneas del fichero en otro llamado "10.lneas".
3 ) Vete a la ltima lnea del fichero, y en la mitad de esa pantalla aade el texto
"texto aadido por peticin del ejercicio 3.", en lnea nueva.
4 ) Escribe el fichero sin salirte de la sesin de vi. Carga tambin el fichero
"10.lneas" en el buffer "c". Copia el contenido del buffer "c" al final del fichero.
5 ) Cambia solo la primera ocurrencia de cada lnea de la palabra "cambio" por
la palabra "recam". Prueba a deshacer esta sustitucin.
6 ) Cuenta todas las "a" que aparecen en el texto. Busca todas las palabras que
tengan una "s" seguida de vocal.
7 ) Sin salir de la sesin vi visualiza que usuarios activos hay.
8 ) Cambia el formato de la sesin vi. Para que numere las lneas del editor.
Lista todas las opciones de cambio del entorno de trabajo del editor vi.
9 ) Crea una abreviatura, por ejemplo cambiar "es" por "frase extendida". Prueba
los siguientes casos:
Que pasa con las palabras "es" que estaban ya tecleadas?
Que ocurre cuando no dejas espacio en blanco despus de "es"?
10) Prueba la funcin map. Inserta alguna opcin en tu fichero .exrc.
SISTEMA OPERATIVO UNIX . CURSO BASICO
4.1.- COMUNICACIONES : Introduccin
Contenido del tema
En este tema se va ha tratar todo lo que haga referencia a comunicaciones
en el sistema operativo, bsicamente en dos vertientes:
la primera, comunicacin entre usuarios del sistema local
y otra, la comunicacin entre diferentes maquinas Unix por medio de dispositivos
de comunicaciones.
Vamos ha hacer aqu una pequea introduccin al primero de los temas, la
comunicacin entre usuarios de un sistema Unix local.
Comunicacin entre usuarios locales
Vamos a estudiar las ordenes bsicas de correo electrnico en el sistema Unix.
El sistema usa como identificadores para las comunicaciones locales en el sistema
a los identificadores de entrada al sistema.
Este tipo de comunicacin se puede extender a otros usuarios de otros sistemas
Unix siempre que se tenga medio de comunicacin entre ellos.
Las normas que usan los sistemas Unix para proporcionar el servicio de correo
electrnico se denominan smtp.
SISTEMA OPERATIVO UNIX . CURSO BASICO
4.2.- COMUNICACIONES : Enviar mensajes
Comando mail
$ mail nombre_usuario
[ Subject: comentario ]
texto_mensaje
CTRL-D
Enva mensajes a usuarios, tanto sean de nuestro sistema como fuera de l
siempre que estemos conectados con la maquina del cual es usuario.
Subject: es una palabra clave que informa al comando mail que lo siguiente es
un comentario del correo, saldr como extracto cuando visualicemos el mensaje,
para cancelar un mensaje pulsar CTRL-C.
Texto_mensaje es el texto a enviar, se puede teclear en diferentes lineas
utilizando la tecla RETURN para terminar la introduccin del mensaje se pulsa
CTRL-D.
El nombre_usuario es el nombre de entrada al sistema, si el destinatario es
usuario de la maquina Unix donde estas trabajando, si es de otra debers utilizar
el siguiente formato nombre_usuario @ dominio . dominio . dominio donde el
nombre_usuario es el nombre de entrada en el sistema remoto y el resto
caracteriza ese sistema localizndolo.
Tambin se puede utilizar el formato $ mail nombre_usuario < fichero
para enviar el texto de fichero en vez de teclearlo en pantalla.
SISTEMA OPERATIVO UNIX . CURSO BASICO
4.3.- COMUNICACIONES : Tratar mensajes
Comando mail
$ mail [ -f buzn_personal ]
Visualiza los mensajes que tienes en el buzn del sistema correspondiente a tu
usuario.
Si utilizas la opcin -f buzon_personal en vez de ir al buzn del sistema ira a
buzon_personal.
Cuando ejecutes este comando entraras en sesin mail, te mostrara el prompt &
y podras hacerle peticiones, por ejemplo:
s [fichero ] Grabar en fichero ( por defecto en mbox ).
w [fichero ] Grabar sin cabecera.
q Salir grabando el mensaje.
x Salir sin grabar el mensaje.
p Imprimir mensaje.
d Borrar mensaje.
+ Mostrar siguiente mensaje.
! comando Ejecutar comando sin salir.
SISTEMA OPERATIVO UNIX . CURSO BASICO
4.4.- COMUNICACIONES : Componentes del correo
Como funciona el correo internamente
En el sistema de correo electrnico de los equipos Unix hay aparte del comando
mail otros programas que gestionan el reparto del correo.
Asociados a estos programas hay dos ficheros que es interesante citar:
/ usr / mail / usuario Es el fichero que hace de buzn en el
sistema el comando mail accede a l para
ver si tienes correo y los programas de
gestin de correo acceden para el reparto
del mismo.
$HOME / dead.letter Fichero donde se guardan aquellas
comunicaciones fallidas.
Adems en tu directorio de entrada tienes por defecto el fichero:
$HOME / mbox Donde se guardan por defecto las
comunicaciones ya leidas.
Tambin te puedes crear un fichero til:
$HOME / .forward El sistema de gestin de mensajera
investigar la existencia de un fichero en
tu directorio con ese nombre y si existe
devolver el correo a la direccin que le
indiques en el fichero con el formato:
nombre_usuario @ dominio
END OF FILE
SISTEMA OPERATIVO UNIX . CURSO BASICO
4.5.- COMUNICACIONES : Otra versin de correo electrnico
Comando mailx
$ mailx [ -f buzon_personal | nombre_usuario ]
El funcionamiento es parecido al comando mail con las dos funciones de este,
mandar mensajes y tratarlos, pero es mas completo en sus comandos de
comunicacin con los usuarios.
Cuando lo utilizas para mandar mensajes te pedir la cabecera de mensaje
automticamente, para cancelar mensaje pulsar dos veces CTRL-C.
Tratando los mensajes la primera vista que te ofrece el correo ya no es presentar
el ultimo mensaje en pantalla y luego mostrarte los dems automticamente sino
que te ofrece una lista de los mensajes de tu buzn del sistema numerados y
adems la linea de comandos con el prompt &.
Adems de las opciones de mail estas son otras adicionales:
nmero Visualizar el mensaje marcado con nmero.
h Para volver a ver la lista de mensajes en el buzn.
p Imprime mensaje.
z [ + | - ] Hace scroll por la lista de mensajes.
v Visualizas un mensaje dentro de una sesin de vi.
SISTEMA OPERATIVO UNIX . CURSO BASICO
4.6.- COMUNICACIONES : Cambiar el entorno de trabajo
El comando mailx accede a un fichero llamado .mailrc donde se puede caracterizar
el entorno de trabajo que vamos a tener en una sesin de mailx.
Algunas opciones para incluir en .mailrc
set record = fichero Se almacena una copia de cada mensaje
enviado y se almacena en el fichero que
se indique.
alias nombre_alias lista_usuarios
Asigna la lista_usuarios a nombre_alias
para poder mandar un mensaje a varios
usuarios de una forma cmoda.
set hold Cambia que por defecto, despus de haber
leido un correo, se grave en el directorio del
usuario y se borre en el buzn del sistema,
con esta opcin se siguen conservando los
mensajes en el buzn del sistema.
set crt = nmero Cambia el defecto en la paginacin de los
mensajes largos.
SISTEMA OPERATIVO UNIX . CURSO BASICO
4.7.- COMUNICACIONES : Comunicacin en interactivo
Otro mandato para enviar correo electrnico es elm.
Es propietario de hp.
Es mas interactivo, te ofrece mucha ayuda.
Ahora veremos un comando para la comunicacin interactiva con otro usuario.
Comando write
$ write usuario [ terminal ]
Enva mensajes a usuarios que estn conectados al sistema, con el puedes
entablar una comunicacin en interactivo de forma cmoda.
Tienes opcin de teclear terminal opcin til cuando el usuario con el que
quieres contactar tiene varias sesiones abiertas.
Una vez invocado el mandato podras teclear el mensaje y el receptor lo recibir
cada vez que se pulse RETURN.
El receptor del mensaje es avisado de la conexin con una alarma sonora y un
mensaje de identificacin del usuario que establece la comunicacin.
Para terminar la comunicacin debes pulsar CTRL-D con esto saldr en la
pantalla del otro usuario una marca EOT de finalizacin de comunicacin.
En otros sistemas Unix no existe este comando pero es sustituido por otros
semejantes como es el caso del comando talk en el lenguaje convex-os.
SISTEMA OPERATIVO UNIX . CURSO BASICO
4.8.- COMUNICACIONES : Mensajes generales
Comando wall
$ wall [ -g nombre_grupo ] [ fichero ]
Enva mensajes generales para todos los usuarios.
Su funcionamiento es igual a mail en la modalidad de envo de correo.
Se puede circunscribir la comunicacin a un grupo de usuarios del sistema as
como enviar un fichero en vez de introducir en interactivo el mensaje.
Comando mesg
$ mesg
Visualiza la proteccin ante mensajes y la cambia.
$ mesg Te informa si tienes accesible el terminal frente a los
mensajes o no.
$ mesg n | y Cambia el estado frente a los mensajes:
con y puedes recibir mensajes,
con n no lo permites.

EJERCICIOS COMUNICACIONES 1
============================
1 ) Enva un mensaje por correo a un compaero. Lee la correspondencia que te
envan a ti. Almacena ahora esos mensajes por correo en un fichero
"buzon_correos". Haz que por defecto los mensajes se graben ah.
2 ) Enva un correo a un usuario llamado "nadie". Despus de un rato consulta el
correo y el fichero dead.letter.
3 ) Prueba ahora a crear un fichero para desviar mensajes.
4 ) Entabla una conversacin con las utilidades write y talk. Prueba a proteger el
terminal ante mensajes.
SISTEMA OPERATIVO UNIX . CURSO BASICO
4.9.- COMUNICACIONES : Introduccin servicios remotos
En esta segunda parte del tema veremos como se producen las comunicaciones entre
distintos sistemas Unix:
Estas comunicaciones pueden establecerse con diferentes objetivos:
Enviar mensajes a otro usuario.
Copiar ficheros de un sistema a otro.
Entrar en otro sistema desde un terminal de tu sistema.
Ejecucin de mandatos en otro sistema y ver los resultados en tu terminal.
Acceso a ficheros en el sistema remoto sin copiarlos.
Estos servicios nos los proporcionan unos comandos integrados en Unix que
apoyndose en los protocolos de comunicaciones hacen posible su realizacin
mediante un soporte fsico (cables).
Llamamos protocolos de comunicaciones a las normas que se deben seguir para llevar
a cabo la comunicacin entre ordenadores.
Un protocolo bsico para la comunicacin entre sistemas Unix es TCP/IP, el cual da
soporte a estos comandos de comunicaciones para poder llevar a cabo sus funciones.
Los comandos que veremos aqu fueron desarrollados por DARPA ( Agencia de
proyectos de investigacin avanzados de defensa ) y la universidad de Berkeley.
SISTEMA OPERATIVO UNIX . CURSO BASICO
4.10.- COMUNICACIONES : Situacin de tu equipo
Comando hostname
$ hostname
Para saber cual es el nombre del sistema, este nombre identifica al sistema en el
exterior.
Este nombre adems tiene asignada una direccin IP, el formato de esta direccin
es de nmeros separados por puntos.
por ejemplo : 155.210.32.2direccin IP de ws2
Si quieres comunicar con otro sistema debes saber su nombre de host o su
direccin numrica.
Para utilizar los servicios de red en un sistema remoto debes tener tambin
cuenta en esa maquina.
Para conocer el nombre de host del sistema remoto y la posibilidad de conexin fsica
puedes contactar con el administrador del sistema remoto u otra posibilidad es que
visualices el fichero /etc/hosts donde tienes los nombres de host de los sistemas remotos
que puedes acceder con su nmero IP asociado, en algunos casos este fichero puede
ser muy grande.
SISTEMA OPERATIVO UNIX . CURSO BASICO
4.11.- COMUNICACIONES : Servicio de acceso remoto 1
Comando telnet
$ telnet nombre_de_host
Para entrar en el sistema remoto denominado como nombre_de_host.
Este es un servicio ARPA.
Despus de tecleado el comando vers el prompt de entrada al sistema remoto,
en este momento te pedir el nombre del usuario y luego tu palabra clave
personal.
Una vez que se esta en el sistema, la misin de el ordenador local es solo de
puente entre tu terminal y el sistema remoto, todo el trabajo se ejecutara en este
ultimo sistema.
Para finalizar la conexin tan solo despide la conexin en el sistema remoto
utilizando exit o CTRL-D.
Como nombre_de_host se puede introducir una direccin internet ( siempre que
se tenga conexin con esta red ).
SISTEMA OPERATIVO UNIX . CURSO BASICO
4.12.- COMUNICACIONES : Servicio de acceso remoto 2
Comando rlogin
$ rlogin nombre_de_host [ -l nombre_usuario ]
Se utiliza para entrar a un sistema remoto con el mismo nombre de usuario que
tienes en tu sistema.
Es un servicio Berkeley.
Realiza funciones similares al comando telnet.
La novedad de este servicio radica en que no debes teclear tu nombre de usuario
adems si el administrador del sistema tiene configurado un fichero llamado
/etc/hosts.equiv no te pedir la clave de acceso.
Otra forma de acceder con rlogin sin teclear la password es dar de alta un fichero
con el nombre .rhost en tu directorio de entrada.
De igual forma que telnet para terminar el mandato tan solo debes despedir la
sesin en el sistema remoto.
OPCION
-l nombre_usuario Para entrar al sistema con otro nombre de
usuario.
SISTEMA OPERATIVO UNIX . CURSO BASICO
4.13.- COMUNICACIONES : Servicio de transferencia ficheros
Comando ftp
$ ftp nombre_de_host
Para traer o llevar un fichero desde tu sistema hasta un sistema remoto.
Es un servicio ARPA.
despus de tecleado el comando tu sistema conecta con el servidor ftp de la
maquina remota, entonces te pide tu nombre de usuario en el sistema remoto
luego la password, te da entrada al sistema y muestra un prompt ftp >, en el
que se puede incluir mandatos, los mas importantes son:
get Obtiene un fichero del sistema remoto.
put Enva un fichero local al sistema remoto.
ls Lista los ficheros del sistema remoto.
cd Cambia de directorio en el sistema remoto.
? Ayuda.
quit Finalizar sesin ftp.
SISTEMA OPERATIVO UNIX . CURSO BASICO
4.14.- COMUNICACIONES : Servicio de copia remota
Comando rcp
$ rcp fichero_a_copiar fichero-destino
Para copiar ficheros entre un sistema remoto y tu sistema local de forma cmoda.
Es un servicio Berkeley.
De la misma forma que rlogin no tienes que teclear tu nombre de usuario al
solicitar este servicio, debers teclear password si no esta configurado el fichero
/etc/hosts.equiv y no tienes el fichero .rhosts.
El formato de la direccin de los ficheros utilizados es:
nombre_de_host : direccion_de_fichero
Si no incluyes el nombre_de_host se entender que es el sistema local.
La direccion_de_fichero puede ser absoluta o relativa en el sistema
remoto.
Las direcciones relativas lo son desde el directorio de entrada.
Las funcionalidades del comando rcp son las mismas que las del comando cp,
incluyendo todas las opciones.
SISTEMA OPERATIVO UNIX . CURSO BASICO
4.15.- COMUNICACIONES : Servicio de ejecucin remota
Comando remsh
$ remsh nombre_de_host mandato_a_ejecutar
Para ejecutar una orden en el sistema remoto que indiques.
Este es un servicio Berkeley.
Como en los anteriores servicios Berkeley debes tener configurado el fichero
/etc/hosts.equiv o creado el fichero .hosts en el directorio de entrada del sistema
remoto.
De esta forma no estas entrando en sesin en el sistema remoto ( no te aparecen
mensajes de comienzo de sesin por ejemplo ).
Este comando hace transparente el uso del sistema remoto, cara al usuario el
sistema remoto aparece como si estuviera integrado con el sistema local.
SISTEMA OPERATIVO UNIX . CURSO BASICO
5.1.- SHELLS. PROCESOS : Estructura interna del sistema

USUARIOS
Shells Comandos
Compiladores Interpretes
Librerias del sistema
Interface de las llamadas del sistema con el kernel
Interface del kernel con el hardware
terminales dispositivos y controladores de memoria
discos cintas y memoria fisica
K E R N E L
SISTEMA OPERATIVO UNIX . CURSO BASICO
5.2.- SHELLS . PROCESOS : Concepto de shells
Concepto de shell
Shell es un interprete de comandos.
Es un proceso que arranca el sistema cuando tu entras a trabajar.
Te permite dar ordenes y una vez que tu has introducido la orden, la shell la
analiza y realiza las tareas necesarias para llevarla cabo.
La shell no forma parte del ncleo bsico del sistema operativo.
Es el proceso encargado de dialogar ( hacer de interfase ) con el ncleo del
sistema ante los requerimientos del usuario.
La shell muestra el sistema operativo al usuario, un usuario que cambie de
shell tiene la impresin de estar trabajando con otro sistema operativo, aun
cuando internamente este funcionando la misma estructura ( utilizando las
mismas llamadas de sistema ).
La shell es arrancada por un proceso que se denomina login.
Cada usuario tiene asignada una shell por defecto, esta es la que se va a arrancar
cuando se entre en el sistema, la podemos ver en el fichero /etc/passwd.
SISTEMA OPERATIVO UNIX . CURSO BASICO
5.3.- SHELLS . PROCESOS : Tipos de shells
Tipos de shells
Bourne Shell - sh Es la mas antigua de las shells, no tenia muchas
utilidades cara al usuario, por ejemplo no se
pueden reeditar ordenes ejecutadas anteriormente
pero es la mas estndar de las shells y muchas
shells posteriores la soportan en su totalidad.
C Shell - csh Desarrollada por la universidad de Berkeley, esta
orientada a la programacin en C, contiene
muchas utilidades para el usuario pero no es del
todo compatible con la shell de Bourne.
Korn Shell - ksh Mas moderna que las anteriores intenta paliar
algunos defectos de las anteriores, tiene muchas
utilidades para el usuario y adems soporta
todo el Bourne shell, es de propsito general,
es la que utilizaremos en el curso.
Covue shell Implementada para simular el sistema vms de
DIGITAL.
Key shell - keysh Extensin de la Korn shell que implementa mens
y teclas de funcin.
Restricted shell - rsh Versin de la Bourne shell, sirve para dar de alta
nombres de entrada y entornos de ejecucin con
mas restricciones que sh.
SISTEMA OPERATIVO UNIX . CURSO BASICO
5.4.- SHELLS . PROCESOS : Cambiar de shell
Comandos sh csh ksh keysh rsh
$ nombre_de_shell
Abre una shell nueva con la que puedes interactuar.
No se cierra la antigua shell, para retornar a ella solo hay que salirse de la nueva
shell con el comando exit o CTRL-D.
Comando chsh
$ chsh nombre_usuario [ direccion_shell ]
Cambia la shell que se arranca por defecto cuando se entra al sistema.
El nombre_usuario es el nombre de login o entrada al sistema.
La direccin_shell es la del comando de shell, debe ser absoluta, una forma de
encontrarla es tecleando el mandato whereis.
Este comando lo que hace es modificar el fichero /etc/passwd, en concreto el
ultimo campo de la linea de usuario.
El comando no tiene efectos inmediatos, se debe volver a entrar al sistema.
SISTEMA OPERATIVO UNIX . CURSO BASICO
5.5.- SHELLS . PROCESOS : Inicializacin de sesin
Cada vez que entras en el sistema por medio del proceso de login dependiendo de cual
sea la shell por defecto que se arranque, se ejecutaran unos fichero de ordenes.
En el caso de la k-shell son dos, uno a nivel de todos los usuarios /etc/profile y otro a
nivel de usuario $HOME/.profile.
Tambin la shell de Bourne utiliza estos mismos ficheros.
Fichero .profile
Este fichero se utiliza para cambiar aspectos de la sesin que abres.
Es particular, solo te afecta a ti.
Este fichero no se ejecutara si abres una nueva sesin solo lo har si entras al
sistema.
Hay operaciones que siempre se suelen incluir en este fichero por ejemplo :
- Recoger las seales de sistema.
- Asignar teclas especiales.
- Reconocer el tipo de teclado.
- Asignar valores a algunas variables de la shell.
SISTEMA OPERATIVO UNIX . CURSO BASICO
5.6.- SHELLS . PROCESOS : Variables de la shell
Como ya hemos dicho antes en la shell donde estamos trabajando existen
variables a las que se pueden hacer referencia cuando ejecutas comandos.
Activacin de variables
Una forma de activar variables es asignndoles un valor, otra es por ejemplo
con los argumentos clave en la linea de llamada a una instruccin o programa
o tambin la asignacin automtica de los parmetros posicionales de una
instruccin.
La construccin para asignar un valor a una variable es:
$ nombre_variable = valor
No se permite espacios entre nombre_variable , el signo = y valor.
El nombre de una variable tiene que empezar por una letra y solo puede estar
formada por letras, dgitos y subrayados.
El valor asignado si contiene espacios en blanco se debe encerrar entre comillas
simples ( ' ).
De forma natural la shell entiende que los valores de una variable sern
caracteres, no quita para que se puedan manejar nmeros o ordenes del
sistema como valores de variables.
SISTEMA OPERATIVO UNIX . CURSO BASICO
5.7.- SHELLS . PROCESOS : Referencia a variables
Internamente la shell trata las variables como una pareja, nombre y valor, ya hemos visto
como le damos un valor a una variable, para utilizar ese valor lo podemos invocar con la
formula $nombre_variable , la shell cuando ejecuta un comando primero ejecuta el
mecanismo de sustitucin de variables.
Mecanismo de sustitucin de variables
Se hace en varios pasos:
- Examina la linea de comandos en busca de smbolos $.
- Si ve el smbolo $ seguido (sin espacio en blanco) de un nombre de variable
activa, la shell elimina tanto el smbolo $ como el nombre de la variable y lo
sustituye por por el valor asignado a la variable.
- Cuando ha realizado todas las sustituciones la shell ejecuta la linea de
comandos.
En el caso que quisiramos hacer referencia a la cadena de caracteres
$nombre_cadena en vez de al valor de la variable, se podra hacer cerrando
$nombre_cadena con comillas simples o aadiendo \ antes de la cadena de
caracteres.
Una forma especial de asignacin de variables es utilizando los acentos graves ( ` ),
de esta forma no asignamos un valor alfanumrico a la variable sino la ejecucin
de un comando es decir si tecleamos $ variable1=`ls` y despus ejecutamos
$ echo $variable1 se ejecutara el comando ls.
SISTEMA OPERATIVO UNIX . CURSO BASICO
5.8.- SHELLS . PROCESOS : Areas de variables
Las variables de la shell se pueden almacenar en dos sitios, el entorno y el rea local de
datos de la shell.
Proceso hijo
Introduzcamos ahora este trmino, aunque sea despues cuando lo estudiemos con
mas detalle, diremos que un proceso es hijo de otro cuando se crea a partir de una
peticin de este otro.
Una de las formas de crear un proceso hijo es ejecutar un comando en la shell.
Por ejemplo cuando tecleamos el nombre de una shell y se ejecuta dicha shell
pudiendo dialogar con ella, pues bien se dice que esa shell es un proceso hijo de
la que tenamos anteriormente.
Otro ejemplo es el caso de una sesin de vi, esta es un proceso hijo de la shell
desde donde hemos abierto la sesin vi.
Entorno y rea local de datos
El entorno sera el lugar donde la shell almacena las variables que pueden ser
accedidas por los procesos hijos de esa shell.
En cambio el rea local de datos solo sera accesible cuando ests trabajando con
la shell que sea su propietaria.
Ahora veremos comandos para gestionar estas variables y cambiarles su
localizacin.
SISTEMA OPERATIVO UNIX . CURSO BASICO
5.9.- SHELLS . PROCESOS : Visualizar variables
Comando set
$ set
Informa de los nombres y los valores de todas las variables de la shell tanto en el
rea local de datos como en el entorno.
Este comando tiene muchas opciones con muy diversas utilidades.
Algunas de las variables que muestra son:
HOME Indica la direccin del directorio de entrada.
MAIL Direccin del buzn de correo.
PS1 Prompt del sistema.
Comando unset
$ unset [nombre_variable ]
Se utiliza para eliminar el valor de las variables.
Cuando no se dan argumentos se borran todas las variables del rea local de
datos.
Cuando se especifica nombre_variable se reinicializa la variable a NULL.
SISTEMA OPERATIVO UNIX . CURSO BASICO
5.10.- SHELLS . PROCESOS : Cambiar localizacin variables
Comando export
$ export [ nombre_variable ]
Transporta nombre_variable desde el rea local de datos al entorno de la shell.
Si no especificamos nombre_variable nos informa de que variables se pusieron
en el entorno de la shell actual.
Esta ultima funcin se puede conseguir con la orden env sin argumentos.
Recordemos que el entorno solo sirve para poner en disposicin de los procesos
hijos las variables que exportemos ( movamos al entorno ) pero no a los procesos
padres.
Tambin hacer notar que si una variable se exporta y se le da un valor si este valor
se cambia en un proceso hijo este cambio solo afecta a ese proceso hijo y a los
hijos de este sucesivamente pero no cambia el valor de la variable en el proceso
padre.
Para quitar una variable del entorno utilizar la orden unset ( aunque esto tambin
la eliminara de el rea local ).
Utilizar unset con una variable exportada en un proceso hijo no afecta a la visin
que tiene de ella el padre.

EJERCICIOS SHELLS PROCESOS 1
=============================
1 ) Activa una variable de la shell llamada "XXX" que sea igual a tu nombre.
Visualiza el contenido de la variable.
2 ) Crea una shell hija escribiendo ksh. Mira el contenido de "XXX". Que ha
pasado?. Mata a la shell hija con las teclas CTRL-D y RETURN. Mira ahora la
variable "XXX".
3 ) Que comando se puede escribir en la shell padre para que la shell hija vea
el contenido de la variable "XXX"?. Como puedes ver todas las variables que
heredarn la shell hija?.
4 ) Crea otra shell hija. Mira el contenido de la variable "XXX". Ahora asigna la
variable "XXX" al tu apellido. Es "XXX" ahora una variable local o del entorno?.
Lista las variables del entorno. Como est "XXX" asignada?.
5 ) Ahora borra la variable "XXX" de la shell hija. Existe "XXX" localmente o
dentro de tu entorno?.
6 ) Mata la shell hija, volviendo a tu shell de LOGIN. Existe "XXX" todava?,
que valor tiene?.
7 ) Cambia la shell de entrada por defecto para que sea csh y prueba si es
correcto su funcionamiento.
8 ) Asigna a una variable llamada "usuarios", los nombres de los grupos y sus
usuarios de cada uno, prueba tambin a visualizar el contenido de la variable.
SISTEMA OPERATIVO UNIX . CURSO BASICO
5.11.- SHELLS . PROCESOS : Concepto de proceso 1
Concepto
Llamamos proceso a un programa en ejecucin.
Utilizamos el termino programa en sentido amplio, puede ser el cdigo de un
comando del sistema, un fichero ejecutable de usuario, el cdigo de una shell
o incluso el cdigo del kernel.
Cuando un proceso genera la ejecucin de otro proceso decimos que el primero
es el padre del segundo y a su vez este el hijo del primero.
Creacin de un proceso
Los procesos en Unix nacen, viven y mueren.
El nacimiento o creacin de un proceso ocurre cuando la ejecucin de otro
proceso incluye unas llamadas FORK y EXEC.
Por ejemplo si tu estas trabajando con la shell y le pides que ejecute un comando,
la shell internamente esta creando un proceso hijo que sera la ejecucin del
comando solicitado, y para ello utiliza las llamadas FORK y EXEC.
SISTEMA OPERATIVO UNIX . CURSO BASICO
5.12.- SHELLS . PROCESOS : Concepto de proceso 2
Llamadas FORK y EXEC
Con FORK el proceso padre se duplica a si mismo (se duplica cdigo ejecutable
rea local de datos y entorno ) y uno de los dos se pone en espera.
Con EXEC se solapa el cdigo del comando requerido en el espacio de la copia,
tambin se solapa el rea local de datos pero el entorno se conserva ( de esa
forma son accesibles las variables del entorno por el proceso hijo ) y es entonces
cuando comienza la ejecucin del proceso hijo.
Finalizacin de un proceso
Cuando el proceso hijo muere manda una seal al proceso padre y este reanuda
la ejecucin.
En caso que el padre no este informado de la muerte de un proceso hijo llamamos
a este proceso zombi.
Tambin un proceso hijo cuyo padre ha muerto se llama un proceso hurfano.
Cada proceso tiene un pid nmero de identificacin de proceso y un ppid nmero
pid del proceso padre que lo gener.
SISTEMA OPERATIVO UNIX . CURSO BASICO
5.13.- SHELLS . PROCESOS : Informacin sobre procesos
Comando ps
$ ps [ -efl -glista_de_grupos -u lista_pid ]
Visualiza los procesos del sistema listando un informe sobre ellos.
Si utilizamos el mandato sin opciones nos mostrara los procesos asociados al
terminal en la que estamos trabajando.
OPCIONES
-e Informa de todos los procesos del sistema.
-f Da listado mas completo que sin utilizarlo.
-l Se obtiene otro tipo de listado largo.
EJEMPLO
Utilizando el comando $ ps -f.
UID PID PPID C STIME TTY TIME COMMAND
root 13122 94 0 08:46:25 ttyu1 0:00 telnetd
usuario1 13150 13123 7 08:48:28 ttyu1 0:00 ps -f
usuario1 13123 13122 0 08:46:27 ttyu1 0:00 -ksh
SISTEMA OPERATIVO UNIX . CURSO BASICO
5.14.- SHELLS . PROCESOS : Comandos de la shell
Relacionando los temas de proceso y shell (no olvidemos que la shell en ejecucin es
un proceso), podemos decir que no todos los comandos que se introducen en el prompt
de la shell generan procesos hijos.
Esto quiere decir que hay dos tipos de mandatos de shell.
Comandos intrnsecos de la shell
Estos comandos estn incorporados en la misma shell.
No provocan el nacimiento de un proceso hijo.
Existen en el sistema como subrutinas de la propia shell, algunos tambin estn en
ficheros externos a la shell y se pueden ejecutar de las dos formas.
Algunos ejemplos son : cd , pwd , echo , set.
Comandos externos a la shell
Existen en el sistema como ficheros ejecutables, los directorios donde se
encuentran normalmente son /bin , /usr/bin.
Provocan el nacimiento de un proceso hijo de la shell.
Para localizar estos comandos la shell utiliza la variable PATH, que contiene una
lista de directorios donde buscar los comandos y el orden en el que se buscan.
Algunos ejemplos de este tipo de comandos son ls , lp , more.
SISTEMA OPERATIVO UNIX . CURSO BASICO
5.15.- SHELLS . PROCESOS : Bsqueda de comandos
Comando whereis
$ whereis [ -b | -m | -s ] comando
Busca el comando tecleado en una lista de directorios.
OPCIONES
-b Busca el fichero binario del comando.
-m Busca el fichero en los directorios del manual.
-s Busca el fichero del cdigo fuente del comando.
Si se omiten las opciones buscara todos los tipos de ficheros antes relacionados.
Los comandos se buscan normalmente en los siguientes directorios /bin, /usr/bin,
/usr/contrib/bin y /usr/local/bin , los binarios ; /usr/man/* , /usr/local/man/* ,
/usr/contrib/man/* , los de manual y /usr/src/* , los fuentes.
Este comando es til para saber que fichero se esta ejecutando.
Si no lo encuentra te mostrar tan solo el nombre del mandato y dos puntos.
SISTEMA OPERATIVO UNIX . CURSO BASICO
5.16.- SHELLS . PROCESOS : Procesos en background
Smbolo &
$ comando &
Ejecuta el mandato comando en backgroud y permite que el procesamiento
principal continue.
Se utiliza para no tener que esperar a que acabe de ejecutar un comando para
poder seguir trabajando con el sistema.
Cuando teclees el comando con & inmediatamente despus te informara el
sistema de cual es el nmero que se a asignado al proceso es decir el pid, este
pid lo utilizaras para hacer referencia a ese proceso, despus de esto la shell
activa te mostrar el prompt de entrada de comandos y podras trabajar con ella
normalmente.
El sistema te informar de los cambios de estatus en ese proceso cuando sucedan,
por ejemplo paradas o finalizaciones.
Cuando tienes procesos en background e intentas salirte del sistema este te
advierte esta circunstancia y no te permite salir, para hacerlo debers teclear de
nuevo CTRL-D o el comando exit, pero si sales del sistema se cancelaran los
procesos background que hayas generado.
Un motivo para que un proceso background se pare es que tenga una salida por
el terminal.
SISTEMA OPERATIVO UNIX . CURSO BASICO
5.17.- SHELLS . PROCESOS : Comandos paso a background
Comando fg
$ fg [ pid_proceso ]
Hace que un proceso ejecutndose en background pase a ejecutarse en
interactivo ( foreground ).
Si no se especifica pid_proceso el sistema entiende que es el ultimo proceso
lanzado en background por el usuario.
Comando bg
$ bg [ pid_proceso ]
Hace que un proceso ejecutndose en interactivo pase a ejecutarse en
background.
No es necesario que el proceso este activo para pasarlo a ejecucin en
background, es mas cuando tu lanzas un comando y se esta ejecutando
pulsando CTRL-Z se parara el proceso entonces se puede ejecutar el
comando.
Si no se especifica pid_proceso el sistema entiende que es el ultimo proceso
lanzado en interactivo por el usuario.
SISTEMA OPERATIVO UNIX . CURSO BASICO
5.18.- SHELLS . PROCESOS : Comandos gestin background
Comando nice
$ nice [ -n ] linea_de_comandos
Para ejecutar un proceso con prioridad mas baja que la normal.
-n Prioridad asignada, es un nmero de 1 a 19, cuanto
mayor es el nmero mas pequea es la prioridad, el
sistema tiene un mecanismo por el cual la prioridad del
proceso se incrementa cada vez para asegurar que el
proceso se ejecutara eventualmente.
La linea_de_comandos puede ser un comando en interactivo o en modo
background, para modo interactivo no se utiliza apenas, si lo utilizas en modo
background recordar que se debe aadir al final el signo &.
Comando nohup
$ nohup linea_de_comandos &
Hace que un comando sea inmune a la seal de finalizacin (por ejemplo salir
del sistema).
Al salir del sistema el proceso toma como pid del padre el de el proceso init.
SISTEMA OPERATIVO UNIX . CURSO BASICO
5.19.- SHELLS . PROCESOS : Envo de seales a procesos
Comando kill
$ kill [ -snombre_seal | -nmero_seal | -l ] pid ...
Enva seales a procesos especificados por el pid, se pueden mandar a varios
a la vez.
OPCIONES
-l Lista todas las seales que se pueden enviar a
procesos con su nmero asociado.
-s nombre_seal Enva esa seal a los procesos indicados por sus
pid.
- nmero_seal Enva la seal asociada a nmero_seal a los
procesos indicados.
Algunas de las seales mas utilizadas son :
KILL 9 Utilizada para abortar inmediatamente un proceso
tambin abortaran los procesos hijos.
INT 2 Interrupcin del proceso.
SISTEMA OPERATIVO UNIX . CURSO BASICO
5.20.- SHELLS . PROCESOS : Nmero identificacin usuario
Procesos y usuarios
Dentro de la informacin que esta asociada a un proceso est el nmero de
identificacin del usuario que ha producido ese proceso.
Cuando entras en sesin se abre un proceso de shell que te da servicio pues
este proceso lleva asociado el nmero de identificacin de tu usuario y todos los
procesos hijos heredarn este nmero de identificacin de usuario, de esta forma
el sistema sabe quien es el responsable de cada proceso.
As cuando un proceso acceda a un fichero lo har con los privilegios del usuario
que sea su dueo.
Comando id
$ id [ nombre_usuario ]
Te informa de tu nmero de identificacin de usuario ( uid ) y del nmero de
identificacin de grupo al cual perteneces ( gid ).
La opcin nombre_usuario solo lo puede dar el superusuario.
Esta informacin tambin esta accesible en los ficheros del sistema /etc/passwd y
/etc/group.
SISTEMA OPERATIVO UNIX . CURSO BASICO
5.21.- SHELLS . PROCESOS : Cambio del uid y el gid
Comando su
$ su [ nombre_usuario ]
Para cambiar tu nmero de identificacin de usuario y as de esta forma los
procesos hijos que generes llevaran este uid asociado.
Despus de ejecutado el comando el sistema te pedir la contrasea del usuario
que tiene asignado ese uid.
Para volver a tener el antiguo uid no utilices de nuevo este comando sino intenta
salir del sistema de esta forma lo recobrars.
Cuando se omite nombre_usuario el sistema entiende que quieres tomar el uid
del superusuario o root.
Comando newgrp
$ newgrp [ nombre_grupo ]
Cambia el nmero de identificador de grupo del usuario.
Solo se permite cambiar a los gid permitidos por el administrador del sistema.
Para volver a tu gid inicial teclear el comando sin parmetros.

EJERCICIOS SHELLS Y PROCESOS 2
===============================
1 ) Averigua donde estn los comandos date, cat, cd.
2 ) Haz este ejercicio junto con tu compaero. Usa el comando su para
cambiarte al identificador de entrada al sistema de tu compaero. Ahora usa el
comando id para ver el cambio.
3 ) Visualiza que procesos estn asociados a tu terminal y a tu usuario. Cuales
son los procesos padres de ellos?. Abre ahora varias shells hijas y ejecuta el
comando "sleep 2000 &", que procesos, ejecutndose actualmente, son tuyos?.
Visualiza todos los procesos activos en el sistema. Termina el ejercicio dejando tus
procesos igual a como estaban al principio.
4 ) Ejecuta el comando "sleep 2000 &". Salte del sistema, vuelve a entrar e
intenta visualizar el proceso sleep. Haz que la ejecucin de ese comando no finalice
cuando salgas del sistema, comprubalo.
5 ) Ejecuta de nuevo la orden "sleep 2000 &", comprueba que se est
ejecutando en modo background. Haz que se ejecute en interactivo, y de nuevo haz
que vuelva a modo background, por fin cancela el proceso. Prueba a ejecutar en
background un comando con salida por pantalla, psalo a ejecucin en interactivo.
6 ) Ejecuta los comandos siguientes y observa la diferencia,
"date; pwd; banner hola &" y "(date; pwd; banner hello) &".
SISTEMA OPERATIVO UNIX . CURSO BASICO
6.1.- PIPELINES Y FILTROS : Introduccin entrada y salida
Cuando se abre una sesin de shell automticamente se habilitan tres ficheros.
Estos son stdin, stdout y stderr.
Stdin , stdout y stderr
Stdin es el fichero desde el cual la shell lee su entrada, se llama fichero de entrada
estndar, normalmente esta asignado al dispositivo del teclado, por defecto stdin
esta asignado al fichero nmero 0.
Stdout es el fichero en el cual la shell escribe la salida, se llama fichero de salida
estndar, normalmente esta asignado al dispositivo de pantalla, por defecto stdout
esta asignado al fichero nmero 1.
Stderr es el fichero en el cual la shell escribe los mensajes de error, se llama
fichero de errores estndar, normalmente esta asignado a la pantalla pero es
independiente del fichero de salida stdout, por defecto stderr esta asignado al
fichero nmero 2.
En este capitulo se va a trabajar como cambiar las asignaciones por defecto de estos
ficheros, a estudiar como la salida de un proceso puede ser la entrada de otro
( pipelines ) y adems comandos que se utilizan para, a partir de una entrada, generar
una salida modificada por el mandato ( filtros ), todo esto hace referencia al flujo del
control de los procesos en ejecucin.
SISTEMA OPERATIVO UNIX . CURSO BASICO
6.2.- PIPELINES Y FILTROS : Redireccionamiento entrada
Cualquier comando que lea su entrada de stdin puede redireccionar su entrada para
que venga de otro fichero.
La estructura del mandato quedar:
$ comando < nombre_fichero
El redireccionamiento de la entrada no produce ningn cambio en el fichero desde el
que se haga.
Se podra utilizar el nmero asociado a stdin en el formato de esta forma:
$ comando 0 < nombre_fichero con esto especificamos que nombre_fichero va a ir por
la entrada del comando, por el fichero stdin.
Un ejemplo que se utiliza normalmente es el comando mail con redireccin de entrada:
$ mail < usuario nombre_fichero con esto mandas por correo el fichero nombre_fichero
Esto se utiliza por si quieres guardar el contenido del mensaje que mandas para volver a
mandarlo posteriormente o llevar un control de tus correos.
SISTEMA OPERATIVO UNIX . CURSO BASICO
6.3.- PIPELINES Y FILTROS : Redireccionamiento salida
Tambin se puede redireccionar la salida y los errores de cualquier comando que los
genere, en los ficheros stdout y stderr respectivamente.
$ comando [ > | >> ] nombre_fichero
Hay dos opciones para redireccionar la salida, con el signo > se machacar el
contenido de nombre_fichero si es que contena algo, en cambio si utilizamos
el signo duplicado >> , entonces aadir a lo que ya existiera en el fichero
indicado.
Se podra utilizar el nmero asociado a stdout en el formato de la siguiente forma.
$ comando 1 [ > | >> ] nombre_fichero con esto especificamos explcitamente
que la salida del comando va a ir al fichero, por medio del fichero stdout.
Si el fichero nombre_fichero no existiera se creara.
$ comando 2 [ > | >> ] nombre_fichero
Funciona de la misma forma que la redireccin de la salida.
Tambin se crear el fichero nombre_fichero automticamente si no existiera.
SISTEMA OPERATIVO UNIX . CURSO BASICO
6.4.- PIPELINES Y FILTROS : Que es un pipeline ?
Pipelines
Hemos visto como la salida y la entrada de un comando se puede redireccionar a
ficheros auxiliares utilizando stdin, stdout y stderr.
En este caso queremos que se redireccione la entrada y salida entre los mismos
comandos, es decir, que la salida de un comando se redireccione a la entrada de
otro comando directamente, sin pasar por un fichero auxiliar.
Para ello utilizamos el signo | , al que llamamos pipeline.
La forma de utilizarlo es:
$ comando1 | comando2 ...
La salida de comando1 se toma como entrada del comando2.
Se pueden concatenar tantos comandos como se desee separados por | y
consecutivamente la salida estndar ( stdout ) del comando a la izquierda del
smbolo | se usara como la entrada estndar ( stdin ) del comando de la derecha.
Cuando se utilicen comandos que no generen o reciban datos ( esto es necesario
para la construccion de un pipeline ), el sistema reconoce que no hay entrada o
salida definida y la shell obra en consecuencia ( o lo ignora o produce el error
correspondiente ).
SISTEMA OPERATIVO UNIX . CURSO BASICO
6.5.- PIPELINES Y FILTROS : Redireccionamiento de pipeline
Casos posibles de redireccionamiento desde un pipeline
Cualquier comando a la izquierda del smbolo de un pipe solo puede redireccionar
entrada y errores.
Cualquier comando a la derecha del smbolo de un pipe solo puede redireccionar
salida y errores.
Cualquier comando entre dos smbolos de un pipe solo puede redireccionar
errores.
Ejemplos que se dan muy a menudo :
$ ll | more
Para paginar el listado de los ficheros de un directorio.
$ who | cat > fich-usuarios-activos
Introduce en el fichero fich-usuarios-activos la salida producida por el comando
who.
Aqu la salida del comando who es la entrada del comando cat y a su vez este
comando tiene redireccionada la salida hacia el fichero fich-usuarios-activos.
SISTEMA OPERATIVO UNIX . CURSO BASICO
6.6.- PIPELINES Y FILTROS : Filtros
Concepto
Llamamos filtro a cualquier comando que lee su entrada de stdin y genera la salida
a stdout.
Los filtros se pueden situar en medio de dos pipelines y tomar la entrada del
comando anterior y dar la salida al comando siguiente.
En otros captulos ya hemos visto algunos filtros que vamos a recordar.
$ cat [ fichero_entrada ... ] [ > | >>] [ fichero_salida ]
Concatena y visualiza por pantalla ficheros a stdout.
Usando redireccionamiento de entrada y salida podemos tomar la salida de un
comando cat y ponerla en otro fichero.
EJEMPLOS
$ cat fichero1 fichero2 >> fichero3 Introduce el contenido de fichero1
fichero2 en fichero3 sin borrar el
antiguo contenido.
$ cat > fichero1
texto Introduce texto en fichero1
CTRL-D machacando el contenido.
$ cat Repite lo pulsado en el teclado.
SISTEMA OPERATIVO UNIX . CURSO BASICO
6.7.- PIPELINES Y FILTROS : Comandos more, lp y wc
$ more
Visualiza el contenido de un fichero o la salida de un comando paginndola, ya
vimos cual era su manejo en otro tema, es muy til cuando tenemos una salida
por pantalla muy larga el conectar esa salida con la entrada del comando more.
EJEMPLOS
$ ll | more $ find . | more
$ lp
Manda por impresora el contenido de un fichero o la salida de un comando.
comando wc
$ wc [ -lwc ] [ fichero ... ]
Cuenta lineas palabras y caracteres de fichero.
Se pueden especificar mas de un fichero y te indica de cada uno de ellos.
Las opciones te dan : -l Lineas
-w Palabras
-c Caracteres

EJERCICIOS PIPELINES Y FILTROS 1
===============================
1 ) Redirecciona la salida del comando date a un fichero llamado "salidate" en tu
directorio HOME.
2 ) Aade la salida del comando ls al fichero "salidate". Mira el contenido de
"salidate".
3 ) Usando redireccionamiento de entrada, enva por correo electrnico el
fichero "salidate" a tu propio usuario.
4 ) Escribe el comando cp sin argumentos. Redirecciona esta salida a un fichero
con nombre "salida.cp".
5 ) Ejecuta un comando que tenga como salida el nmero de usuarios activos en
esos momentos, tambin con el nmero de usuarios totales del sistema.
SISTEMA OPERATIVO UNIX . CURSO BASICO
6.8.- PIPELINES Y FILTROS : Ordenar un fichero . Sort
Otro filtro es el comando sort que lee un fichero y tomando cada linea como un registro
genera una salida con el fichero ordenado.
Comando sort
$ sort [-b -d -f -n -r -u -ofichero1 +num_campo -tx ] fichero2 ...
Ordena lineas de campos.
Los delimitadores de las lineas son los retorno de carro.
Los campos se delimitan por defecto con marcas de tabulador.
Por defecto se ordenan las lineas por el primer campo de cada linea.
Se pueden poner mas de un fichero a ordenar fichero2 y hace el merge
correspondiente clasificando sus lineas en una sola salida.
OPCIONES
-b Para ignorar blancos iniciales.
-d Ordenacin alfabtica.
-n Ordenacin por valor numrico.
-f No distingue maysculas y minsculas.
SISTEMA OPERATIVO UNIX . CURSO BASICO
6.9.- PIPELINES Y FILTROS : Continuacin sort
Comando sort
$ sort [-b -d -f -n -r -u -ofichero1 +num_campo -tx ] fichero2 ...
OPCIONES
-r Clasifica en orden inverso es decir de mayor a
menor.
-ofichero1 Enva la salida al fichero fichero1.
+num_campo Selecciona el campo que se utiliza para ordenar,
teniendo en cuenta que por defecto es el primero y
que los dems se numeran a partir del segundo
comenzando por 1.
-tx Cambia el carcter de separacin entre campos
que por defecto es la tecla de tabulador y toma el
carcter seleccionado x.
-u Suprime de la salida las lineas que tengan
repetido el campo por el que se esta ordenando.
SISTEMA OPERATIVO UNIX . CURSO BASICO
6.10.- PIPELINES Y FILTROS : Buscar cadenas en ficheros
Comando grep
$ grep [ -n -c -v -i -x ] plantilla fichero ...
Busca la cadena de caracteres plantilla en los ficheros que se especifiquen la
salida del comando sera una lista de lineas donde se haya encontrado la cadena
de caracteres que buscbamos.
OPCIONES
-n Se le aade a cada linea de salida el nmero de
la posicin relativa en el fichero de entrada, si
indicaste mas de un fichero tambin te muestra el
fichero en la que la encontr.
-c Con esta opcin la salida solo es el nmero de
lineas en las que ha encontrado plantilla.
-v Selecciona las lineas que no contengan plantilla.
-i No diferencia entre maysculas y minsculas.
-x Selecciona las lineas que coincidan todas ellas
con plantilla.
SISTEMA OPERATIVO UNIX . CURSO BASICO
6.11.- PIPELINES Y FILTROS : Bifurcar salida
Comando tee
$ tee [ -i -a ] fichero ...
Comando para bifurcar la salida o un pipeline.
Escribe en la salida estndar y en el fichero que se especifique en la orden.
Se pueden indicar mas de un fichero, entonces carga la salida en todos ellos.
Este comando se utiliza mucho entre pipelines para tener constancia de un paso
intermedio cuando utilizamos pipelines y filtros.
Por ejemplo:
ls | tee fich-noorden | sort
OPCIONES
-i Ignora seales de interrupcin.
-a Aade la salida en fichero despus del contenido
del fichero, por omisin escribir encima de l y se
perder el antiguo contenido.
SISTEMA OPERATIVO UNIX . CURSO BASICO
6.12.- PIPELINES Y FILTROS : Seleccionar columnas
Comando cut
$ cut [ -clista ] | [ -flista -dcarcter -s ] fichero ...
Selecciona porciones verticales ( columnas ) del fichero que se especifque.
Se pueden indicar mas de un fichero y la salida sera conjunta.
OPCIONES
-clista Indica que columnas de caracteres se seleccionan
el formato delista puede ser
n1-n2 desde el carcter n1 al n2
n1- desde el carcter n1 al final
-n2 desde el principio hasta el carcter n2
n1,n2 caracteres en las posiciones n1 y n2
y cualquier combinacin entre estas.
-flista Indica que columnas de campos se seleccionan,
el separador entre campos por defecto es el
tabulador.
El formato de lista es el mismo que en la anterior
opcin pero refirindose a campos en vez de a
caracteres.
-d carcter Cambia el separador entre campos por defecto a
carcter.
-s Suprime lineas que no contengan separador con
la opcin -f.
SISTEMA OPERATIVO UNIX . CURSO BASICO
6.13.- PIPELINES Y FILTROS : Formatear salida
Comando pr
$ pr [ -k -t -a -d -p -lnum1 -wnum2 -ncarac num3 ] fichero ...
Lee de la entrada un fichero o la salida de otro comando y la modifica dndole
un formato.
Es til antes de enviar una salida a impresora o para sacar por pantalla.
OPCIONES
-k Produce la salida a k columnas.
-t Borra la cola y la cabecera.
-a Produce la salida al mayor nmero posible de
columnas.
-d Produce la salida a doble espacio.
-p Pausa y espera a RETURN antes de cada pgina.
-ln1 Establece la longitud de linea en n1 caracteres.
-wn2 Establece la anchura de pgina en n2 caracteres.
-ncarac num3 Genera la numeracin de las pginas con num3
dgitos, separados de la linea por el carcter
carac, por defecto carac es el tabulador.
SISTEMA OPERATIVO UNIX . CURSO BASICO
6.14.- PIPELINES Y FILTROS : grabar y recuperar en cinta 1
Dos filtros mas son los comandos tcio y cpio utilizados para leer informacin de un fichero
y escribirla en una cinta, normalmente se utilizan juntos.
Comando cpio
$ cpio [ -o | -i | -p ] [ -v ] [ -B c | -d r u m t ] patrn | directorio
El comando cpio tiene tres funciones diferentes, se consiguen indicando una de
las tres opciones principales (siempre se debe incluir una y solo una).
OPCIONES PRINCIPALES
-o Lee la entrada estndar para obtener una lista de
direcciones de ficheros y copia esos ficheros con
informacin adicional en la salida estndar.
-i Extrae ficheros por el canal de entrada estndar,
que se hayan grabado con cpio -o y los escribe en
el directorio actual, se puede indicar un patrn
para que solo extraiga algunos ficheros.
-p Lee la entrada estndar para obtener una lista de
direcciones de ficheros que sern creados y
copiados en el directorio especificado como
destino.
SISTEMA OPERATIVO UNIX . CURSO BASICO
6.15.- PIPELINES Y FILTROS : grabar y recuperar en cinta 2
Comando cpio
$ cpio [ -o | -i | -p ] [ -v ] [ -B c | -d r u m t ] patrn | directorio
Las dems opciones modifican estas funciones, la opcin v se puede indicar
en cualquier caso, B y c solo cuando se puso i o, y las dems cuando se utilice
i p.
OPCIONES
-v Te informa de que ficheros esta tratando.
-B Para operar con tamao de bloque de 512 bytes.
-c Escribe una cabecera en ascii para la portabilidad.
-d Para poder crear directorios.
-r Renombra de modo interactivo.
-u Copia incondicionalmente ( sin mirar fecha ).
-m Guarda la fecha y hora de ultima modificacin del
fichero antiguo.
-t Genera una lista de los contenidos de la entrada
sin crear, leer, ni copiar ningn fichero.
SISTEMA OPERATIVO UNIX . CURSO BASICO
6.16.- PIPELINES Y FILTROS : grabar y recuperar en cinta 3
Comando tcio
$ tcio [ -o | -i | -u ] [ -V -Stamao_buffer ] fichero_dispositivo
Optimiza la transferencia de datos entre cartuchos de cinta y el sistema el
fichero_dispositivo sera el que este asignado al cartucho.
OPCIONES
-o Lee la entrada estndar y copia esa informacin
en el cartucho de cinta que esta asignada al
fichero_dispositivo.
-i Extrae la informacin de un cartucho de cinta y la
escribe en el fichero de salida estndar.
-u Permite realizar operaciones de control sobre el
dispositivo.
-V Apaga el sistema de verificacin de cinta.
-Stamao_buffer Establece el tamao del buffer a utilizar en Kbyte.
Ejemplos
$ ls | cpio -o | tcio -oV -S 8 /dev/rct/c1d0s2
$ find /users/pepe -name 'prueba*' -print | cpio -oc | tcio -oV /dev/rtc/c2
$ tcio -i /dev/rct/c0d1 | cpio -i
SISTEMA OPERATIVO UNIX . CURSO BASICO
6.17.- PIPELINES Y FILTROS : Comparar ficheros
Comando diff
$ diff [ -w -b -i -c -e ] fichero1 fichero2
Compara dos ficheros y genera una salida con las diferencias.
El formato de la salida es:
Se divide en fichas de adicin, cambio o sustitucin: a, c, d respectivamente y
nmeros de linea a los lados de la letra; los de la izquierda hacen referencia a
lineas de fichero1 y los de la derecha a fichero2, las lineas de texto siguientes
sern el objeto de la adicin, cambio o sustitucin.
OPCIONES
-w Ignora los espacios en blanco comparando.
-b Ignora espacios en blanco de comienzo de linea.
-i No distingue entre maysculas y minsculas.
-c Produce formato de salida diferente al estndar,
con tres lineas de contexto y utilizando los signos
!, + y - para indicar cambio, adicin y supresin
respectivamente.
-e Como salida produce un fichero de modificaciones
con formato ed, el cual aadiendo una w al final de
l se puede utilizar en un comando de la forma
$ ed fichero1 < fich-difer para modificar fichero1
y dejarlo idntico a fichero2.
SISTEMA OPERATIVO UNIX . CURSO BASICO
6.18.- PIPELINES Y FILTROS : Comparar ficheros . Ejemplo
Comando diff
$ diff [ -w -b -i -c -e ] fichero1 fichero2
Si tenemos los siguientes ficheros ejem-diff1 y ejem-diff2:
ejem-diff1 ejem-diff2
mjico tijuana colombia cali
colombia cali estados unidos losangeles
brasil baha mjico tijuana
estados unidos los angeles argentina rosario
argentina rosario bolivia la paz
Ejecutando los mandatos tenemos :
$ diff ejem-diff1 ejem-diff2 $ diff -c ejem-diff1 ejem-diff2
1d0 - mjico tijuana
< mjico tijuana colombia cali
3,4c2,3 ! brasil baha
< brasil baha ! estados unidos los angeles
< estados unidos los angeles argentina rosario
--- -----------1,5---------------
> estados unidos losangeles colombia cali
> mjico tijuana ! estados unidos losangeles
5a5 ! mjico tijuana
> bolivia la paz argentina rosario
+ bolivia la paz

EJERCICIOS PIPELINES Y FILTROS 2
===============================
1 ) Ordena el fichero /etc/passwd segn el tercer campo. Observa el resultado.
Ahora ordena por el mismo campo pero que la ordenacin sea numrica.
Hay alguna diferencia?. Por que?.
2 ) Lista los usuarios que su nombre comience por "s" y en alguna posicin
contengan una "a". Construye un mandato que muestre el nmero de nombres de
usuario que no contengan una "s".
3 ) Construye un pipeline para visualizar la lista ordenada de todos tus ficheros y
directorios por debajo de tu directorio de entrada, con un formato de tres columnas
sin cabeceras ni colas.
4 ) Construye un pipeline para obtener un listado paginado de los propietarios
que tengan algn proceso que se este ejecutando actualmente en el sistema, cada
usuario solo debe aparecer una sola vez.
5 ) Cuantos ficheros ordinarios tienes en tu directorio de entrada?. Construye
un pipeline que te lo indique. Utiliza la orden tee para guardar los nombres de los
ficheros en otro fichero llamado "fichnames". Modifica de nuevo la orden para que
en vez de almacenarlos en el fichero, aparezcan por pantalla sin perder el nmero
de ellos.
SISTEMA OPERATIVO UNIX . CURSO BASICO
6.19.- PIPELINES Y FILTROS : Utilidad awk . Funcionamiento
Comando awk
$ awk [ -F 'separador ' ]
[ -f fich_ordenes | ' /patrn / { accin } ' ] fichero ...
Awk es un lenguaje de programacin diseado para la manipulacin de texto
automtica.
Awk divide la entrada en registros, por defecto cada linea se considera un registro,
es decir el separador de registros por defecto es el salto de linea.
Cada registro se divide a su vez en campos, el separador por defecto entre
campos es el espacio en blanco o la marca de tabulador.
Hay dos formas de utilizar el comando awk:
Una utilizando la formula ' /patrn / { accin } ' en la que se buscan registros
que sigan el patrn en el o los ficheros especificados en el mandato y luego con
las lineas que a seleccionado ejecuta la accin.
Y la otra es con la opcin -f fich_ordenes de forma que pongas los mandatos
de las acciones en el fich_ordenes, con esto se pueden ejecutar acciones mas
complicadas, con esta opcin no se puede utilizar la seleccin por patrones, pero
esto no es un problema ya que dentro de fich_ordenes se puede controlar.
SISTEMA OPERATIVO UNIX . CURSO BASICO
6.20.- PIPELINES Y FILTROS : Utilidad awk . Ejemplos
Comando awk
$ awk [ -F'separador ' ]
[ -f fich_ordenes | ' /patrn / { accin } ' ] fichero ...
Si falta especificar el patrn, la accin se ejecutara para cada linea de entrada,
si al contrario es la accin la que no aparece, entonces las lineas seleccionadas
por el patrn sern copiadas a la salida sin mas.
La opcin -F 'separador ' se utiliza para cambiar el separador entre campos
que por defecto es el espacio en blanco por el separador indicado.
Awk es muy til en variedad de operaciones por ejemplo para generar impresos,
buscar patrones, validaciones de datos, filtrado de datos para comunicaciones, etc.
No modifica los ficheros de entrada.
EJEMPLOS
$ awk -F '*' -f awk.fichero fichero-entrada
$ awk ' { print NR , $0 } ' prueba-entrada
$ awk ' / abc / { print $0 } ' fichero
SISTEMA OPERATIVO UNIX . CURSO BASICO
6.21.- PIPELINES Y FILTROS : Utilidad awk . Patrones
Formacin de patrones
Si como patrn pones una cadena de caracteres, el comando seleccionar
las lineas que contengan esa cadena de caracteres sin necesidad que estn
flanqueadas por espacios en blanco.
Pero hay tambin unos caracteres especiales que ayudan a hacer selecciones
mas complejas.
[ ] Para elegir cualquiera de los caracteres entre [ ].
- Para definir un rango de caracteres p.ej. [a-z].
. Sustituye a cualquier carcter simple.
? Sustituye cualquier cadena de caracteres o vaco.
* Utilizado despus de un carcter sustituye a
cualquier repeticin de este, el carcter puede ser
incluso vaco.
+ Igual a * pero no puede ser vaco.
^ Entre [ ] todos los caracteres menos los indicados
despus del signo.
Sin [ ] hace referencia a la primera posicin de la
linea es decir el carcter que siga estar al
comienzo de la linea.
\ Quita al carcter siguiente su significado especial.
SISTEMA OPERATIVO UNIX . CURSO BASICO
6.22.- PIPELINES Y FILTROS : Utilidad awk . Seleccionar
Hay varios criterios de seleccionar registros con el comando awk.
Modos de seleccionar registros
Uno de ellos es utilizando un patrn con el formato que ya hemos visto
Otro es el indicar dos patrones separados por una coma, de tal forma que
seleccionar aquellos registros que estn entre el primer registro que cumple
el primer patrn y el primer registro que cumple el segundo patrn, si hay alguno
de los patrones que no son cumplidos se seleccionar comenzando desde el
principio o desde el final.
Similar al anterior criterio de seleccin se puede utilizar la variable NR, que indica
el nmero de registro que se esta tratando en secuencia, de manera que se puede
ejecutar:
$ awk ' NR==100,NR==200' fichero-ejemplo
Y se recuperaran las lineas desde la 100 a la 200 inclusive.
Tambin se pueden utilizar las variables que veremos a continuacin, un ejemplo
de esto es la variable NF, que indica el nmero de campos que tiene un registro
( por defecto linea ) y se puede utilizar.
$ awk 'NF < 3' fichero-ejemplo
As se seleccionan las lineas que tengan menos de tres campos.
SISTEMA OPERATIVO UNIX . CURSO BASICO
6.23.- PIPELINES Y FILTROS : Utilidad awk . Variables
Estas son algunas de las variables que se pueden utilizar tanto en los ficheros de
acciones como directamente sobre el comando awk.
Variables predefinidas por el comando
$0 Contiene todo el registro que se esta
tratando actualmente.
$n Contiene el campo en la posicin n-esima.
length Tamao del registro que se trata, tambin si
es length ($n ) longitud del campo n-esimo.
nombre_fichero Contenido de todo el fichero de entrada.
NR Nmero de secuencia del registro que se
esta tratando.
NF Nmero de campos que tiene un registro.
FS Separador de los campos de entrada.
RS Separador de los registros de entrada.
OFS Separador de los campos de salida.
ORS Separador de los registros de salida.
OFMT Formato de salida para los nmeros.
SISTEMA OPERATIVO UNIX . CURSO BASICO
6.24.- PIPELINES Y FILTROS : Utilidad awk . Print
El comando print se puede utilizar en el fichero de rdenes o dirctamente sobre el
comando awk.
Se utiliza para visualizar registros, campos o variables del comando.
Se puede utilizar sin argumentos, entonces por defecto tomar todo el fichero de entrada.
Si solo tiene un argumento visualizar el argumento referente a cada registro de entrada.
Por ejemplo :$ awk '{ print $1 }' fichero-ejemplo
Visualizar el primer campo de todos los registros del fichero fichero-ejemplo.
Si tiene varios argumentos y estn separados por blancos, la salida ser los argumentos
requeridos para cada registro sin separadores entre ellos.
Por ejemplo :$ awk '{ print $1 $3 }' fichero-ejemplo
Visualizar el primer y tercer campo concatenados, sin espacio separador, de todos los
registros del fichero fichero-ejemplo.
Cuando dispones los argumentos entre comas te separar en la salida con el separador
por defecto de salida.
Por ejemplo :$ awk '{ print NR , NF , $0 }' fichero-ejemplo
SISTEMA OPERATIVO UNIX . CURSO BASICO
6.25.- PIPELINES Y FILTROS : Utilidad awk . Fichero ordenes
Cada linea de cdigo ejecutable del fichero de ordenes ira entre llaves { }.
Awk es un lenguaje interpretativo, se pueden usar variables definidas por el usuario
y no se declaran en el fichero se utilizan directamente.
Una variable puede contener diferentes tipos de datos en el mismo programa.
Las variables de caracteres son convertidas a numricas y viceversa cuando lo demanda
el contexto.
Por ejemplo : x = " 3 " + " 4 " hace que x sea 7.
Con las variables numricas se pueden utilizar operadores numricos + - * / ,
incrementar una variable (variable ++ ) o decrementarla (variable -- ), tambin concatenar
variables alfanumricas de la forma siguiente :
cadena_total = cadena_parte1 cadena_parte2
Cuando una linea del fichero de ordenes comienza por el signo # no es una linea
ejecutable, solo contiene comentarios.
Se permiten varias ordenes en la misma linea del fichero tan solo hay que separarlas
con punto y coma ;.
Para continuar con una orden en otra linea deberemos terminar la linea con el
carcter \.
Un registro puede contener muchas lineas si la variable RS (separador de registro)
no es salto de pgina.
SISTEMA OPERATIVO UNIX . CURSO BASICO
6.26.- PIPELINES Y FILTROS : Utilidad awk . Begin . End
Cuando utilizas fichero de ordenes se pueden insertar acciones BEGIN y END.
BEGIN
Se utiliza para realizar una accin antes de empezar el proceso de los registros
del fichero de entrada.
Se pone la palabra BEGIN delante de la orden que queramos ejecutar antes de
empezar con el proceso.
La orden BEGIN debe ir situada en primera posicin del fichero de ordenes.
Por ejemplo :
BEGIN { FS = " : " }
.......
Con esto al comienzo del proceso fijamos el separador de campo a dos puntos (:)
en vez del espacio en blanco.
END
Se utiliza para realizar una accin al final del procesamiento de todos los registros
del fichero de entrada.
La utilizacin de END es similar a la de BEGIN, tan solo que lgicamente se
insertar en el fichero de ordenes al final de l.
SISTEMA OPERATIVO UNIX . CURSO BASICO
6.27.- PIPELINES Y FILTROS : Utilidad awk . Redireccionar
Se puede redireccionar desde la salida estndar a varios ficheros.
El mximo de estos ficheros es 10.
Tambin es posible enlazar con otras utilidades del sistema operativo.
EJEMPLOS
$ awk ' { print $1 >> variable_fichero } ' fichero_entrada
Imprime el primer campo de cada linea del fichero_entrada en el fichero que
tiene como nombre el contenido de la variable variable_fichero sin machacar
su contenido.
$ awk ' { print $1 > " fichero1 " ; \
print $2 > " fichero2 " } ' fichero_entrada
Imprime los primeros campos de fichero_entrada en fichero1 y los segundos
en fichero2.
$ awk ' { print $1 > $2 } ' fichero_entrada
Imprime los primeros campos de cada linea de fichero_entrada cada uno en
un fichero que se llamara como el segundo campo de la linea.
$ awk ' { print $1 | "mail usuario1 " } ' fichero_entrada
Manda por correo a usuario1 los primeros campos de cada linea del fichero
fichero_entrada.

EJERCICIOS PIPELINES Y FILTROS 3
===============================
1 ) Crea el fichero "ejemplo.awk" con el siguiente contenido:
"0123456789:
32:10
0 1 2 3 4 5 6 7 8 9
1:
2
3
a
abcdefg test
aaaa
aaa
aa
a
za
zzzzah:
"
y el fichero inventario con el contenido:
"paco:lmparas:10:8
juan:mesas:3:1200
santiago:tornillos:100:10
jose:bateras:1000:1
julio:libros:500:12"
2 ) Prueba a teclear estos dos comandos y observa su resultado:
"awk 'print NR,$0' ejemplo.awk"
"awk '{print NR,$0}' ejemplo.awk"
3 ) Ejecuta un comando awk para imprimir la lnea del fichero que contenga el
patrn "abc".
4 ) Determina cuantos campos hay en cada registro del fichero "ejemplo.awk",
especificando el carcter ":" como separador de campo. (Se quiere el formato
siguiente: por cada lnea imprimir el nmero de campos y luego la lnea del fichero
correspondiente). Con el mismo fichero, determinar cuantos registros hay,
especificando ":" como separador de registro. (Formato visualizar primero el registro
y luego el nmero que hace).
5 ) Escribe un comando awk que visualice solo las lneas que contienen algn
nmero. Y otro que contienen algn carcter que no sea nmero. Y por fin otro que
imprima las lneas comprendidas entre "32:10" y "a", sin utilizar la variable NR ni
contadores.
6 ) Utilizando el fichero inventario y con ":" como separador de campo visualiza
el tercer y segundo campo, primero con espacio en blanco entre ellos y luego sin l.
7 ) Utilizando un fichero de ordenes, construye un mandato awk para que
despus de visualizar los dos primeros campos del fichero "inventario", muestre en
otra lnea, la suma de los campos tercero y cuarto.
8 ) Crea un comando awk que calcule el nmero de palabras que hay en un
fichero.
9 ) Haz lo mismo que en el ejercicio 7, pero mostrando al final tambin la suma
total de los terceros campos, la de los cuartos y la total de los dos.
10) Igual al 9 aadiendo la salida al fichero "info" pero con las lneas ordenadas
alfabticamente por el segundo campo.
SISTEMA OPERATIVO UNIX . CURSO BASICO
7.1.- KSHELL : Comparacin entre ksh , sh y csh
SH
- Creada por un grupo de trabajo de laboratorios Bell, encabezado por
Steve Bourne.
- Es la primera interface que se escribi para Unix.
CSH
- Creada por integrantes de la Universidad de California en Berkeley, en especial
Bill Joy, la C del nombre es por California.
- Viene a corregir algunos defectos de la shell de Bourne.
- Ofrece opcin de recordar comandos antiguos y editarlos, posibilidad de
establecer diferentes nombres para un comando y proporciona un mecanismo
para la finalizacin de nombres de fichero.
- No es compatible con la shell de Bourne totalmente.
KSH
- Creada por David Korn de los laboratorios Bell.
- Tiene las mejores funciones de la Bourne shell y de la C shell en una nica shell
ofrece historia de los comandos, edicin de los comandos, finalizacin de nombres
de ficheros y alias.
- Es totalmente compatible con la shell de Bourne.
SISTEMA OPERATIVO UNIX . CURSO BASICO
7.2.- KSHELL : Alias
Ahora veremos funciones avanzadas de la K shell.
Comando Alias
$ alias [ palabra_nueva [ = ' cadena ' ] ]
Los alias son un mtodo mediante el cual puedes:
- Abreviar largas lineas de comandos.
- Crear comandos nuevos.
- Generar comandos estndar.
Despus de ejecutado el comando reemplazar palabra_nueva por cadena.
El funcionamiento es el siguiente, siempre que se teclee en la linea de comandos
un mandato investiga si aparece palabra_nueva, si se da el caso, antes de
ejecutarse nada, se cambiar por cadena y solo despus se pasa a la ejecucin
del mandato.
Si utilizas el comando alias sin argumentos te informa de los alias activos en ese
instante, si lo haces solo con uno te da la equivalencia que este tuviera en esos
instantes.
Este mtodo proporciona escritura muy sencilla debido a la abreviatura de largas
lineas de comandos y a la sustitucin automtica de largos pathnames.
SISTEMA OPERATIVO UNIX . CURSO BASICO
7.3.- KSHELL : Finalizacin del nombre de un fichero
Finalizacin del nombre de un fichero
Cuando en una orden hacemos referencia a un nombre de fichero, la shell de Korn
tiene un sistema para completar el nombre automticamente, este es el siguiente.
Escribes el comando y solo una parte del nombre del fichero, pulsas dos veces la
tecla escape ESC, si la shell responde con unos pitidos entonces significa que es
incapaz de completar el nombre del fichero en base de lo que le has dado.
Si no se producen los pitidos entonces hay opciones de finalizacin, se puede
ahora pulsar escape y luego tecla = , mostrar entonces las diferentes opciones
de finalizacin, cada vez que tu aadas caracteres para escoger una opcin el
sistema te completar el nombre del fichero.
Cuando se pulse RETURN se ejecutar el comando.
EJEMPLO
$ cat p (ESC) (ESC)
$ cat prueba-
$ cat prueba- (ESC) =
1 prueba-com
2 prueba-dem
3 prueba-des
$ cat prueba-c (ESC) (ESC)
$ cat prueba-com
$ cat prueba-com (RETURN)
SISTEMA OPERATIVO UNIX . CURSO BASICO
7.4.- KSHELL : Edicin de la linea de comandos
Edicin de la linea de comandos
Para poder editar una linea de comandos solo se precisa pulsar la tecla de
escape ESC con lo que el cursor retroceder una posicin, entonces podremos
utilizar las teclas igual que en el editor vi excepto las flechas de cursor, para
movernos por la linea utilizaremos las teclas l - derecha y h - izquierda, una vez
terminada la edicin con retorno de carro RETURN ejecutaremos la nueva linea
de comandos.
Se puede utilizar otro editor, para ello solo se ha de cambiar el valor de la variable
del entorno EDITOR al nombre del editor que se desee, por defecto contiene la
cadena ' vi '.
Historia de un comando
Cuando ests en modo edicin de la linea de comandos, pulsando las teclas
k - comando mas antiguo y j - comando mas reciente, puedes editar comandos
ejecutados anteriormente.
Comando fc
$ fc [ -l | -e ] [ -numero | -cadena ]
Da comandos ejecutados anteriormente.
Con la opcin -l te muestra una lista de los ltimos comandos ejecutados con una
numeracin.
Para recuperar y ejecutar uno hay dos opciones:
-e -numero ejecuta el comando con el numero indicado.
-e -cadena ejecuta el ultimo comando que empezaba por cadena .
Por defecto un alias de fc -e - es r, es muy normal utilizar r 214 o r ll.
BIBLIOGRAFIA CURSO UNIX BASICO
=================================
- HP-UX Reference Release 9.0 Volumen 1. User Commands and glossary.
HP 9000. HEWLETT PACKARD.
- Unix System V/386 Release 3.2. User's System. ATT cop. 1988.
- Unix System V/386 Release 3.2. User's Guide. ATT cop. 1988.
- Sistemas operativos. Diseo e implementacin. Tanenbaum.
Prentice Hall. 1987.
- Sistemas operativos modernos. Tanenbaum. Prentice Hall. 1992.
- Operating system conceps. Abraham Silberschatz and James L. Peterson.
- Introduccin a Unix System V. Rachel Morgan y Henry Mc Gilton.
Mc Graw Hill. 1987.
- Introduccin a Unix Sistema V. Mitchell Wait, Donald Martin y
Stephen Prata. Ed. Anaya Multimedia.
- Unix manual de referencia de System V version 3. Stephen Coffin. 1989.
- User guide to the Unix systems. Rebecca Thomas and Jean Yates.
Mc Graw Hill. 1985.
- International Unix Systems. Datapro Reports On. Mc Graw Hill.
- Unix Review.
- Unix World.

También podría gustarte